サルでもわかるディープラーニング入門 (2017年) (in japanese)
TRANSCRIPT
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
サルでもわかるディープラーニング入門(2017 年)
山上俊彦
IoT 事業本部, ACCESS
2017/01
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 1 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
ディープラーニング入門
人工知能第三期:クリックできれば機械学習可能
- 本当に素人でもできるのか?
【東大松尾教授の言をうのみにしてディープラーニングを素人が勉強してみた】
段階 第一期 第二期 第三期難度 専門家だけができる プログラムできればできる クリックできればできる
(少々 “言い過ぎ”)状況 原理と効果が発見、発表 機械学習ライブラリが公開 ツールが公開
逸話:私「松尾先生によればマウスがクリックできればディープラーニングはできるそうです」
某社研究所長「松尾研の学生ならそうかもしれません。普通の人では無理でしょう」
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 2 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
本資料の目的
東大の人工知能研究室の学生の 11000 の脳みそでもディープラーニ
ングできるように入門を解説します“人工知能に関してはサルなみの知能” でもわかるのだから大丈夫!δ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
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
位置付け
多層シグモイド・ニューロン
人工知能
機械学習
ニューラルネットワーク
【ディープラーニングとは多層シグモイド・ニューロンによる機械学習】
注: 歴史的に「多層シグモイド・ニューロン」は「多層パーセプトロン」とも呼ばれる
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 4 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
ツール (別資料を書いているので本資料では簡単に)
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
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
3 分でわかるディープラーニング
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 6 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
素人が勉強するうえで注意すべきこと
古典的な入門書は少し前に書かれているプログラム可能な解説
- 今はツールが自動的にやってくれるので使うだけの知識でいい
【勉強する上で注意すべきこと: 今は深いプログラム用知識は不要】
・苦労して読んで理解して、深い知識は要らない、と気づく・Google が TensorFlow というツールをオープンに公開 (2015 年 11 月)
・TensorFlow Playground は 2016 年 4 月公開
ディープラーニングの教科書を読むと∑とか偏微分方程式 (∂ が
つく式) とかプログラムとか出てきますが、読んでわからなくても関係ありません
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 7 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
3 分でわかるディープラーニングデータを入力に、隠れ層とよばれるノードのネットワークでつないで、欲しい結果(手書き数字識別なら 0 から 9 までの結果)につないで学習させられる
この学習は非常に強力でどんな問題でも解ける
1 層の隠れ層でも強力で過去のどんな手書き文字認識よりよい結果を出せる
例えば、手書き数字が (28ビット ∗28ビット =784ビットで隠れ層が 30 ノードのニューラルネットワークで 784∗30=23520の複雑度がある。これより多くデータを与えれば解ける
複雑さより少ないデータしかなければ学習結果はあてにならない。単に答えを全部覚えているだけかもしれない。
本当にできたかどうかは学習とは別のデータで検証する
面倒な初期化や技法(正則化、ドロップアウト、等)があるが、計算機が勝手にやてくれる、あるいは既定値で設定されているので悩まなくていい
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 8 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
ディープラーニングの概念図と意味
j
W
…�
R…
�
�
z
N
…
:
�… …
入力層 隠れ層 出力層 正解
ずれを調整
答えを満たすような連立方程式
- 数値計算で近似的に生成
【「神経」「学習」「深層」は高尚な雰囲気: 答えが合うよう連立方程式を作る(大量計算が実現)】
入力 x = 1, y = 2, . . . で出力は 3, 5ax + by = 3cx + dy = 5
式の構造も試行錯誤で決めるa = −1, b = 2, c = 1, d = 2他の (x,y) もこれで計算しよう
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 9 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
以下はおまけ
以下は、ディープラーニングに知的興味のある人のための補足
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 10 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
ディープラーニングを支える計算力強化
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
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
順伝播ニューラルネットワーク
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 12 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
簡単な原理:画像認識の例
ヒューリスティクス(試行錯誤)
- SVM(95 %)
- ディープラーニング99 % 以上識別
【過去 30 年間の画像認識の進化】
非線形問題を超多次元の線形問題に
某大学教授「何故かわからないが解ける」
ニューラルネットで論理構成、間違いを教えれば解ける
入力と出力を神経系のようなネットワークでつなげばどんな問題も解ける = どんな問題を解くプログラムも模倣できる
正解を教えてやってネットワークをトレーニングすればどんな多次元の高度な解析手法をも上回ることができる
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 13 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
† パーセプトロン († はわからないてもいい印)
複数の入力(それぞれ重み)
- 閾値(発火)
- 出力
【パーセプトロン:神経のモデル化】(入力に w(重み) を掛け、b(バイアス) を足して発火判断=活性化関数)
複数の入力(それぞれ重み)
- 隠れ層 (多層)[畳み込み設計]
- 出力
【多層パーセプトロン: NAND などの論理回路を構成可能】
・ニューロンの数と重みをうまく調整すると任意の関数を近似できる・多層になると表現力が増す → どう上手に収束させるかが機械学習の肝
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 14 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
† シグモイド・ニューロンへの進化
- 自動的に回路構成を学習可能
-
【パーセプトロンの学習向け進化形:シグモイド・ニューロン】
多層パーセプトロンは論理回路を構成できる
微小入力変化に微小出力変化する
シグモイド・ニューロン
・微分しやすい、シグモイド以外にも tanh 関数, ReLU 関数などがある・ReLU 関数が最適とも言われるが 99 % 以上の精度でなければあまり関係ない
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 15 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
† 機械学習の基本: 確率的勾配降下法
最急勾配法(微分して 0 を探す)最急勾配に沿う
- 確率的勾配降下法ランダムに間引いて
勾配計算
【最急勾配法と確率的勾配降下法: 確率的勾配降下法を使う (計算省くため)】
・機械学習は多くの場合、目的関数の最大化・最小化を数値解析的に解くのに帰結
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 16 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
† バックプロパゲーション (誤差逆伝播法)
1960 年代から知られている方法:
ニューラルネットワークに学習のためのサンプルを与える。ネットワークの出力を求め、出力層における誤差を求める。その誤差を用い、各出力ニューロンについて誤差を計算する。個々のニューロンの期待される出力値と倍率 (scaling factor)、要求された出力と実際の出力の差を計算する。これを局所誤差と言う。各ニューロンの重みを局所誤差が小さくなるよう調整する。より大きな重みで接続された前段のニューロンに対して、局所誤差の責任があると判定する。そのように判定された前段のニューロンのさらに前段のニューロン群について同様の処理を行う。
誤差を最小化して任意関数を近似することが出来る
隠れ層があることが必要
ニューラルネットワークの計算の高速化に寄与
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 17 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
ニューラルネットワークの基本的技法
入力層を構成(入力ビット数)
- 出力層を構成(欲しい結果)
- 隠れ層を構成・学習する所(適当に構成)
- 結果見ながらツールをいじる
【基本的手法: もし前例があるならハイパーパラメータはコピー】
ハイパーパラメータ調整
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 18 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
エポック
データを回した回数エポック毎に訓練精度と予測精度の変化を見る
訓練精度: 訓練データに対する精度予測精度: 検証データに対する精度理想は「訓練精度と予測精度がバランスよく上昇し、収束」
何故重要?訓練誤差が減っていないと学習できていない予測精度との誤差が大きすぎると過学習になっている誤差が変わらないと精度不足が心配される
とりあえず 50 エポックくらい動かして設計したネットワークの振る舞いを調べる
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 19 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
ミニバッチって何?
学習のタイプ: バックプロパゲーションの手法バッチ: 全学習データを用い、誤差の平均から一気に更新するオンライン: データ一件ごとに逐次更新するミニバッチ: バッチとオンラインの中間のような手法。全学習データの中から幾つかサンプルを取り用いる (よく使われる手法)
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 20 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
チュートリアルで画像認識が使われる理由
画像認識は領域連結認識
- 微小移動して大量データ化
- 畳み込み、プーリングの繰り返しに適合
【何故、ディープラーニングといえば画像認識なのか?】
パッチ(部分情報) を
・この問題は簡単ではない:文字認識をする V1 のニューロンは 140 億個で数十億の接続を持つ・畳み込みニューラルネットワーク: 層間が全結合ではない順伝播型ニューラルネットワーク
↘
1) 入力の一部にフィルタを適用局所的な特徴量を抽出
2) フィルタを x, y 方向に少しずつ (stride) ずらしながら適用
(Feature Map という)3) 出力は特徴量
大きなパターンは小さなパターンの組み合わせでできている
局所性を利用
同じ層ではパラメータを使いまわす (kernel と言う)
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 21 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
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
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
オプティマイザー (Optimizer)
学習勾配をみている。しばらく平坦(学習の停滞) になるがしばらくすると学習が進む: 鞍点を越えるのにオプティマイザーを使う学習率 (Learning Rate) を設定: たいていデフォルト (既定値) でいい
学習が遅い: 学習率を上げるLoss が発散: 学習率を下げる
よく使われるアルゴリズムは用意されている
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 23 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
† 交差エントロピー (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=0zi
log2yi
これが何なのかはわからなくていい。微妙に違うベクトル結果のどちらが成果に近いかを選択する方法があるということを知っていれば十分
シグモイド・ニューロンであれば交差エントロピーは一般的によい解
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 24 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
† ソフトマックス関数
出力層で使う yi =exp(ai)∑Dj exp(ai)
全体の合計が 1 になるようにし、出力が識別すべき対象の確率になるように調整
次の学習に利用
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 25 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
多層の隠れ層
手書き文字認識するだけなら隠れ層は 1 層でも十分機能原理的には層毎に異なる学習をすれば効率はいいはず
それほど簡単ではない。以下は 30 ノードの手書き文字認識の例:
隠れ層数 1 2 3 4認識率 (%) 96.48 96.90 96.57 96.53
多層になればなるほど出力から遠い層の学習は遅くなる
勾配降下法では一般に層の学習速度はばらばらで不安定
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 26 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
† Caffe モデル
Caffe で機械学習したモデルが公開されている (ライセンスはさまざま)画像分類が多いが、画像分類だけではなく特徴量抽出して別用途にも使える
GoogleNet や VGG など ILSVRC 向けに学習した 1000 カテゴリの画像分類できるモデルがあるが、カテゴリが特殊でそのままではあまり役にたたない(人や顔がないなど)
Caffe モデルの読み込みには時間がかかる(短縮技法もある (読み込み後保存))
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 27 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
パラメータとハイパーパラメータ
用語 意味 決定パラメータ モデルが持つ重み係数、バイアス 学習によって自動的に決まるハイパーパラメータ モデルの構造を決める・学習の設定 手動で決める
ハイパーパラメータが膨大なのがディープラーニングの課題。設定で結果は雲泥の違い
ハイパーパラメータの例:NN の深さ、各レイヤーのパラメータ数: 増やすと精度はあがるが時間かかるパラメータの初期値: フレームワークの初期化関数を使う最適化アルゴリズム活性化関数: 畳み込みなら ReLU、出力層は目的別に設定する (識別ならソフトマックス、回帰ならシグモイドか tanh)学習回数、学習率、モーメント、学習率のスケジューリング:大抵デフォルトでいい。特定の epoch、または train loss が下がらなくなったら学習率を一定割合で下げるミニバッチサイズ: 50–250 くらいが多い正則化 (regularization): L2 正則 (weight decay): パラメータの増加を抑制; L1 正則(Lasso 回帰): パラメータをスパース化 (不要な箇所を 0 に)Dropout 確率: 学習時にランダムに一部の出力を 0 にする
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 28 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
そもそもどうやって設定するの?
コスト関数(損失関数)とは見つけた「重み」と「バイアス」の組み合わせがどのくらい正確かを示す指標、0 に近づくほど正しい学習率: 例えば、0.025, 0.25, 3.5 とかで設定して 50 エポックほど観察
大きすぎればコスト関数は発散する十分小さくなければコスト関数は最初減少するがやがて飽和0.01 からオーダを増やし、最初から減少し、飽和しないように上限値を調べる実際の学習では上限値より 2 桁くらい少ない値を使う
エポック数の停止検証データでの正解率を確認し、改善していないのなら停止
学習率のスケジューリング最初は重みがずれているので早く学習させ、検証データの正解率が改善しなくなったら減少させる
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 29 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
学習不足と過学習
答えが合うように隠れ層を調整している
- 学習が収束していなければ解けません
【学習不足: 当たり前だが「学習の停滞」かどうか判定が難しい】
3 次曲線に適当に誤差を加える例
- 9 次曲線で問いたりする
(誤差の過学習)
【過学習: 3 次曲線が正解なので、データを追加すると明らかに合わない (】
・微小な変化をあたえて増幅して学習しているので、誤差と微小変化が加算されて間違ったデータになっている
・ネットワークは単に試験データを覚えているだけで何も学習していないケースもある・一般的解決策: 訓練データ量を増やす (=計算時間とのトレードオフ)
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 30 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
学習になっていない可能性: ネットワークの過大な普遍性
28x28 ビットで隠れ層 30 ノードで
10 出力ノード- 自由度 30000 なのでデータ数がそれ以下なら解は自由につくれる
【ニューラルネットワークが学習にならない場合:どんな計算でもできる計算回路】
単に入力を記憶した無意味な解
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 31 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
精度をあげるために
手法 利用法学習データの前処理 学習に関係ないデータ間の差異を,学習に影響を及ぼさないように取
り除く (画像認識でアスペクト比をそろえたり、光源の影響を取り除く。平均値から引く。)
データ拡大 (Data Aug-mentation)
画像認識ではよく、入力画像を少しずらしたものも訓練データに加えることでデータを水増しする
正 則 化 (Regulariza-tion)
過学習はパラメータが多すぎる(自由度が多すぎる)、しかし減らすわけにはいかないのでパラメータに制約を加える。例えば L2 正則化: コスト関数で正則化パラメータを増やす (より小さいウェイトを選ぶよう誘導); L1 正則化: 勾配降下で重み減衰でウェイトを小さくする。正則化は過学習を抑制し、汎化性能を上げる (正則化してあればウェイトが小さいので個別データの影響が小さくなる)。
バッチ正規化 (BatchNormalization)
バッチごとに平均が 0,分散が 1 になるように正規化。Learning Rateを大きくしても大丈夫、学習を加速化できる
ド ロ ッ プ ア ウ ト(Dropout)
過学習をさけるため層のノード (Full-connect で 50 % 程度) をランダムに無視して学習。複数のネットワークを同時に試す効果。
ア ン サ ン ブ ル 学 習(Model Ensemble)
モデルの不完全性を前提として複数モデルの結果を結合。コンペティションなどで結果を改善するのに用いる。
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 32 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
ハイパーパラメータをどう決めるか
論文読んで同じパラメータにしてみる
Train data と Validation data の精度を確認学習で Train loss, error が減少しているかを確認: 減少していなければ調整必要
Train error と Validation error の乖離が大きくないか?を確認適当でもいいならランダムサンプリング、深くやるならベイジアン最適化(体系的アプローチであるグリッドサーチの一つ) を行う
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 33 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
素人が知るべき失敗の判別方法
データが腐っている
ネットワーク構成が大間違い 学習が遅い 学習の停滞
【全然うまくいかないときは 4 つのパターン】
追加収集、再収集データ前処理
再構成問題の再定義
高速化忍耐
オプティマイザ利用
精度 100 % とか相関計数 0.9 とか
- 「うまくいきすぎ」に気づくべき
【適当に数字合わせする素人:「失敗に見えない失敗」に注意】
・実世界には計測の誤差やノイズがある → あまりにもいい結果には身構えるべき・訓練ではエポック 280 で 100 %、しかし、試験での精度は 82 % で頭打ち等の場合は過学習
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 34 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
そもそも全く学習しているように思えない場合
シンプルな問題でシンプルなデータ
- ハイパーパラメータ
【全く学習しているように思えない場合: 最初の大局的戦略】
・ランダムに調整しても幸せになれない・ニューラルネットワークで解くのが正しいのかを知る必要
高速なフィードバックで
調整の鳥瞰図を得る
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 35 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
素人でもできるディープラーニング (1/3)
過去:データが少ないマシンが遅い
-現在 (人による):データが多量GPU が速い
【過去と現在の違い:パーセプトロン自体は何十年も前からある】
データ量と計算量を満たす人は有利+ネットにツールとノウハウ
場面 素人でもできる理由モデルが既学習 モデルをダウンロードして使うだけならできるデータ前処理完了 誰かがデータ前処理を完了してくれているタスクならハイパ
ーパラメータの調整はモデルの本質的部分に集中できる解けることが既知 データを入れてでたらめにいじるだけでも解けることがわか
っているなら遅かれ早かれ結果には到達する特定 初期化 初期化関数を使えばいい場面 Dropout 率を指定すればあとはツールがやってくれる
学習率の設定 学習率などは素人の間はデフォルトでいいBatch Normalization 平均を 0、分散を 1 にするだけだからツールがやってくれる
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 36 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
素人でもできるディープラーニング (2/3)
ルールベースの冬
- 知識ベースの冬
-
【過去 50 年に何度も来た「AI の冬」:今回はどこが違うか?】ディープラーニング定量化と汎用化に成功
TensorFlowPlayground の解説
- 画像識別で画像データ 5 万
【大量データってどれくらい必要なのか?: 何も知らなければそれなりのデータが必要】
・モデルがわかっていてマイナーチェンジならもっと少なくていい・One shot Learning という小データ量の研究もされている
MNIST という米国政府機関 NIST が作った手書き文字データは 70000 サンプルよく練習に使われる。96 % くらいの精度は簡単に出て、上級者なら商用レベルの精度も出せる
モデルの検証 (validation) には一般に 0.1 % の精度で 30000 サンプルが必要30 の隠れ層で簡単に数万のパラメータになる。サンプルの数がそれより少なければ過学習になる
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 37 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
素人でもできるディープラーニング (3/3)
機械学習の理論的理解不要
- データの前処理とツールの使い方
【素人のディープラーニングとは?】
ハイパーパラメータの試行錯誤ノウハウ(陥穽に気付く直観とノウハウ)
ニューロンとかシグモイドとか確率的勾配降下法とか目的関数とか何もわからなくてもツールの使い方破綻しているのを判断する方法
ハイパーパラメータを調整する方法 (例え、適当でも)を知っていればディープラーニングできる (知らないでやるのは、お勧めはしない)
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 38 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
素人が悩まなくていい理由
項目 悩まなくていい理由目的関数の最適化 制御工学で 100 年前からある題目。新規性はない。パーセプトロン 基本的概念。ディープラーニングでは使っていない。シグモイド・ニューロン 学習を可能にするために連続的変化するようにしただけ。確率的勾配降下法 偏微分方程式がいっぱいでてくるが、要するに、最適化をする上で計
算が大変だから省いているだけ。畳み込みコンボリューションネットワーク
間違った学習にはまらないようにちょっとずつずらしていろいろやってみる、というだけ。
バックプロパゲーション ニューラルネットワークを伝播して計算するのが大変なので微小変化の調整を後ろに戻る 1 パスで済ませているというだけ。
アンサンブル学習 自信がないので異なる学習の合議制にするというだけ。プーリング 計算が大変だから圧縮するというだけ。ミニバッチ 計算大変だから部分的に学習する。大抵ミニバッチ、考えなくていい。ドロップアウト 使うとなったら機械がランダムに適用するので考える要素は少ない。初期化 最初のウェイトとバイアスの影響は大きいが、ツールの初期化関数が
よしなに計らってくれるので心配いらない。
いろいろ読んでみたがほとんど関係なかった。偏微分方程式がたくさんでてくるがわからなくてもほぼ関係ない。
適当なハイパーパラメータをいれて遅いけど少しずつ正解率があがってくれば、OK。あとはプロでもハイパーパラメータの試行錯誤をするのは同じ(既に解かれた問題なら論文読んでハイパーパラメータをコピーするところが違うかも)
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 39 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
プログラミングと同じで根性とセンスがないと無理
- デバッグには
【ハイパーパラメータのチューニングはデバッグと同じ: 高次の問題解決能力が必要】
・プログラミングには数学は不要: デバッグには高度な直感 or 経験 or スキルが必要
ディープラーニングを使うのに数学は要らない スキル or 直感 or 経験が必要
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 40 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
ハイパーパラメータの調整は難しい
パラメータは23520
- うまくハイパーパラメータを設計し
これを調整
【隠れ層 1 層 30 ノードの MNIST 問題 (手書き文字認識) の複雑性】
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 41 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
周辺の話題
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 42 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
機械学習鳥瞰図
類別 教師あり学習 教師なし学習 報酬あり学習例 ディープラーニング プレトレーニング 強化学習
・多層ニューラルネットワーク ・AtomicEncoder ・ディープ Q 学習・RBM (Restrited BoltzmannMachine)
正解を教えて学習 正解のない学習 (データを見てグループ分けする、等)
正解は未知だが、最後までやったら勝敗はわかっている、などの学習
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 43 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
プレトレーニング
深いニューラルネットワーク (バックプロパゲーション) の学習においては出力からの学習が伝播するのに時間がかかるので出力層につながっていない前半部分ではプレトレーニング(教師なし学習)するのが重要らしい (詳細は理解不能)
アトミックエンコーディング: 3 層ニューラルネットワークにおいて入力層と出力層を同じにする(このため教師不要)。バックプロパゲーションの特殊なタイプ。入力を表すように最適化するので入力の特徴をもち情報を圧縮することになる。
RBM (Restrited Boltzmann Machine): 密結合ではなく同じ階層間の結合がなく計算が大幅高速化。熱力学のエネルギーから検討されているが今や熱力学との関係はない
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 44 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
リカレントニューラルネットワーク
入力 xt と中間状態 ht−1
- RNN - 出力 yt と中間状態 ht
【RNN (Recurrent Neural Network)】
・時間軸方向の長く連なった NN という見方もできる
RNN は一定時間だけ発火するので、ループがあってもいい今のところ RNN の学習成果は限定的
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 45 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
RNN の拡張
拡張 説明LSTM (Long and Short TermMemory)
長期の相関関係を学習できる、セルと呼ばれる内部状態を持つ
GRU (Gated Recurrent Unit) LSTM を簡略にしたもの
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 46 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
強化学習
ディープラーニングとは違う分野だが、組み合わせて使うことが多い
行動の選択肢 - 選択 - 報酬(期待値)
【強化学習: 場面報酬は不明だが最後の勝ち負けは明確 (そこから逆算)】
・教師あり学習に似ているが、答えではなく報酬期待値で学習・もし正解データがあるなら「教師あり学習」のほうがよい
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 47 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
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
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
問題解決
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 49 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
問題解決の 3 段階
入力 (次元, 前処理) と出力の定義 - モデルの定義
(神経ネットワーク)- ツールによる
近似数値解法
【問題解決の 3 段階】
(問題定式化)
抽象的な思考とツールによる試行錯誤が必要
既に解いたモデルがあればディープラーニングのスキルと経験がもの言う
ディープラーニングのスキルと経験が威力発揮
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 50 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
そもそも何がしたいのか?
解決されたモデルを新しいデータに適用
類似問題解決を自分のデータに適用・評価
全く新しい問題を解決
【ツールは存在するとしたら何をしたいかで必要な知識が決まる】
データやモデルの入力ハイパーパラメータの入力
データやモデルの入力ハイパーパラメータの入力
既存解法の検証試行錯誤の方法
初期設計初期設計検証の方法試行錯誤の方法
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 51 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
腕力で解く前に:問題の分割
分割して征服せよ
- サブ問題の組合せ(高速に解ける)
【問題の分割: 学習に限らず普遍的な原理 (例: 人や顔の認識)】
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 52 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
データがごみならごみしか出ません
正解を眺めて学習している
- データがまともでなければ解けない
【入力データは正しく、偏りがないことが重要 (正しいとは学習に適という意味)】
・例: A が 9000、B が 1000、なら A の 9000 だけを学習して B はでたらめに答えても 95 % になる・ジレンマ: モデルが解けるまでは入力の変形や誤差が問題なのかモデルが悪いのか学習が足りないのかもわからない
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 53 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
ディープラーニングの強さが出る場面 (画像認識の例)
わからないが解ける時あり
- 解ければ最適化し易い
- さらに解けてモデルが見える
【仮定しないで腕力で解く「勝利のサイクル」(腕力だけが明かす隠れた真実が内在)】
・応用しやすく、最適化しやすい・解ければ、小さな改良で画期的な結果や応用がだしやすい (腕力爆発バターン)
・異常値や入力歪みの除去、専用層によるロバスト性向上、等、正解への多様な技法が使える
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 54 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
単に答えに合うようにネットワークを作っている例
【学習モデルを騙す実験: 99 % 以上の確度で同一人物と判定】出典:TensorFlow で顔識別モデルに最適化した入力画像を生成する
http://memo.sugyan.com/entry/2016/07/10/005512
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 55 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
問題の本質的難しさ = 素人と専門家に差がでない
データに偏りないことの検証
学習の停滞を越える方法
過学習を判定する方法
【問題は本質的に難しく専門家でも試行錯誤: ニューラルネットは自由度が高すぎる】
・膨大なパラメータで入力と出力の対応はつく → どう汎化するか人類の知能の限界を試す問題
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 56 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
参考文献 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/010945Deep Learning の技術と未来 - SlideSharewww.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 Researchhttps://research.preferred.jp/2014/03/face-verification-deepface-and-pyramid-cnn/ (2014年) (data augmentation に言及)
山上俊彦 (ACCESS Confidential) サルでもわかるディープラーニング入門(2017 年) 2017/01 57 / 60
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
参考文献 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
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
参考文献 III
DQN の生い立ち + Deep Q-Network を Chainer で書いたhttp://qiita.com/Ugo-Nama/items/08c6a5f6a571335972d5 (2016 年 3 月)強化学習 Wkipediahttps://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
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
...
.
参考文献 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