---
title: フリーソフトでつくる音声認識システム(第2版) 第4章
tags:  #パターン認識 #パーセプトロンの学習規則 #k-nn法  
author: [荒木 雅弘](https://www.docswell.com/user/MasahiroAraki)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/2JVL2GQN7Q.jpg?width=480
description: フリーソフトでつくる音声認識システム(第2版) 第4章 by 荒木 雅弘
published: August 08, 23
canonical: https://www.docswell.com/s/MasahiroAraki/Z24QVR-2023-08-08-094453
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/2JVL2GQN7Q.jpg)

4. パターンを識別しよう
特徴ベクトル
前処理部
特徴抽出部
識別結果
識別部
学習
あ
識別辞書
4.1 NN 法の定式化と問題設定
4.2 パーセプトロンの学習規則
4.3 区分的線形識別関数とk-NN法
荒木雅弘: 『フリーソフトでつくる
音声認識システム（第2版）』（森北
出版，2017年）
スライドとJupyter notebook
サポートページ


# Page. 2

![Page Image](https://bcdn.docswell.com/page/5EGXR8W5JL.jpg)

4.1 NN 法の定式化と問題設定
4.1.1 「もっとも近い」の定義 (1/2)
識別対象のクラス：
ω1 , … , ωc
​
​
プロトタイプ
各クラスの代表となる点
pi = (pi1 , … , pid )T (i = 1, … , c)
​
​
​
識別したい入力データ
x = (x1 , … , xd )T
​
​


# Page. 3

![Page Image](https://bcdn.docswell.com/page/4JQ8V93L7P.jpg)

4.1.1 「もっとも近い」の定義 (2/2)
入力ベクトルとプロトタイプとの距離
(x1 − pi1 )2 + ⋯ + (xd − pid )2
D(x, pi ) =
​
​
​
​
​
NN法の判定式
argmin D(x, pi ) = k ⇒ x ∈ ωk
​
i
​
​
​


# Page. 4

![Page Image](https://bcdn.docswell.com/page/K742MX15J1.jpg)

4.1.2 プロトタイプと識別面の関係 (1/2)
特徴空間の分割
2次元特徴の2クラス問題（d
= 2, c = 2）を考える
クラスを分離する境界 = プロトタイプから等距離にある領域
決定境界あるいは識別面とよぶ
2次元のNN法では2つのプロトタイプの垂直２等分線（多次元では超平面）
識別⾯


# Page. 5

![Page Image](https://bcdn.docswell.com/page/LJ1M8NG2EG.jpg)

4.1.2 プロトタイプと識別面の関係 (2/2)
線形分離可能性
直線（超平面）で2つのクラスが誤りなく分割できる場合を線形分離可能とよぶ
線形分離可能なデータ
線形分離不可能なデータ


# Page. 6

![Page Image](https://bcdn.docswell.com/page/GJW3Z4K2J2.jpg)

4.1.3 プロトタイプの位置の決め方
クラスを代表するプロトタイプの設定法
例：プロトタイプをクラスの重心にしたとき
重⼼ではうまくゆかないことがある


# Page. 7

![Page Image](https://bcdn.docswell.com/page/4EZV12Z4J3.jpg)

4.2 パーセプトロンの学習規則 (1/2)
識別面の学習
線形分離可能なデータに対して、識別誤りが生じない位置にプロトタイプを設定する


# Page. 8

![Page Image](https://bcdn.docswell.com/page/Y765LVZGEV.jpg)

4.2 パーセプトロンの学習規則 (2/2)
NN法における学習とは
プロトタイプの正しい位置を自動的に求めること
学習パターン
識別部設計（特徴空間の分割）用に収集されたパターン
学習の目標
学習パターンをすべて正しく識別できるような識別面を見つけること


# Page. 9

![Page Image](https://bcdn.docswell.com/page/G75Y1DWX74.jpg)

4.2.1 識別関数の設定 (1/2)
1クラス1プロトタイプのNN法の定式化
ω1 , … , ωc
プロトタイプ： P 1 , … , P c
入力パターン： x（特徴ベクトル）
NN法： D(x, P i ) = ∥x − P i ∥ を最小にする i を探す
クラス：
​
​
​
​
​
​
∥x − P i ∥2 = ∥x∥2 − 2P Ti x + ∥P i ∥2
1
= ∥x∥2 − 2(P Ti x − ∥P i ∥2 )
2
​
​
​
​
​
​
​
→ 識別関数 gi (x) = P Ti x − 12 ∥P i ∥2 を最大にする i を探す
​
​
​
​
​


# Page. 10

![Page Image](https://bcdn.docswell.com/page/9J2G18QQJR.jpg)

4.2.1 識別関数の設定 (2/2)
NN法による識別部の実現
特徴ベクトル
最⼤値
となる
クラス
を選択
クラス


# Page. 11

![Page Image](https://bcdn.docswell.com/page/DEYVZ6WYEM.jpg)

4.2.2 識別関数とパーセプトロン (1/2)
線形識別関数
識別関数の係数を pij
​
= wij (j = 1, … , d), − 12 ∥pi ∥2 = wi0 と置き換える
​
​
​
​
d
gi (x) = ∑ wij xj + wi0
​
​
​
​
​
j=1
d
​
= ∑ wij xj (x0 ≡ 1)
​
=
wi , x は d + 1 次元
​
j=0
wTi x
​
​
​
​
​


# Page. 12

![Page Image](https://bcdn.docswell.com/page/VJNM3Z9R78.jpg)

4.2.2 識別関数とパーセプトロン (2/2)
線形識別関数の計算法
この計算機構は神経細胞の振舞いを単純化したモデルであり、パーセプトロンとよばれる
特徴ベクトル


# Page. 13

![Page Image](https://bcdn.docswell.com/page/YE9N9Z2ZE3.jpg)

4.2.3 2クラスの識別関数の学習 (1/5)
多クラスの線形識別関数の学習
学習パターン全体：
クラス
χ
ωi に属する学習パターンの集合 χi の全ての要素 x に対して、以下の条件が成り
立つように重み wi を決定する
​
​
​
gi (x) &gt; gj (x) (j = 1, … , c, j =
 i)
​
​


# Page. 14

![Page Image](https://bcdn.docswell.com/page/GE8K91MY7D.jpg)

4.2.3 2クラスの識別関数の学習 (2/5)
2クラスの場合
識別関数を
g(x) = g1 (x) − g2 (x) = wT x とし、出力の正負がクラスを表すような w
​
​
を求める
&gt; 0 (x ∈ χ1 )
g(x) = w x {
&lt; 0 (x ∈ χ2 )
T
​
​
​
クラス1を正例、クラス2を負例とよぶ
​
​


# Page. 15

![Page Image](https://bcdn.docswell.com/page/LELZWQ39JR.jpg)

4.2.3 2クラスの識別関数の学習 (3/5)
重み空間での重みの修正
修正する⽅向
現在の
では
となり、クラス1の
誤識別する
を
こちら側の領域なら
となり、
正しく識別される


# Page. 16

![Page Image](https://bcdn.docswell.com/page/4JMV91DVJW.jpg)

4.2.3 2クラスの識別関数の学習 (4/5)
別の学習データに対する重みの修正


# Page. 17

![Page Image](https://bcdn.docswell.com/page/PJR2GL4WE9.jpg)

4.2.3 2クラスの識別関数の学習 (5/5)
解領域への重みの修正プロセス
解領域
＝全データを正しく識別
できる重みの領域
修正幅が⼩さい場合
修正幅が⼤きい場合
重みの初期値が異なる場合


# Page. 18

![Page Image](https://bcdn.docswell.com/page/PEXDXW2V7X.jpg)

4.2.4 パーセプトロンの学習アルゴリズム (1/2)
パーセプトロンの学習規則
1.
w の初期値を適当に決める
2. 学習データからひとつ
x を選び、g(x) を計算
3. 誤識別が起きたときのみ、 以下の式を用いて
w′ = w + ρx (正例を負例と誤ったとき)
w′ = w − ρx (負例を正例と誤ったとき)
4. 2,3を全ての学習データについて繰り返す
5. すべて識別できたら終了。そうでなければ2へ
w を修正する。ρ は学習係数


# Page. 19

![Page Image](https://bcdn.docswell.com/page/3EKXWVM57D.jpg)

4.2.4 パーセプトロンの学習アルゴリズム (2/2)
パーセプトロンの収束定理
学習データが線形分離可能であれば、パーセプトロンの学習規則は有限回の繰り返しで線
形識別面を得ることができる
学習係数
ρ の設定
大きすぎると重みの値が振動する
小さすぎると収束に時間がかかる


# Page. 20

![Page Image](https://bcdn.docswell.com/page/L7351MY1E5.jpg)

4.3 区分的線形識別関数とk-NN法
4.3.1 平面で区切れない場合
区分的線形識別関数を用いる
線形分離不可能なデータ
区分的線形識別関数を⽤いた場合


# Page. 21

![Page Image](https://bcdn.docswell.com/page/87DDX65K7G.jpg)

4.3.2 区分的線形識別関数の実現 (1/2)
区分的線形識別関数の決め方
各クラス複数のプロトタイプを設定


# Page. 22

![Page Image](https://bcdn.docswell.com/page/VJPXPYG378.jpg)

4.3.2 区分的線形識別関数の実現 (2/2)
区分的線形識別関数の定義
クラス
(l)
ωi の識別関数 gi (x) を Li 個の副次(線形)識別関数 gi (x) (l = 1, … , Li )
​
​
​
​
の最大値としてあらわす
特徴ベクトル
最
⼤
値
選
択
器
最⼤値
となる
クラス
を選択
クラス
​


# Page. 23

![Page Image](https://bcdn.docswell.com/page/2EVL2G6NJQ.jpg)

4.3.3 区分的線形識別関数の識別能力と学習
能力
複雑な非線形決定境界でも、任意の精度で近似可能
学習
副次識別関数の個数と、各関数の重みの両方を学習しなければならない
パーセプトロンの学習規則が適用できず、一般に学習は難しい


# Page. 24

![Page Image](https://bcdn.docswell.com/page/57GXR8N5EL.jpg)

4.3.4 学習をあきらめるのも一手 k-NN法 (1/2)
k-ＮＮ法とは
全ての学習データをプロトタイプとする
入力に近い順から
k 個のプロトタイプのクラスを調べ、多数決を取る
k が大きいと識別面がなめらかになる
実験の際のベースラインとして用いられる
k=1
k=3


# Page. 25

![Page Image](https://bcdn.docswell.com/page/4EQ8V9QLJP.jpg)

4.3.4 学習をあきらめるのも一手 k-NN法 (2/2)
k-NN法の特徴
非線形性を示すデータにも対処できる可能性がある
k を大きくすると識別境界が滑らかになる
k-NN法の（かつての）問題点
記憶容量
計算時間
→ 現在ではあまり問題にならない


# Page. 26

![Page Image](https://bcdn.docswell.com/page/KJ42MXN5E1.jpg)

まとめ
NN 法の定式化と問題設定
NN法は各クラスに1つプロトタイプを設定し、入力との距離が最小となるクラスに識別する
プロトタイプの位置を決めることは線形識別面を決めることと同じ
パーセプトロンの学習規則
線形識別面を決めることは、線形識別関数の重みを調整することと同じ
パーセプトロンの学習規則は線形分離可能なデータに対して、有限時間で正しい重みを求
めることができる
区分的線形識別関数とk-NN法
線形識別不可能な学習データに対して、区分的線形識別関数が適用可能だが学習が難しい
学習を行わずに全学習データをプロトタイプとするk-NN法がある
Jupyter notebook


