ゲーム×研究

ゲームに学術的な部分を組み込みたい(人生の目標)

サポートベクターマシーンを基礎から読んでみた

こんにちは,今日もコロナ社から出版されている自然言語シリーズの自然言語のための機械学習入門をよんだので,それについて書いていこうと思います.

はじめに

サポートベクターマシンSVM)は一時期すごくはやっていましたね.今はニューラルネットワークが話題ではありますが,原理的な解析ができることからSVMを使う人も多いそうです.

SVMは二値分類を行います.たとえば,身長体重から女性か男性かみたいな問題です.それを応用して複数分類や回帰問題に発展させていることも多いようです.

SVMが良く使われる理由は全体的に良い分類を行ってくれるからだそうです.といってもよくわからないと思います.ニューラルネットワークなどは与えられた値からその値を分類するように頑張るのですが,SVMは与えられた値以外にも対応する性質を持った分類を行ってくれます.その秘密は二つのクラスがあった場合に「どちらのクラスからもなるべく遠い位置でわける」というマージン最大化という仕組みを導入しているからです.今回は,そのマージン最大化について説明して,SVMを実際に解いていこうと思います.

分類の方法

いま,あるデータxに対して正解となるクラスy(+1 or -1)が与えられているとき,それらデータをクラスで分ける平面をwと仮定して,平面で分離する式を以下のように定義します.

{
f(x) = w \cdot x - b ≧ 0
}

つまり,fはxが入力されたときに0以上ならクラス(+1)に未満ならクラス(-1)に属するということです.マージン最大化とはこの平面と各クラスの最も近いデータとの距離の最大化のことを言います.

マージン最大化

データを分離する平面に最も近いデータを{x_+}として,データから平面に垂線を伸ばした時の交点を{x_*}とする.ここで,{x_*}は平面上にあるため,{w \cdot x_* = b}となります.

パラメータbを調節することで平面を移動させることができます.よって{ w \cdot x_+ -b = 1 }となるような平面を仮定すると,

{
w \cdot ( x_+ - x_* ) = w \cdot x_+ - w \cdot x_* = (b + 1) - b = 1
}

と,することができ,{w}{x_+ - x_*}が同じ方向を向いていることから,

{
w \cdot ( x_+ - x_* ) = |w||x_+ - x_*| = 1  \\ |x_+ - x_*| = \frac{1}{|w|}
}

となります.つまり,マージン{|x_+ - x_*|}の距離は{\frac{1}{|w|}}となり,これの最大化がSVMの解く問題になるということです.

厳密制約でのSVM

厳密制約というのはデータが過不足なくクラスに分けられている状態でのSVMの学習ということです.実際は外れ値や選択する特徴の表現不足で厳密なデータを用意するのは難しいですが,実践への導入として解説したいと思います.

先ほど,解くべき問題は{\frac{1}{|w|}}の最大化といいましたが,これは扱いにくいので,{|w|}の最小化として,さらに,絶対値は扱いにくいので{w^2}の最小化とします.解くべき問題は変わっていません.

先ほど仮定した{ w \cdot x_+ -b = 1 }を満たすために,クラス(y=+1)のときは{f(x)≧1}であり,クラス(y=-1)のときは{f(x)≦-1}を満たす必要があるとすると,二つの条件は以下のようにまとめることができる.

{
y^{(i)}(w \cdot x^{(i)} - b) ≧ 1
}

よって,以下の最適化問題を解くことになる.

{
min.   \frac{1}{2}w^2 \\
s.t.   y(w \cdot x -b) -1 ≧ 0; \forall i
}

この不等式制約付き最適化問題は凸問題であるので,ラグランジュ方程式を用いてデータ数分だけラグランジュ乗数{α_i}を導入すると,ラグランジュ関数は以下のようになります.

{
L(w,b,α) = \frac{1}{2}w^2 - \displaystyle \sum_i α_i(y^{(i)}(w \cdot x^{(i)}-b)-1)
}

これをそれぞれのパラメータで偏微分して0とおくと

{
\frac{\partial L}{\partial w} = w - \displaystyle \sum_i α_i y^{(i)} x^{(i)} = 0\\
w = \displaystyle \sum_i α_i y^{(i)} x^{(i)} \\
\\
\frac{\partial L}{\partial b} = \displaystyle \sum_i α_i y^{(i)} = 0
}

これを,ラグランジュ関数に入れると以下のようにαのみの関数となり,変形することができる.

{
\begin{align}
L(w,b,α) &= \frac{1}{2}\sum_{i,j} α_i α_j y^{(i)} y^{(j)}  x^{(i)} \cdot x^{(j)} - \displaystyle \sum_i α_i(y^{(i)}(\displaystyle \sum_j α_j y^{(j)} x^{(j)} \cdot x^{(i)}-b)) + \displaystyle \sum_i α_i \\
&= -\frac{1}{2}\sum_{i,j} α_i α_j y^{(i)} y^{(j)}  x^{(i)} \cdot x^{(j)} + b \displaystyle \sum_i α_i y^{(i)} + \displaystyle \sum_i α_i \\
\end{align}
}

これでもともパラメータがなくなったので,あととはラグランジュ関数を最大にするαをもとめることで,はじめにもとめた,分類関数f(x)を求めることができます.しかしこの問題は二次計画問題となり解析的に解くことが難しくなっています.なので逐次的に解くなど工夫する必要があります.

おわりに

SVMで一番難しい,というかわかりづらい概念は{ w \cdot x_+ -b = 1 }となるような平面を仮定するところだと思います.これは,平面を平行移動して距離関数が1となるような制約が必要という意味になります.そのため,ラグランジュ関数の制限の項で用いられています.距離は絶対値であるので+方向-方向でも同様に1にするためにラベルを+1,-1とすることが大事であるといえます.今回は厳密回を求めましたが,通常はそのような式は使えません.また,今回は線形分離を行いましたが,カーネルトリックを利用した非線形分離にも拡張することができます.今後そのような例も解説していこうと思います.

自然言語のナイーブベイズ分類を考えてみた

こんにちは,今日もコロナ社から出版されている自然言語シリーズの自然言語のための機械学習入門を読んでみましたので簡単に内容をまとめたいと思います.

初めに

 
 分類問題は事前に定義されたグループに分類対象を振り分ける処理のことを言います.たとえば,迷惑メールのフィルタリングみたいなものです.迷惑メールの文章からどのような文章が迷惑メールなのかを学習し,迷惑メールかどうかの判断をします.この分類はいくつか提案されていますが,ここでは,ナイーブベイズ分類,SVMを用いたもの,対数線形モデルを用いたもののうちのナイーブベイズ分類について解説したいと思います.

ナイーブベイズ分類とは?

 ナイーブベイズ分類は文章の出現頻度をモデル化することによって分類を行います.ナイーブベイズのモデル化はベルヌーイ分布を用いたものと多項分布を用いたものがあります.ベルヌーイ分布は文章内に単語が存在しているかいないかで分類をおこないますが,多項式分布は文章内に単語がどれほど存在しているかで判断しています.そこで,今回は認識精度の面から多項分布でのモデル化について解説します.

問題の数式化

 
 まず初めに求める問題を定式化します.分類ですので,ある分類したいクラスC(スポーツや政治)に文章dが当てはまるかどうかが重要になります.つまり,文章dが与えられたときにクラスCである確率を求めます.そして,以下のようにベイズの法則からCを求める式を算出します.

{
P(c|d) = \frac{P(c)P(d|c)}{P(c)}
}

{
c_{max} = \displaystyle \arg \max_c \frac{P(c)P(d|c)}{P(c)}
      = \displaystyle \arg \max_c P(c)P(d|c)
}

ほんとうは,P(c|d)を求めたいのですが,dは文章ですので組み合わせが膨大になります.そこで,P(d|c)という問題へと変換しました.

多項モデル

多項式分布を覚えていますか?多項式分布では発生確率を持つ単語が文章内に複数回発生したときの文章の発声確率をモデル化できました.これをクラス内単語の発生確率が複数回発生したとして文章の発生確率をモデル化しものが多項モデルです.文章dの中に単語wが{n_{w,d}}回起こる確率は,多項分布を用いて以下のように決まります.ここで,{q_{w,c}は属するクラスがcであったときに単語wが発生する確率です.

{
\frac{(\displaystyle \sum_w n_{w,d})!}{\displaystyle \prod_{w \in V}n_{w,d}!} 
\displaystyle \prod_{w \in V} q_{w,c}^{n_{w,d}}
}

これで,クラス内にある単語が発生する確率を求めることができたので,クラスCに単語が属する確率P(d|c)は以下のようになります.

{
P(d|c) = P(K=\displaystyle \sum_w n_{w,d}) \frac{(\displaystyle \sum_w n_{w,d})!}{\displaystyle \prod_{w \in V}n_{w,d}!} 
\displaystyle \prod_{w \in V} q_{w,c}^{n_{w,d}}
}

つまりは,これを用いると,以下の式を最大にするようなクラスCが文章dの属するクラスということになります.

{
c = \displaystyle \arg \max_c P(c)P(d|c) 
= \displaystyle \arg \max_c P(c)P(K=\displaystyle \sum_w n_{w,d}) \frac{(\displaystyle \sum_w n_{w,d})!}{\displaystyle \prod_{w \in V}n_{w,d}!} 
\displaystyle \prod_{w \in V} q_{w,c}^{n_{w,d}}

}

実際には最尤推定を用いて確率の値を求めていきます.今回は解き終わった結果を見てみたいと思います.

{
P(c) = \frac{N_c}{\displaystyle \sum_c N_c} \\
q_{w,c} = \frac{ n_{w,c} }{\displaystyle \sum_w n_{w,c} }
}

P(c)はあるクラスに属する文章の数を全体の文章の数で割っていて,{q_{w,c}}はクラスcに属するある文章の出現回数をクラスcに属する全ての文章の出現回数を割っていて,直観的だとわかります.

おわりに

分類問題は自然後処理の中でも特に応用範囲が大きいものだと思います.迷惑メールの他にも品詞の分類などがあります.ナイーブベイズ分類は分類問題の中でも直観的にわかりやすいモデルになっています.そのため結果の原因の特定が容易にできるためいまもよく使われているみたいです.今回は最尤推定を使って分布の確率を求めましたが,ある確率が0になってしまい全体として正常に動作しない問題が発生することもあるため,実用の場合はMAP推定を用いてディクレ分布を事前分布として計算すると良いそうです.

ゲームに用いるなら

プレイヤーがNPCと話せると仮定したときに,話した内容で相手がどう感じるのかを分類器として作成して置いたら,感情で会話できるようなシステムができるかなって感じました.そうしたら,ボスまでの道を教えてくれる情報屋さんをどう懐柔するかなど,ゲームにおける会話の幅が広がると感じました.

ひさびさにビジネス書を読んでみました

こんにちは,今日は「稼ぎたければ捨てなさい」という本を読んで見た感想と思ったことを書いていきたいとおもいます.

はじめに

 この本は起業するうえでの心得のようなものが掛かれていました.内容は集客についてが多い印象でした.僕がこの本から読み取ったことは「今の事業に対する考え方」「見込み顧客とは」「成功パターンの考え方」についてです.内容はどこのビジネス本でも言っていることで多いです.まとめると,「顧客をしっかり固定してその人に合った集客を行う」ということです.

今の事業に対する考え

 終戦から現代までの事業は「いいものを作る」という方針でした.粗悪品が多く,いいものを作ると売れる時代ということです.現代について考えると,製作技術の発展から100円ショップでもかなりのクオリティのものが売られています.そのような現代で重要となるのは誰に届けたいかを明確にする.そして,その人に合った事業に集中することです.スマホを例にとると,たくさんの良い機能を持ったスマホは売れません.それは技術の押し付けだからです.購入者が必要なのは自分が使う機能だけであり,自分がそれを使っている未来を想像できるものが売れるものになります,なので,今の時代は届けたい人を明確にし,一つの重要な機能に集中することが大切になります.

見込み顧客

 誰に売るのかを考えるときに見込み顧客という概念が登場します.見込み顧客は自分の商品に興味を持ってくれる人ではなく,買ってくれるような人となります.例えばSNSゲームを長時間やっているが課金は絶対にやらない人がいます.対してゲームは長時間やらないが好きで課金をよくする人がいます.ここで言う見込み顧客というのはゲームに興味がありかつ課金に対する抵抗が少ない人の事を言います.そのような顧客の集客は競合他社,類似市場と集客していく必要があります.

成功パターン

 高齢者向けの事業をSNSで宣伝しても効果はありませんがチラシによる集客は効果があります.デジタルの時代に流されず事業の見込み顧客にあった集客が大切になります.集客にはいろいろなパターンがあります.SNS,チラシ,セミナー,ブログいろいろ試してみてやっと着いた顧客の共通点にあうような集客が大切になります.小さくてもいいので要は成功事例があればそれが自分にとっての成功パターンということです.これは,小さい範囲にも言えます.技術的なアプリの宣伝のためにブログを書くのであれば,Qiitaのような技術に興味がある人が多く集まるサービスで宣伝すると受けがいい,など考える必要があります.

終わりに

 ビジネス本は久しぶりに読みました.文章の言葉遣いに違和感がありましたが,内容をまとめると集客できそうな分野に対して事業を行っていくことが必要というようなことが書かれています.それは守銭奴になるということではなく,その分野に価値を求めている人が多いということ.そして,その人たちからお金を奪うのではなく,価値を届けることが企業の目的になってくるということです.また,そうすることで,道に迷うことなく,その人たちに一番効果的に届く方法をを知れると思いました.
 他にも「人間の脳の構造から同アプローチしていくか」,「Uberが何で売れたか」など面白い内容も多く面白い内容だったと思います.

クラスタリングについて読んでみた

こんにちは今日もコロナ社から出版されている自然言語シリーズの自然言語のための機械学習入門を読んでみました.クラスタリングは文章の性質の違いを明確にするために使われることがあるようです.

はじめに

 クラスタリングはデータを似た者同士で分けることです.分類との違いはわける数(クラスタ数)が決まっていない点です.データの性質の違いでクラスタリングができれば,その性質によって異なる処理を効率的に行うことが可能となります.クラスタリングの種類としては「凝集型クラスタリング」「k-平均法」「混合正規分布」などがあります.また,混合正規分布などはEMアルゴリズムという枠組みの一部です.

凝集型クラスタリング

 データがある空間に分布しているとき,個々のデータ間の関係から階層関係を作り出すクラスタリングです.データが徐々にまとまっていくことからボトムアップクラスタリングとも呼ばれています.概念図を以下に示します.

f:id:tkymx83:20170228211035p:plain:w300

”近いもの”を併合していき,併合の回数を階層数とした木構造を作り出します.併合の回数を任意にすることでクラスタリング数を管理することができます.

この”近いもの”はデータ間の距離になっています.データは併合が進む毎に集合となっていきます.そして,この集合通しの併合の仕方(集合の類似度関数)がいくつか定義されています.

  • 単連結法

 集合の各データどうしの類似度で最も大きいものを集合の類似度とします.

  • 完全連結法

 集合の各データどうしの類似度で最も小さいものを集合の類似度とします.

  • 重心法

 集合の各データの平均の類似度を集合の類似度とします.

凝集型クラスタリングでは,集合どうしの類似度が最も大きいものから合体していくため,単連結法では鎖状に伸びる傾向があり,完全連結法では円状に大きくなる傾向があります.これら方法はタスクによって使い分けることが重要となります.

k-平均法

 ラスタリング数を任意で決め,適当にデータをわけ,徐々に良いクラスタリングを行っていく方法です.各クラスタは平均ベクトルを持っていて,二段階のクラスタリングを繰り返し行っていきます.一段階目では,データは最も類似した平均ベクトルをもつクラスタに所属します.二段階目では,クラスタの平均ベクトルをクラスタ内データの平均として計算します.これを収束するまで繰り返すことでクラスタリングをおこなっていきます.k-平均法はよく使われるアルゴリズムですが,クラスタ数は固定なので適切なクラスタ数の選択が必要になります.

混合正規分布

 k-平均法では,データはどれかのクラスタに必ず属していました.しかし,80%はクラスタ1で20%はクラスタ2という場合もあると思います.これを実現するために各クラスタ正規分布で表現しデータはクラスタまでの距離からそのクラスタである確率p(c|x)を持ちます.このP(c|x)はデータxがクラスタcに属している確率を表しており事後確率となり計算が困難になります.そこで,P(x|c)としてクラスタcでのデータxの発生確率(正規分布)を以下のように仮定して

{
 P(x_i|c) = \frac{1}{\sqrt{ (2\piσ^2)^d }} \exp ( -\frac{|x_i-m_c|^2}{2σ^2} ) 
}

以下のようにベイズの定理から事後確率の変換をおこないます.

{
P(c|x_i) = \frac{P(x_i,c)}{P(x_i)} = \frac{P(c,x_i)}{\displaystyle \sum_c P(c,x_i) }
= \frac{P(c)P(x_i|c)}{\displaystyle \sum_c P(x)P(x_i|c)}
= \frac{P(c)\exp (-\frac{|x_i-m_c|^2}{2σ^2})}{\displaystyle \sum_c P(x)\exp (-\frac{|x_i-m_c|^2}{2σ^2})}
}

データxの生起確率は複数の正規分布からなっており,混合正規分布と呼ばれます.また,今回の例では,分散σは固定であり,クラスタごとの平均ベクトルmcのみ変化するとしています.

次に「各クラスタの平均ベクトル」を算出します.k-平均法では各クラスタ内データの平均を求めていました.混合正規分布を用いる場合は,以下のように,全てのデータの重み付平均を求めることになります.

{
m_c = \frac{ \displaystyle \sum_{x_i \in {\bf D}} P(c|x_i)x_i }
           { \displaystyle \sum_{x_i \in {\bf D}} P(c|x_i)}
}

のように計算されます.このように新たな正規分布を更新することでクラスタリングを進めていきます.

EMアルゴリズム

 k-平均法も混合正規分布もに二段階のクラスタリングを行っていました.混合正規分布を例にとると,確率の計算(正規分布)とパラメータの推定(平均ベクトル)を繰り返していました.このような枠組みをEMアルゴリズムと言います.

 もし,データxiが属するクラスタcが分かっていた場合,以下の最尤推定で分布のパラメータ(正規分布の平均や分散など)を求めることができます.

{
\displaystyle \sum_{x_i \in {\bf D}} logP(c,x_i;θ)
}

しかし,初めはデータxiの属するクラスタcはわかりません.なので,代わりにすべてのクラスタに対して確率P(c|x)を重みとして以下のように尤度を足し合わせたものを最大化します.

{
\displaystyle \sum_{x_i \in {\bf D}} \displaystyle \sum_c P(c|x_i;θ')logP(c,x_i;θ)
}

ここで,θ'は事前に計算されたパラメータ(計算始めは初期化される)です.この関数はQ関数と呼ばれ,前のパラメータθ'と今のパラメータθを区別して以下のように定義されます.

{
Q(θ;θ') = \displaystyle \sum_{x_i \in {\bf D}} \displaystyle \sum_c P(c|x_i;θ')logP(c,x_i;θ)
}

このQ関数を最大化するようなθを求めることでクラスタリングを行っていきます.EMアルゴリズムのEステップでは,P(c|x;θ')を計算し,Mステップではこの結果を用いてQ関数を最大にするθを求めていきます.

おわりに

 今回クラスタリングについてみていきました.始めに行っておくと,EMアルゴリズムは枠ぐみであり具体例がk-平均方や混合正規分布によるクラスタリングとなります.なので,EMアルゴリズムを扱うライブラリというのは存在しません.凝集型クラスタリングは局所的な合体から始まることから大局的なクラスタリングが難しくなります.対してEMアルゴリズムを用いる繰り返しの方法は大局的なクラスタリングができます.しかし,クラスタ数の選定という問題も生じます.なので,クラスタリングが本当にうまくいったのかという評価基準(自分のタスクに合った)をじっくり考えることが大事になると思います.

最尤推定について読んでみた

昨日に引き続きコロナ社から出版されている自然言語シリーズの自然言語のための機械学習入門を読んでみました.

はじめに

 今日読んだのは最尤推定の章です.統計モデルでは嫌というほど出てきます.確率モデルは学習データが発生する確率を表しており,最尤推定とは発生確率を最大化するパラメータの探索となります.簡単なものでは偏微分を解いたりラグランジュ乗数を用いて計算できますが,複雑なモデルではEMアルゴリズムや勾配法などで解きます.今回の例では偏微分を行い解析的に解いています.

尤度

 
 尤度は確率モデルにおいて学習データ列を発生させる確率です.尤度を最大化する問題を最尤推定と言います.n個の学習データを

{ \displaystyle
{\bf D} = x_1,x_2,...,x_n
}

とすると,尤度は以下のように求められます,

{ \displaystyle
P({\bf D}) = \prod_{x_i \in {\bf D}} p(x_i)
}

ここで注意してほしいのは学習データが互いに独立であり同様の分布を取っていることです.これは,i.i.d(独立に同一の確率分布に従う)と言います.サイコロで例えると,別々の試行の結果であり,同様のサイコロを使っているか?ということです.

尤度はそのままでは,掛け算なので以下の用に対数を取ることで計算を容易にして使います.最大化の問題については対数をとっても変わりはありません.

{ \displaystyle
\log P({\bf D}) = \sum_{x_i \in {\bf D}} \log p(x_i)
}

最尤推定

 ここでは,ポアソン分布の最尤推定を例にしてみたいと思います.ポアソン分布は以下のような分布であり,求めるべきパラメータはλとなります.

{\displaystyle
P(x;λ) = \frac{λ^x}{x!}e^{-λ}
}

ここで,最尤推定の式に当てはめると

{ \displaystyle
\log P({\bf D}) = \sum_{x_i \in {\bf D}} \log \frac{λ^{x_i}}{{x_i}!}e^{-λ}
}

となります.これをλについて偏微分すると


{ \displaystyle
\frac{\partial \log P({\bf D})}{\partial λ} = \sum_{x_i \in {\bf D}} (x_i \frac{1}{λ}-1)
}

となり,これを0として,λについて解くと

{ 
λ = \frac{ \displaystyle \sum_{x_i \in {\bf D}} x_i }{ |{\bf D}| }
}

と求めることができます.

また,最尤推定はパラメータに寄らない分布の確率を最大化するような推定でもあります
例えばある人が発話のする単語の発生確率を求めるとします.つまり,"はい","いいえ","わかりません"の出現回数が分かっている場合にp("はい"),p("いいえ"),p("わかりません")を求めるということです.最大化する式は以下のようになります.

{
\log P({\bf D}) = \displaystyle \sum_w n_w \log p_w
}

単語の発生確率にはすべての確率を足すと1になる性質があるので,ラグランジュ乗数をλとして制約付き最適化問題を解くとするとラグランジュ関数Lは以下のようになります.

{
L({\bf p},λ) = \displaystyle \sum_w n_w \log p_w + λ( \displaystyle \sum_w p_w -1)
}

これを偏微分すると

{ \displaystyle
\frac{\partial L({\bf D},λ)}{\partial p_w} = \frac{n_w}{p_w} + λ
}

となり,これを0として,全ての単語に対してλの連立方程式ととくと単語の発生確率は以下のようになります.

{
p_w = \frac{n_w}{\displaystyle \sum_w n_w} = \frac{n_w}{N}
}

最大事後確率推定

 最尤推定では学習データDのみからモデルのパラメータの推定を行いました.しかし,複雑なモデルではパラメータ推定は難しくなります.もし事前に学習データの傾向が分かっていれば,例えばポアソン分布のλ=10付近でモデル化できることが分かっていればより高精度なパラメータ推定を行うことができます.これを最大事後確率推定という.

 具体的にはパラメータθが与えられた際の確率分布をP(θ)とすると,学習データDが与えられていた時,最大事後確率はP(θ|D)となる.最尤推定ではパラメータが確率変数を表している確率を最大化したが,最大事後確率推定では学習データがパラメータを表している確率を最大化します.最大事後確率推定は以下のように変換できます.

{ 
\begin{eqnarray}
\arg \displaystyle \max_θ P(θ|D) & = \arg \displaystyle \max_θ \frac{P(θ)・P(D|θ)}{P(D)} \\
& = \arg \displaystyle \max_θ P(θ)・P(D|θ)
\end{eqnarray}
}

このようにすると,パラメータθが与えられたときの分布P(θ)の最大化と,学習データの発生確率P(D|θ)の最大化の項に分けることができます.あとは,先ほどの最尤推定を行うだけです.

補足しておくと

  • パラメータθが与えられたときの分布P(θ)とは事前に別の学習データから作られた分布であると考えてもよい
  • P(D|θ) = P(D)

おわりに

 最尤推定は尤度を最大にするパラメータを求めるといったもので,自然言語処理だけではなく,認識関係では幅広く使われています.また,最大事後確率推定は私もいまだわからないこともありますが,局所解に陥ってしまうような推定には重要なのではと感じています.今回は導入で具体手行きな推定のアルゴリズムについては解説していませんでしたが,今後していこうと思います.

確率分布について読んでみた

こんにちは,今日はコロナ社から出版されている自然言語シリーズの自然言語のための機械学習入門を読んでみました

はじめに

 自分は学生時代に統計学機械学習について学んで研究もしていましたが,改めて読むと理論の理解がまだまだだとわかりました.そこで今回は基礎の基礎となる確率分布を解説したいと思います.

二項分布

 多項分布は以下数式になります.コイントスのような二つの事象をn回行ったときにx回ある事象が起きた確率を表しています.コイントスで言うと,表である確率がp,裏である確率が(1-p)のような形です.注意してほしいのは行った試行そのもではなく,回数による確率を扱っていることです.

{ \displaystyle
P(x;p,n) = {}_n C _x p^x (1-p)^{n-x} 
}

多項分布

 先ほどの二項分布では二つの事象でしたが,それを複数に拡張したものです.事象は一度に一つしか起きないためm個の事象の確率は

{ \displaystyle
\sum_{i}^{m} p(i)=1
}

のような性質を持ちます.多項分布では起きる順番は考慮されずないため,n回の試行で各事象が起こる回数を

{\displaystyle
 k_1,k_2,...k_m }

とすると,多項分布は以下のようになります.

{\displaystyle
\frac{n!}{\prod_{i} k_i} \prod_{i} p(i)^{k_i}
}

 たとえば,10回試行して,yesが2回,noが3回,cancelが5回出会った場合上記は以下のようになります.

{\displaystyle
\frac{10!}{2!3!5!} { {p_{yes}}^2 {p_{no}}^3 {p_{cancel}}^5 }
}

ポアソン分布

 これまではデータから分布を考えましたが,ポアソン分布は数式からどのようなものが表現できるか考えるようです.数式は以下のようになる

{\displaystyle
P(x;λ) = \frac{λ^x}{x!}e^{-λ}
}

 ポアソン分布は整数を確率変数とするため,0~∞の範囲で値を取るため計算のしやすさが利点となります.そして,分布自体は多項分布と似ています

連続確率変数

 上記では離散的な確率分布を見ました.自然言語処理では離散分布を扱うことが多いですが,現実空間をモデル化する場合連続値として見る必要があるため,連続確率分布を学ぶことは重要です.ここでは,いくつか連続確率分布について簡単に紹介したいと思います.また,連続確率分布では,確率の分布を関数ととらえ,確率密度関数と呼んでいます.確率値として用いる場合は,確率密度関数pをある範囲で積分する必要があります.

正規分布

 正規分布ガウス分布とも呼ばれ,最もよく使われます.ある研究ではすべての確率的事象は正規分布に従うとも言われています.正規分布確率密度関数は分布の平均mと分散σを用いて以下のように表現されます.

{\displaystyle
p(x;m,σ) = \frac{1}{\sqrt{2\piσ^2}}exp(-\frac{(x-m)^2}{aσ^2})
}

多次元の正規分布を求める場合xの要素毎の平均や分散,xの要素同士の関係などを考慮する必要があります.

ディクレ分布

 ディクレ分布は以下のようなの確率密度関数で,トピックモデルの構築などにも使われます.

{\displaystyle
p({\bf x};α) = \frac{1}{\int \prod_{i} x_i^{α_i-1} d{\bf x}} \prod_{i} x_i^{α_i-1}
}

 以下のような性質を持つことから,確率が0,1など極端なものになりにくい特性があります.この特性は離散分布である多項分布と同様であるため,多項分布の連続化として使われることがあるようです.

{\displaystyle
\sum_{i} x_i = 1
}

まとめ

 確率分布はある事象が起こる確率を数式で表すことができます.上で上げた例は離散的な確率分布でした.自然言語処理では単語の確率が出現する確率といったように,離散的な確率が多く存在するため,離散確率分布を学ぶことは重要になります.ですが,トピックモデルを代表とする近年の自然言語処理の技術において連続確率分布を用いることも増えたため,学習しておいても損はないと思います.
 

トピックモデルについて読んでみた

 こんにちは,これから仕入れた知識のOUTPUT場所としてここを使わせていただきたいと思います.記事としてのクオリティはこれからですが,だんだんド抑止行きたいと思います.

 今日は岩波データサイエンスVer2を読んでみました.主に読んだのはトピックモデルです.

トピックモデルってなあに

 
トピックモデルは最近(といっても学術的にはかなり前)よく自然言語処理で用いられる技術です.簡単に言うとたくさんの単語からジャンルのようなものを自動的に作成するという技術です.これができるとニュースジャンルの自動振り分けとか,自作メモの意味による自動ラベル付けなどができます.

トピックって?

 トピックモデルは先ほどジャンルの自動作成といいました.ジャンルとはニュースで言うと,経済,科学,政治といったものです.これに対してトピックとは文章から自動的に生成されるものになります.トピックモデルはこの自動生成にたけたモデルになるのです.具体的にトピックモデルでは”野球”みたいな単語を受け取ってそれに対するトピックを一個”トピック番号1”のように割り当てることができます.しかし,”野球授業”とした場合,トピックは複数考えられます.スポーツなのか教育なのかこれに対処する方法もあります.

複数のトピック

 複数のトピックに対応するには,その単語のトピックを確率で表現します.例えば”野球授業”なら スポーツ:教育 = 0.4:0.6のような形です.このように複数トピックを確率的に割り当てる技術を潜在的ディクレ分配法(LDA)といいます.こうすることでより単語に対して分布の詳細度が高まります.この分析を文章内のすべての単語に行うことで,その文章のトピックの傾向を見ることもできます.

まとめ

 トピックモデルでは自動的に単語のトピックをまとめ上げる機能があることを話しました.これは自然言語処理の中で発展してきましたが,分析に用いるデータは何でもよく,人の性格の分類などにも使えるようです.また,モデルに性別や人の情報を埋め込むことである文章と人を関連付けたり,逆に誰かがある主張を読んで賛成する確率などを求めることもできるようです.これには,理想点トピックモデルと言う技術が関わっているようです.このように様々な事象と統計的にまとめ上げ,”意味”となるものを抽出できる物がトピックモデルとなります.