画像処理工学
画像のパターン認識(2)
-機械学習によるパターン認識-
機械学習とは
•
機械学習–
データから法則性(パターン)を抽出する統計的手法–
訓練データ {x 1 , x 2 , … , x n }
からモデル関数f (x)
(法則性)を求める
–
モデルパラメータを,訓練データを用いて適応的に 調節しながら求めることを「学習」という•
機械学習の手法–
線形回帰,ロジスティック回帰,サポートベクタマシン(
SVM
),ニューラルネットワーク(NN
)– k-means
法,主成分分析– Q
学習機械学習とパターン認識
•
機械学習–
データx
を入力すると出力y
が得られるような モデル関数y = f (x)
を求める•
パターン認識(クラス分類)–
未知パターン ρ とし,これが属するクラスc
を対応 付ける写像f
: ρ→ c
を求める機械学習
≒
パターン認識機械学習のイメージ
•
機械学習の例 : 単回帰分析–
2つのデータの組(x , y
)がn
個与えられている–
これらのデータの散布図を描くと,x , y
の間に単調増加の関係があるように見える
x , y
の関係を直線式で表せる?i
x x y
iy
単調増加
一方の値が増えると,
他方の値も直線的に 増える関係
1 1
2 2
i i
n n
x y x y x y x y x y
機械学習のイメージ
•
単回帰分析–
入力x
と出力y
の関係を,直線式y = ax + b
とし,得られているデータからパラメータ
a, b
を求めるi
x x y
iy y = ax + b
1 2
1 2
i n
i n
x x x x x
y y y y y
,
xy xx
a S S = b y a x = − ×
S
xyS
xx, x y
:
x, y
の偏差積和:
x
の偏差平方和:
x, y
の平均値モデル
データから パラメータ を計算
学習
機械学習とは,入力
x
と 出力y
についてが最小となるような
f
を求めることである機械学習のイメージ
•
単回帰分析における学習–
パラメータa, b
は残差e i
が最小となるように求める 入力x i
に対して,出力がy i
となるようにパラメータを設定する
( )
i i i
e = − y ax b +
x y
x
iy
iax b
i+
y
i と,x
i を直線式に代入したときの 値ax
i+b
との差が最小となるように 直線式の位置を調節する(直線パラメータを計算する)
( ) or { ( ) }
2f f
− −
∑ y x ∑ y x
機械学習の問題の分類
•
教師あり学習–
訓練データが入力データとそれらに対応する出力データ で構成される問題–
線形回帰,ロジスティック回帰,SVM
,NN
など•
教師なし学習–
訓練データが入力データのみで,それらに対応する出力 データが存在しない問題– k-means
法,主成分分析など•
強化学習–
ある与えられた状況下で,報酬を最大にするような適当 な行動を見つける問題– Q
学習などニューラルネットワーク
•
ニューラルネットワーク(Neural Network
;NN
)–
生物の神経細胞やそのネットワークの挙動にヒントを 得た機械学習システム•
神経細胞をモデル化したニューロン1
n i i
i
y f w x h
=
= −
∑
w
1・ 複数の入力
x
i (i = 1, … , n
) に対して,ひとつの値y
を出力・ 入力
x
i に結合重みw
i を乗じ,それらの総和が閾値h
より大きいとき1
, 小さいとき0
をy
として出力するマカロック-ピッツの素子モデル
8
w
2w
3x
1x
2x
3y
y
h
1
ニューラルネットワーク
•
ニューロンの挙動の例– AND
回路•
重みw
1= w
2= 1
,閾値h = 1.5
とする(
1 2)
1.5
y = f x x + − 1
1
x
1x
2y
入力
x
1 入力x
2 出力0 0 0 + 0 - 1.5 = -1.5
→ 00 1 0 + 1 - 1.5 = -0.5
→ 01 0 1 + 0 - 1.5 = -0.5
→ 01 1 1 + 1 - 1.5 = 0.5
→ 11 2
1.5 0.0 x x + − >
1 2
1.5 0.0 x x + − ≤
のとき1 のとき0
ニューラルネットワーク
•
パーセプトロン(多層パーセプトロン)–
複数のニューロンを複数の階層に並べて構成された ネットワーク–
フィードフォワードネットワーク,順伝搬型ネットワーク と呼ぶx
1y
1x
2x
ny
2w
1ij2jq
w
入力層 中間層 出力層
z
1z
2z
m1 1
n
j ij i j
i
z f w x h
=
= −
∑
1 2
m
q jq j q
j
y f w z v
=
= −
∑
中間層の出力
出力層の出力
ニューラルネットワーク
•
パーセプトロンの学習–
学習サンプル(入力値に対する出力値の組み合せ)から重み(さらに閾値)の値を自動的に決定すること ができる
–
誤り訂正学習•
学習サンプルにおける出力値(教師データ)と,それに対応 する入力値をネットワークに入力して得られる出力値との 誤差をなるべく小さく(できればゼロ)にするよう重み係数を 更新する( )
i
i i
w ← w + α r y x − x
iw
iy
r
: 教師データの値α
ニューラルネットワーク
•
誤差逆伝搬法–
多層パーセプトロンのおける重み更新法–
出力の誤差を,出力層から入力層に向かって逆伝搬 させながら,全体の重みを調整していく–
誤差関数E
を,重みw i
について最小化する問題⇒
勾配降下法により求めるE
w
iw
0w
1w
opt誤差
E
とw
0 に対する更新量を 誤差関数の傾きから決定w
0 と得られた更新量からw
1 を得る 誤差の算出と更新量の決定を繰り返し 最終的な重みw
opt を得るニューラルネットワーク
•
1つの出力を持つ多層パーセプトロンにおける 誤差逆伝搬–
誤差関数を二乗誤差関数,中間層・出力層における 各ニューロンの出力関数をシグモイド関数とするx
1 2y x
x
nw
1ij2 1j
w
入力層 中間層 出力層
z
1z
2z
m( )
1= 1 , 1
n u i i
i
f u u w x
e
− =+ = ∑
シグモイド関数
u 1
( )
f u
u
ニューラルネットワーク
–
中間層-出力層の重みの更新x
1 2y x
x
nw
1ij2 1j
w
入力層 中間層 出力層
z
1z
2z
m( ) ( )
2 1j 2 1j 2 1j
E E y r y f u
w y w w
∂ ∂ ∂ ∂
= = − −
∂ ∂ ∂ ∂
重み
w
2j1 の更新量( ) ( )
( ) ( ) ( ( ) )
( ) ( )
2 1
1 1
j
j
j
f u u
r y u w
r y f u f u z r y y y z
∂ ∂
= − −
∂ ∂
= − − −
= − − −
( ) ( ) ( ( ) ) ( )
2 1
1 , j,
j
f u f u f u u z y f u
u w
∂ ∂
∴ = − = =
∂ ∂
( ) ( )
2 1j
1
jw α r y y y z
∆ = − −
実際には学習係数
α
を用いてニューラルネットワーク
–
入力層-中間層の重みの更新x
1 2y x
x
nw
1ij2 1j
w
入力層 中間層 出力層
z
1z
2z
m1ij 1ij
E E y u w y u w
∂ = ∂ ∂ ∂
∂ ∂ ∂ ∂
重み
w
1ij の更新量( ) ( )
1
1
ij
r y y y u
w
= − − − ∂
∂
( )
12 1
1 1
, j 1 , j
j j j i
j j ij
z u
u w z z x
z u w
∂ ∂
∴ ∂ = = − =
∂ ∂ ∂
2 1 1
1 1 1 1
j j j
j
ij j ij j ij
z z u
u u w
w z w u w
∂ ∂ ∂
∂ = ∂ =
∂ ∂ ∂ ∂ ∂
( )
2 1j j
1
j iw z z x
= −
( ) ( 1 )
2 1j j( 1 j )
i
E r y y y w z z x w
∂ = − − − −
∂
( ) ( ) ( )
1ij
1
2 1j j1
j iw α r y y y w z z x
∆ = − − −
ニューラルネットワーク
•
複数出力を持つ多層パーセプトロンにおける 誤差逆伝搬x
1y
qx
2x
nw
1ij入力層 中間層 出力層
z
1z
2z
my
1y
2 2jqw
重みw
2jk (中間-出力)の更新量( ) ( )
2jk k k k
1
k jw α r y y y z
∆ = − −
重み
w
1ij (入力-中間)の更新量( ) ( ) ( )
1 1 2
1 1
ij q
k k k k jk j j i
k
w
r y y y w z z x
α
=
∆
= − − −
∑
ニューラルネットワーク
•
誤差関数–
クロスエントロピー関数•
多クラス分類問題の場合に用いられる•
2クラス分類問題の場合–
二乗誤差関数•
回帰問題の場合に用いられる1 1
, 0 , 1
C N
cn cn cn cn
c n
E r y r y
= =
= − ∑∑ ≤ ≤
( ) ( )
{ }
1
ln 1 ln 1
N
n n n n
n
E r y r y
=
= − ∑ + − −
N 2
n n
E = ∑ r y −
ニューラルネットワーク
•
活性化関数–
入力信号を線形または非線形変換する関数– tanh
関数 :- 1
から1
までの値を出力– ReLU
関数(rectified linear unit
関数)•
ディープラーニングで用いられる18
( ) ( ) ( ) ( )
( ) ( )
exp exp tanh exp exp
u u
f u u
u u
− −
= =
+ −
微分はf u ′ ( ) = − 1 f u ( )
( ) max , 0 ( )
f u = u
微分はu > 0
のときf u ′ ( ) = 1
, それ以外は0 ( )
f u
0 u
ReLU
関数のグラフニューラルネットワーク
•
尤度関数–
多層パーセプトロンの出力は,尤度関数から 求められる–
恒等関数•
回帰問題で用いられる•
重み付き結合u
k の値をそのまま出力–
ソフトマックス関数•
多クラスの分類問題で用いられる出力層の各ユニットは
0
から1
の値を取る( ) ( )
( )
1
exp exp
k q k
k k
p y u
u
=
= ∑
ニューラルネットワーク
•
重み更新処理の方法–
バッチ処理•
すべての学習サンプルを用いて更新量を求める–
オンライン学習•
学習サンプルひとつずつから更新量を求める–
ミニバッチ処理•
学習サンプルを何個かのグループに分けて,グループごとに更新量を求める
( )1 1
,
tN t
t t t
n t
n
E E
+α E
=
= = − ∂
∑ w w ∂ w E
nt:
更新処理るサンプルt
回目におけn
の誤差t t
n G n
E E
∈
= ∑ G :
グループ集合畳み込みニューラルネットワーク
•
畳み込みニューラルネットワーク(
Convolutional Neural Network
;CNN
)–
人間の視覚野にある受容野をモデル化–
入力層,畳み込み層,プーリング層,全結合層,出力層から構成
入力層 畳み込み層 特徴マップ
プーリング層
畳み込み層
プーリング層
全結合層
全結合層
出力層
複数回繰り返して
畳み込みニューラルネットワーク
•
畳み込み層–
入力と重みフィルタとの内積を計算(畳み込み処理)–
入力層の画像の局所的な特徴を抽出(特徴マップ)–
層が深くなるにつれて大域的な特徴が捉えられる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
畳み込みニューラルネットワーク
•
プーリング層–
特徴マップ上の着目領域を設定し,その領域の値から 新たな特徴マップを得る(サイズが縮小される)–
特徴の幾何学的変化(位置ずれなど)を吸収する働き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次元に展開,それらを ユニットとして,多層パーセプトロンを形成プーリング層 畳み込み層
全結合層
畳み込みニューラルネットワーク
•
出力層–
分類問題の場合,尤度関数を用いて各クラス(出力層ユニットの値
y i
)の尤度p(y i )
を求める全結合層
出力層
human cat dog car other CNNに
入力0
1 0 0 0
5
クラスの分類このような出力結果に なるように
CNN
を学習させる( )
1p y
( )
2p y
( )
3p y
( )
4p y
( )
5p y
=