Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

サルでもわかるディープラーニング入門 (2017年) (In Japanese)

27,394 views

Published on

サルでもわかるディープラーニング入門 (2017年)

人工知能に関しては何もわからないレベルから始めて
最後まで偏微分方程式とかさっぱりわからない、という状態で
ディープラーニングの解説をしてみました

※初出 20170121
※3分でわかるディープラーニング、を加筆(20170122)
※なぜディープラーニングが有効になったか、を加筆、TensorFlow playgroundをみて「クリックできればできる」は言い過ぎなのでその部分を訂正(20170123)
※ニューラルネットぽい概念図を加筆(20170124)
※「勝利の方程式』スライド加筆 (20170125)
※「問題解決の3段階」加筆 (20170126)
※「学習モデルをだます例」加筆 (20170301)


A1701talk deep-learning-introduction-170301(20170301)

Published in: Technology

サルでもわかるディープラーニング入門 (2017年) (In Japanese)

  1. 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . サルでもわかる ディープラーニング入門(2017 年) Toshihiko.Yamakami@access-company.com 山上俊彦 IoT 事業本部, ACCESS 2017/01 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 1 / 60
  2. 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ディープラーニング入門 人工知能第三期: クリックできれば 機械学習可能 - 本当に素人でも できるのか? 【東大松尾教授の言をうのみにしてディープラーニングを素人が勉強してみた】 段階 第一期 第二期 第三期 難度 専門家だけができる プログラムできればできる クリックできればできる (少々 “言い過ぎ”) 状況 原理と効果が発見、発表 機械学習ライブラリが公開 ツールが公開 逸話: 私「松尾先生によればマウスがクリックできればディープラーニングはできるそうです」 某社研究所長「松尾研の学生ならそうかもしれません。普通の人では無理でしょう」 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 2 / 60
  3. 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 本資料の目的 東大の人工知能研究室の学生の 1 1000 の脳みそでもディープラーニ ングできるように入門を解説します “人工知能に関してはサルなみの知能” でもわかるのだから大丈夫! δj l ≡ ∂C ∂zj l とかはわからなくても関係ない 注 1) ツールの使い方は説明しません 注 2) 正しいデータ処理の仕方は説明しません 注 3) Michael Nielsen: Neural Network and Deep Learning: http://neuralnetworksanddeeplearning.com/ を 3 日かけて 読み飛ばし、少しぐぐりましたった。「正しいディープラ ー二ング」の知識が必要な場合はお近くのディープラー ニング専門家にご相談ください 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 3 / 60
  4. 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 位置付け 多層シグモイド・ニューロン 人工知能 機械学習 ニューラルネットワーク 【ディープラーニングとは多層シグモイド・ニューロンによる機械学習】 注: 歴史的に「多層シグモイド・ニューロン」は「多層パーセプトロン」とも呼ばれる 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 4 / 60
  5. 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ツール (別資料を書いているので本資料では簡単に) Chainer なら TensorFlow なら Chainer Playground TensorFlow Playground 【オープンソースでライブラリが公開】 ・Playground:ウェブで動き方確かめられる TensorFlow Playground をいじってみた。学習向け視覚化環境なので、こ れを称して、「クリックすればできる」というのは言い過ぎかも TensorFlow については TensorFlow の使い方  http://www.slideshare.net/ToshihikoYamakami/tensorflowin-japanese 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 5 / 60
  6. 6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 分でわかるディープラーニング 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 6 / 60
  7. 7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 素人が勉強するうえで注意すべきこと 古典的な入門書は 少し前に書かれている プログラム可能な解説 - 今はツールが自動的に やってくれるので 使うだけの知識でいい 【勉強する上で注意すべきこと: 今は深いプログラム用知識は不要】 ・苦労して読んで理解して、深い知識は要らない、と気づく ・Google が TensorFlow というツールをオープンに公開 (2015 年 11 月) ・TensorFlow Playground は 2016 年 4 月公開 ディープラーニングの教科書を読むと ∑ とか偏微分方程式 (∂ が つく式) とかプログラムとか出てきますが、読んでわからなくて も関係ありません 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 7 / 60
  8. 8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 分でわかるディープラーニング データを入力に、隠れ層とよばれるノードのネットワークで つないで、欲しい結果(手書き数字識別なら 0 から 9 までの 結果)につないで学習させられる この学習は非常に強力でどんな問題でも解ける 1 層の隠れ層でも強力で過去のどんな手書き文字認識よりよ い結果を出せる 例えば、手書き数字が (28 ビット ∗28 ビット =784 ビットで隠 れ層が 30 ノードのニューラルネットワークで 784∗30=23520 の複雑度がある。これより多くデータを与えれば解ける 複雑さより少ないデータしかなければ学習結果はあてになら ない。単に答えを全部覚えているだけかもしれない。 本当にできたかどうかは学習とは別のデータで検証する 面倒な初期化や技法(正則化、ドロップアウト、等)がある が、計算機が勝手にやてくれる、あるいは既定値で設定され ているので悩まなくていい 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 8 / 60
  9. 9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ディープラーニングの概念図と意味 j W … R… z N … : … … 入力層 隠れ層 出力層 正解 ずれを調整 答えを満たすような 連立方程式 - 数値計算で 近似的に生成 【「神経」「学習」「深層」は高尚な雰囲気: 答えが合うよう連立方程式を作る(大量計算が実現)】 入力 x = 1, y = 2, . . . で出力は 3, 5 ax + by = 3 cx + dy = 5 式の構造も試行錯誤で決める a = −1, b = 2, c = 1, d = 2 他の (x,y) もこれで計算しよう 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 9 / 60
  10. 10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 以下はおまけ 以下は、ディープラーニングに知的興味のある人のための補足 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 10 / 60
  11. 11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ディープラーニングを支える計算力強化 1980 年代までに基礎はできていた 隠れ層によるニューラルネットワークは 1960 年代 多層隠れ層による教師なし学習を可能にする AutoEncoder(1986), RBM(1987) 2012 年 (Google の猫) と 1990 年は何が違う? デュアルコアが出たのが 2004 年 Google が Hadoop(実用的並列計算環境) を出したのが 2006 年 グラフィックアクセラレータが GPU に進化したのが 1999 年 Google の猫 (猫概念の自動画像認識) は 16 コアのマシン 1000 台で 3 日 18 ヶ月で 2 倍 (ムーアの法則)でが 22 年で 2 万倍、16 倍(コア)、 1000 倍 (並列計算)、10 倍 (GPU) で 32 億倍。1990 年の技術なら 96 億日= 2630 万年かかる 計算可能だとわかれば細部を最適化するのは容易 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 11 / 60
  12. 12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 順伝播ニューラルネットワーク 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 12 / 60
  13. 13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 簡単な原理:画像認識の例 ヒューリスティクス (試行錯誤) - SVM (95 %) - ディープラーニング 99 % 以上識別 【過去 30 年間の画像認識の進化】 非線形問題を 超多次元の線形問題に 某大学教授「何故かわからないが解ける」 ニューラルネットで論理構成、 間違いを教えれば解ける 入力と出力を神経系のようなネットワークでつなげばどんな問題 も解ける = どんな問題を解くプログラムも模倣できる 正解を教えてやってネットワークをトレーニングすればどんな多 次元の高度な解析手法をも上回ることができる 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 13 / 60
  14. 14. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . † パーセプトロン  († はわからないてもいい印) 複数の入力 (それぞれ重み) - 閾値 (発火) - 出力 【パーセプトロン:神経のモデル化】 (入力に w(重み) を掛け、b(バイアス) を足して発火判断=活性化関数) 複数の入力 (それぞれ重み) - 隠れ層 (多層) [畳み込み設計] - 出力 【多層パーセプトロン: NAND などの論理回路を構成可能】 ・ニューロンの数と重みをうまく調整すると任意の関数を近似できる ・多層になると表現力が増す → どう上手に収束させるかが機械学習の肝 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 14 / 60
  15. 15. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . † シグモイド・ニューロンへの進化 - 自動的に 回路構成を 学習可能 - 【パーセプトロンの学習向け進化形:シグモイド・ニューロン】 多層パーセプトロンは 論理回路を構成できる 微小入力変化に 微小出力変化する シグモイド・ニューロン ・微分しやすい、シグモイド以外にも tanh 関数, ReLU 関数などがある ・ReLU 関数が最適とも言われるが 99 % 以上の精度でなければあまり関係ない 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 15 / 60
  16. 16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . † 機械学習の基本: 確率的勾配降下法 最急勾配法 (微分して 0 を探す) 最急勾配に沿う - 確率的勾配降下法 ランダムに間引いて 勾配計算 【最急勾配法と確率的勾配降下法: 確率的勾配降下法を使う (計算省くため)】 ・機械学習は多くの場合、目的関数の最大化・最小化を数値解析的に解くのに帰結 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 16 / 60
  17. 17. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . † バックプロパゲーション (誤差逆伝播法) 1960 年代から知られている 方法: ニューラルネットワークに学習のためのサンプルを与える。 ネットワークの出力を求め、出力層における誤差を求める。その誤 差を用い、各出力ニューロンについて誤差を計算する。 個々のニューロンの期待される出力値と倍率 (scaling factor)、要求 された出力と実際の出力の差を計算する。これを局所誤差と言う。 各ニューロンの重みを局所誤差が小さくなるよう調整する。 より大きな重みで接続された前段のニューロンに対して、局所誤差 の責任があると判定する。 そのように判定された前段のニューロンのさらに前段のニューロン 群について同様の処理を行う。 誤差を最小化して任意関数を近似することが出来る 隠れ層があることが必要 ニューラルネットワークの計算の高速化に寄与 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 17 / 60
  18. 18. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ニューラルネットワークの基本的技法 入力層を構成 (入力ビット数) - 出力層を構成 (欲しい結果) - 隠れ層を構成 ・学習する所 (適当に構成) - 結果見ながら ツールをいじる 【基本的手法: もし前例があるならハイパーパラメータはコピー】 ハイパーパラメータ調整 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 18 / 60
  19. 19. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . エポック データを回した回数 エポック毎に訓練精度と予測精度の変化を見る 訓練精度: 訓練データに対する精度 予測精度: 検証データに対する精度 理想は「訓練精度と予測精度がバランスよく上昇し、収束」 何故重要? 訓練誤差が減っていないと学習できていない 予測精度との誤差が大きすぎると過学習になっている 誤差が変わらないと精度不足が心配される とりあえず 50 エポックくらい動かして設計したネットワークの 振る舞いを調べる 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 19 / 60
  20. 20. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ミニバッチって何? 学習のタイプ: バックプロパゲーションの手法 バッチ: 全学習データを用い、誤差の平均から一気に更新する オンライン: データ一件ごとに逐次更新する ミニバッチ: バッチとオンラインの中間のような手法。全学習デー タの中から幾つかサンプルを取り用いる (よく使われる手法) 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 20 / 60
  21. 21. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . チュートリアルで画像認識が使われる理由 画像認識は 領域連結認識 - 微小移動して 大量データ化 - 畳み込み、 プーリングの 繰り返しに適合 【何故、ディープラーニングといえば画像認識なのか?】 パッチ(部分情報) を ・この問題は簡単ではない:文字認識をする V1 のニューロンは 140 億個で数十億の接続を持つ ・畳み込みニューラルネットワーク: 層間が全結合ではない順伝播型ニューラルネットワーク ↘ 1) 入力の一部にフィルタを適用 局所的な特徴量を抽出 2) フィルタを x, y 方向に 少しずつ (stride) ずらしながら適用 (Feature Map という) 3) 出力は特徴量 大きなパターンは小さなパターンの組み合わせでできている 局所性を利用 同じ層ではパラメータを使いまわす (kernel と言う) 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 21 / 60
  22. 22. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CNN (Convolution Neural Network) の例 [畳み込みニューラルネットワーク] 入力- 畳み込み C1 FM (多数) - プーリング S2 FM (絞る) - 畳み込み C3 FM (やや多数) - F4 FM 出力- 【CNN の例 (FM: Feature Maps, 線形判定器: Linear Classifier)】 線形判定器 (区別する個数) ・位置不変な特徴をとらえるために、「畳み込み、プーリング」を繰り返す 注: 畳み込みとプーリングは近接情報の相互関係が重要な問題(画像認識)などに適している 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 22 / 60
  23. 23. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . オプティマイザー (Optimizer) 学習勾配をみている。しばらく平坦(学習の停滞) になるがしばら くすると学習が進む: 鞍点を越えるのにオプティマイザーを使う 学習率 (Learning Rate) を設定: たいていデフォルト (既定値) でい い 学習が遅い: 学習率を上げる Loss が発散: 学習率を下げる よく使われるアルゴリズムは用意されている 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 23 / 60
  24. 24. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . † 交差エントロピー (Cross Entropy) 何故、交差エントロピーとかが必要なのか? 正解が z=(0,1,0,0,0,0,0,0,0,0) 2つの答えが、 y0 = (0, 0.7, 0.1, 0.1, 0.1, 0, 0, 0, 0, 0), y1 = (0, 0.8, 0.1, 0.1, 0, 0, 0, 0, 0, 0) だとして、どちらが正解に近いか? 交差エントロピー (z, y) = ∑n i=0 zi log2yi これが何なのかはわからなくていい。微妙に違うベクトル結果の どちらが成果に近いかを選択する方法があるということを知って いれば十分 シグモイド・ニューロンであれば交差エントロピーは一般的によ い解 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 24 / 60
  25. 25. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . † ソフトマックス関数 出力層で使う yi = exp(ai) ∑D j exp(ai) 全体の合計が 1 になるようにし、出力が識別すべき対象の確率に なるように調整 次の学習に利用 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 25 / 60
  26. 26. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 多層の隠れ層 手書き文字認識するだけなら隠れ層は 1 層でも十分機能 原理的には層毎に異なる学習をすれば効率はいいはず それほど簡単ではない。以下は 30 ノードの手書き文字認識の例: 隠れ層数 1 2 3 4 認識率 (%) 96.48 96.90 96.57 96.53 多層になればなるほど出力から遠い層の学習は遅くなる 勾配降下法では一般に層の学習速度はばらばらで不安定 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 26 / 60
  27. 27. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . † Caffe モデル Caffe で機械学習したモデルが公開されている (ライセンスはさま ざま) 画像分類が多いが、画像分類だけではなく特徴量抽出して別用途 にも使える GoogleNet や VGG など ILSVRC 向けに学習した 1000 カテゴリの 画像分類できるモデルがあるが、カテゴリが特殊でそのままでは あまり役にたたない(人や顔がないなど) Caffe モデルの読み込みには時間がかかる(短縮技法もある (読み 込み後保存)) 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 27 / 60
  28. 28. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . パラメータとハイパーパラメータ 用語 意味 決定 パラメータ モデルが持つ重み係数、バイアス 学習によって自動的に決まる ハイパーパラメータ モデルの構造を決める・学習の設定 手動で決める ハイパーパラメータが膨大なのがディープラーニングの課題。設定で結果は雲泥の違い ハイパーパラメータの例: NN の深さ、各レイヤーのパラメータ数: 増やすと精度はあがるが時間かかる パラメータの初期値: フレームワークの初期化関数を使う 最適化アルゴリズム 活性化関数: 畳み込みなら ReLU、出力層は目的別に設定する (識別ならソフトマッ クス、回帰ならシグモイドか tanh) 学習回数、学習率、モーメント、学習率のスケジューリング:大抵デフォルトでい い。特定の epoch、または train loss が下がらなくなったら学習率を一定割合で下げ る ミニバッチサイズ: 50–250 くらいが多い 正則化 (regularization): L2 正則 (weight decay): パラメータの増加を抑制; L1 正則 (Lasso 回帰): パラメータをスパース化 (不要な箇所を 0 に) Dropout 確率: 学習時にランダムに一部の出力を 0 にする 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 28 / 60
  29. 29. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . そもそもどうやって設定するの? コスト関数(損失関数)とは見つけた「重み」と「バイアス」の組 み合わせがどのくらい正確かを示す指標、0 に近づくほど正しい 学習率: 例えば、0.025, 0.25, 3.5 とかで設定して 50 エポックほど 観察 大きすぎればコスト関数は発散する 十分小さくなければコスト関数は最初減少するがやがて飽和 0.01 からオーダを増やし、最初から減少し、飽和しないように上限 値を調べる 実際の学習では上限値より 2 桁くらい少ない値を使う エポック数の停止 検証データでの正解率を確認し、改善していないのなら停止 学習率のスケジューリング 最初は重みがずれているので早く学習させ、検証データの正解率が 改善しなくなったら減少させる 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 29 / 60
  30. 30. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 学習不足と過学習 答えが合うように 隠れ層を 調整している - 学習が収束 していなければ 解けません 【学習不足: 当たり前だが「学習の停滞」かどうか判定が難しい】 3 次曲線に 適当に誤差を 加える例 - 9 次曲線で 問いたりする (誤差の過学習) 【過学習: 3 次曲線が正解なので、データを追加すると明らかに合わない (】 ・微小な変化をあたえて増幅して学習しているので、 誤差と微小変化が加算されて間違ったデータになっている ・ネットワークは単に試験データを覚えているだけで何も学習していないケースもある ・一般的解決策: 訓練データ量を増やす (=計算時間とのトレードオフ) 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 30 / 60
  31. 31. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 学習になっていない可能性: ネットワークの過大な普遍性 28x28 ビットで 隠れ層 30 ノードで 10 出力ノード - 自由度 30000 なので データ数がそれ以下なら 解は自由につくれる 【ニューラルネットワークが学習にならない場合:どんな計算でもできる計算回路】 単に入力を記憶した無意味な解 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 31 / 60
  32. 32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 精度をあげるために 手法 利用法 学習データの前処理 学習に関係ないデータ間の差異を,学習に影響を及ぼさないように取 り除く (画像認識でアスペクト比をそろえたり、光源の影響を取り除 く。平均値から引く。) データ拡大 (Data Aug- mentation) 画像認識ではよく、入力画像を少しずらしたものも訓練データに加え ることでデータを水増しする 正 則 化 (Regulariza- tion) 過学習はパラメータが多すぎる(自由度が多すぎる)、しかし減らすわ けにはいかないのでパラメータに制約を加える。例えば L2 正則化: コ スト関数で正則化パラメータを増やす (より小さいウェイトを選ぶよ う誘導); L1 正則化: 勾配降下で重み減衰でウェイトを小さくする。 正則化は過学習を抑制し、汎化性能を上げる (正則化してあればウェ イトが小さいので個別データの影響が小さくなる)。 バッチ正規化 (Batch Normalization) バッチごとに平均が 0,分散が 1 になるように正規化。Learning Rate を大きくしても大丈夫、学習を加速化できる ド ロ ッ プ ア ウ ト (Dropout) 過学習をさけるため層のノード (Full-connect で 50 % 程度) をランダ ムに無視して学習。複数のネットワークを同時に試す効果。 ア ン サ ン ブ ル 学 習 (Model Ensemble) モデルの不完全性を前提として複数モデルの結果を結合。コンペティ ションなどで結果を改善するのに用いる。 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 32 / 60
  33. 33. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ハイパーパラメータをどう決めるか 論文読んで同じパラメータにしてみる Train data と Validation data の精度を確認 学習で Train loss, error が減少しているかを確認: 減少していなけ れば調整必要 Train error と Validation error の乖離が大きくないか?を確認 適当でもいいならランダムサンプリング、深くやるならベイジア ン最適化(体系的アプローチであるグリッドサーチの一つ) を行 う 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 33 / 60
  34. 34. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 素人が知るべき失敗の判別方法 データが 腐っている ネットワーク 構成が大間違い 学習が遅い 学習の停滞 【全然うまくいかないときは 4 つのパターン】 追加収集、再収集 データ前処理 再構成 問題の再定義 高速化 忍耐 オプティマイザ利用 精度 100 % とか 相関計数 0.9 とか - 「うまくいきすぎ」に 気づくべき 【適当に数字合わせする素人:「失敗に見えない失敗」に注意】 ・実世界には計測の誤差やノイズがある → あまりにもいい結果には身構えるべき ・訓練ではエポック 280 で 100 %、しかし、試験での精度は 82 % で頭打ち等の場合は過学習 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 34 / 60
  35. 35. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . そもそも全く学習しているように思えない場合 シンプルな問題で シンプルなデータ - ハイパーパラメータ 【全く学習しているように思えない場合: 最初の大局的戦略】 ・ランダムに調整しても幸せになれない ・ニューラルネットワークで解くのが正しいのかを知る必要 高速なフィードバックで 調整の鳥瞰図を得る 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 35 / 60
  36. 36. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 素人でもできるディープラーニング (1/3) 過去: データが少ない マシンが遅い - 現在 (人による): データが多量 GPU が速い 【過去と現在の違い:パーセプトロン自体は何十年も前からある】 データ量と計算量を満たす人は有利 +ネットにツールとノウハウ 場面 素人でもできる理由 モデルが既学習 モデルをダウンロードして使うだけならできる データ前処理完了 誰かがデータ前処理を完了してくれているタスクならハイパ ーパラメータの調整はモデルの本質的部分に集中できる 解けることが既知 データを入れてでたらめにいじるだけでも解けることがわか っているなら遅かれ早かれ結果には到達する 特定 初期化 初期化関数を使えばいい 場面 Dropout 率を指定すればあとはツールがやってくれる 学習率の設定 学習率などは素人の間はデフォルトでいい Batch Normalization 平均を 0、分散を 1 にするだけだからツールがやってくれる 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 36 / 60
  37. 37. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 素人でもできるディープラーニング (2/3) ルールベースの 冬 - 知識ベースの 冬 - 【過去 50 年に何度も来た「AI の冬」:今回はどこが違うか?】 ディープラーニング 定量化と汎用化に成功 TensorFlow Playground の解説 - 画像識別で 画像データ 5 万 【大量データってどれくらい必要なのか?: 何も知らなければそれなりのデータが必要】 ・モデルがわかっていてマイナーチェンジならもっと少なくていい ・One shot Learning という小データ量の研究もされている MNIST という米国政府機関 NIST が作った手書き文字データは 70000 サンプル よく練習に使われる。96 % くらいの精度は簡単に出て、上級者なら商用レベルの精 度も出せる モデルの検証 (validation) には一般に 0.1 % の精度で 30000 サンプルが必要 30 の隠れ層で簡単に数万のパラメータになる。サンプルの数がそれより少なければ過学習 になる 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 37 / 60
  38. 38. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 素人でもできるディープラーニング (3/3) 機械学習の 理論的理解不要 - データの前処理と ツールの使い方 【素人のディープラーニングとは?】 ハイパーパラメータの試行錯誤ノウハウ (陥穽に気付く直観とノウハウ) ニューロンとかシグモイドとか確率的勾配降下法とか目的関数とか何もわからなくても ツールの使い方 破綻しているのを判断する方法 ハイパーパラメータを調整する方法 (例え、適当でも) を知っていればディープラーニングできる (知らないでやるのは、お勧めはしない) 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 38 / 60
  39. 39. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 素人が悩まなくていい理由 項目 悩まなくていい理由 目的関数の最適化 制御工学で 100 年前からある題目。新規性はない。 パーセプトロン 基本的概念。ディープラーニングでは使っていない。 シグモイド・ニューロン 学習を可能にするために連続的変化するようにしただけ。 確率的勾配降下法 偏微分方程式がいっぱいでてくるが、要するに、最適化をする上で計 算が大変だから省いているだけ。 畳み込みコンボリューシ ョンネットワーク 間違った学習にはまらないようにちょっとずつずらしていろいろやっ てみる、というだけ。 バックプロパゲーション ニューラルネットワークを伝播して計算するのが大変なので微小変化 の調整を後ろに戻る 1 パスで済ませているというだけ。 アンサンブル学習 自信がないので異なる学習の合議制にするというだけ。 プーリング 計算が大変だから圧縮するというだけ。 ミニバッチ 計算大変だから部分的に学習する。大抵ミニバッチ、考えなくていい。 ドロップアウト 使うとなったら機械がランダムに適用するので考える要素は少ない。 初期化 最初のウェイトとバイアスの影響は大きいが、ツールの初期化関数が よしなに計らってくれるので心配いらない。 いろいろ読んでみたがほとんど関係なかった。偏微分方程式がたくさんでてくるがわから なくてもほぼ関係ない。 適当なハイパーパラメータをいれて遅いけど少しずつ正解率があがってくれば、OK。あ とはプロでもハイパーパラメータの試行錯誤をするのは同じ(既に解かれた問題なら論文 読んでハイパーパラメータをコピーするところが違うかも) 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 39 / 60
  40. 40. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . プログラミングと同じで根性とセンスがないと無理 - デバッグには 【ハイパーパラメータのチューニングはデバッグと同じ: 高次の問題解決能力が必要】 ・プログラミングには数学は不要: デバッグには高度な直感 or 経験 or スキルが必要 ディープラーニングを 使うのに数学は要らない スキル or 直感 or 経験が必要 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 40 / 60
  41. 41. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ハイパーパラメータの調整は難しい パラメータは 23520 - うまくハイパー パラメータを設計し これを調整 【隠れ層 1 層 30 ノードの MNIST 問題 (手書き文字認識) の複雑性】 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 41 / 60
  42. 42. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 周辺の話題 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 42 / 60
  43. 43. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 機械学習鳥瞰図 類別 教師あり学習 教師なし学習 報酬あり学習 例 ディープラーニング プレトレーニング 強化学習 ・多層ニューラルネットワーク ・AtomicEncoder ・ディープ Q 学習 ・RBM (Restrited Boltzmann Machine) 正解を教えて学習 正解のない学習 (データを見 てグループ分けする、等) 正解は未知だが、最後ま でやったら勝敗はわか っている、などの学習 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 43 / 60
  44. 44. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . プレトレーニング 深いニューラルネットワーク (バックプロパゲーション) の学習に おいては出力からの学習が伝播するのに時間がかかるので出力層 につながっていない前半部分ではプレトレーニング(教師なし学 習)するのが重要らしい (詳細は理解不能) アトミックエンコーディング: 3 層ニューラルネットワークにお いて入力層と出力層を同じにする(このため教師不要)。バックプ ロパゲーションの特殊なタイプ。入力を表すように最適化するの で入力の特徴をもち情報を圧縮することになる。 RBM (Restrited Boltzmann Machine): 密結合ではなく同じ階層間の結合 がなく計算が大幅高速化。熱力学のエネルギーから検討されてい るが今や熱力学との関係はない 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 44 / 60
  45. 45. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . リカレントニューラルネットワーク 入力 xt と 中間状態 ht−1 - RNN - 出力 yt と 中間状態 ht 【RNN (Recurrent Neural Network)】 ・時間軸方向の長く連なった NN という見方もできる RNN は一定時間だけ発火するので、ループがあってもいい 今のところ RNN の学習成果は限定的 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 45 / 60
  46. 46. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RNN の拡張 拡張 説明 LSTM (Long and Short Term Memory) 長期の相関関係を学習できる、セルと呼ばれる内部状態 を持つ GRU (Gated Recurrent Unit) LSTM を簡略にしたもの 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 46 / 60
  47. 47. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 強化学習 ディープラーニングとは違う分野だが、組み合わせて使うことが多い 行動の選択肢 - 選択 - 報酬 (期待値) 【強化学習: 場面報酬は不明だが最後の勝ち負けは明確 (そこから逆算)】 ・教師あり学習に似ているが、答えではなく報酬期待値で学習 ・もし正解データがあるなら「教師あり学習」のほうがよい 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 47 / 60
  48. 48. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DQN(Deep Q-Network) の生い立ち 強化学習 (きょうかがくしゅう, Reinforcement Learning) とは、ある環境内におけるエー ジェントが、現在の状態を観測し、取るべき行動を決定する問題を扱う機械学習の一種 教師あり学習でも教師なし学習でもない「学習」。目的関数を最大化させる決定論的な方策 を探す手法。 畳み込みネットワークをばりばりに使うので近くなっている 段階 内容 Q 学習 強化学習の古典的なアルゴリズム 最適行動価値関数と呼ばれる 関数を近似することで最適方策を学習。Q 学習では、最適行動価 値関数を得ることと最適方策を得ることは、ほぼ同じ意味。 Deep じゃない Q-network: Q 学習+関数近似 非常に高次元だとテーブルにもてないので Q(s,a) に関数近似を 使う。勾配法。 Q 学習+関数近似(ニュー ラルネットワーク) 関数近似にニューラルネットワークを使う。誤差逆伝播法が開発 された第二次ニューラルネットワークの時代。 Q 学習+関数近似(ニュー ラルネットワーク) + Neu- ral Fitted Q Iteration 「これ以上サンプルを追加せず、与えられたデータから最適方策を 学習する」、すなわちバッチ強化学習を行うことを考えるアルゴ リズム。各最適化中では完全に教師あり学習になっている、安定。 DQN (Deep Q-Network) 強化学習の関数近似に深層学習の技術を適用。畳み込みニューラ ルネットワークを利用。 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 48 / 60
  49. 49. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 問題解決 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 49 / 60
  50. 50. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 問題解決の 3 段階 入力 (次元, 前処理) と 出力の定義 - モデルの定義 (神経ネットワーク) - ツールによる 近似数値解法 【問題解決の 3 段階】 (問題定式化) 抽象的な思考とツールに よる試行錯誤が必要 既に解いたモデルがあれ ばディープラーニングの スキルと経験がもの言う ディープラーニングのス キルと経験が威力発揮 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 50 / 60
  51. 51. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . そもそも何がしたいのか? 解決された モデルを新しい データに適用 類似問題解決を 自分のデータに 適用・評価 全く新しい 問題を解決 【ツールは存在するとしたら何をしたいかで必要な知識が決まる】 データやモデルの入力 ハイパーパラメータの入力 データやモデルの入力 ハイパーパラメータの入力 既存解法の検証 試行錯誤の方法 初期設計 初期設計検証の方法 試行錯誤の方法 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 51 / 60
  52. 52. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 腕力で解く前に:問題の分割 分割して 征服せよ - サブ問題の組合せ (高速に解ける) 【問題の分割: 学習に限らず普遍的な原理 (例: 人や顔の認識)】 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 52 / 60
  53. 53. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . データがごみならごみしか出ません 正解を眺めて 学習している - データがまともで なければ解けない 【入力データは正しく、偏りがないことが重要 (正しいとは学習に適という意味)】 ・例: A が 9000、B が 1000、なら A の 9000 だけを学習して B はでたらめに答えても 95 % になる ・ジレンマ: モデルが解けるまでは 入力の変形や誤差が問題なのかモデルが悪いのか学習が足りないのかもわからない 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 53 / 60
  54. 54. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ディープラーニングの強さが出る場面 (画像認識の例) わからないが 解ける時あり - 解ければ 最適化し易い - さらに解けて モデルが見える 【仮定しないで腕力で解く「勝利のサイクル」(腕力だけが明かす隠れた真実が内在)】 ・応用しやすく、最適化しやすい ・解ければ、小さな改良で画期的な結果や応用がだしやすい (腕力爆発バターン) ・異常値や入力歪みの除去、専用層によるロバスト性向上、等、正解への多様な技法が使える 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 54 / 60
  55. 55. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 単に答えに合うようにネットワークを作っている例 【学習モデルを騙す実験: 99 % 以上の確度で同一人物と判定】 出典:TensorFlow で顔識別モデルに最適化した入力画像を生成する http://memo.sugyan.com/entry/2016/07/10/005512 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 55 / 60
  56. 56. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 問題の本質的難しさ = 素人と専門家に差がでない データに偏り ないことの検証 学習の停滞を 越える方法 過学習を 判定する方法 【問題は本質的に難しく専門家でも試行錯誤: ニューラルネットは自由度が高すぎる】 ・膨大なパラメータで入力と出力の対応はつく → どう汎化するか人類の知能の限界を試す問題 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 56 / 60
  57. 57. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 参考文献 I Michael Nielsen : Neural Network and Deep Learning: http://neuralnetworksanddeeplearning.com/ (online course) TSG Machine Learning # 学習のテクニック http://sig.tsg.ne.jp/ml2015/ml/2015/06/29/techniques-of-learning.html (2015 年) もちもちしている「Dropout の実装と重みの正則化」 http://olanleed.hatenablog.com/entry/2013/12/03/010945 Deep Learning の技術と未来 - SlideShare www.slideshare.net/beam2d/deep-learning-22544096(2013 年) ディープラーニングのサマースクールで学んだ 26 のこと http://postd.cc/26-things-i-learned-in-the-deep-learning-summer-school/(2015 年) アンサンブル学習の2つのメリット・利点 (回帰分析・クラス分 類)http://univprof.com/archives/16-06-15-3949163.html (2016 年) もちもちしている「Deep Learning のハイパパラメータの調整」 http://olanleed.hatenablog.com/entry/2015/12/23/180457(2015 年) いまさら聞けない Deep Learning 超入門(終):深層学習の判別精度を向上させるコツと Active Learning http://www.atmarkit.co.jp/ait/articles/1512/16/news020.html (2015 年) 顔認証技術: DeepFace と Pyramid CNN | Preferred Research https://research.preferred.jp/2014/03/face-verification-deepface-and-pyramid-cnn/ (2014 年) (data augmentation に言及) 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 57 / 60
  58. 58. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 参考文献 II 深層学習:ハイパーパラメータの設定に迷っている人へ http://s0sem0y.hatenablog.com/entry/2016/11/13/035443 (2016 年) 多層ニューラルネットで Batch Normalization の検証 http://qiita.com/hogefugabar/items/4f6e3702947f7ef8f1bf (2016 年) 「ニューラルネットワーク」とは何か:「AI」「機械学習」「ディープラーニング」は、それぞ れ何が違うのか http://www.atmarkit.co.jp/ait/articles/1608/12/news056.html(2016 年) いまさら聞けない Deep Learning 超入門(1):ニューラルネットワーク、Deep Learning、 Convolutional Neural Net の基礎知識と活用例、主な Deep Learning フレームワーク 6 選 http://www.atmarkit.co.jp/ait/articles/1510/27/news008.html (2015 年) 画像認識のための深層学習 http://www.slideshare.net/yomoyamareiji/ss-36982686 (2014 年) 交差エントロピー (Cross Entropy) http://neuralnet.hatenablog.jp/entry/2016/05/17/010816 (2016 年) 実装ディープラーニング http://www.slideshare.net/yurieoka37/ss-28152060 (2013 年) エポック(epoch)について http://yutasugii.hatenablog.com/entry/2015/12/16/002617 (2015 年) Chainer で始めるニューラルネットワーク http://qiita.com/icoxfog417/items/96ecaff323434c8d677b (2016 年 8 月) ゼロから Deep まで学ぶ強化学習 http://qiita.com/icoxfog417/items/242439ecd1a477ece312 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 58 / 60
  59. 59. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 参考文献 III DQN の生い立ち +  Deep Q-Network を Chainer で書いた http://qiita.com/Ugo-Nama/items/08c6a5f6a571335972d5 (2016 年 3 月) 強化学習 Wkipedia https://ja.wikipedia.org/wiki/%E5%BC%B7%E5%8C%96%E5%AD%A6%E7%BF%92 「そのモデルの精度、高過ぎませんか?」過学習・汎化性能・交差検証のはなし http://tjo.hatenablog.com/entry/2016/04/14/190000 (2016 年 4 月) [DL]weight decay って何? http://qiita.com/supersaiakujin/items/97f4c0017ef76e547976(2016 年 3 月) 出力層で使うソフトマックス関数  http://s0sem0y.hatenablog.com/entry/2016/11/30/012350 (2016 年 11 月) 機械学習ディープラーニングの用語解説まとめ http://zacodesign.net/blog/?p=2719 (2016 年 5 月) TensorFlow で始める深層学習  (3) 機械学習から深層学習の扉を開く http://developers.gnavi.co.jp/entry/tensorflow-deeplearning-3 (2016 年 7 月) RBM、Deep Learning と学習 (全脳アーキテクチャ若手の会第 3 回 DL 勉強会発表資料)   www.slideshare.net/takumayagi/rbm-andlearning (2014 年) R で L1 / L2 正則化を実践する http://tjo.hatenablog.com/entry/2015/03/03/190000 (2015 年 3 月) 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 59 / 60
  60. 60. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 参考文献 IV DeepLearning 勉強会 パラメータチューニングの極意 http://www.slideshare.net/takanoriogata1121/160924-deep-learning-tuningathon (2016 年 9 月) 深層学習と TensorFlow 入門 http://www.slideshare.net/tak9029/tensorflow-67483532 (2016 年 10 月) TensorFlow の使い方  http://www.slideshare.net/ToshihikoYamakami/tensorflowin-japanese (2017 年 1 月) TensorFlow で顔識別モデルに最適化した入力画像を生成する  http://memo.sugyan.com/entry/2016/07/10/005512 (2017 年 7 月) (誤認識させる画像を生成す る話) 勾配降下法の最適化アルゴリズムを概観する http://postd.cc/optimizing-gradient-descent/ (2016 年 7 月) (Optimizer について知りたい人向け) 山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 60 / 60

×