スポンサーリンク

ニューラルネットワークをカンタンに説明すると?

アプリ開発、アルゴリズム
何十年かけてニューラルネットワークについて学習し、自分なりに落とし込めたので
まとめてみることにしました。

ニューラルネットワークを真剣に勉強していこうと思ったきっかけは
FXの上下予想ツールを作れないかと調べていた時にたまたま、
ニューラルネットワークで予想ツールを作っているサイトを見つけたのがきっかけでした。

最終的にはそちらも紹介していきたいと思っていますが、今回はニューラルネットワークを超簡単なモデルで考えてみようと思います。

ニューラルネットワークモデルの簡略化

上のような図は前回も使用しましたが、ニューラルネットワークの基本的な図形になります。

Y=(X1*W1)+(X2*W2)+b

で「tに近しい値を出すために、w1w2やbを調整していく」のが基本作業になるわけです。
この図を見ていて、ふと思ったことがありました。それは、Xを一つにしてwをaにする
下のような図を考えます。

この図のYの式は、「Y=ax+b」中学数学で習った1次関数が現れました。
つまり、ニューラルネットワークは「1次関数ののaとbを求めるためにたくさんのデータを参考にする
プログラム」と言い換えることができます。
(まあ、実際にはXもaもたくさんあってもっと複雑な式なわけですが、
とりあえず基礎を理解するためには1次関数でやってみるものありなのではないか という結論になりました。)

重み更新

Y=ax+bで言うところのa,bを更新する式を下に書きます。
これは
誤差逆伝播法を宇宙一わかりやすく解説してみる

を参考にしました。

  • 更新後のa = 更新前のa – (η*(y-t)*(1-y)*y*x
  • 更新後のb = 更新前のb – (η*(y-t)*(1-y)*x)

  • ηは学習率といい、データの更新度合いが調整できます。ここを変えることでオーバーフローを防げます。

    どうしてこうなるのかは、微分積分とかを駆使すればわかるみたいですが、そこは理解していません。
    とりあえず、重み更新の式がこれというのはわかったのでそのまま参考にさせてもらうことにしました。
    (ニューラルネットワークのプログラムを作るのが目的であって、仕組みを完璧に理解することが
    目的ではないため)

    感想

    参考にしたサイトで紹介されていた本は私も買っていました。
    いろいろ読んだ中で一番わかりやすかったように思います。
    ただ、参考サイトはそれをさらに補ってくれて、ニューラルネットワークを勉強する際に
    何度も参考にしました。
    次回は、Y=ax+bのデータを使ったニューラルネットワークを考えていきたいともいます。

    コメント

    タイトルとURLをコピーしました