Yuta Hayashibe

多クラスロジスティク回帰

  • ロジスティク回帰を2クラス分類から多クラス分類に拡張したもの
  • 「対数線形モデル」や「最大エントロピー法」とも呼ばれる
  • ソフトマックス関数
    • シグモイド関数の多変量版
    • DD次元ベクトルx{\bold x}を入力とし,DD次元ベクトルy{\bold y}を出力とする関数
      • jj番目の要素はexp(xj)kKexp(xk)\frac{\exp (x_j)}{\sum_k^K \exp(x_k)}
    • 総和は常に1
      • k=1Kyk=1\sum_{k=1}^{K} y_k = 1
    • 値域に制限が無い入力を,確率(っぽいもの)に変換する
    • 最大成分が1でそれ以外が0になるmax関数をsoftにしてる

導出A

  • c(L)c (\in L)はクラスを表し,LLはクラスの集合を表す.cLc \in L
  • wc{\bold w}_cはクラスccに対するパラメータ
    • DD次元
  • P(yx)=exp(wyTx)Z P(y|{\bold x}) = \frac{ \exp \left({\bold w}_y^T \cdot {\bold x} \right) }{Z}
    • 素性値の重み付き和を確率に変換する
    • ZZについて
      • Z=cLexp(wcTx)Z = \sum_c^L \exp \left({\bold w}_c^T \cdot {\bold x} \right)
      • cLP(cx)=1\sum_c^L P(c|{\bold x}) =1を保証する定数(各クラスに対する”値”の総和が1となるようにする)
      • この計算は結構大変
      • 分類時に各クラスに対する「確率」ではなく,各クラスの優劣を決めるだけでよいならば,exp(wcTx)\exp \left( {\bold w}_c^T \cdot {\bold x} \right)の比較をするだけでよいので,この計算はサボれる
  • 最大化すべき目的関数は,この確率を使った対数尤度関数
    • 実用上は,正則化項をつけることがふつう

導出B

  • 導出Aではクラスごとにパラメータを用意しているが,言語処理のための機械学習入門のp.132では異なる方法で計算している.
    • 素性ベクトルの概念を拡張し,「クラスと素性のペア」を素性として考えている
    • 各クラスで共通の素性関数を使う場合であれば本質的には変わらないが,この方が汎用性が高い

候補選択

最大エントロピー法に関する多くの説明では, クラス数KKは固定値として説明される. A, B, Cの3つのクラスがあり(K=3)(K=3), 与えられた事例に対してクラスA, B, Cそれぞれの確率を計算する, といったものである. その場合導出Aの考え方でも問題がない.

だが,事例ごとに選択肢が与えられ, それぞれに対して確率を計算する,といった使い方もできる. (例えば Classiasでは 候補選択タスク と呼んでいる) つまり,ある事例では3つの選択肢があるが, 別の事例では4つの選択肢がある,といったものである.

考え方としては, 「クラスごとのパラメータ」を考えるのではなく, 「事例と選択肢のペア」を考えるようにする. すなわち,導出Bの方式で考える.

  • P(yd)=1Zd,wexp(wTϕ(d,y))P(y|d) = \frac{1}{Z_{d, {\bold w}}} \exp \left( {\bold w}^T {\bold \phi}(d, y) \right)
    • ϕk(d,y)\phi_k (d,y)は,事例ddと選択肢yyを引数にとって素性値を返す関数
    • ϕ(d,y){\bold \phi}(d, y)ϕk(d,y)\phi_k (d,y)を並べた素性ベクトル
    • Zd,w=yexp(wTϕ(d,y))Z_{d, {\bold w}} = \sum_y \exp ({\bold w}^T {\bold \phi}(d, y))

複数形を選択する問題で,原形が与えられて,選択肢に複数形の候補が何個か与えられることを考える. この時,素性関数として「原形の末尾2文字と複数形の末尾2文字の組」などが考えられる.

補足

選択肢の数が常に固定であっても, 各事例ごとのクラス名に本質的に意味がないものは 候補選択タスクである. 英単語の原形を4つの選択肢から当てる次のような問題集があったとする.

studiesの原形はどれか
1:studie, 2:studi, 3:study, 4:stud

この「1, 2, 3, 4」といったクラス名自体には本質的には意味がない.

1:studi, 2:studie, 3:stud, 4:study

という問題になったとしても,解くべき問題の本質は変わらないからだ.