知能情報工学 第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
© Copyright 2025 ExpyDoc