AI

ディープラーニングとは何か?【初心者も簡単にわかる3つの仕組み】

  • このエントリーをはてなブックマークに追加
  • LINEで送る

皆さん、こんにちは!

『そもそもディープラーニングとは何だろう…』

『ディープラーニングは、どんな仕組み?』

『まずは基本から知りたいなぁ…』

こんな疑問に答えます。

ディープラーニングとは何か?

ディープラーニングとは…

『脳をモデル化したニューロンで構成される多層のニューラルネットワーク』

です。

チンプンカンプン
わからんわ!
SEおっさん
SEおっさん
そぅ怒りなさんな
わかりやすく説明するぞい♪

ディープラーニングでスマートスピーカーの”Google Home”、カメラの人物認識など様々な分野で実用化されています。

『なぜディープラーニングが、社会で活躍中なのか?』

というところから考えてみましょう。

 

ディープラーニングは、人工知能(AI)における機械学習の1つです。

優秀な点は『機械がデータの特徴量を設定する』という所です。

特徴量の設定を学習により繰り返し、予測・認識の精度を上げてきます。

つまり…

機械が自分で学習するという仕組み

があるわけです。

 

では、『機械自身で学習する仕組み』をどのように実現してるのでしょうか?

それは…

人間の脳の模倣(モデル化)して実現しています。

脳といっても大脳とか小脳とか脳幹と前頭葉とかじゃなくって、脳を構成する神経細胞の方です。

脳の神経細胞をニューラルネットワークにモデル化

脳を構成する神経細胞をニューロンと呼びます。

ニューロンは複数存在し、お互いにネットワークで結ばれています。

ニューロン同士が”ネットワークでデータを伝搬する”という訳です。

ネットワーク間を伝搬するデータの重要度の決める器官をシナプスといいます。

脳の神経細胞
  • ニューロン同士がネットワークでデータを伝搬する
  • シナプスがデータの重要度の決める
SEおっさん
SEおっさん
ニューロンのネットワークで情報を伝え、
情報の重要度はシナプスで決めるんじゃ

機械学習のために、ニューロンをモデル化したものを形式ニューロンといいます。

形式ニューロンは、1943年に発表された、世界初の神経細胞モデルです。

重要度う決めるシナプスはデータの重みとして扱われます。

形式ニューロンでネットワークを構成したものをニューラルネットワークといいます。

いくつもの層で構成された多層のニューラルネットワークが、ディープラーニングというわけです。

機械学習の脳モデル
  • ニューロンをモデル化したものが形式ニューロン
  • シナプスは重み(重要度)として扱われる
  • 形式ニューロン同士のネットワークがニューラルネットワーク
  • 多層のニューラルネットワークがディープラーニング

冒頭で、ディープラーニングとは…

『脳をモデル化したニューロンで構成される多層のニューラルネットワーク』

といった理由がわかりましたでしょうか?

大体イメージは出来たけど、
詳しい仕組みがワカンナイ…
たろちゃん
たろちゃん

ディープラーニングを仕組みを理解する近道は、基本となる3つに分解して順番に理解することです。

基本となる3つとは『形式ニューロン・パーセプトロン・ニューラルネットワーク』です。

これから順番に解説いたします。

SEおっさん
SEおっさん
まずは基本の理解から!
急がば回れじゃ


スポンサーリンク

ディープラーニングの仕組み(その1)形式ニューロン

ディープラーニングの仕組みで、もっとも基本となるのは形式ニューロンです。

形式ニューロンを7つのSTEPで解説します。
(なるべく簡単に表現してるため、厳密な形式ニューロンとは異なる部分もあります。ご了承ください)

【Step1】情報伝搬と重要度を理解する

入力xから出力yへ情報を伝搬させる。

入力xと重みwで出力yが決定する

y=w * x

重みとは
  • 入力xの重要度を決める値が重みw
  • 神経細胞のシナプスを重みwとする
  • 重みが低いと情報伝搬は減衰する
  • 重みが高いと情報伝搬は減衰しない
  • 入力xの傾きwが重み

入出力の例
  • 入力
    x:年齢
    出力
    y:身長
  • 重みのイメージ
    出力の『身長』に対して、入力『年齢』が超重要ならば『重み』は1(データ減衰なし)
    入力『年齢』があまり重要じゃないなら、『重み』は0.3(データ減衰は70%)
    という感じです

SEおっさん
SEおっさん
重みは理解できたかのぅ


【Step2】学習を理解する

学習とは

学習とは、出力yと正解zとの誤差をなるべく小さくするプロセス

傾きwを修正することで、誤差を少なくして正解に近づける

学習のイメージ
  1. 1回目の結果
  2. 2回目の結果
入出力の例
  • 入力
    x:年齢
    出力
    y:身長
  • 重みのイメージ
    出力と入力の誤差が少なくなるように重みを設定する
    重みが特徴となる
    年齢xが10(歳)で、重みが30、身長yが300(cm)
    正解が130(cm)ならば
    重み30が大き過ぎるので、重みを小さくして正解に近づける
    この場合、重み13が最適値となる

SEおっさん
SEおっさん
誤差と学習はイメージできたかの
繰り返し学習することがポイントじゃよ

【Step3】閾値を理解する

分類問題を出力する場合は、閾値が必要となります。

入力xと重みwを関数fに通して出力y決まる

a=w * x

y=f(a)

ここでは、関数fはステップ関数(閾値を超えていたら1、超えていなければ0)とする

閾値を超えて1となることを発火という

閾値による発火と誤差の修正
  • 閾値b


  • 誤差が少なくなる方に閾値bを修正

※閾値の修正による計算量の問題

誤差が少なくなる方に閾値bを修正すれば良いのだが、 ニューロンが多数になると計算量が多くなり過ぎる問題が発生する。

この問題の解決策として、閾値と同じ効果のあるバイアスを使用する。

バイアスは、誤差修正の計算量が少ない誤差逆伝播法を使用できる。
(バイアスは次のSTEPで説明)

入出力の例
  • 入力
    x:天気
  • 出力
    y:外出する(1)、しない(0)
SEおっさん
SEおっさん
活性化関数の閾値による
ニューロン発火は理解できたかのぅ

【Step4】バイアスを理解する

入力xと重みwとバイアスbを関数fに通して出力y決まる

a=w * x + b

y=f(a)

バイアスとは

出力する度合を調整するための値

閾値と同じ効果が得られる

誤差逆伝播法が使用できる

ここでは、関数fはステップ関数(閾値を超えていたら1、超えていなければ0)とする

バイアスのイメージ
  • ステップ関数の適用前

  • ステップ関数の適用後
入出力の例
  • 入力
    x:天気
  • 出力
    y:外出する(1)、しない(0)
SEおっさん
SEおっさん
バイアスは理解できたかのぅ
簡単に誤差を修正でき、閾値と同じ効果がある
というのがポイントじゃよ

【Step5】活性化関数を理解する

入力xと重みwとバイアスbを非線形な活性化関数fに通して出力y決まる

a=w * x + b

y=f(a)

ここでは、活性化関数fはシグモイド関数とする

入出力の例
  • 入力
    x:天気
  • 出力
    y:外出する確率

非線形関数を使う理由

  • 単純な1次関数(線形関数)は複雑な判定ができない
  • 線形関数はいくら層を重ねても非線形関数にはならない
  • 非線形関数は複雑な判定ができる
SEおっさん
SEおっさん
活性化関数は理解できたかのぅ
単純な線形関数を複雑な非線形関数に置き換える
というのがポイントじゃよ

【STEP6】複数入力を理解する

入力と重みx1w1、x2w2とバイアスbを活性化関数fに通して出力y決まる

a=(w1 * x1) + (w2 * x2) + b

y=f(a)

ここでは、活性化関数fはシグモイド関数とする

入出力の例
  • 入力
    x1:年齢
    x2:体重
  • 出力
    y:ダイエットする確率
SEおっさん
SEおっさん
複数入力は理解できたかのぅ
複数の入力に対して重みで重要度(特徴)を設定する
というのがポイントじゃよ

【STEP7】複数出力を理解する

 

入力と重みx1w1、x2w2とバイアスbを活性化関数fに通して出力y1y2y3が決まる

a=(w1 * x1) + (w2 * x2) + b

y=f(a)

ここでは、活性化関数fはソフトマックス関数とする

入出力の例
  • 入力
    x1:身長
    x2:体重
  • 出力
    y1:Sサイズの確率
    y2:Mサイズの確率
    y3:Lサイズの確率
SEおっさん
SEおっさん
複数出力は理解できたかのぅ
服のSMLサイズなど、複数の確率がそれぞれ求められる
というのがポイントじゃよ

ディープラーニングの仕組み(その2)パーセプトロン

形式ニューロン同士で結ばれたネットワークをニューラルネットワークといいます。

ニューラルネットワークは入力(インプット)と出力(アウトプット)の集まりです。

2つの形式ニューロンがお互いにネットワークで結ばれたモデルをパーセプトロンといいます。

パーセプトロンのニューロンは入力層と出力層に分かれるので、2層のニューラルネットワークとなります。

ニューラルネットワークでは、1つのニューロンの出力が次のニューロンの入力となります。

パーセプトロンの場合は、入力層のニューロンの出力が、出力層のニューロンの入力となるわけです。

  • 入力層:初めの入力を受けるニューロン
  • 出力層:最後の出力を行うニューロン
SEおっさん
SEおっさん
パーセプトロンは理解できたかのぅ
ニューロンを繋げることで、より複雑な判定ができる
というのがポイントじゃよ


スポンサーリンク

ディープラーニングの仕組み(その3)多層ニューラルネットワーク

形式ニューロンが3層以上のニューラルネットワークを多層のニューラルネットワークといいます。

多層のニューラルネットワークによる学習をディープラーニング(深層学習)と呼びます。

ディープラーニングでは非線形関数な活性化関数を重ねることで複雑な判定を行うことができます。

たろちゃん
たろちゃん
ディープラーニングという言葉が、やっとでてきたね
  • 入力層:初めの入力を受けるニューロン
  • 中間層:ニューロンから受けた入力を次のニューロンへ渡すニューロン
  • 出力層:最後の出力を行うニューロン
SEおっさん
SEおっさん
多層ニューラルネットワークは理解できたかのぅ
ニューロンを複数層で繋げて、かなり複雑な判定ができる
というのがポイントじゃよ
多層ニューラルネットワークがディープラーニングじゃ!

ディープラーニングは難しい。勉強してもわからんわ!

『結局…難しすぎで理解できない(かもしれない)』

『やるだけ無駄?』

など思う方はたくさんいると思います。

実際に僕もディープラーニング勉強して、難しさをカナ~り感じました。

だけど…

基本の部分をわかってしまうとある程度納得できるんですよね。

『そう、納得感!』

これが大事だよね。

AIって「なーんか興味ある」と思う人って多いと思うんです。

SEおっさん
SEおっさん
オッサンもAI興味を持つ一人!

ディープラーニングを飽きずに学ぶステップ

なんかワクワクするという気持ちが、勉強につながって、納得につながる

そうすると更に納得できるから面白くなって難しい勉強にもチャレンジしていける!

まぁ、こんなうまい感じにはいかないと思うけど

挫折と回復と挑戦を繰返して、ワクワク感を持って前進していく

これが最終奥義だと思います。

ディープラーニングを飽きずに学ぶステップ
  1. 勉強ではなく、興味(ワクワク)を持つからただヤル
  2. ヤルからには納得したい
  3. 基礎の動画や本やサイトを見る
  4. 飽きたらPythonで手を動かして実行してみる

このステップで焦らずに学んでいきましょう。

ディープラーニングの勉強に疲れたら…

それでも、やっぱりディープラーニングの

『う~ん、点が線になりません!』

ってときがあると思います。

 

でも、それでいーんです。

だって…

『好きでやっているんだから!』

 

ちょっと疲れた時は息抜きしてみましょう。

AIってなんだろーってところから、

歴史を踏まえて面白く解説しているのは、中田のあっちゃん。

やっぱ芸人さんは凄いな~

ディープラーニングの仕組み まとめ

『ディープラーニングとは』から始まり、形式ニューロン・パーセプトロン・ニューラルネットワークを解説いたしました。

いかがでしたでしょうか?

SEおっさん
SEおっさん
復習を兼ねて、ポイントを振り返りじゃ
ポイントまとめ
  • ディープラーニングは自分で学習する仕組み
  • ディープラーニングは多層のニューラルネットワーク
  • ディープラーニングは脳をモデル化している
  • 脳の神経細胞ニューロンをモデル化したのが形式ニューロン
  • 形式ニューロンで構成されたネットワークをニューラルネットワーク
  • 2層のニューラルネットワークがパーセプトロン
  • 多層のニューラルネットワークがディープラーニング
  • 出力と正解の差が誤差
  • 学習とは誤差を少なくして正解の精度を上げること
  • 誤差は重みとバイアスで調整する

最後にひと事

ビッグデータを使ったディープラーニングは、優れた画像認識・音声認識で実用化が加速しています。

音声認識による自動翻訳やGoogleHomeなどのスマートスピーカー。

画像認識・音声認識とIOTによる自動運転もこれから進むでしょう。

まだまだ伸びしろがメチャクチャ大きいのディープラーニングの仕組みを基本から抑えておくことは、エンジニアとしての幅に広がります。

新しい人脈や年収アップも大いに見込めると思います。

時には息抜きしながら、無理せずに頑張って下さい!

SEおっさん
SEおっさん
ここまで読んでくれてありがとう!

「記事を読んでもわからないトコがある」「内容が変だよ」
という時は、お気軽にコメントください♪

「もっとSEおっさんに詳しく聞きたい。何かお願いしたい!」
という時は、ココナラまで。メッセージもお気軽に♪


LINEでのお問合わせも受付中!
LINE公式アカウント

メッセージをお待ちしています!



スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • LINEで送る

コメントを残す

*