この記事は
"ゼロから作る Deep Learning (オライリー・ジャパン)"を1時間でラフに読み込みます。
まえがき
- 誰のための本か?誰のための本ではないか?
- Python実装を記載する代わりに、TFなどフレームワークは言及しない
- 最新情報は記載しない
=> 入門編であること + 続きはWEBで、でOK
Python入門
- 基本的なPythonスクリプトの使い方
- NumPy, Matplotlib
=> さわれば身につくOK
パーセプトロン
- 論理演算の実装
- 重みとバイアス
- 多層パーセプトロン
=> 神経模した
ニューラルネットワーク
- パーセプトロンへ中間層(hidden layer)を追加した
- 活性化関数(activation function)
- sigmoid, step, ReLU
=> 活性化関数がしきい値を持っているのか
-
出力層
- 回帰問題 : 恒等関数 (データ予測に用いる)
- 分類問題 : softmax
MNISTの話
バッチ処理で高速化
ニューラルネットワークの学習
- 訓練データとテストデータ
- 損失関数 (loss function)
- 二乗和誤差 (mean squared error)
- 交差エントロピー誤差 (cross entropy error)
-
学習とは
- 損失関数が小さくなるように重みパラメータを更新すること
ミニバッチ学習
-
勾配 (gradient)
- 偏微分
-
学習アルゴリズムの実装
- ミニバッチ学習
- 勾配の算出
- パラメータ更新
- くりかえす
誤差逆伝搬
- 重みパラメータの勾配計算を効率よく行う方法
- 計算グラフで解く
- 中間計算を確認できる => デバッグに役立つ
学習に関するテクニック
- パラメータ更新
- SGD (確率的勾配急下法:stochastic gradient descent)
- Momentum
- AdaGrad
- Adam
- 重み初期値
- Xavier, He
- Batch Normalization
- 過学習対策
- Weight decay
- Dropout
CNN (Convolutional Neural Network)
- NN
- Affine -> ReLU
-
CNN
- Conv -> ReLU -> Pooling
-
NN
- 1次元化されるのでデータ次元が無視されてしまう
-
CNN
- フィルタ演算
-
プーリング層の特徴
- 最大値を取るだけなので学習パラメータなし
- チャンネル数は変化しない
- 微小な位置変化にロバスト
-
代表的なCNN
- LeNet
- AlexNet
Deep Learning
-
Deepにする利点
- パラメータ数を少なくできる
- 学習データを少なくできる
-
DNN
- ImageNet
- VGG
- GoogleNet
- ResNet
-
学習の高速化
- GPU
- 分散学習
- 演算精度、bitを減らす
-
実用例
- 物体検出
- セグメンテーション
- 物体ラベリング
- 画像生成
- 自動運転
強化学習
- 行動の結果として、報酬を与えて、学習をすすめる
いかがでしたか?
用語、世界観について、ざっと眺めることができた。Pythonコードは、最新論文を手元のフレームワークで実装&検証するときに応用できそう。
次に
- 解きたい課題に対して、どういうネットワークを適用すればよいのか勘所をみにつけたい
- ネットワークの問題点と解決方法について把握したい
- 論文はどうせ英語で読むので、用語も英語で覚えておいたほうがぐぐらびりてぃ高そう