ゼロから作るDeep Learning
三角関数のサンプリング学習(WebWorkersによる並列計算)
昨今注目を集めているAI(人工知能)を学びたいと思い立ち、ディープラーニング(Deep Learning、深層学習)と呼ばれるAIの数理モデルである多層構造のニューラルネットワークを書籍「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装」を参考にを独習していきたいと思います。本書籍ではプログラミング言語としてPythonが利用されていますが、本項ではJavaScriptで実装していきます。
目次
- 準備1:行列の和と積を計算する関数の実装
- 準備2:ベクトルと行列の積を計算する関数の実装
- 準備3:多変数関数の数値微分と極小値の探索
- 1.1層ニューラルネットワークの実装(バイアスなし、活性化関数なし、学習なし)
- 2.1層ニューラルネットワークへのバイアスと活性化関数の追加
- 3.1n1型2層ニューラルネットワークの実装(学習なし)
- 4.1変数関数を学習させてみる1:勾配法による学習計算アルゴリズム
- 5.1変数関数を学習させてみる2:勾配法による学習計算アルゴリズムの実装
- 6.1変数関数を学習させてみる3:ニューロン数による学習効果の違い
- 7.誤差逆伝搬法(バックプロパゲーション)の導出
- 8.順伝播型ニューラルネットワーク「FFNNクラス」の実装(JavaScript)
- 9.三角関数のサンプリング学習(WebWorkersによる並列計算)
- 10.学習後の各層ニューロンの重みの可視化
- 11.層数とニューロン数による学習効果の違い
三角関数のサンプリング学習
前項で開発した順伝播型ニューラルネットワークFNNNクラスを用いて三角関数を学習させます。 今回は、複数並列で1000回ごとの学習で最も学習効果が上がっている結果(重みとバイアス)を用いて次の1000回の学習を複数並列で行うという学習スタイルで行います(6層ニューラルネットワーク(各層のニューロン数:1,10,10,10,10,1))。 複数並列の計算はWebWorkersを用いて並列計算を行います。
実行結果
【メモ】今回は実行時間を考慮して学習回数の区切りを1000回としましたが、もっと大きな回数、例えば10000回の方が学習が安定することがわかりました。(実行ごとに結果が異なり、学習がうまく行っていない場合が存在します。)