Python ではじめる機械学習 5. 識別 ー生成モデルと識別モデルー

>100 Views

November 22, 25

スライド概要

profile-image

機械学習・音声認識・プログラミングに関する書籍を執筆しています。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

5. 識別 ー生成モデルと識別モデルー 5.1 数値特徴に対する「教師あり・識別」問題の定義 5.2 生成モデル 荒木雅弘 : 『Pythonではじめる機械学 5.3 識別モデル スライドとコード 5.4 多クラスの識別 習』 (森北出版,2025年)

2.

5. 識別 ー生成モデルと識別モデルー 問題設定 教師あり学習 数値入力 → カテゴリ出力 機械学習 数値特徴 教師あり学習 識別 回帰 中間的学習 教師なし学習 気温 20 湿度 60 降⽔確率 0 play yes クラス

3.

5.1 数値特徴に対する「教師あり・識別」問題の定義 (1/3) 識別問題のデータ 特徴ベクトル x と正解情報 y のペア {(xi , yi )} (i = 1, … , N ) ​ ​ x は要素が数値である d 次元の固定長ベクトル, y はカテゴリ xi = (xi1 , … , xid )T ​ ​ ​ y ∈ {ω1 , … , ωc } ​ x は d 次元空間(特徴空間)上の点と見なせる ​

4.

5.1 数値特徴に対する「教師あり・識別」問題の定義 (2/3) 数値特徴に対する識別問題 = 識別面の設定 各クラスの確率分布を求めた結果として識別面(等確率点の集合)が定まる場合も含む

5.

5.1 数値特徴に対する「教師あり・識別」問題の定義 (3/3) 識別手法の選択基準 クラスが比較的きれいに分離している 少数のパラメータで識別面を表現可能 ⇒ 統計的手法(第5章) クラス境界が複雑 高次元へマッピング ⇒ SVM(第7章) 非線形識別 ⇒ ニューラルネット(第8章)

6.

5.2 生成モデル 数値特徴に対するナイーブベイズ識別 (1/3) 各次元独立に確率密度関数 p(x ∣ ωi ) を推定する ​ 以後、 関数はクラス毎に求めるので ωi は省略 ​ 関数形は正規分布を仮定し,データの対数尤度を最大とする平均 μ と分散 σ 2 を求める p(x) = (x − μ)2 exp (− ) 2σ 2 2πσ 2 1 ​ ​ ​ 68% 95% 99.7%

7.

数値特徴に対するナイーブベイズ識別 (2/3) データの対数尤度(最大化の対象) N L(D) = log p(D ∣ μ, σ 2 ) = ∑ log p(xi ∣ μ, σ 2 ) ​ ​ i=1 p(x) に正規分布の式を当てはめる N N 1 2 L(D) = − log(2πσ ) − 2 ∑(xi − μ)2 2 2σ i=1 ​ ​ ​ ​

8.

数値特徴に対するナイーブベイズ識別 (3/3) L(D) を μ で偏微分して0とおき,μ について解く N N 1 1 (x − ∑ μ) = 0 ⇒ μ = ∑ xi i 2 σ i=1 N i=1 ​ ​ ​ ​ ​ ​ L(D) を σ 2 で偏微分して0とおき,σ 2 について解く N N N 1 1 1 2 2 2 (x − (x − − + ∑ μ) = 0 ⇒ σ = ∑ μ) i i 2 σ2 2(σ 2 )2 i=1 N i=1 ​ ​ ​ ​ ​ 求める分布の平均はデータの平均,分散はデータの分散 ​ ​ ​

9.

生成モデルの考え方 データが生成される様子をモデル化しているとみなせる 事前確率に基づいてクラスを選ぶ そのクラスの尤度関数を用いて特徴ベクトルを出力する 事後確率を求めるより難しい問題を解いているのではないか?

10.

生成モデルと識別モデルの比較 クラス のデータ クラス のデータ クラス のデータ クラス ⽝らしさ のデータ 猫らしさ 特徴抽出 個々のクラスのデータ から適切な分布を推定 (a) ⽣成モデル 誤りができるだけ少なくなる ように識別⾯の位置を調整 (b) 識別モデル

11.

5.3 識別モデル 識別関数法 確率の枠組みにはとらわれず, gi (x) > gj (x), ​ i=  j ならば x をクラス ωi と判定 ​ ​ する関数を推定する 2クラス問題なら g(x) = gpositive (x) − gnegative (x) の正負で判定する ​ g(x) = 0 が識別面 ​

12.

誤り訂正学習 (1/3) 単層パーセプトロンの定義 識別関数として1次式(=直線・平面)を仮定 wT x = 0 という特徴空間上の超平面を表現 以後 w は w0 を含み,x は x0 ≡ 1 と定義した d + 1 次元ベクトルとする ​ ​ 閾値関数

13.

誤り訂正学習 (2/3) パーセプトロンの学習規則 入力: 学習データ {(xi , yi )} ​ ​ (i = 1, … , N yi ∈ {0, 1}) ​ 出力: 識別関数の重み w 1. 重み w の初期値を適当に決める 2. 学習データから一つ xj を選び,g(xj ) を計算する ​ ​ 3. 誤識別(yj =  g(xj ) )のときのみ w を修正する(η : 学習率) if positive のデータを negative と誤ったとき (yj = 1, g(xj ) = 0) ​ ​ ​ ​ w′ = w + η x if negative のデータを positive と誤ったとき (yj = 0, ​ w′ = w − η x 4. repeat 2,3 をすべての学習データについて繰り返す 5. すべて正しく識別できたら終了.そうでなければ2へ戻る g(xj ) = 1) ​

14.

誤り訂正学習 (3/3) パーセプトロンの学習規則の適用範囲 データが線形分離可能な場合は重みの学習が可能 線形分離不可能な場合は学習が終了しない

15.

ロジスティック回帰 (1/4) ロジスティック回帰の考え方 h(x) = wT x の値を,シグモイド関数σ で大小関係を変えずに(0, 1)の値に変換 出力を正例の確率とみなす g(x) = σ(h(x)) = 1 1 + exp(−h(x)) ​

16.

ロジスティック回帰 (2/4) ロジスティク回帰の計算ユニット シグモイド関数

17.

ロジスティック回帰 (3/4) ロジスティク回帰の学習 最適化対象:負の対数尤度(クロスエントロピー)を損失とみなして最小化する N N yi (1−yi ) E(w) = − log P (D∣w) = − log ∏ oi (1 − oi ) = − ∑{yi log oi + (1 − yi ) log(1 − oi )} i=1 i=1 ​ ​ ​ ​ ​ oi = g(xi ) = ​ ​ ​ ​ 1 1 + exp(−wT xi ) ​ yi ∈ {0, 1} ​ ​ ​ ​ ​

18.

ロジスティック回帰 (4/4) E(w) を勾配降下法で最小化 適当な初期値 w から始め,E(w) の勾配の逆方向に少しずつ修正 wj ← wj − η ​ ​ ∂E(w) ∂wj ​ ​ 重みの更新量の計算 ∂E(w) ∂E(w) ∂oi yi 1 − yi )oi (1 − oi )xij = ∑ (oi − yi )xij = ∑( − = ∑ ⋅ ∂wj ∂o ∂w o 1 − o i j i i x ∈D x ∈D x ∈D ​ ​ ​ ​ ​ ​ ​ ​ i ​ ​ ​ ​ ​ i ​ ​ ​ ​ i ​ 重みの更新式 wj ← wj − η ∑ (oi − yi )xij ​ ​ ​ ​ ​ x i ∈D ​ ​ ​ ​ ​ ​ ​ ​

19.

勾配降下法 勾配降下法のイメージ

20.

確率的勾配降下法 勾配降下法の問題点 全データに対して損失を計算するので,データが多いと重み更新に時間がかかる 確率的勾配降下法 ランダムに一つのデータを選択し,その損失に基づき重みを更新する 更新方向が安定しないが,十分な回数繰り返せば最適解に至る データが来る毎に学習するオンライン学習として適用可能 ミニバッチ法 数十~数百程度のデータで損失を計算し,修正方向を決める 更新方向が比較的安定し,最適解への収束も早い GPUを用いて高速な学習が可能 学習のシミュレーションサイト https://playground.tensorflow.org/

21.

5.4 多クラスの識別 (1/2) 2クラス分類器を用いた多クラス分類 一対他法 各クラスについて,そのクラスに属するかどうかを識別する識別器を作る 2つ以上のクラスに属すると判定された場合は識別面からの距離が大きいものに分類する ペアワイズ法 クラス対ごとに識別器を作り,判定は多数決を取る クラスAと,ほかの クラスを識別する クラスA クラスA 識別器 識別器 クラスB クラスB クラスC (a) ⼀対他法 クラスC クラスAとクラスB を識別する (b) ペアワイズ法

22.

5.4 多クラスの識別 (2/2) ロジスティク回帰の活性化関数を softmax とする方法 exp(wTj x) gj (x) = c ∑k=1 exp(wTk x) ​ ​ ​ ​ ​ 最適化対象 N c E(w) = − log P (D∣w) = − ∑ ∑[yi == j] log gj (xi ) ​ ​ ​ i=1 j=1 [ ] (Iverson bracket) : 内部の命題が真ならば 1,偽ならば 0 を返す ​ ​

23.

まとめ 数値特徴の「教師あり・識別」問題へのアプローチ 生成モデル 学習データを各クラスに分割 それぞれのクラスの尤度関数を最尤推定 別途,事前確率が得られているような場合に有効 識別モデル 損失関数を定義し,勾配降下法でパラメータを学習 クラス分割に寄与する特徴を見つけていると解釈できる 一般的に生成モデルよりも性能が高い