第4回

知能情報工学
第4回
パーセプトロン
2016年5月10日
吉川雅博
1
NN法の整理
各クラスのプロトタイプ
プロトタイプによるNN法
・プロトタイプとの距離を計算
・プロトタイプを決めるための学習が必要
・識別にかかる計算量が少ない
k-NN法
・全学習データとの距離を計算
・学習は行わない
・識別にかかる計算量が多い
プロトタイプによるNN法でどのようにプロトタイプを決めるか?
2
プロトタイプの決定方法
𝜔1
𝜔1
𝜔2
𝜔2
𝜔3
𝜔3
プロトタイプを重心とする場合
→全学習データを識別できない
プロトタイプを重心からずらす
→全学習データを識別できる
プロトタイプの位置をうまく決めたい
→ パーセプトロンによる学習規則
3
NN法の識別関数(1)
はじめに識別境界を数式で表す
未知データとプロトタイプの距離を以下で定義
𝐷 𝒙, 𝒑𝑖 = 𝒙 − 𝒑𝑖
(𝑖 = 1, 2, … , 𝑐)
右辺を2乗して展開(2乗するのは利便性のため)
𝒙 − 𝒑𝑖
2
= 𝒙
プロトタイプとは無関係 = 𝒙
なので無視! →
2
− 2𝒑𝑡𝑖 𝒙 + 𝒑𝑖
2
2(𝒑𝑡𝑖 𝒙 −
−
2
1
𝒑𝑖
2
2)
1
𝑔𝑖 (𝒙) =
𝒑𝑖 2
2
𝒙 − 𝒑𝑖 2を最小にするプロトタイプを求める問題は,
𝑔𝑖 (𝒙)を最大にするクラスを選択する問題となる
𝑔𝑖 (𝒙)を識別関数と呼ぶ
𝒑𝑡𝑖 𝒙 −
4
NN法の識別関数(2)
クラス数だけ用意した識別関数
1
𝑡
𝑔𝑖 𝒙 = 𝒑𝑖 𝒙 − 𝒑𝑖 2 (𝑖 = 1, 2, … , 𝑐)
2
𝑔1
𝑔1 (𝒙)
⋮
未知データ
𝒙
𝑔𝑖
𝑔𝑖 (𝒙)
⋮
𝑔𝑐
𝑔𝑐 (𝒙)
最
大
値
と
な
る
ク
ラ
ス
を
選
択
クラス
𝜔𝑘
5
パーセプトロン(1)
𝑔𝑖 𝒙 =
𝒑𝑡𝑖 𝒙 −
1
𝒑𝑖
2
2
(𝑖 = 1, 2, … , 𝑐)
𝒑𝑖 をどのように求めるか?(𝒑𝑖 を直接求めることはしない)
𝑔𝑖 𝒙 の各要素を以下で置き換えると,
𝑝𝑖𝑗 = 𝑤𝑖𝑗
(𝑗 = 1, … , 𝑑)
1
− 𝒑𝑖
2
2
= 𝑤𝑖0
識別関数は以下のように表現できる
𝑑
𝑔𝑖 𝒙 = 𝑤𝑖0 +
𝑤𝑖𝑗 𝑥𝑗
𝑗=1
𝑑
=
𝑤𝑖𝑗 𝑥𝑗
𝑗=0
(ただし,𝑥0 = 1)
6
パーセプトロン(2)
𝑑
𝑔𝑖 𝒙 =
𝑤𝑖𝑗 𝑥𝑗 = 𝑤𝑖0 , 𝑤𝑖1 … , 𝑤𝑖𝑑 𝑥0 , 𝑥1 , … , 𝑥𝑑
𝑡
𝑗=0
= 𝒘𝑡𝑖 𝒙
ただし,𝒘𝑖 = 𝑤𝑖0 , 𝑤𝑖1 , … , 𝑤𝑖𝑑
𝑡
𝒘𝑖 を重みベクトルと呼ぶ
学習データに対して重みベクトルをうまく調整できれば,
NN法で誤りなく識別できる
(ただし線形分離可能な場合)
7
パーセプトロン(3)
𝑔𝑖 𝑥 = 𝒘𝑡𝑖 𝒙 (𝑖 = 1, 2, … , 𝑐)
𝑥0
未知データ
𝒙
𝑤𝑖0
𝑥0 𝑤𝑖0
⋮
𝑥𝑗
𝑥𝑑
𝑤𝑖𝑗
⋮
𝑥𝑗 𝑤𝑖𝑗
∑
𝑔𝑖 (𝒙)
𝑥𝑑 𝑤𝑖𝑑
𝑤𝑖𝑑
生物の神経細胞の情報処理メカニズムを模している
この計算の仕組みをパーセプトロンと呼ぶ
8
パーセプトロンにおける重みベクトルの調整
重みベクトル𝒘𝑖 をどのように調整するか?
学習データの全集合を𝜒とし,
クラス𝜔𝑖 に属するものの集合を𝜒𝑖 (𝑖 = 1, … , 𝑐)とすると,
𝜒𝑖 に属するすべての𝒙に対して以下の式が成り立つように重みを調整
𝑔𝑖 𝒙 > 𝑔𝑗 𝒙
(𝑗 = 1, … , 𝑐, 𝑗 ≠ 𝑖)
9
パーセプトロンの学習規則(2クラス)
①重みの初期値𝒘(0) を適当に決める
②学習データから一つ𝒙を選び,識別関数の値𝑔 𝒙 = 𝒘𝑡 𝒙を計算する
𝑔 𝒙 = 𝒘𝑡 𝒙 > 0 (𝒙がクラス𝜔1 の場合)
𝑔 𝒙 = 𝒘𝑡 𝒙 < 0 (𝒙がクラス𝜔2 の場合)
上式を満たさない場合は誤識別
③誤識別が起きた時,以下の式にしたがって𝒘を修正する
𝒘′ = 𝒘 + 𝜌𝒙 (𝜔1 のパターンを𝜔2 と誤った時)
𝒘′ = 𝒘 − 𝜌𝒙 (𝜔2 のパターンを𝜔1 と誤った時)
𝜌を重みの修正量を規定する学習係数と呼ぶ
④②と③をすべての学習データについて繰り返す
⑤すべてを学習できたら終了.誤識別がある場合は②へ
10
演習6
パーセプトロンの学習規則を用いて,以下の学習データから
識別関数を求めよ.
重みの初期値は𝑤0 = 0.2, 𝑤1 = 0.3,学習係数は𝜌 = 0.5とする
𝑥1
(1.0, 1.0)
𝜔1
(1.0, 0.5)
(1.0, -0.2)
𝑥0
𝜔2
(1.0, -1.3)
※荒木雅弘「フリーソフトでつくる音声認識システム」より
11
演習6-解答
2クラスなので識別関数は1つとなる
重みベクトルの初期値に対応する識別関数は
𝑡
𝑔 𝒙 = 𝑤(0)
𝒙 = 𝑤0 , 𝑤1 𝑥0 , 𝑥1
𝑡
= 0.2𝑥0 + 0.3𝑥1
1回目の繰り返し
𝜔1 に属する(1.0, 1.0)を𝑔(𝒙)に代入すると,
𝑔 𝒙 = 0.2 × 1.0 + 0.3 × 1.0 = 0.5
𝑔 𝒙 > 0となるので正しく識別→重みの更新なし
12
演習6-解答
𝜔1 に属する(1.0, 0.5)を𝑔(𝒙)に代入すると,
𝑔 𝒙 = 0.2 × 1.0 + 0.3 × 0.5 = 0.35
𝑔 𝒙 > 0となるので正しく識別→重みの更新なし
𝜔2 に属する(1.0, -0.2)を𝑔(𝒙)に代入すると,
𝑔 𝒙 = 0.2 × 1.0 + 0.3 × −0.2 = 0.14
𝑔 𝒙 > 0となり,𝜔1 と識別される.
実際のクラスは 𝜔2 なので,重みの更新が必要.
新しい重みは更新式𝒘′ = 𝒘 − 𝜌𝒙を用いて
𝑤0
0.2
1.0
−0.3
=
−
0.5
=
𝑤1
0.3
−0.2
0.4
13
演習6-解答
𝜔2 に属する(1.0, -1.3)を𝑔(𝒙)に代入すると,
𝑔 𝒙 = −0.3 × 1.0 + 0.4 × −1.3 = −0.82
𝑔 𝒙 < 0となるので正しく識別→重みの更新なし
ここまでをまとめると
クラス
𝑥0
𝑥1
𝑤0
𝑤1
𝑔(𝒙)
識別
𝜔1
1.0
1.0
0.2
0.3
0.5
○
𝜔1
1.0
0.5
0.2
0.3
0.35
○
𝜔2
1.0
-0.2
0.2
0.3
0.14
𝜔2 → 𝜔1
𝜔2
1.0
-1.3
-0.3
0.4
-0.82
○
14
演習6-解答
2回目の繰り返し
クラス
𝑥0
𝑥1
𝑤0
𝑤1
𝑔(𝒙)
識別
𝜔1
1.0
1.0
-0.3
0.4
0.1
○
𝜔1
1.0
0.5
-0.3
0.4
-0.1
𝜔1 → 𝜔2
𝜔2
1.0
-0.2
0.2
0.65
0.07
𝜔2 → 𝜔1
𝜔2
1.0
-1.3
-0.3
0.75
-1.275
○
3回目の繰り返し
クラス
𝑥0
𝑥1
𝑤0
𝑤1
𝑔(𝒙)
識別
𝜔1
1.0
1.0
-0.3
0.75
0.45
○
𝜔1
1.0
0.5
-0.3
0.75
0.075
○
𝜔2
1.0
-0.2
-0.3
0.75
-0.45
○
𝜔2
1.0
-1.3
-0.3
0.75
-1.275
○
すべて正しく識別されたので,識別関数𝑔 𝒙 = −0.3𝑥0 + 0.75𝑥1
15
パーセプトロンの学習規則の限界
線形分離可能な学習データのみ識別境界を求められる
線形分離不可能な学習データでは学習が収束しない
ニューラルネット,サポートベクトルマシンへ!
16
機械学習の評価(1)
作った機械学習手法をどのように評価するか?
分割学習法
①全学習データを2分割する
②一つを学習データとして学習,もう一方でテスト
③学習データとテストデータを入れ替えてテスト
④それぞれの識別精度を平均
全学習データ(与えられたデータ)
平均精度
学習データ
テストデータ
認識精度1
テストデータ
学習データ
認識精度2
17
機械学習の評価(2)
m重交差確認法(交差検定)
学習データをm分割して,m-1個で学習を行い残りでテスト
m回行った認識精度の平均値を計算して評価
全学習データ(m分割)
学習データ
平均精度
認識精度1
テストデータ
認識精度2
認識精度m
18