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

2017-deep-learning-and-psychology-gakushuin-06

 2017-deep-learning-and-psychology-gakushuin-06

心理学特殊講義(深層学習の心理学的解釈)第5回 2017年06月02日

Shin Asakawa

June 02, 2017
Tweet

More Decks by Shin Asakawa

Other Decks in Education

Transcript

  1. 1 連絡事項 2 データ拡張 3 確率( 的) 勾配降下法 SGD: Stochastic

    Gradient Decent Methods 4 正則化 5 標準正則化理論 6 畳み込みニューラルネットワーク CNN 7 CNN の構成 8 Region Proposal と一般画像認識への道のり 1. piazza に参加してください. https://piazza.com/ 2. 田中先生によるまとめサイト http://thalamus.web.fc2.com/Gakushuin/ 3. 来週6 月9 日中間テスト 範囲は本日終了したところまで 試験時間 30 分から1 時間程度 他人の答案を除いて何を見ても可 試験時間中に通信可 試験時間中に途中退席不可 差をつける( 成績をつける) ことを目的にしていません 本日から piazza に毎日一題ずつ予想問題を掲載( 予定) 1. データ拡張 2. 確率的勾配降下法 SGD (Stochastic Gradient Decent)1 3. 誤差関数と損失関数 Error and Loss functions 4. 正則化手法(L2, L1, L0, Elastic, dropout) バーニーおじさんを越えて Beyond Uncle Bernie's rule 5. 標準正則化理論 6. 畳み込みニューラルネットワーク Convolutional neural networks 畳み込み演算 convolution ,プーリング pooling ,ストライド stride ,パディング padding とりこぼし: ソフトマックス,クロスエントロピー 3 歳児の知能から小学生並みの知能へ 深層学習の心理学的解釈 浅川伸一 02/Jun/2017 1 連絡事項 1.1 本日(2017 年6 月2 日) のキーワード 1.2 今週の動画
  2. https://www.youtube.com/watch?v=i6K3GI2_EgU TensorFlow playground http://playground.tensorflow.org/ ( 先週済) Convnet.js http://cs.stanford.edu/people/karpathy/convnetjs/( 先週済) マイクロソフトのキャプションボット

    https://www.captioinbot.ai Alex graves, 手書き文字生成 http://www.cs.toronto.edu/~graves/handwriting.html] Ink Poster: Handwritten post-it notes http://www.inkposter.com/? prisma http://touchlab.jp/2016/07/prisma_app_review/ pix2pix https://affinelayer.com/pixsrv/ すぎゃーんさんのブログ http://memo.sugyan.com/entry/2016/11/28/131952 1. 多項回帰による過学習のデモ 多項回帰では 点の独立したデータ点を通る 次回帰式を書くことができる 1. scikit learn の underfitting vs. overfitting python plot_underfitting_overfitting.py 1. ロジスティック回帰とML の比較 asa_mlp.ipnb asa_mlp3.ipnb データ拡張(data augmentation) とは,データ数を増やすことを言う。例えば,ある物品は画像の中でどの位置に提示されても同じ認識に 至るようにするため,画像を上下左右に反転,移動,拡大縮小などを施したデータを入力データに加えることを行う。データ拡張により データ数が増加し,安定した認識に至るようになる。データ拡張は限られた訓練データ数から性能の良い認識モデルを作成するために, 画像データに変動を加えることでデータ数を増やすことを指す。データ拡張によりモデルの性能向上を意図して行われる。入力画像中 に,る人物の顔が写っているとすれば,この顔が画像中のどこに表示されても,同じ顔であると認識しなければならない。このことを可 能にするために,顔領域を数画素分,平行移動,拡大縮小回転,上下左右反転などを行ない,同一画像から複数の画像を生成する。この データ拡張によって認識性能,汎化性能が向上することが知られている。いわゆるビッグデータの恩恵による技法である。 from https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html 1.3 実演 1.4 実演2 y = a0 x 0 + a1 x 1 + a2 x 2 + ⋯ = ∞ ∑ i=0 ai x i (1) n n − 1 2 データ拡張 2.1 データ拡張の例
  3. from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img datagen = ImageDataGenerator(

    rotation_range=40, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode='nearest') img = load_img('data/train/cats/cat.0.jpg') # this is a PIL image x = img_to_array(img) # this is a Numpy array with shape (3, 150, 150) x = x.reshape((1,) + x.shape) # this is a Numpy array with shape (1, 3, 150, 150) # the .flow() command below generates batches of randomly transformed images # and saves the results to the `preview/` directory i = 0 for batch in datagen.flow(x, batch_size=1, save_to_dir='preview', save_prefix='cat', save_format='jpeg'): i += 1 if i > 20: break # otherwise the generator would loop indefinitely オンライン学習とバッチ学習 ミニバッチの採用 ミニバッチによる誤差勾配を全サンプルによる学習に代替 サンプリングした小標本も全データの統計的性質を表現しうるデータサイズが必要 全データが極端に多い(ImageNet など) ようなビッグデータ解析には合致 大域最適解に収束することは保証されない。( 勾配降下法全般の欠点) 盲目の登山者アナロジー! SGD の性能比較2 Algorithm Traininig time(sec) Test Erro(%) SVMLight 23,642.0 6.02 SVMPerf 66.0 6.03 SGD 1.4 6.02 3 確率( 的) 勾配降下法 SGD: Stochastic Gradient Decent Methods → 3.1 SGD = 勾配降下法の変形 3.2 SGD の高速化
  4. from 2014Imgur 誤差関数に正則化項を追加して,モデルの複雑度・自由度に抑制を加え,過学習を防ぐ方法 Tikhonov 正則化 (Tikhonov Regularization) リッジ回帰, LASSO など

    以下のような方法が考案されてきている 1. 交差検定 cross validation ,早期打ち切り early stoping3 2. 正則化 regularization, 重み崩壊 weight decay 3. 枝刈り pruning 4. ドロップアウト4 図 2: 正則化の意味 最適化すべき目標関数に正則化項が加わって 誤差 error という用語より 損失 loss という表現を用いることが多い 特異値分解(SVD) ,Wiener filter との関連から古くから議論されてきている。しかし,正則化パラメータ ( ) はアドホックに定めることとな り,恣意性が残る。ベイズ的に正則化パラメータを決める方法 (MacKay1992) や,Wahba の方法などが提案されている。 4 正則化 Loss = f (W, x) + λg (W) (2) λ 4.1 正則化の効果
  5. 図 3: 左:L1 正則化,右:L2 正則化 Hastie(2001) より 図 4: 正則化重みによる変化

    Hastie(2001) より 図 5: Elastic Net の概念図 Hastie(2001) より 図 6: Hastie(2001) より demo overfitting.py plot_lasso_lars.ipynb 4.4 正則化によるパラメータの変動 4.5 正則化によるパラメータの変動 4.6 正則化によるパラメータの変動
  6. 時空間補完,近似 オプティカルフローの計算 明度と入射光,反射光の計算 輪郭からの形状復元 テクスチャからの形状復元 陰影からの形状復元 両眼立体視 運動からの構造復元 立体視から形状復元 表面の再構成

    表面色の計算 図 10: Poggio ら(1985) Fig.1 より: 視覚の速度場の曖昧性。左: 開口面( 図中の白い円) 内の輪郭に垂直な運動成分を計算しよとしても,物体の3 次元回転によって物体の平面の向きが変化するために局所情報だけからは面の向きが曖昧で定まらない例。右: 円弧長s によってパラメータ法 線 VN(s) と接線 Vr(s) にカーブまでパラメータ化された、輪郭に沿った速度ベクトルの分解 不良設定問題では,データ から を見つける問題 で正則化ノルム は安定化関数 を満足させる。 標準正則化理論 は線形演算子,ノルムは2 次関数, も線形演算子, 図 11: 標準正則化理論 Some of the early vision problems that have been solved in terms of variational principles. The first five are standard quadratic regularization principles. In edge detection the data on image intensity ( ) (for simplicity in one dimension) are given on a discrete lattice: the operator is the sampling operator on the continuous distribution to be recovered. A similar functional may be used to approximate timevarying imagery. The spatio-temporal intensity to be recovered from the data is ; the stabilizer imposes the constraint of constant velocity in the image plane (ref. 61). In area-based optical flow, is the image intensity, , and are the two components of the velocity field. In surface reconstruction the surface is computed from sparse depth data In the case of colour the brightness is measured on each of three appropriate colour coordinates ( ). The solution vector contains the illumination and the albedo components separately; it is mapped by into the ideal data. Minimization of an appropriate stabilizer enforces the constraint of s patially smooth illumination and either constant or sharply varying albedo. For shape from shading and stereo (T.P. and A. Yuille, unpublished), we show two non-quadratic regularization functionals. is the reflectance map, and are related to the components of the surface gradient, is the y z Az = y (4) || ⋅ || ||Pz|| A P i = i(x) S f i(x, y, t) f(x, y, t) V i μ ν f(x, y) d(x, y) I ν ν = 1, 2, 3 z A R f g E
  7. brightness distribution. The regularization of the disparity field involves convolution

    with the laplacian of gaussian of the left ( ) and the right ( ) images and a Tikhonov stabilizer corresponding to the disparity gradient. 勾配消失問題 gradient vanishing problem 責任割当問題 credit assignment problem これら2点の問題を解決する諸手法を元に多層化ニューラルネットワークが構成される。 総称して 深層学習 deep learning と呼ばれる。 図 12: 大規模画像認識チャレンジの結果 画像認識に用いられるCNN の特徴を挙げれば次の 7 点に集約できる。 1. 非線形活性化関数(non-linear activation functions) 2. 畳込み演算(convolutional operation) 3. プーリング処理(pooling) 4. データ拡張(Data augmentation) 5. バッチ正規化(batch normalization) 6. ショートカット(shortcut) 7. GPU の使用 Convolution is an operation from signal processing. Filters, or kernels in machine learning, 理解を深めるためには http://colah.github.io/posts/2014-07-Understanding-Convolutions/ 通常のニューラルネットワークでは,直下層のニューロンとそのすぐ上の層の全ニューロンと結合を有する。一方 CNN ではその結合が部分 的。各ニューロンは多入力一出力の信号変換機とみなすことができ,活性化関数に非線形な関数を用いる点は通常のニューラルネットワーク と同様。 画像処理を考える場合,典型的には一枚の入力静止画画像は 3 次元データである。次元は幅w ,高さh ,奥行きd であり,入力画像では奥行き が3次元,すなわち赤緑青の三原色。出力ニューロンへの入力は局所結合から小領域に限局される。 d L R 6 畳み込みニューラルネットワーク CNN 6.1 MLP の問題点 ( 再) 6.2 CNN 6.3 畳込み演算 f ∗ g(t) = ∑ a+b=t f(t) ⋅ g(t) f ∗ g(t) = ∑ a f(t) ⋅ g(t − a) f ∗ g(t) = ∑ f(τ ) ⋅ g(t − τ ) f ∗ g(t) = ∫ f(τ )g(t − τ ) dτ (5)
  8. CNN1_20 CNN1_21 CNN は以下のいずれかの層から構成される: 1. 畳込み層 2. プーリング層 3. 完全結合層(通常のニューラルネットワークと正確に同じもの,CNN

    では最終 1 層または最終 1,2 層に用いる) 入力信号はパラメータの値が異なる活性化関数によって非線形変換される。 畳込み層とプーリング層と複数積み重ねることで多層化を実現 し,深層ニューラルネットワークとなる。 畳込み層のパラメータは学習可能なフィルタの組 7 CNN の構成 7.1 畳込み層 convolution layers
  9. 全フィルタは空間的に(幅と高さに沿って)小さくなる フィルタは入力信号の深さと同一 第1 層のフィルタサイズは例えば 5×5×3 (5 画素分の幅,高さ,と深さ 3 (3原色の色チャンネル) 各層の順方向の計算は入力信号の幅と高さに沿って各フィルタを水平または垂直方向へスライド

    フィルタの各値と入力信号の特定の位置の信号との内積(ドット積)。 入力信号に沿って水平,垂直方向にフィルタをスライド 各空間位置でフィルタの応答を定める 2 次元の活性化地図が生成される 学習の結果獲得されるフィルタの形状には、方位検出器,色ブロッブ,生理学的には視覚野のニューロンの応答特性に類似 上位層のフィルタには複雑な視覚パタンに対応する表象が獲得される 各畳込み層全体では学習すべき入力信号をすべて網羅するフィルタの集合が形成される 各フィルタは相異なる 2 次元の活性化地図を形成 各フィルタの応答特性とみなすことが可能な活性化地図 フィルタの奥行き次元に沿って荷重総和を計算し、出力信号を生成 空間配置: 出力層ニューロンの数と配置については 3 つのハイパーパラメータで出力ニューロン数が定まる。 1. 深さ( フィルタ数) 2. ストライド幅 3. ゼロパディング 出力層ニューロン数のことを出力層の 深さ 数と呼ぶハイパーパラメータである。深さ数とはフィルタ数(カーネル数)とも呼ばれる。第 1 畳 込み層が生画像であれば,奥行き次元を構成する各ニューロンによって種々の方位を持つ線分( エッジ検出細胞) や色ブロッブのような特徴表現 を獲得可能となる。入力の同じ領域を 深さ列 とするニューロン集団を ファイバ ともいう。 フィルタを上下左右にずらす幅を ストライド幅 と呼ぶ。ストライド幅が 1 ならフィルタを 1 画素ずつ移動することを意味する。ストライドが 2 ならフィルタは一度に 2 画素ずつジャンプさせる。ストライド幅が大きければ入力信号のサンプリング間隔が大きく広がることを意味する。 ストライド幅が大きくなれば上位層のニューロン数は減少する。 入力の境界上の値をゼロで埋め込むことがある。これを ゼロパディング という。ゼロパディングの量はハイパーパラメータである。ゼロパデ ィングにより出力層ニューロンの数を制御できる。下位層の空間情報を正確に保存するには入力と出力の幅,高さは同じである必要がある。 入力層のニューロン数を ,上位にある畳込み層のニューロン数を ,とすれば出力層に必要なニューロン数 は,周辺のゼロパディング を とすれば で算出できる。たとえば下図でストライド 1 とゼロパディング 0 であれば入力 7x7 でフィルタサイズが 3x3 であれば 5x5(=S=(7-3+2x0)/1+1=5) の出力である。ストライド 2 ならば 3x3=(S=(7-3+2x0)/2+1=3) となる。 空間配置の例:入力空間の次元(x 軸)が1 つで受容野サイズ F=3 の場合,入力サイズ W=5, ゼロパディング P=1 であれば, 左図:出力層ニューロン数は (5-3+2)/1+1=5 の出力層ニューロン数となる。ストライド数 S=1 の場合。 右図:s=2 ,出力層ニューロン数 (5-3+2)/2+1=3 となる。ストライド S=3 ならばボリューム全体にきちんと収まらない場合もでてくる。 数式で表現すれば は 3 で割り切れないので、整数の値として一意に決定はできない。 ニューロン結合係数は(右端に示されている)[1,0,-1] でありバイアスはゼロ。この重みはすべての黄色ニューロンで共有される。 ゼロパディング: 上例では入力次元が 5 ,出力次元が 5 であった。これは受容野が 3 でゼロ埋め込みを1 としたためである。ゼロ埋め込みが使 用されていない場合、出力ボリュームは、どれだけの数のニューロンが元の入力に「フィット」するのであろうかという理由で、空間次元が わずか3 であったであろう。ストライドが のとき、ゼロ埋め込みを に設定すると、入力ボリュームと出力ボリューム が空間的に同じサイズになる。このようにゼロパディングを使用することは一般的である。CNN について詳しく説明している完全な理由につ いて説明する。 7.2 空間配置 spatial asignment 7.3 (cont.) W F S P (W − F + 2P )/S + 1 7.4 ストライド stride (5 − 3 + 2) = 4 7.5 パディング S = 1 P = (F − 1)/2
  10. ストライドの制約: 空間配置ハイパーパラメータには相互の制約があることに注意。たとえば入力に というサイズがあり、ゼロパディ ングは ではなく、フィルタサイズは , よりストライド を使用する ことは不可能である。すなわち整数ではなくニューロンが入力にわたってきれいにかつ対称的に "

    適合" しないことを示す。 AlexNet の論文では,第一畳込層は受容野サイズ ,ストライド ,ゼロパディングなし 。 畳込層 の深さ 。畳込層の出力サイズは [55x55x96] 。55x55x96 ニューロンは入力領域 [11x11x3] と連結。全 深度列 96 個のニューロンは同じ入力領域[11×11×3] に繋がる。論文中には(224-11)/4+1 となっている。パディングについての記載はない。 パラメータ共有 パラメータ数を制御するために畳み込み層で使用される。上記の実世界の例を使用すると、最初の畳故意層には 55x55x96=290,400 のニューロンがあり、それぞれ 11x11x3=363 の重みと1 のバイアスがある。これにより CNN 単独の第 1 層に最大 290400x364=105,705,600 のパラメータが追加される。 パラメータ共有 により学習すべきパラメータ数が減少する。 例えば [55x55x96] のフィルタでは深さ次元は 96 個のニューロンで,各深さで同 じ結合係数を使うことにすれば ユニークな結合係数は計 96x11x11x3=34,848 となるので総パラメータ数は 34,944 となる( バイアス項 +96) 。 各深さで全ニューロン(55x55) は同じパラメータを使用する。逆伝播での学習では,全ニューロンの全結合係数の勾配を計算する必要がある。 各勾配は各深さごとに加算され 1 つの深さあたり一つの結合係数集合を用いる。 ある深さの全ニューロンが同じ重み係数ベクトルを共有する場合,畳込み層の順方向パスは各深さスライス内で入力ボリュームとのニューロ ンの重みの 畳み込み として計算できることに注意。結合荷重係数集合のことを フィルタ または カーネル と呼ぶ。入力信号との間で畳込み演 算を行うこととなる。 AlexNet の学習済フィルタ例:図の 96 個のフィルタは サイズ[11x11x3] 。それぞれが 1 つの深さ内の 55×55 ニューロンで共有されている。画 像の任意の位置で水平エッジ検出が必要な場合,画像の並進不変構造 translationall-invariant structure 仮定により画像中の他の場所でも有効で ある。 畳込み層の出力ニューロン数は 55x55 個の異なる位置すべてで水平エッジの検出を再学習する必要はない。 W = 10 P = 0 F = 3 (W − F + 2P )/S + 1 = (10 − 3 + 0)/2 + 1 = 4.5 S = 2 7.6 パラメータ共有 F = 11 S = 4 P = 0 K = 96 (227 − 11)/4 + 1 = 55 7.7 パラメータ共有 (cont.) 7.8 畳み込み演算のデモ
  11. Input Volume (+pad 1) (7x7x3) x[:,:,0] 0 0 0 0

    0 0 0 0 0 1 0 0 1 0 0 2 1 0 1 2 0 0 1 1 1 2 0 0 0 1 1 0 0 2 0 0 2 0 2 1 0 0 0 0 0 0 0 0 0 x[:,:,1] 0 0 0 0 0 0 0 0 2 1 1 1 0 0 0 0 1 2 1 0 0 0 2 2 0 2 1 0 0 2 0 0 1 1 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 x[:,:,2] 0 0 0 0 0 0 0 2 0 1 1 1 0 1 1 1 0 2 0 1 2 1 1 1 0 2 0 1 0 2 0 1 1 2 1 0 0 0 0 0 0 0 Filter W0 (3x3x3) w0[:,:,0] 1 -1 1 0 0 -1 -1 -1 -1 w0[:,:,1] -1 0 0 0 -1 -1 -1 0 -1 w0[:,:,2] 0 0 0 0 1 0 1 0 0 Bias b0 (1x1x1) b0[:,:,0] 1 Filter W1 (3x3x3) w1[:,:,0] 1 0 0 0 0 -1 0 1 1 w1[:,:,1] 1 -1 1 0 -1 0 -1 1 0 w1[:,:,2] -1 -1 1 -1 0 0 1 -1 0 Bias b1 (1x1x1) b1[:,:,0] 0 Output Volume (3x3x2) o[:,:,0] -5 -3 -2 -6 -3 -4 0 3 -3 o[:,:,1] -1 1 -2 0 -6 -2 -4 -1 -4 toggle movement Convolution is an operation from signal processing Filters, or kernels in machine learning, 理解を深めるためには have a look at http://colah.github.io/posts/2014-07-Understanding-Convolutions/ 1959 Receptive Fields of Single Neurones in the Cat's Striate Cortex 1962 Receptive Fields, Binocular Interaction and Functional Architecture in the Cat's Visual Cortex 1968 7.9 畳み込み演算 What is convolution? f ∗ g(t) = ∑ a+b=t f(t) ⋅ g(t) (6) f ∗ g(t) = ∑ a f(t) ⋅ g(t − a) (7) f ∗ g(t) = ∑ f(τ ) ⋅ g(t − τ ) (8) f ∗ g(t) = ∫ f(τ )g(t − τ ) dτ (9) 7.10 Hubel and Wiesel, a series of studies
  12. AlexNet. サポートベクターマシンを破った最初の CNN AlexNet by Alex Krizhevsky, Ilya Sutskever and

    Geoff Hinton. AlexNet は 大規模画像認 識チャレンジ で誤差26 %を達成した。 ReLU, minibatch(SGD), GPU 2 枚使用,LRN, dropout などを特徴とする。 特別な前処理はしない全平均を引くだけ(end-to-end) 図 13: AlexNet の出力例 7.11 AlexNet(Krizensky+2012) 7.12 AlexNet(cont.)
  13. 図 14: ImageNet 結果( 再) 図 15: RCNN 図 16:

    Ross Girshick 7.13 ImageNet の結果( 再々) 8 Region Proposal と一般画像認識への道のり 8.1 Fast R-CNN (2015) 8.2 Fast R-CNN (2015)
  14. 1. Bottou (2010), Large-Scale Machine Learning with Stochastic Gradient Descent,

    http://leon.bottou.org/papers/bottou-2010↩ 8.5 NIC (2014)(cont.)
  15. 2. Bottou (2010), Large-Scale Machine Learning with Stochastic Gradient Descent,

    http://leon.bottou.org/papers/bottou-2010↩ 3. Prechelt, Lutz and Genevi`{e}ve B. Orr (2012), Early Stopping — But When?↩ 4. Alex Krizhevsky, Ilya Sutskever and Geoffrey E. Hinton (2012) ImageNet Classification with Deep Convolutional Neural Networks↩ 5. 6. Hastie, T., Tibshirani, R., & Friedman, J. (2009). The elements of statistical learning (2 ed.). New York: Springer-Verlag.↩ 7. Poggio, Torre, and Koch (1985) Computational vision and regularization theory, Nature.↩