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
Lakebaseを使ったAIエージェントを実装してみる
kameitomohiro
0
160
[ JAWS-UG千葉支部 x 彩の国埼玉支部 ]ムダ遣い卒業!FinOpsで始めるAWSコスト最適化の第一歩
sh_fk2
2
140
american aa airlines®️ USA Contact Numbers: Complete 2025 Support Guide
aaguide
0
390
VGGT: Visual Geometry Grounded Transformer
peisuke
1
200
〜『世界中の家族のこころのインフラ』を目指して”次の10年”へ〜 SREが導いたグローバルサービスの信頼性向上戦略とその舞台裏 / Towards the Next Decade: Enhancing Global Service Reliability
kohbis
2
370
Contributing to Rails? Start with the Gems You Already Use
yahonda
2
110
2025-07-06 QGIS初級ハンズオン「はじめてのQGIS」
kou_kita
0
180
オフィスビルを監視しよう:フィジカル×デジタルにまたがるSLI/SLO設計と運用の難しさ / Monitoring Office Buildings: The Challenge of Physical-Digital SLI/SLO Design & Operation
bitkey
1
120
衛星運用をソフトウェアエンジニアに依頼したときにできあがるもの
sankichi92
1
160
shake-upを科学する
rsakata
7
790
AI専用のリンターを作る #yumemi_patch
bengo4com
6
4.4k
CDK Toolkit Libraryにおけるテストの考え方
smt7174
0
120
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
140
7k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
980
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
Site-Speed That Sticks
csswizardry
10
690
The Straight Up "How To Draw Better" Workshop
denniskardys
235
140k
Docker and Python
trallard
44
3.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
The Pragmatic Product Professional
lauravandoore
35
6.7k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.4k
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の数次第でアルゴリズムの挙動が全 く変わってしまう