継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

ゼロから始めるディープラーニング 8章

タダです。

今回は8章のディープラーニングについての勉強まとめです。最後の章になります。

※記事は理解ができるたびに何度もアップデートしていこうと思います。 www.oreilly.co.jp

目次

なお、各章の内容は次の通りです。

8.1

  • CNNのネットワークを深くしたものをVGGという
    • 重みの初期値にHeの初期値、重みパラメーターの更新にAdamを使う
    • 後段の全結合層では、Dropoutレイヤを使う
    • 画像認識度は高く、誤認識率も低いネットワークを構成できる
  • 画像の認識精度を高めるための手法として以下のものがある
    • アンサンブル学習
    • 学習係数の減衰
    • Data Augmentation(データ拡張)
      • Data Augmentationは入力画像(訓練画像)をアルゴリズムによって人工的に拡張する
      • この手法で訓練画像を効率的に増やせれば、認識精度を向上できる
  • 層を深くすることの重要性について、理論的に多くのことはわからない
    • ただ、層を深くすることで階層的に情報を渡せる(前の層で抽出した特徴を次層で情報として使えるためより高度な学習ができる)
    • 層を深くするメリットは、ネットワークのパラメータ数を少なくできる
      • 層を深くすれば学習データを少なく、高速に学習ができる(層を深くすると学習する問題を階層的に分解することができる)

8.2

  • ディープラーニングが注目を浴びるきっかけになったのはILSVRCがきっかけといわれている
  • ImageNetは100万枚を超える画像のデータセット
  • 近年、VGG、GoogLeNet、ResNetは有名なネットワーク
  • VGGはCNNだが畳み込み層や全結合層(重みのあるそう)を全部で16層(もしくは19層)まで重ねている点が特徴
    • 3 × 3の小さなフィルターによる畳み込み層を連続して行っているところが注目ポイント
  • GoogLeNetもCNNだが、ネットワークが縦方向の深さだけでなく、横方向にも深さがある
  • ResNetはMicroSoftによって開発されたネットワーク
    • 層を深くしすぎるとうまく学習できない問題があるが、ResNetではスキップ構造やバイパスという仕組みを使って、左記の問題を解決する

8.3

  • ディープラーニングの高速化に役立っているのがGPU
    • ディープラーニングでは大量の積和演算または行列内積を行うが、このような大量並列演算はGPUの得意分野
    • GPUの普及で学習の高速ができたが、その時間を短くしたいという要望が当然のように出てくるが、これはディープラーニングの学習をスケールアウトすることで対処する(分散学習)
      • 例えば、Tensorflow、CNTKなど
    • 使用するGPUが増えれば学習速度も向上する
  • 分散学習で難しいのがどのように計算を分散させるか

8.4

  • ディープラーニングの実用例として以下のものがある
    • 物体検出(Amazon Recognitionみたいな/CNNベースの手法)
    • セグメンテーション
    • 画像キャプション生成

8.5

ディープラーニングの今後の話のため割愛

まとめ

以上がゼロから作る Deep Learningの全章まとめになります。

一冊分の毎週の学習が完了したので振り返りをします。

よかったこと

  • 隔週でブログを書くため本を読み進める癖がついた
  • 業務以外の知識の習得のきっかけができた
    • 社内でも輪読会を行っています
  • 以前よりディープラーニングの専門用語への抵抗が少なくなって、専門の文章でも読み進めたりできるようになった

よくなかったこと

  • 毎週1章分を読み進めるということができていない週があった
  • 理解が追いついていない部分が多々ある
    • もう一度読んだり、関連書籍・ページなどで補完する
  • 数式に抵抗があり、どのような計算を行っているのかがわかりきっていない
    • JupyterNotebookで数式処理をやってもらったらわかりやすかったのでこちらで勉強したい

来週からはコンテナの勉強をしようと思います。

こちらの本が積読になっているので消化します。 http://amzn.asia/6xzNUQm