679 Views
September 29, 23
スライド概要
機械学習や音声認識に関する書籍を執筆しています。
5. 識別 ー生成モデルと識別モデルー 5.1 数値特徴に対する「教師あり・識別」問題の定義 荒木雅弘: 『フリーソフトではじめる機械 5.2 生成モデル 学習入門(第2版)』 (森北出版,2018年) 5.3 識別モデル サポートページ スライドとJupyter notebook
5. 識別 ー生成モデルと識別モデルー 問題設定 教師あり学習 数値入力 → カテゴリ出力 機械学習 教師あり学習 教師なし学習 中間的学習 識別 回帰 ・数値特徴 最低⾎圧 = 72 BMI = 33.6 年齢 = 50 class=positive
5.1 数値特徴に対する「教師あり・識別」問題の定義 (1/5) 識別問題のデータ 特徴ベクトル x と正解情報 y のペア {(xi , yi )}, i = 1, … , N x は要素が数値である d 次元の固定長ベクトル、 y はカテゴリ xi = (xi1 , … , xid )T y ∈ {ω1 , … , ωc } x は d 次元空間(特徴空間)上の点と見なせる 数値特徴に対する識別問題 = 識別面の設定 各クラスの確率分布を求めた結果として識別面(等確率点の集合)が定まる場合も含む
5.1 数値特徴に対する「教師あり・識別」問題の定義 (2/5) irisデータ(4次元をPCAで2次元に削減後)の可視化
5.1 数値特徴に対する「教師あり・識別」問題の定義 (3/5) wineデータ(13次元をPCAで2次元に削減後)の可視化
5.1 数値特徴に対する「教師あり・識別」問題の定義 (4/5) 識別手法の選択基準 クラスが比較的きれいに分離している 少数のパラメータで識別面を表現可能 ⇒ 統計的手法(第5章) クラス境界が複雑 高次元へマッピング ⇒ SVM(第7章) 非線形識別 ⇒ ニューラルネット(第8章)
5.1 数値特徴に対する「教師あり・識別」問題の定義 (5/5) 識別手法の適用例 異なる識別手法で求めた識別面 irisデータに対してナイーブベイズで求めた識別⾯ wineデータに対してSVMで求めた識別⾯
5.2 生成モデル 統計的識別(4章)の復習 最大事後確率則によるカテゴリカルデータの識別 x : 特徴ベクトル 尤度 : クラス 事前確率 play outlook
5.2.1 数値特徴に対するナイーブベイズ識別 (1/3) 各次元独立に確率密度関数 p(x∣ωi ) を推定する 関数はクラス毎に求めるので ωi は省略 関数の形は正規分布を仮定 p(x) = (x − μ)2 exp (− ) 2σ 2 2πσ 2 1 データの対数尤度を最大とする平均 μ と分散 σ 2 を求める
5.2.1 数値特徴に対するナイーブベイズ識別 (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
5.2.1 数値特徴に対するナイーブベイズ識別 (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 求める分布の平均はデータの平均、分散はデータの分散というごく当たり前の結果
5.2.2 生成モデルの考え方 データが生成される様子をモデル化しているとみなせる 事前確率に基づいてクラスを選ぶ そのクラスの尤度関数を用いて特徴ベクトルを出力する 事後確率を求めるより難しい問題を解いているのではないか? これが発⾒できればよいのでは︖ → 識別モデルの考え⽅ ⽣成モデルで やっていること
5.3 識別モデル 識別関数法 確率の枠組みにはとらわれず、 gi (x) > gj (x), i = j ならば x をクラス ωi と判定す る関数を推定する 2クラス問題なら g(x) = gpositive (x) − gnegative (x) の正負で判定する g(x) = 0 が識別面
5.3.1 誤り訂正学習 (1/2) 単層パーセプトロンの定義 識別関数として1次式(=直線・平面)を仮定 wT x = 0 という特徴空間上の超平面を表現 以後 w は w0 を含み、x は x0 ≡ 1 と定義した d + 1 次元ベクトルとする 閾値関数
5.3.1 誤り訂正学習 (2/2) パーセプトロンの学習規則 1. 重み w の初期値を適当に決める 2. 学習データからひとつ x を選び、g(x) を計算 3. 誤識別(y = g(x) )のときのみ w を修正する(ρ: 学習係数) w′ = w + ρx (positive のデータを negative と誤ったとき) w′ = w − ρx (negative のデータを positive と誤ったとき) 4. 2,3 をすべての学習データについて繰り返す 5. すべて正しく識別できたら終了。そうでなければ2へ パーセプトロンの学習規則の適用範囲 データが線形分離可能な場合は重みの学習が可能 線形分離不可能な場合は学習が終了しない
5.3.3 識別モデルの考え方 識別に役に立つ特徴に着目して識別関数の重みを調整 正例に偏って正の値をとる特徴は、正の大きな重み 負例に偏って正の値をとる特徴は、負の大きな重み 特徴の値が逆転するときは重みの値も逆転 識別にあまり関与しない特徴は、0に近い重み 正例で 負例で あまり ⼤きな値 ⼤きな値 関係ない 正の ⼤きな値 負の ⼤きな値 ほぼ0
5.3.4 ロジスティック回帰 (1/4) ロジスティック回帰の考え方 h(x) = wT x の値をシグモイド関数σ で(0, 1)の値に変換 出力を正例の確率とみなす g(x) = σ(h(x)) = 1 1 + exp(−h(x))
5.3.4 ロジスティック回帰 (2/4) ロジスティク回帰の計算ユニット 活性化関数
5.3.4 ロジスティック回帰 (3/4) ロジスティク回帰の学習 最適化対象:負の対数尤度を損失とみなして最小化する N E(w) = − log P (D∣w) = y − log ∏ oi i (1 i=1 N − oi )(1−yi ) = − ∑{yi log oi + (1 − yi ) log(1 − oi )} i=1 oi = g(xi ) = 1 1 + exp(−wT xi ) yi ∈ {0, 1}
5.3.4 ロジスティック回帰 (4/4) E(w) を勾配降下法で最小化 適当な初期値 w から始め、E(w) の勾配の逆方向に少しずつ修正 ∂E(w) ∂wj wj ← wj − η 重みの更新量の計算 N N N ∂E(w) ∂E(w) ∂oi yi 1 − yi = ∑( − =∑ ⋅ )oi (1 − oi )xij = ∑(yi − oi )xij ∂wj ∂o ∂w o 1 − o i j i i i=1 i=1 i=1 重みの更新式 N wj ← wj − η ∑(yi − oi )xij i=1
5.3.5 確率的勾配降下法 勾配降下法の問題点 全データに対して損失を計算するので、データが多いと重み更新に時間がかかる 確率的勾配降下法 ランダムに一つのデータを選択し、その損失に基づき重みを更新する 更新方向が安定しないが、十分な回数繰り返せば最適解に至る データが来る毎に学習するオンライン学習として適用可能 ミニバッチ法 数十~数百程度のデータで損失を計算し、修正方向を決める 更新方向が比較的安定し、最適解への収束も早い GPUを用いて高速な学習が可能 学習のシミュレーションサイト https://playground.tensorflow.org/
多クラスの識別 (1/2) 2クラス分類器を用いた多クラス分類 one-versus-rest法 各クラスについて、そのクラスに属するかどうかを識別する識別器を作る 2つ以上のクラスに属すると判定された場合は識別面からの距離が大きいものに分類する ペアワイズ法 クラス対ごとに識別器を作り、判定は多数決を取る one-versus-rest法 ペアワイズ法
多クラスの識別 (2/2) ロジスティク回帰の活性化関数をsoftmaxとする gj (x) = exp(wTj 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を返す
5.4 まとめ 数値特徴の「教師あり・識別」問題へのアプローチ 生成モデル 学習データを各クラスに分割 それぞれのクラスの尤度関数を最尤推定 別途、事前確率が得られているような場合に有効 識別モデル 損失関数を定義し、勾配降下法でパラメータを学習 クラス分割に寄与する特徴を見つけていると解釈できる 一般的に生成モデルよりも性能が高い