「言語処理のための機械学習入門」
輪読会 #2
27 PAGES
Shintaro Nomura
機 械 学 習
2016.12.11 @ Akiba Code
CAUTION!
この資料は、「言語処理のための機械学
習入門(高村大地)」を読みながら作成
していますが、本が簡潔に書かれすぎて
いてよく理解していないまま知ったかぶ
りで作られている可能性があります。
2
第3章の流れ
クラスタ
リング
k-means GMM
EMアル
ゴリズム
3
クラスタリング 4
似ているもの(文書や単語)同士を
1つのグループにまとめる作業
データ:D D = { d1, d2, … , d|D| }
データDの
ベクトル表現
x(1), x(2), … , x(|D|)
※文書ならbag-of-words表現や、単語なら文脈ベクトルなど
sim( A, B ) A、B同士の似ている度合い。類似度(モデルに応じて定義)。
arg max/min 対象の関数値を最大/最小にする引数の集合を返す
ex) arg max -(x – 1)2 = 1
凝集(ぎょうしゅう)性クラスタリング
凝集性クラスタリングの概略
1.事例集合:Dを入力 D = {x(1) , x(2) , … , x(|D|) }
2.クラスタをまず|D|個用意し、
各事例xiを所属させる
c1 = {x(1) }, c2 = {x(2) }, … c|D| = {x(|D|) }
3.クラスタ数が2個以上存在
する限り、似たクラスタ対を
融合(merge)し続ける
(cm ,cn ) = arg max(ci , cj)
merge(cm ,cn )
2.~3.をクラスタ数が1になるまでLoop
5
テキストではクラスタ同士の類似度(sim)を測る
方法として、単連結法・完全連結法・重心法など
3つの方法が示されている
重心法 6
 なかでも一般的なクラスタリングでは、「重心法
(centroid method)」が活用されているのをよく見
る気がします
 各クラスタが含む事例すべての「重心
(平均)ベクトル」間の類似度を、それらのクラ
スタの類似度とする方法
 sim(ci , cj) =
sim(ci内の全ベクトルの平均, cj内の全ベクトルの平均)
第3章の流れ
クラスタ
リング
k-means GMM
EMアル
ゴリズム
7
k-means法 8
ざっくり言うと
1.k個のクラスタの代表ベクトルOLD(初期値)をランダムに決める
2.各事例ベクトルと最も類似度が高いクラスタにそれを配属させる
3.各クラスタの重心(代表ベクトルNEW)を計算する(重心法)
4.各点が所属するクラスタを、一番代表ベクトルが近いクラスタに変更する
5.変化がなければ終了。変化がある限りは 3. に戻る。
K-means 法を D3.js でビジュアライズしてみた - てっく煮ブログ
http://tech.nitoyon.com/ja/blog/2013/11/07/k-means/
何度もポチポチ
押してみると
意味が分かる
k-means法の課題 9
ざっくり言うと
1.k個のクラスタの代表ベクトル(初期値)をランダムに決める
2.各事例ベクトルと最も類似度が高いクラスタにそれを配属させる
3.各クラスタの重心を計算する(重心法)
4.各点が所属するクラスタを、一番近い重心のクラスタに変更する
5.変化がなければ終了。変化がある限りは 3. に戻る。
初期値(最初の割当て)次第で
結果が変化する
(対策)
凝集性クラスタリングの
結果を初期値とする
ランダム配置を何度も繰り返して
平均的な結果を用いる
「k」はあなたが決める
【悲報】
kの数次第でアルゴリズムの挙動が全
く変わってしまう
第3章の流れ
クラスタ
リング
k-means GMM
EMアル
ゴリズム
10
イメージが湧きやすいGMM使用例
マンションポエムで新築マンションをク
11
マンションポエムで新築マンションをクラスタリング
http://smrmkt.hatenablog.jp/entry/2014/12/25/205630
マンションポエムのクラスタリング
データの収集 Linkにあったので助かったそうです
辞書の作成 普通に形態素解析しちゃうと単語を刻み
すぎるため、オリジナルの辞書を作成
形態素解析 MeCabを使って,ざっくりと形態素解析.
必要な品詞だけPythonで抽出.
ストップワードの除去 GitHub参照
LDAによるトピックモデル作成 gensimパッケージを利用し、各文書間に
共通する、潜在的なトピックを抜き出す
→1,700単語(1x1,700のベクトル)を20
個程度のトピック(1x20のベクトル)に
集約(次元縮約)
GMMによるクラスタリング その20次元ベクトルを用いてクラスタリ
ング。いくつか試したところ、クラスタ
数を4つにすると感じが良いことが判明
ワードクラウドを作成して可視化 次項参照
12
マンションポエム(2) 13
クラスタごとのワードクラウド(Tagxedo)による可視化
平均坪単価が高く,都心からの
距離が近いクラスタ
都心から距離が遠いクラスタ
坪単価が安いクラスタ バランスの良いクラスタ
GMMの理解に必要な統計知識
結合確率と条件付き確率(p.26)
独立性(p.29)
(多変量)正規分布(p.38)
14
同時確率と条件付き確率
同時確率
コインXとダイスYがあるとき、Xがオモテとなり、かつ、Yが4となる(同
時)確率
P( X = “Heads”, Y = 4 ) = 1/2 ✕ 1/6 = 1 /12
15
条件付き確率
コインXとダイスYがある。Xがオモテとなったとき、Yが4となる(条件付
き)確率
P( Y = 4 | X = "Heads" ) = 1/6
この場合、コインの表裏とダイスの出目には何の関連もないと考えられる
→それらは「独立事象」であると呼ばれる
P( Y = 4 | X = “Heads” ) = P( Y = 4 ) # 条件なし確率と同じ値に
尤度(ゆうど)
尤度を表現する式と、同時確率を表現する式は、同じ形をしている
各データ(事例ベクトル、標本)がそれぞれ互いに独立であるとき、
尤度 L = P(x1) P(x2)…P(xn) .
・同時確率はあくまでも事象が起きる確率であるのに対し、尤度は「観察デー
タの下での仮説の尤(もっと)もらしさ」の指標である
※「いぬど」と読むと尤度警察がやってきます
(尤度は観測データはすべて出尽くしていて、それらのデータに対して、あるパラメー
タの確率分布を当てはめた時、どれだけ尤もらしいかを意味している)
・実際の観測データを仮説上の確率分布に当てはめた際、あてはまりが悪いと
尤度は低く計算されてしまう
→尤度を最大にするパラメータを求める(推定する)方法が最尤推定法
16
正規分布と尤度
正規分布における尤度
ある1次元の事例xiの生起確率を、正規分布の確率密度関数で表すとき、
𝑃 xi = 𝑓 xi =
1
2𝜋𝜎2
exp
xi − 𝜇 2
2𝜎2
x1, x2, …, xnが観測された際の尤度は
L = P(x1) P(x2)…P(xn) = Π𝑓(xi) = Π
1
2𝜋𝜎2
exp
𝑥𝑖
−𝜇 2
2𝜎2
※同時確率と区別するため、あくまでパラメータがμ, σであることを強調することも
L( μ, σ|x ) = Π
1
2𝜋𝜎2
exp
𝑥𝑖
−𝜇 2
2𝜎2
17
多変量正規分布における尤度
あるd次元の事例ベクトル𝒙(𝑖)
の生起確率を、正規分布の確率密度関数で表すと
き(教科書では、それぞれの分散は同一と仮定されているので、)
𝑃 𝒙(𝑖) = 𝑓 𝒙(𝑖) =
1
2𝜋𝜎2 𝑑
exp
𝒙(𝑖) − 𝛍 2
2𝜎2
尤度は
L =
1
2𝜋𝜎2 𝑑
exp
𝒙(𝑖)−𝛍 2
2𝜎2
正規分布と対数尤度 18
多変量正規分布における尤度
尤度は(教科書では、それぞれの分散は同一と仮定されているので、)
𝑃 𝒙(𝑖)
= 𝑓 𝒙(𝑖)
=
1
2𝜋𝜎2 𝑑
exp
𝒙(𝑖)
− 𝛍 2
2𝜎2
尤度は
L =
1
2𝜋𝜎2 𝑑
exp
𝒙(𝑖)−𝛍 2
2𝜎2
積のカタチで表されている尤度は扱いにくいため、「対数尤度」が用いられる
ことが多い。
対数尤度は
logL =log
1
2𝜋𝜎2 𝑑
exp
𝒙 𝑖 −𝛍 2
2𝜎2 = log
1
2𝜋𝜎2 𝑑
exp
𝒙(𝑖)−𝛍 2
2𝜎2
k-means法(重心法)とGMMの違い
 テキストの表現が入門者に優しくないP(c) という概念(隠れ変数)
が抽象的なため、理解がなかなか難しい
19
混合正規分布(Gaussian Mixture)によるクラスタリング
ざっくり言わないと
1.k個のクラスタの代表ベクトルm’(初期値)をランダムに決める
2.各事例ベクトルxが、どのクラスタに、各々どの程度の確率で属
するか(P( c | x(i); mOLD)を、P( x | c )が正規分布に従うと仮定して
計算する(GMM)
3.各クラスタの代表ベクトルを単純な重心ではなく、先ほど計算さ
れた確率の重み付きで計算し、mNEWへ置き換える
4.代表ベクトルの変化が十分小さければ終了。大きい限りは 2. に
戻る。
その意味を説明しようと思うけど
 GMMは次章の「EMアルゴリズム」の一例に
すぎないので、仕組みは次で説明します
20
第3章の流れ
クラスタ
リング
k-means GMM
EMアル
ゴリズム
21
EMアルゴリズム
EMアルゴリズムは2つのステップからなる
E(xpectation: 期待値)ステップ 対数尤度をその期待値で置き換えるステップ
M(aximization: 最大化)ステップ その値を最大にするように未知のパラメータ
を推定するステップ
22
 一見、ただの最尤推定っぽいけど
・EMアルゴリズムは、不完全データにも使える
・不完全データとは、本来は観測されるべきだが観測できな
かったデータ(欠損データ)を含むデータ
・欠損データを含むと、本来、尤度がパラメータθの関数として
定義できない
・対数尤度をその期待値で置き換えた関数「Q関数」の最大化を
通じてパラメータの最尤推定(的なもの?)を行う
P(C)を「隠れ変数」として扱う
 今回は、各クラスタが含む事例の数(確率:P(c))が不明である
 そのようなクラスタに対応する確率変数を「隠れ変数」として扱い、
EMアルゴリズムの枠組みに基づいてパラメータ推定が可能になる
23
事例ベクトル
事例ベクトル
事例ベクトル
クラスタ1
クラスタ2
何個属すの?
?
EMアルゴリズムの利点・特徴 24
 不完全データからの最尤推定が可能
(実際には、欠損データに関する周辺化を行って、観測データのみの周辺分布による最
尤推定を行っている:周辺分布密度関数に観測データを代入した尤度を最大にする)
 (対数)尤度を最大にする解を直接的に計算するのは
困難だが、Mステップで求めたパラメータθNEWをEス
テップ(Q関数)のθOLDに代入して…とEMステップを
繰り返すごとで、(対数)尤度が単調に増加すること
が知られている
※この場合の単調増加は、「不変または増加」の意味。なので、変化率が一定程度
収束しても、真の意味では極大値を求めたにすぎないことも十分にあり得る
前ページの理論的背景が知りたい方は
・「確率的言語モデル」 北研二
See 2.6「EMアルゴリズム」
・「これなら分かる最適化数学―基礎
原理から計算手法まで」金谷健一
See 5.4 「不完全データからの最尤推
定」
25
じゃあQ関数ってどう定義されてるの
Q(θNEW ; θOLD)=∑ ∑ P(c , x(i); θOLD) * log P( c, x(i); θNEW)
※連続的な場合にはQ(θNEW ; θOLD)=∬P(c , x(i); θOLD) * log P( c, x(i); θNEW)
→「はじめての 統計データ分析 ―ベイズ的〈ポストp値時代〉の統計学―」
(豊田秀樹)を読んだ方だと、左辺が事後分布、右辺が事前分布×尤度に対応
してそうなことが想起されそう
●確認事項
・f( ・ ; θ ) の右側のθがその関数のパラメータであることを明示
・Q関数をθNEWについて解く上では、θOLDは定数である
26
θOLDとθNEWの更新を繰り返し、パラメータθの
変化率が一定を下回ったら、最後のθNEWをパラ
メータ値として採用
→そのθ値に基いてクラスタリングを行う
(今回の場合、求めたθは代表ベクトルmC)
それでもこの課題からは逃れられない 27
初期値(最初の割当て)次第で
結果が変化する
(対策)
凝集性クラスタリングの
結果を初期値とする
ランダム配置を何度も繰り返して
平均的な結果を用いる
クラスタ数「k」はあなたが決める
【悲報】
kの数次第でアルゴリズムの挙動が全
く変わってしまう

言語処理のための機械学習入門#2