備忘録(ゼロから作るDeep Learningを読んで)

はじめに

本記事では,ゼロから作るDeep Learningを読んで自分が後から忘れそうなことを点々と記録する.間違ったこと書いていたら,指摘していただけると幸い.

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

  • 作者:斎藤 康毅
  • 発売日: 2016/09/24
  • メディア: 単行本(ソフトカバー)

3章.ニューラルネットワーク

出力層で使用する活性化関数は,回帰問題では恒等関数,2クラス分類問題ではシグモイド関数,多クラス分類問題ではソフトマックス関数を一般的に利用する.

  • 恒等関数
    入力をそのまま出力する関数.
  • シグモイド関数
    • 出力の値を0から1に押し込める関数.
    • ステップ関数と似ているが,滑らかさが違う.
    • 微分して0にならない非線形関数.
  • ソフトマックス関数
    • 出力が0から1の間の実数.
    • 出力の総和は1になる→各クラスの属する確率の総和が100%.
      ex. 「5%の確率で0番目のクラス,20%の確率で1番目のクラス,75%の確率で2番目のクラス」みたいな出力.

4章.ニューラルネットワークの学習

  • ミニバッチ学習
    NNで学習するとき,数百万,数億のデータを扱う場合,すべてのデータを対象に損失関数を計算するのは現実的ではない.そこで,データの中から一部を選び出し,その一部のデータを全体の「近似」として利用する.訓練データからある枚数だけ抜き出し(ミニバッチ),そのミニバッチごとに学習を行う.このような学習手法を,ミニバッチ学習という.
    →NN以外(SVM,決定木とか)の学習ってどんな風にやっているのか知らないことに気が付いた.あとで調べる.
  • エポック(epoch)
    学習の時に用いられる単位.1epoch=学習において訓練データを全て使い切った時の回数に対応する.10000個の訓練データに対して100個のミニバッチで学習する場合,SGDを100回繰り返したら,全ての訓練データを“見た”ことになる.この時,100回=1epochとなる.

6章.学習に関するテクニック

パラメータの更新方法には,SGDの他に有名なものとして,MomentumやAdaGrad,Adamなどの手法がある.

  • SGD(確立的勾配降下法)
    勾配方向へある一定の距離だけ進む.
  • Momentum
    ボールが地面の傾斜を転がるように動く.
  • AdaGrad
    AdaGradのAdaは「適応的」を意味するAdaptiveに由来し,パラメータの要素ごとに適応的に学習係数を調整しながら学習を行う手法.
  • Adam
    Momentumは,ボールがお椀を転がるように物理法則に準じる動き,AdaGradは,パラメータの要素ごとに,適応的に更新ステップを調整する手法.Adamは,両者を融合したような手法.

7章.CNN

  • 畳み込み層
    画像にフィルター通すみたいな層.全結合層だと,1次元データにしなきゃいけないので,空間的な情報(画像中の位置とか)が失われていたが,畳み込み層だとその形状を維持することができる.
  • パディング(padding)
    畳み込み層の処理を行う前に入力データの周囲に固定のデータ(0など)を埋めること.畳み込み演算すると,空間的に縮小されるのでいつか出力サイズが1になる.パディングをすることで,畳み込み演算を何回も繰り返すことができるようになる(層を深くできる).
  • プーリング層
    縦・横方向の空間を小さくする層.ある領域を1つの要素に集約するような処理を行い,空間サイズを小さくする.領域の情報を集約するので,微小な位置変化に対してロバストになる.

8章.DNN

なんで層を深くするのか.

  • 層数に比例して,認識性能も向上するから.
  • ネットワークのパラメータ数を少なくできるから.
    入力データのある5×5の領域を“見る”場合,5×5の畳み込み層だと5×5=25個のパラメータであるのに対して,同等の領域をカバーする3×3の畳み込み層を2層通す時は,3×3×2=18個のパラメータとなり,畳み込み層を深くする方がパラメータの数が少なくなる.
  • 効率的に学習を進めることができるから.
    ex. 複数の層の前半では,エッジなどの単純な形状に反応し,後半では物体のパーツなど複雑なものに反応するようになる.学習する問題を各層で分解することができる.

感想

いい本.実装と計算グラフ,図が載っていて分かりやすかった.あとNNの仕組みはなんとなく知っていたけど,より分かった気がする.本読んだ後に下記の動画(再生リスト)を観ると,「本に載ってたやつだ!」となって理解が深まるのでおすすめ.

www.youtube.com

Deep Learning精度向上テクニック - YouTube