Upgrade to Pro — share decks privately, control downloads, hide ads and more …

第3回 ゼロから作るオトナのDeep Learning

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

第3回 ゼロから作るオトナのDeep Learning

Avatar for Takahiro Yano

Takahiro Yano

May 10, 2017
Tweet

More Decks by Takahiro Yano

Other Decks in Programming

Transcript

  1. DeepLearningのライブラリ Kerasを使おう • Kerasは人気のDeepLearningのライブラリ – Tensorflow/Theranoをバックエンドにして動く • 日本語のドキュメントある https://keras.io/ja/ •

    現在、Kerasは過渡期にある – マルチバックエンド版(通常版) Keras → Keras2へ (2017/3月) – Keras2が順次TensorFlowに組み込まれる • Tensorflow 1.1版 tf.contrib.keras (2017/4/21) • Tensorflow 1.2版 tf.keras (2017/6~?)
  2. 紹介するモデル • 画像 – Mnist(手書き数字の認識、分類問題) – SRCNN(画像の超解像、回帰問題) – VGG16(一般物体認識、分類問題) –

    SRGAN(画像の超解像、回帰問題) • テキスト – IMDB(映画レビューのネガポジ分類) • LSTMまたはCNNで解く
  3. アジェンダ • Convolution処理(畳みこみ)について – 平均化、微分、鮮鋭化など • 画像のDeeplearning – Convolutional Neural

    Network(CNN) • ConvolutionをDeeplearningで使おう! • Conv2D層、Conv1D、Conv3D層 – 分類問題、回帰問題の例 • テキストのDeeplearning – RNN/LSTM層について – 分類問題、回帰問題の例
  4. アジェンダ • Convolution処理(畳みこみ)について – 平均化、微分、鮮鋭化など • 画像のDeeplearning – Convolutional Neural

    Network(CNN) • ConvolutionをDeeplearningで使おう! • Conv2D層、Conv1D、Conv3D層 – 分類問題、回帰問題の例 • テキストのDeeplearning – RNN/LSTM層について – 分類問題、回帰問題の例
  5. アジェンダ • Convolution処理(畳みこみ)について – 平均化、微分、鮮鋭化など • 画像のDeeplearning – Convolutional Neural

    Network(CNN) • ConvolutionをDeeplearningで使おう! • Conv2D層、Conv1D、Conv3D層 – 分類問題、回帰問題の例 • テキストのDeeplearning – RNN/LSTM層について – 分類問題、回帰問題の例
  6. 通常のConvolutionと CNNのConvolutionの違いは? • CNNのフィルタは、係数が未知数! – 学習で最適化する ? ? ? ?

    ? ? ? ? ? 通常のConvolution フィルタの係数が決まっており 用途も決められていた(平均化など) CNNのConvolution フィルタの係数が決まっており 人工知能の目的に応じて 自動的に最適な値になる
  7. Dropout層 • 過学習を抑制する方法として知られている • 学習が進まないときの調整項目としても有効だと思う – NNのパラメータ空間がランダムに変化する • いろんなところに挟んでみよう ←Dense

    ←Dense ←Dense ←Dropout (線の切断) ←Dropout (線の切断) Kerasなら1行でOK 引数には切断する割合を入れる 引数には0~1の値をいれる (0~0.5が好ましい)
  8. Neural Networkの学習の ざっくりとした説明(復習) [ ] OR NAND OR 2 NAND

    2 OR 1 NAND 1 b b w w w w ⎥ ⎦ ⎤ ⎢ ⎣ ⎡ AND AND 2 AND 1 b w w ⎥ ⎦ ⎤ ⎢ ⎣ ⎡ https://elix-tech.github.io/images/2016/kaggle_facial_keypoints/animation1.gif ( ) ⋯ , , , , 2 1 2 1 w w x x f y = 正解データ : y′ 2 y y loss − ′ = NNのパラメータ空間 等高線はlossをあらわす 転がってる球が現在のNNの状態 転がり方が最適化方法の違い は予測データ y 定数 定数 変数 XORのNN 2 w 1 w y′ ) 比較(loss 入力データ
  9. Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network (SRGAN,

    2016.9) • https://arxiv.org/abs/1609.04802 正解画像 SRGAN SRResNet Bicubic拡大 GANは驚異的な性能を いろんな分野で出している
  10. アジェンダ • Convolution処理(畳みこみ)について – 平均化、微分、鮮鋭化など • 画像のDeeplearning – Convolutional Neural

    Network(CNN) • ConvolutionをDeeplearningで使おう! • Conv2D層、Conv1D、Conv3D層 – 分類問題、回帰問題の例 • テキストのDeeplearning – RNN/LSTM層について – 分類問題、回帰問題の例
  11. RNN/LSTM NN NN + state vector data1 data2 data3 :

    data1 data2 data3 : RNN/LSTM 普通のNN output output
  12. RNN/LSTM NN NN + state vector data1 data2 data3 :

    data1 data2 data3 : 過去のデータも把握する 入力されたデータ だけ把握する RNN/LSTM 普通のNN output output
  13. RNN/LSTM NeuralNetworkの単層 (行列+活性化関数) ベクトルの要素ごとの演算 ベクトルの結合 ベクトルのコピー 結合 コピー コピー コピー

    コピー コピー 要素ごとの掛け算 要素ごとの足し算 要素ごとに tanhを施す 行列がそれぞれの箱に 1つずつ入っている。 A,B,C,Dみたいな。
  14. 忘却ゲート • 忘れ方は Wf と bf で決定される • Wf と

    bf は教師データを利用した学習で求める 上式で ft を出したら ft ⊗ Ct-1 で忘却! シグモイド関数 (0〜1の範囲の出力にする) • 前時刻のステートベクトルの内容をどれだけ消去するかを 決定する
  15. RNN/LSTM 動作まとめ • ステートベクトルから情報削除(忘却) • ステートベクトルに情報負荷(入力) • ステートベクトルから必要な情報だけ読み出し(出力) • なにを忘れるか、なにを入力するか、何を読み出すかは  

    学習データによって自動的に最適化される • この方法を使うと短期記憶、長期記憶どちらもうまくいく、   と言われている – 自然言語処理を代表として、時系列データでよく利用される手法 • 参考 – http://colah.github.io/posts/2015-08-Understanding-LSTMs/
  16. END