こんにちは、ヒガシです。
今回はAIの中身について少し解説していこうと思います。
早速ですが本題です。
AIの勉強をしていると、以下のような絵を一度は目にしたことがあるのではないでしょうか?
(人間の脳をイメージして・・・とか書かれてるやつですね。)
この記事では、
この図ではいったい何をしているのか?
ということを解説していこうと思います。
また、この球の意味を踏まえたうえで、AIが学習するとはどうゆうことなのか?
というところまで、説明していこうと思います。
すこし難しい内容になっているかもしれませんが、高校数学をしっかりと勉強したことがある人なら、ある程度理解できると思います。
それでは早速やっていきましょう。
丸がつらなった絵でやっていること
さっそくですが、まずはさきほど紹介したこの絵について解説していきます。
この絵の中で行われていることを一言で表すなら、行列計算です。
そう、高校の数学で勉強した横と縦をかけて足すやつです。
上の絵でやっていることを簡単に説明すると
一番左にある6つの球は、1行、6列の行列です。
(ここは入力にあたる部分で、既存のデータだと思えばOKです。)
その行列と適当な数字が入った6行、4列の行列の積を計算します。
これが1層目と2層目の間の線の正体です。
(それぞれの〇から4本線が出ていますよね。)
すると1行、4列の行列が出来上がるはずです。
これが2層目の4つの球の中身です。
同じようにさきほどつくった1行、4列の行列に適当な数値が入った4行、2列の行列の積をとると1行、2列の行列ができます。
これが3層目。
おなじことをもう一度やれば1行、1列の行列ができ、最後の1つの球になるわけです。
(ここが最後の出力です。予測したいものの対象だと思えばOKです。)
あの絵でやっていることをざっくり説明するとこんな感じです。
(実際はバイアスとかゆうのを足す作業があるのですが、話が複雑になるので省略します。が、やっていることはほんとこんな感じです。)
これらの行列計算をすることで、適当な6つの数値から複雑な計算を経て1つの数値を算出する関数が作り上げられるわけです。
これがいわゆるニューラルネットワークというやつです。
今回は最初の層(インプット)の数が6つ、最後の層(アウトプット)の数が1つということを想定して説明しましたが、インプット、アウトプットの数が変わったらそれに応じて内部の行列の大きさを書き換えれば同じことが出来るはずです。
基本的にディープラーニングという名目で使われているAIでは、こんな計算がおこなわれているということを覚えておきましょう。
(AIの学習というのは、さきほどの説明の中ででてきた行列の内部の数値を最適化する作業だと思えばOKです。)
エクセルで実際に計算してみよう
ざっくりと言葉で球の意味を説明していましたが、これだけでは全然イメージがつかないと思います。
というわけで、次は先ほど紹介した内容をエクセルで実際に計算してみましょう。
計算の都合上、さきほど紹介した球の絵を以下のように90度回転させた状態をイメージしておいてください。
この6つの球が1つの球になる過程を計算してみます。
まずはインプットとなる6つの数値を準備します。
⇒1行、6列の形で準備します。
今回は適当にこんな数値を用意しました。
先ほども説明したようにここから1行4列の行列をつくるにはこいつと6行、4列の行列の積をとる必要があります。
そのための行列も以下のように適当に作りました。
では、これらの行列の積を計算してみましょう。
MMULT関数について詳しく知りたい方は、以下の記事を参考にしてください。【エクセル】行列の積を一発算出する方法!VBAへの組み込み方法まで!
以下がMMULT関数を使って行列の積を計算している様子です。
層2には以下のような結果が出力されています。
これで以下の絵の上から2番目の4つの球の部分が計算できました。
次の層の計算に移りましょう。
先ほど算出した、1行、4列の行列から2つの数値を算出したいので、次は4行2列の行列と積をとります。
ここも以下のように適当な行列を作成しておきました。
さきほどと同じ要領で、層2の行列と積をとります。
層3として以下のような1行、2列の行列が出力されました。
ここまで来たらあとはもう同じことですね。
もうひとつ行列をつくって最後の1つの数値になるまでまで計算してしまいましょう。
最終的な計算結果は以下の通りです。
最初の6つの数値が最終的に1つの数値になりましたね。
左側の球の絵と対比してみるとおなじようなことができていることがわかると思います。
というわけで以上が、球が連なった絵の中で何が行われているのかの解説でした。
AIの学習とは何か?
ざっくりと球の絵がどうゆうことをしているかがわかったと思います。
つぎは、AIの学習とはどうゆう作業をしているのかを解説していきます。
例えば、先ほどまでの説明の中で出てきた行列Aの4列目を全部0.5にしてみましょう。
最終層の数値が2.95⇒2.57に変化したことがわかります。
こんな感じで行列の内部を微調整することで出力が変わっていきます。
AIの学習過程の中では、
Aという入力がきたら出力はX
Bという入力がきたら出力はY
Cという入力がきたら出力はZ
というような、与えられたデータが成立するように、途中で出てくる行列内の数値を書き換えていくという作業を行っています。
(もちろん多少の誤差は生じますが・・・。)
この関係性を満たした行列を構築しておけば(つまりデータが学習しておけば)、出力のわからないDという入力がきたときでも、何かしら信頼できそうな数値が出てくるというわけです。
なんとなく学習の中身を理解していただけましたかね?
おわりに
というわけで今回は、ディープラーニングの中で行われている計算内容、AIが学習するとはどうゆうことなのか?ということを解説してみました。
あなたのAI学習の中で何かの役に立てていれば幸いです。
このブログでは、AI関係のことから、pythonやVBAの使い方まで、幅広くご紹介しています。
ぜひ通勤中なんかに他の記事も読んでもらえると嬉しいです。
⇒興味がある方は【ヒガサラ】で検索!
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
にほんブログ村
それではまた!
Follow @HigashiSalary
コメント