画像のパターン認識(2)...
TRANSCRIPT
画像処理工学
画像のパターン認識(2)
-機械学習によるパターン認識-
機械学習とは
• 機械学習
– データから法則性(パターン)を抽出する統計的手法
– 訓練データ { x1 , x2 , … , xn } からモデル関数 f (x)(法則性)を求める
– モデルパラメータを,訓練データを用いて適応的に調節しながら求めることを「学習」という
• 機械学習の手法
– 線形回帰,ロジスティック回帰,サポートベクタマシン(SVM),ニューラルネットワーク(NN)
– k-means法,主成分分析
– Q学習 2
機械学習とパターン認識
• 機械学習
– データ x を入力すると出力 y が得られるようなモデル関数 y = f (x) を求める
• パターン認識(クラス分類)
– 未知パターン ρ とし,これが属するクラス c を対応付ける写像 f : ρ → c を求める
機械学習 ≒ パターン認識
3
機械学習のイメージ
• 機械学習の例 : 単回帰分析
– 2つのデータの組(x, y)が n 個与えられている
– これらのデータの散布図を描くと,x, y の間に
単調増加の関係があるように見える
x, y の関係を直線式で表せる?
4x
ix
iy
y
単調増加一方の値が増えると,他方の値も直線的に増える関係
1 1
2 2
i i
n n
x yx yx y
x y
x y
機械学習のイメージ
• 単回帰分析
– 入力 x と出力 y の関係を,直線式 y = ax + b とし,得られているデータからパラメータ a, b を求める
5
xix
iy
y y = ax + b1 2
1 2
i n
i n
x x x x xy y y y y
, xy xxa S S b y a x= = − ×
xyS
xxS, x y
: x, y の偏差積和
: x の偏差平方和
: x, y の平均値
モデル
データからパラメータを計算
学習
機械学習とは,入力 x と 出力 y について
が最小となるような f を求めることである
機械学習のイメージ
• 単回帰分析における学習
– パラメータ a, b は残差 ei が最小となるように求める
入力 xi に対して,出力が yi となるようにパラメータを設定する
6
( )i i ie y ax b= − +
x
y
xi
yi
iax b+
yi と,xi を直線式に代入したときの値 axi+b との差が最小となるように直線式の位置を調節する(直線パラメータを計算する)
( ) ( ){ }2 or f f− −∑ ∑y x y x
機械学習の問題の分類
• 教師あり学習– 訓練データが入力データとそれらに対応する出力データ
で構成される問題
– 線形回帰,ロジスティック回帰,SVM,NNなど
• 教師なし学習– 訓練データが入力データのみで,それらに対応する出力
データが存在しない問題
– k-means法,主成分分析など
• 強化学習– ある与えられた状況下で,報酬を最大にするような適当
な行動を見つける問題
– Q学習など7
ニューラルネットワーク
• ニューラルネットワーク(Neural Network;NN)
– 生物の神経細胞やそのネットワークの挙動にヒントを得た機械学習システム
• 神経細胞をモデル化したニューロン
1
n
i ii
y f w x h=
= − ∑
1w
・ 複数の入力 xi (i = 1, … , n) に対して,ひとつの値 y を出力
・ 入力 xi に結合重み wi を乗じ,それらの総和が閾値 h より大きいとき 1,小さいとき 0 を y として出力する
マカロック-ピッツの素子モデル
8
2w
3w
1x
2x
3x
y
y
h
1
ニューラルネットワーク
• ニューロンの挙動の例
– AND回路
• 重み w1 = w2 = 1,閾値 h = 1.5 とする
( )1 2 1.5 y f x x= + −
1
9
1
1x
2x
y
入力 x1 入力 x2 出力
0 0 0 + 0 - 1.5 = -1.5 → 0
0 1 0 + 1 - 1.5 = -0.5 → 0
1 0 1 + 0 - 1.5 = -0.5 → 0
1 1 1 + 1 - 1.5 = 0.5 → 1
ニューラルネットワーク
• パーセプトロン(多層パーセプトロン)
– 複数のニューロンを複数の階層に並べて構成されたネットワーク
– フィードフォワードネットワーク,順伝搬型ネットワークと呼ぶ
10
1x
1y2x
nx
2y
1ijw2 jqw
入力層 中間層 出力層
1z
2z
mz
11
n
j ij i ji
z f w x h=
= − ∑
21
m
q jq j qj
y f w z v=
= −
∑
中間層の出力
出力層の出力
ニューラルネットワーク
• パーセプトロンの学習
– 学習サンプル(入力値に対する出力値の組み合せ)から重み(さらに閾値)の値を自動的に決定することができる
– 誤り訂正学習
• 学習サンプルにおける出力値(教師データ)と,それに対応する入力値をネットワークに入力して得られる出力値との誤差をなるべく小さく(できればゼロ)にするよう重み係数を更新する
11
( ) i i iw w r y xα← + −ix iw
yr : 教師データの値α: 学習係数
ニューラルネットワーク
• 誤差逆伝搬法
– 多層パーセプトロンのおける重み更新法
– 出力の誤差を,出力層から入力層に向かって逆伝搬させながら,全体の重みを調整していく
– 誤差関数 E を,重み wi について最小化する問題⇒ 勾配降下法により求める
12
E
iw0w1woptw
誤差 E と w0 に対する更新量を誤差関数の傾きから決定
w0 と得られた更新量から w1 を得る
誤差の算出と更新量の決定を繰り返し最終的な重み wopt を得る
ニューラルネットワーク
• 1つの出力を持つ多層パーセプトロンにおける誤差逆伝搬
– 中間層,出力層における各ニューロンの出力関数をシグモイド関数とする
13
1x
y2x
nx
1ijw
2 1jw
入力層 中間層 出力層
1z
2z
mz
( )1
1 = , 1
n
i iui
f u u w xe−
=
=+ ∑
シグモイド関数
u
1( )f u
u
ニューラルネットワーク
– 中間層-出力層の重みの更新
14
1x
y2x
nx
1ijw
2 1jw
入力層 中間層 出力層
1z
2z
mz
( ) ( )2 1 2 1 2 1j j j
f uE E y r yw y w w
∂∂ ∂ ∂= = − −
∂ ∂ ∂ ∂
重み w2j1 の更新量
( ) ( )
( ) ( ) ( )( )( ) ( )
2 1
1
1
j
j
j
f u ur yu w
r y f u f u z
r y y y z
∂ ∂= − −
∂ ∂
= − − −
= − − −
( ) ( ) ( )( ) ( )2 1
1 , , jj
f u uf u f u z y f uu w
∂ ∂∴ = − = =
∂ ∂
( ) ( )2 1 1j jw r y y y zα∆ = − −実際には学習係数 α を用いて
ニューラルネットワーク
– 入力層-中間層の重みの更新
15
1x
y2x
nx
1ijw
2 1jw
入力層 中間層 出力層
1z
2z
mz
1 1ij ij
E E y uw y u w∂ ∂ ∂ ∂
=∂ ∂ ∂ ∂
重み w1ij の更新量
( ) ( )1
1ij
ur y y yw∂
= − − −∂
( ) 12 1
1 1
, 1 , j jj j j i
j j ij
z uu w z z xz u w
∂ ∂∂∴ = = − =
∂ ∂ ∂
12 1
1 1 1 1
j j jj
ij j ij j ij
z z uu u ww z w u w
∂ ∂ ∂∂ ∂= =
∂ ∂ ∂ ∂ ∂
( )2 1 1j j j iw z z x= −
( ) ( ) ( )2 11
1 1j j j iij
E r y y y w z z xw∂
= − − − −∂
上位層の微分 上位層の重み
( ) ( ) ( )1 2 11 1ij j j j iw r y y y w z z xα∆ = − − −
ニューラルネットワーク
• 複数出力を持つ多層パーセプトロンにおける誤差逆伝搬
16
1x
qy
2x
nx
1ijw
入力層 中間層 出力層
1z
2z
mz
1y
2y
2 jqw重み w2jk (中間-出力)の更新量
( ) ( )2 1jk k k k k jw r y y y zα∆ = − −
重み w1ij (入力-中間)の更新量
( ) ( ) ( )1
21
1 1
ij
q
k k k k jk j j ik
w
r y y y w z z xα=
∆
= − − −
∑
ニューラルネットワーク
• 誤差関数
– クロスエントロピー関数
• 多クラス分類問題の場合に用いられる
• 2クラス分類問題の場合
– 二乗誤差関数
• 回帰問題の場合に用いられる
17
1 1 , 0 , 1
C N
cn cn cn cnc n
E r y r y= =
= − ≤ ≤∑∑
( ) ( ){ }1
ln 1 ln 1N
n n n nn
E r y r y=
= − + − −∑
2
1
N
n nn
E r y=
= −∑
ニューラルネットワーク
• 活性化関数
– 入力信号を線形または非線形変換する関数
– tanh関数 : -1 から 1 までの値を出力
– ReLU関数(rectified linear unit関数)
• ディープラーニングで用いられる
18
( ) ( ) ( ) ( )( ) ( )
exp exptanh
exp expu u
f u uu u− −
= =+ − ( ) ( )1f u f u′ = −微分は
( ) ( )max , 0f u u= ( ) 1f u′ =微分は u > 0 のとき , それ以外は 0( )f u
0 u
ReLU関数のグラフ
ニューラルネットワーク
• 尤度関数
– 多層パーセプトロンの出力は,尤度関数から求められる
– 恒等関数
• 回帰問題で用いられる
• 重み付き結合 uk の値をそのまま出力
– ソフトマックス関数
• 多クラスの分類問題で用いられる
19
出力層の各ユニットは 0 から 1 の値を取る( ) ( )
( )1
exp
exp
kk q
kk
up y
u=
=
∑
ニューラルネットワーク
• 重み更新処理の方法
– バッチ処理
• すべての学習サンプルを用いて更新量を求める
– オンライン学習
• 学習サンプルひとつずつから更新量を求める
– ミニバッチ処理
• 学習サンプルを何個かのグループに分けて,グループごとに更新量を求める
20
( )1
1 ,
tNtt t t
n tn
EE E α+
=
∂= = −
∂∑ w ww :t
nE 更新処理 t 回目におけるサンプル n の誤差
t tn
n GE E
∈
= ∑ :G グループ集合
畳み込みニューラルネットワーク
• 畳み込みニューラルネットワーク(Convolutional Neural Network ; CNN)
– 人間の視覚野にある受容野をモデル化
– 入力層,畳み込み層,プーリング層,全結合層,出力層から構成
21
入力層畳み込み層
特徴マッププーリング層
畳み込み層
プーリング層
全結合層
全結合層
出力層
複数回繰り返して.深い層を形成
複数回繰り返す
畳み込みニューラルネットワーク
• 畳み込み層
– 入力と重みフィルタとの内積を計算(畳み込み処理)
– 入力層の画像の局所的な特徴を抽出(特徴マップ)
– 層が深くなるにつれて大域的な特徴が捉えられる
22
5 3 1
2 3 2
1 2 6
4
3
3
-1 -1
-1 -1
-1 -1
畳み込み
f
f
f
入力サイズ 10×10フィルタ
3×3活性化関数
特徴マップ 8×8
40
40
畳み込みニューラルネットワーク
• プーリング層
– 特徴マップ上の着目領域を設定し,その領域の値から新たな特徴マップを得る(サイズが縮小される)
– 特徴の幾何学的変化(位置ずれなど)を吸収する働き
23
3 2 1 2
2 2 3 4
0 1 2 3
0 0 3 6
3 4
3 6
3 2 1 2
2 2 3 4
0 1 2 3
0 0 3 6
2 2
1 3
最大値プーリング 平均値プーリング
着目領域の最大値を取得 着目領域の平均値を取得
畳み込みニューラルネットワーク
• 全結合層
– 最終的な特徴マップの各値を1次元に展開,それらをユニットとして,多層パーセプトロンを形成
24
プーリング層畳み込み層
全結合層
畳み込みニューラルネットワーク
• 出力層
– 分類問題の場合,尤度関数を用いて各クラス(出力層ユニットの値)の尤度を求める
25
全結合層
出力層
human
cat
dog
car
other
CNNに入力
0
1
0
0
0
5クラスの分類
このような出力結果になるようにCNNを学習させる