この記事では、(記事)ディープラーニングを動画で理解する の記事に載せた動画の解説をします。
DNN内部の実行順序は次のとおりです。具体的に見ていきましょう。
DNN
動画で表しているのはディープニューラルネットワーク(DNN)です。これはディープラーニングの基本となるモデルです。
これを応用した畳み込みニューラルネットワーク(CNN)が画像処理によく使われていますが、小さな画像であればDNNでも処理ができます。
1.入力を行列にする
ニューラルネットワークの中身は行列の計算です。入力したデータは画像も音声も数値も全て行列に置き換えられます。
例えば画像は1ドット毎に [縦、横、色] という数値に置き換えることができます。これを分けたり結合したりする計算に行列が都合いいのです。また、大きなサイズのデータや大量のデータを処理することにも行列は長けています。
入力層は、動画のように1ドット単位で入力するケースがあるほか、複数の画像をバッチという形にまとめて、まとまりを行列にして入力することもあります。
2.順伝播する
入力されたデータ(行列)は中間層、出力層に向かって計算を行います。順伝播(じゅんでんぱん)といいます。
順伝播の間に、データに重み(W)というものがかけ算されます。そして、隣り合う数値が足し算され、次の層へ進みます。
なぜ重み(W)をかけ算するの? -> 特徴である部分を強調するためです。
なぜ隣り合う数値を足し算するの? -> データの継ぎ目を作りたくないからです。
な -> ええい、正直言うと、脳神経を真似て作ってみたらうまくいったんです!
3.一時結果を出す
この絵は分かり易くするため少し嘘が入っています。
出力を30%と出してますが、本当は少し手前で損失(ロス)という数値を出してから折り返します。
30%というのは、入力した手書き文字が5である確率を示しています。これを100%にするよう、これからDNNは頑張っていきます。
近づけるにはあと70%必要ですね。これがロスのようなものです。
4.逆伝播する
ロスが出たら、計算を逆に行っていきます。逆伝播といいます。
何のための逆伝播でしょうか。重み(W)を修正するためにあります。
先ほどの一時結果が100%へ近づくようなWにしていきます。ただしできるだけ滑らかに変化していくよう、微分を使った計算になります。
微分と聞くと難しそうですが、逆伝播を使うと簡単に計算できるのです。そのように考えられているんですね。なにしろ何百・何万回と往復するので、できるだけ簡単な計算でないといけません。
5.順伝播と逆伝播を繰り返す
こうした順伝播・逆伝播を繰り返し、100%に近づけていきます。この時、重みWが変化し続けます。
何回往復するかは実行する側が定義します。どの程度で精度が頭打ちになるか、実行する側も何度か試行が必要です。
100%になるAIは現在のところないので、9割以上になれば良いところ、として終了させます。
6.学習済みの重みWが求まる
こうして終了した時には、正解に近い結果を出せるような重みWが求まります。このWの集まりが学習済みモデル(パラメータともいいます)となります。
動画はこちら → (記事)ディープラーニングを動画で理解する
DNNの計算要素
以上の学習は、次のような要素が入っています。それぞれ複数の手法があり、選択によってモデルの精度が変わってきます。機会があれば紹介していきます。
- 活性化関数
- 正則化
- 損失関数
- 最適化アルゴリズム