Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
「言語処理のための機械学習入門」#2
Search
DSnomura
December 11, 2016
Technology
0
270
「言語処理のための機械学習入門」#2
言語処理のための機械学習入門 (自然言語処理シリーズ)
http://amzn.to/2f79qd9
の輪読会資料(第3章)です
DSnomura
December 11, 2016
Tweet
Share
Other Decks in Technology
See All in Technology
VS CodeでAWSを操作しよう
smt7174
8
1.7k
長期間TiDBを使ってきた話 @ 私たちはなぜNewSQLを使うのかTiDB選定5社が語る選定理由と活用LT / Experiences with TiDB Over Time
chibiegg
2
900
生産性向上チームの紹介
cybozuinsideout
PRO
1
870
アクセシビリティを考慮したUI/CSSフレームワーク・ライブラリ選定
yajihum
2
1k
Compose Compiler Metricsを使った実践的なコードレビュー
tomorrowkey
1
220
GraphQL 成熟度モデルの紹介と、プロダクトに当てはめた事例 / GraphQL maturity model
mh4gf
7
1.3k
Postman v10リリース後を振り返る / Looking back at Postman v10 after release
yokawasa
1
160
Python と Snowflake はズッ友だょ!~ Snowflake の Python 関連機能をふりかえる ~
__allllllllez__
1
120
リテール金融(キャッシュレス・ネット銀行・ネット証券)の競争環境と経済圏
8maki
0
1.1k
IaCジェネレーターとBedrockで詳細設計書を生成してみた
tsukasa_ishimaru
1
160
Google Cloud Next '24 Recap(Cloud Run/k8s)
mokocm
0
200
KubeConにproposalを送りたい人へのアドバイス
sat
PRO
3
250
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
8
2.4k
Robots, Beer and Maslow
schacon
PRO
155
7.9k
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
Stop Working from a Prison Cell
hatefulcrawdad
266
19k
Typedesign – Prime Four
hannesfritz
36
2.1k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
40
4.4k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
What's in a price? How to price your products and services
michaelherold
237
11k
Producing Creativity
orderedlist
PRO
337
39k
Automating Front-end Workflow
addyosmani
1356
200k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
30
6k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
357
22k
Transcript
「言語処理のための機械学習入門」 輪読会 #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|個用意し、 各事例x i を所属させる 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(c i 内の全ベクトルの平均, c j 内の全ベクトルの平均)
第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 22
exp xi − 2 22 x1 , x2 , …, xn が観測された際の尤度は L = P(x1 ) P(x2 )…P(xn ) = Π(xi ) = Π 1 22 exp − 2 22 ※同時確率と区別するため、あくまでパラメータがμ, σであることを強調することも L( μ, σ|x ) = Π 1 22 exp − 2 22 17 多変量正規分布における尤度 あるd次元の事例ベクトル()の生起確率を、正規分布の確率密度関数で表すと き(教科書では、それぞれの分散は同一と仮定されているので、) () = () = 1 22 exp () − 2 22 尤度は L = 1 22 exp ()− 2 22
正規分布と対数尤度 18 多変量正規分布における尤度 尤度は(教科書では、それぞれの分散は同一と仮定されているので、) () = () = 1 22
exp () − 2 22 尤度は L = 1 22 exp ()− 2 22 積のカタチで表されている尤度は扱いにくいため、「対数尤度」が用いられる ことが多い。 対数尤度は logL =log 1 22 exp − 2 22 = log 1 22 exp ()− 2 22
k-means法(重心法)とGMMの違い テキストの表現が入門者に優しくない P(c) という概念(隠れ変数) が抽象的なため、理解がなかなか難しい 19 混合正規分布(Gaussian Mixture)によるクラスタリング ざっくり言わないと
1.k個のクラスタの代表ベクトルm’(初期値)をランダムに決める 2.各事例ベクトルxが、どのクラスタに、各々どの程度の確率で属 するか(P( c | x(i); mOLD )を、P( x | c )が正規分布に従うと仮定して 計算する(GMM) 3.各クラスタの代表ベクトルを単純な重心ではなく、先ほど計算さ れた確率の重み付きで計算し、m NEW へ置き換える 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の数次第でアルゴリズムの挙動が全 く変わってしまう