2017年07月17日

統計学に出てくる最小2乗法で回帰直線を求める計算が理解できれば、ニューラルネットワークは理解できますよ

storage.mantan-web.jp_images_2017_05_21_20170521dog00m200017000c_001_size8.jpg

deeplearning1.jpg
ここまで上記の本を拾い読みして分かったことは、

統計学に出てくる最小2乗法で回帰直線を求める計算が理解できれば、ニューラルネットワークは理解できる

ということです。

ですから、まず統計学の本で回帰直線を求める計算方法のところを読んで理解できるなら、ニューラルネットワークは理解できます。

なぜなら、本質的に同じことをやっているからです。

ということで、そんなに難しいことをやっているのではないことが分かります。

理工系の大学で習う数学が理解できる人なら、慣れれば、ニューラルネットワークもディープラーニングもそれほど難しく感じないのでは。

ただ、層が深くなった時に多少面倒になるようなのでそこで多少理解に時間がかかるくらいでしょう。

私のような出来の悪い頭でもそれほど難しいとは思えないので、難関大学の理工系学科出身者ならむしろ簡単に思うのではないでしょうかね。

では、これから作業を始めます。

posted by tsurutsuru at 12:57| Comment(0) | 日常茶飯事

ディープラーニングとニューラルネットワークとの関係

storage.mantan-web.jp_images_2017_05_21_20170521dog00m200017000c_001_size8.jpg

これから有名な機械学習でよく使われる(らしい)手書き認識データセットMNISTを実際に学習するプログラムを実装しようと思います。

私の場合、Pythonもインストールしないといけいないので作業は次のようになります。

(1)Pythonのインストール(ライブラリも)
(2)P112以降にあるニューラルネットワークの学習アルゴリズムを実装
(3)実際に動かして結果を得る

ちなみに、ディープラーニングとニューラルネットワークとの関係ですが、本には次のように書いてあります。

  ディープラーニングは、層を深くしたディープなニューラルネットワークです。

さて、ここでニューラルネットワークの学習の手順を確認しておきます。

(前提)ニューラルネットワークは、適応可能な重みとバイアスがあり、その重みとバイアスを訓練データに適応するように調整することを学習と呼ぶ。ニューラルネットワークの学習は次の4つの手順で行う。

〔ステップ1(ミニバッチ)〕
訓練データの中からランダムに一部のデータを選び出す。その選ばれたデータをミニバッチと言い、ここでは、そのミニバッチの損失関数の値を減らすことを目的とする。

〔ステップ2(勾配の算出)〕
ミニバッチの損失関数を減らすために、各重みパラメータの勾配を求める。勾配は、損失関数の値を最も減らす方向を示す。

〔ステップ3(パラメータの更新)〕
重みパラメータを勾配方向に最小量だけ更新する。

〔ステップ4(繰り返す)〕
ステップ1、ステップ2、ステップ3を繰り返す。


皆さん、ニューラルネットワークの学習と言ってもこれだけです。人間の脳も化学的にこれと同じことをやっているのでしょうね。

では、これから作業を始めます。早ければ明日にも結果をレポート出来ると思います。



posted by tsurutsuru at 12:35| Comment(0) | 日常茶飯事