卒業研究 ニューラルネットワーク 12162062 藤森祐太 目次 • ニューラルネットについて • パーセプトロン • 誤差逆伝播法 • 畳み込みニューラルネット ニューラルネットワーク • ニューラルネットワークとは、人間の脳神経系の働きを模倣して数 式で表現したもの • 回帰、クラス分類などの問題に活用できる • 今回の研究ではクラス分類を行う 単純パーセプトロン • 順伝播型ニューラルネットワークのひとつ(単一方向に情報が流れ る) • 入力層と出力層のみからなる単純なニューラルネットワーク • 動物の神経細胞は、樹状突起という部位で他の細胞から複数の入 力を受け取り、入力が一定値以上に達すると信号を出力するとされ ており、それをモデル化したもの 計算式 𝑥1 , 𝑥2 , … , 𝑥𝑛 は入力信号、𝑤1 , 𝑤2 , … , 𝑤𝑛 は重み、 bはバイアス値とする u = 𝑤1 𝑥1 + 𝑤2 𝑥2 + ⋯ + 𝑤𝑛 𝑥𝑛 + b out = f(u ) (fは活性化関数) 活性関数にはステップ関数 (下図の場合は f(u)=1(u >= 0), 0( u< 0))や 1 ロジスティック関数(f u = −𝑢 ) などが使われている 1+𝑒 計算の例 • 入力値 : [𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 ] • 重み : [𝑤11 , 𝑤12 , 𝑤13 , 𝑤14 , 𝑤21 , 𝑤22 , 𝑤23 , 𝑤24 , 𝑤31 , 𝑤32 , 𝑤33 , 𝑤34 ] • バイアス : [𝑏1 , 𝑏2 , 𝑏3 , 𝑏4 ] • 𝑢1 = 𝑤11 𝑥1 + 𝑤12 𝑥2 + 𝑤13 𝑥3 + 𝑤14 𝑥4 + 𝑏1 • 𝑢2 = 𝑤21 𝑥1 + 𝑤22 𝑥2 + 𝑤23 𝑥3 + 𝑤24 𝑥4 + 𝑏2 • 𝑢3 = 𝑤31 𝑥1 + 𝑤32 𝑥2 + 𝑤33 𝑥3 + 𝑤34 𝑥4 + 𝑏3 • f : 活性化関数 • 出力値 : out 𝑖 (i=1,2,3) • 𝑜𝑢𝑡1 = 𝑓(𝑢1), 𝑜𝑢𝑡2 = 𝑓(𝑢2), 𝑜𝑢𝑡3 = 𝑓(𝑢3) 単純パーセプトロンの使用例 • 青と緑の点を分離する直線を求める 最初に重み(直線の傾き)を適当に設定し、訓練データとして入力信 号(x座標、y座標)と教師信号(ラベル値:緑を1、青を-1)がセットに なっているデータを使い学習を重ねて重みを更新していく • どのように学習し重みを更新するか? 勾配降下法 勾配降下法とはある誤差関数E out 𝑖 , 𝑦𝑖 が与えられていて、その関数を最小 化するように重み𝑤𝑖 を変更していく方法(out 𝑖 は出力値、𝑦𝑖 は教師信号) 重みの更新はデータ数分行う 𝜕𝐸 𝜕𝐸 を求めてそれに学習係数𝜇をかけた𝜇 をもとの重み𝑤𝑖 から引く𝑤𝑖 𝜕𝑤𝑖 𝜕𝑤𝑖 𝜕𝐸 𝑤𝑖 − 𝜇 𝜕𝑤 𝑖 誤差関数には • 2乗誤差関数:1/2 𝑗 (𝑦𝑗 − 𝑜𝑢𝑡𝑗 )2 • 交差エントロピー誤差関数:− 𝑗 𝑦𝑗 • ヒンジ損失関数:max(0, −𝑦𝑗 𝑥𝑗 𝑤𝑗 ) などがある log(𝑜𝑢𝑡𝑗 ) = 確率的勾配降下法 勾配降下法だと最小値ではなく局所的に極小値をとる点に収束して しまう可能性がある また全てのデータを使って学習するとかなりの計算時間が必要となる 場合がある これらの問題点を解決する方法として 確率的勾配降下法という方法がある 学習するときに全データを使うのでは なく、1つのデータを選ぶ 排他的論理和 排他的論理和(XOR)は右上図のように定められるもの プロットすると右下図のようになるので線形分離 は出来ないつまり、単純パーセプトロンでは分類 不可能 ⇒よって分類するには他の手法が必要 誤差逆伝播法(バックプロパゲーション) • 単純パーセプトロンでは出来ないものに対応(非線形の分類にも対 応)するために、入力層と出力層の間に中間層を持つパーセプトロ ンを使う • 中間層以前の層の重みの更新をどのようにして行うかが問題 • そこで学習方法として誤差逆伝播法(バックプロパゲーション)を使う 誤差逆伝播法(バックプロパゲーション) • 第1層、第2層、・・・第n層、・・・、第N層からなっているとする • 誤差関数Eを二乗誤差関数、出力層の活性化関数をロジスティック 関数とする • 𝑤𝑗𝑖𝑛 を第n層のj番目のユニットと結合している第n-1層のi番目のユ ニットにかかってくる重みとする • out𝑗𝑛 を第𝑛層の𝑗番目の出力値とする • 学習係数を𝜇とする • 求めたいのは 𝜕𝐸 𝑛 𝜕𝑤𝑗𝑖 バックプロパゲーションのアルゴリズム • 手順 1, 既に説明した順伝播型ニューラルネットワークの計算方法で、入力層から 出力層への計算を行い、𝑜𝑢𝑡𝑗𝑁 までを求める 2, 出力層の出力𝑜𝑢𝑡𝑗𝑁 と与えられたデータの目標出力𝑦𝑗 の誤差から𝛿𝑗𝑁 を計算する 3, 今回の場合は、𝛿𝑗𝑁 = (𝑜𝑢𝑡𝑗𝑁 − 𝑦𝑗 )𝑜𝑢𝑡𝑗𝑁 (1 − 𝑜𝑢𝑡𝑗𝑁 )となる 4, 出力層以前の層は、𝛿𝑗𝑛 = 𝑓′(𝑢𝑗𝑛 ) 𝑛+1 𝑛+1 𝑤𝑘𝑗 と計算される 𝑘 𝛿𝑘 5, 𝛿を出力層から入力層の向きに伝播させていく(逆伝播) 𝜕𝐸 6, 𝑤𝑗𝑖𝑛 = 𝑤𝑗𝑖𝑛 − 𝜇𝛿𝑗𝑛 𝑜𝑢𝑡𝑗𝑛−1 と計算して重みを更新する (𝜕𝑤 𝑛 = 𝛿𝑗𝑛 𝑜𝑢𝑡𝑗𝑛−1 ) 𝑗𝑖 • 以上の手順を繰り返し行い、重みを更新していく アイリスデータの分類 学習回数 10 100 1000 5000 10000 ロジスティック 30.8~61.7 33.3~68.3 85.8~95.0 97.5 95.8 ソフトマックス 33.3~45.0 31.7~67.5 65~87.5 96.7 94.2 ソフトマックス関数 •𝑓= exp(𝑢𝑘 ) 𝐾 exp(𝑢 ) 𝑗 𝑗=1 • 確率値を出力する 畳み込みニューラルネットワーク • 畳み込みニューラルネットワーク(コンボリューショナルニューラル ネットワーク:CNN)とは、畳み込み層とプーリング層という特殊な層 を含んだニューラルネットワーク • 動物の視覚野をモデルにしたもので、主に画像処理に利用される • 今まで説明したニューラルネットワークとは違い、隣接層のユニット が全結合しているのではなく、特定のユニットとのみ結合している 畳み込み層(convolution) 畳み込み層では画像に対してフィルターを設定して画像とフィルター 間で積和計算を行う 下図の場合は 77*0.01+80*0.08+82*0.01+83*0.08+78*0.62+80*0.08+87*0.01+82*0. 08+81*0.01 = 79 というように計算する フィルターの数値は同じものを使う(重み共有) フィルターを複数使う場合は同じ処理をフィルター数行う プーリング層(pooling) • プーリング層ではフィルターを設定してそのフィルターの内部に含ま れる画素に特定の処理を行う • 最大プーリング(max pooling)ではフィルター内の画素の中の数字で 一番大きい数値を出力する • ステップ数を設定して何個おきにフィルターを適用するかき決める。 下図の場合はステップ数は2である 畳み込みニューラルネットワークの手順 1 畳み込み層 • フィルターの数値をベクトルとしたものをhとする • 入力信号に対してフィルターの処理をおこなうところには適切なフィ ルターの数字をそれ以外は0としたベクトルを作る • これをフィルターが移動するたびに作成する。 • 以上の処理でできたベクトルを合わせたものが畳み込み層の重み となる • 入力信号が100でフィルターが9の場合は91個の0が格納された64 個のベクトルを合わせたものが重みとなる 畳み込みニューラルネットワークの手順 2 プーリング層(最大プーリング層) • 入力信号に対して出力する数字、つまりフィルター内の最大の数値 の場所に1をそれ以外を0にしたベクトルを作る • 畳み込み層と同様にこれもフィルターが移動するたびに作成し、そ れらを合わせたものがプーリング層の重みとなる • 入力信号が16でフィルターが4でステップ数が2の場合は、大きさが 16でその要素のうち高々1つが1のベクトルを4つまとめたものが重 みとなる 畳み込みニューラルネットワークの手順 3 • 全結合のニューラルネットワークの時と同様に誤差逆伝播法によっ て学習して、各層の重みを更新する • 畳み込み層の重み更新のために少し準備をする 準備 • h(フィルターの数値を並べたベクトル)と内積をとると畳み込み層の ユニットiと畳み込み層の次の層のユニットjの間の重み𝑤𝑗𝑖 を与える ベクトル𝑡𝑗𝑖 を作る • 𝑡𝑗𝑖 の成分を𝑡𝑗𝑖𝑟 とし、rを固定したときに𝑡𝑗𝑖r を(j, i)成分に持つ行列を Tr とする 畳み込みニューラルネットワークの手順 4 • 全結合のニューラルネットワークのときと同じように重みの修正量を 計算する(前のスライドの𝛿𝑗𝑛 ) • (𝜕h)r = i,j(Tr °𝜕w)j,i ただし𝜕w = 𝛿𝑗𝑛 𝑜𝑢𝑡𝑗𝑛−1 • ° は行列の成分ごとの積を表すものとする • 実際に結合しているのはフィルターと重なっている部分のみであり、 また重みを共有しているのでフィルターの数値1つに対して複数の 誤差修正量が出てくるので、それらを全てまとめるという処理を行っ ている 畳み込みニューラルネットワークの手順 5 • プーリング層は与えられた入力信号の一部分の最大値を返す層な ので、重みの更新はなく、誤差修正量(前のスライドの𝛿𝑗𝑛 )を入力層 の方へと伝える処理のみを行う • 𝛿𝑗𝑛 = 𝑓′(𝑢𝑗𝑛 ) 𝑛+1 𝑛+1 𝑤𝑘𝑗 の計算のみを行う 𝑘 𝛿𝑘 digitsの分類 • 3層 畳み込み 3層で3を9と間違えたものの内77%が 畳み込みニューラルネットワークだと 正しく3だと分類された 課題 • ニューラルネットワークはパラメータによって精度に差がでるので、 ある程度の試行を重ねて適切なパラメータを設定する必要がある。 • 畳み込みニューラルネットワークはかなりの計算時間を要するため、 実験を行うためには計算時間の短縮が必須。 • 計算時間短縮のために並列化やGPUを使うといったことが必要に なってくる。 • 計算時間短縮のためにアルゴリズムを見直す必要がある。 参考文献 書籍 • 深層学習 岡谷貴之 ウェブページ • 村上研究室ニューラルネットワーク-画像処理・理解研究室 • http://ipr20.cs.ehime-u.ac.jp/column/neural/ • 機械学習プロフェッショナルシリーズ輪読会スライドまとめ • http://qiita.com/kenmatsu4/items/24524640d518c1765684
© Copyright 2024 ExpyDoc