---
title: フリーソフトでつくる音声認識システム(第2版) 第6章
tags:  #パターン認識 #svm  
author: [荒木 雅弘](https://convert.docswell.com/user/MasahiroAraki)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/VENMYG38J8.jpg?width=480
description: フリーソフトでつくる音声認識システム(第2版) 第6章 by 荒木 雅弘
published: August 10, 23
canonical: https://convert.docswell.com/s/MasahiroAraki/598M47-2023-08-10-114938
---
# Page. 1

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

6. 限界は破れるか（１） － サポートベクトルマシン －
𝛟
もとの次元で線形分離不可能なデータ
線形分離可能性の⾼い⾼次元へ
6.1 識別面は見つかったけれど
6.2 サポートベクトルマシンの学習アルゴリズム
6.3 線形分離可能にしてしまう
荒木雅弘: 『フリーソフトでつくる
音声認識システム（第2版）』（森北
出版，2017年）
スライドとJupyter notebook
サポートページ


# Page. 2

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

6.1 識別面は見つかったけれど
パーセプトロンの学習規則の2つの限界
1. 学習データが線形分離可能ならば識別面が見つかるが、信頼できる識別面とは限らない
2. 学習データが線形分離不可能である場合は、学習が停止しない
限界1について（学習データは線形分離可能と仮定）
パーセプトロンの学習規則は全学習データが識別可能となった段階で停止するので、どの
識別面が見つかるかわからない
未知データに
強そう
未知データに
弱そう


# Page. 3

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

6.2 サポートベクトルマシンの学習アルゴリズム
6.2.1 サポートベクトル
線形サポートベクトルマシン(SVM) : マージン最大となる線形識別面を求める
マージン : 識別面と最も近いデータ（サポートベクトル）との距離
マージン
サポート
ベクトル
(a) マージンの⼩さい識別⾯
(b) マージンの⼤きい識別⾯


# Page. 4

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

6.2.2 マージンを最大にする (1/4)
マージン最大化問題の定式化
{(xi , yi )} i = 1, … , N
線形識別面の式 : w T x + w0 = 0
学習データ :
​
yi = 1 or − 1
​
​
​
係数に関する制約の導入（係数を定数倍しても平面は不変） :
mini ∣wT xi + w0 ∣ = 1
​
​
​
最大化の対象 : データと識別面との距離 (Dist) の最小値（＝マージン）
∣wT xi + w0 ∣
1
=
min Dist(xi ) = min
i
i
∥w∥
∥w∥
​
​
​
​
​
​
参考）2次元平面での点と直線の距離の公式
r=
∣ax + by + c∣
a 2 + b2
​
​
​


# Page. 5

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

6.2.2 マージンを最大にする (2/4)
目的関数の置き換え :
min 12 ∥w∥2
​
最大化対象の分母の最小化
最小化問題として解きやすいように、2乗しておく
制約条件 : yi (w T xi
​
​
+ w0 ) ≥ 1 i = 1, … , n
​
解法 : ラグランジュの未定乗数法
例題（2変数、等式制約）:
min f (x, y) s.t. g(x, y) = 0
L(x, y, α) = f (x, y) − αg(x, y)
ラグランジュ係数の制約 α ≥ 0
x, y, α で偏微分して0になる値が目的関数の極値
ラグランジュ関数 :
∂L
∂L
∂L
=
=
=0
∂x
∂y
∂α
​
​
​


# Page. 6

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

6.2.2 マージンを最大にする (3/4)
より解きやすい問題への変換
L(α) の最小化は αi ≥ 0 についての2次計画問題なので極値をとる α が容易に求まる
​
n
1
L(w, w0 , α) = ∥w∥2 − ∑ αi (yi (wT xi + w0 ) − 1)
2
i=1
​
∂L
=0
∂w0
​
​
​
∂L
=0
∂w
​
​
​
​
​
​
​
n
⇒ ∑ αi y i = 0
​
​
​
i=1
n
​
⇒ w = ∑ α i y i xi
​
​
​
i=1
n
n
1
→ L(α) = ∑ αi αj yi yj xTi xj − ∑ αi
2 i,j=1
i=1
​
​
​
​
​
​
​
​
​
​


# Page. 7

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

6.2.2 マージンを最大にする (4/4)
定数項
w0 は各クラスのサポートベクトルから求める
​
wT x+ + w0 = 1, wT x− + w0 = −1
1 T
→ w0 = − (w x+ + wT x− )
2
​
​
​
​
​
​
​
​
​
マージンが最大の識別関数
サポートベクトルに対応する
αi のみが正の値、残りは 0
​
マージン最大の識別面の決定にはサポートベクトルしか関与しない
g(x) = wT x + w0
​
n
​
= ∑ αi yi xTi x + w0
​
i=1
​
​
​
​
​
​


# Page. 8

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

（補足） 演習問題6.1
少数のデータが線形分離可能性を満たさない場合
i 番目のデータが制約を破っている度合いを表す変数 ξi (≥ 0) を導入し，制約式を変更
​
yi (wT xi + w0 ) ≥ 1 − ξi (i = 1, … , n)
​
​
​
目的関数に ξi の総和に重みを表す
​
C を掛けて加える
n
1
min ∥w∥2 + C ∑ ξi
2
​
​
i=1
解には
0 ≤ αi ≤ C という制約が加わるだけ
​
​


# Page. 9

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

6.3 線形分離可能にしてしまう
6.3.1 高次元空間への写像
限界2の問題（線形分離不可能なデータ）への対処
クラスが複雑に入り交じった学習データを、線形分離可能性が高まる高次元空間に写像
ただし、もとの空間でのデータ間の近接関係は保持する
𝛟
もとの次元で線形分離不可能なデータ
線形分離可能性の⾼い⾼次元へ


# Page. 10

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

6.3.2 カーネル法 (1/2)
高次元空間への変換関数：
2つのベクトル
ϕ(x)
x, x′ の近さを表すカーネル関数 K(x, x′ ) を導入
元の空間での近さを変換後の空間の内積に対応させる
K(x, x′ ) = ϕ(x)T ϕ(x′ )
カーネル関数の例
K(x, x′ ) = (xT x′ + r)d
ガウシアンカーネル K(x, x′ ) = exp(−γ∥x − x′ ∥2 )
多項式カーネル
これらのような、正定値性とよばれる性質を満たすカーネルであれば、対応する変換関数が存在す
ることが数学的に保証されている


# Page. 11

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

6.3.2 カーネル法 (2/2)
g(x) = wT ϕ(x) + w0
n
サポートベクトルマシンを適用し、w = ∑i=1 αi yi ϕ(xi ) を代入
高次元空間での識別関数 ：
​
​
​
​
n
g(x) = ∑ αi yi ϕ(xi )T ϕ(x) + w0
​
​
​
​
​
i=1
n
​
​
= ∑ αi y i K ( x i , x ) + w 0
​
​
​
​
​
i=1
変換関数が不要になった（＝カーネルトリック）
変換後の空間での線形識別面は、もとの空間での複雑な非線形識別面に対応


# Page. 12

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

6.3.3 具体的なカーネル関数
d = 2, r = 1）の展開
多項式カーネル（特徴が2次元ベクトルで加算項が1,
K(x, x′ ) = (xT x′ + 1)2
= (x1 x′1 + x2 x′2 + 1)2
​
​
​
​
​
= x21 x′1 2 + x2 2 x′2 2 + 2x1 x2 x′1 x′2 + 2x1 x′1 + 2x2 x′2 + 1
​
​
​
​
​
​
​
​
​
​
​
​
′2
′ ′
′
′
= (x21 , x22 , 2x1 x2 , 2x1 , 2x2 , 1) ⋅ (x′2
1 , x2 , 2x1 x2 , 2x1 , 2x2 , 1)
​
​
​
​
6次元空間に写像されている
​
​
​
​
​
​
​
​
​
​
​
​
​
​


# Page. 13

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

（補足） 演習問題6.2
2クラス分類器を用いた多クラス分類 (1/2)
one-versus-rest法
各クラスについて、そのクラスに属するか、他のクラスかを識別する SVM を作る
2つ以上のクラスに属すると判定された場合は、識別面からの距離が大きいものに分類


# Page. 14

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

2クラス分類器を用いた多クラス分類 (2/2)
ペアワイズ法
クラス対ごとに SVM を作る
判定は多数決を取る


# Page. 15

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

まとめ
サポートベクトルマシンの特徴
学習は2次計画問題なので、必ず最適解が見つかる
求めるパラメータ
αi の大半が 0 となるので，この状況に特化した最適化アルゴリズム（た
​
とえば SMO）で高速化が可能
カーネル関数を用いて、特徴ベクトルを線形分離可能性が高い高次元空間に非線形写像す
ることができる
2つのデータ間にカーネル関数さえ定義できれば，元のデータはグラフや木構造のような特徴ベク
トルの形で表現されていないものでもよい
2クラスの分類器なので、多クラスの分類には工夫が必要
Jupyter notebook


