ディープラーニング入門、ようやく最後です。
第1章と第2章のメモは次の二つ。
https://qiita.com/iaintsorrykamio/items/8f378c194e58b977a4ef
https://qiita.com/iaintsorrykamio/items/ca10cb220903eea9b8f6
Step3. ディープラーニング入門
13. ニューラルネットワークの基礎
ようやくニュートラルネットワークについて学んでいきます。
ニューラルネットワークの基本的な流れ
前の層の出力値に線形変換(重回帰分析をベクトルで計算しているイメージ)と非線形変換(活性化関数による変換)を施すことを繰り返して出力層に計算結果を出す。
- 活性化関数の例:従来、シグモイド関数が用いられてきたが、近年はReLU(入力が負の時は出力が0、入力が生の時は出力はそのまま)が用いられている。
このようなやり方は変数のままで解を求めている(解析的に解いている)ので、複雑な関数の時には最適解を出すのが困難。
ニューラルネットワークの訓練
そこで、繰り返し数値計算を行うことで最適解を求める方法が実用的には用いられている。そこで、目的関数(平均二条誤差とか交差エントロピー)の値を最小にするようなパラメータを求めることで、ニューラルネットワークを訓練する。その最適化アルゴリズムの一つが勾配降下法。
実際にはミニバッチ学習という方法で、データセットを分割して行う確率的勾配降下法が使用されている。
誤差逆伝播法
層数が多いニューラルネットワークでは、上のやり方では膨大な時間がかかってしまう。そのため出力側から入力側に向かう順電播で求めた勾配を、経路を逆にたどるようにして掛け合わせることで、パラメータについての目的関数を計算することができる。
だけでは、正直よくわからない(チュートリアルを読んでも雰囲気しかわからない)ので、要勉強箇所ですね。。。
14. Chainerの基礎
計算はChainerがやってくれるので、ひたすらコードを実行していきます。
15. Chainerの応用
Chainerの機能を活用して、結果を改善する方法を学びます。(一気に色々日本語で言われて混乱したが、とりあえず次に進む)
16. トレーナとエクステンション
トレーナというのは訓練ループ、つまりミニバッチをネットワークに入れて、損失関数や勾配を計算したりする流れを段階ごとにまとめて、まとめたものを言うようです。
アップデータを使えば明示的にコードを書かずに済むし、エクステンションを使って訓練ループの中に付加的な処理を入れることができるということらしいです。
まとめ
知らない単語もいっぱい出てくるし、ただこれだけを使ってディープラーニングを学ぶのは少し難しいなぁと個人的に思いました。
この記事をちまちま書いている間に、業務の方でディープラーニングを学ぶ機会があって、オライリーの『ゼロから作るDeep Learning』を読んだりしたので、後半なんとか持ち直して理解できるようになったかなぁという感じです。
きっかけとしては良い教材だと思うので、ここで挫けずにいろいろ学んでいくしかないですね、結局。