SlideShare a Scribd company logo
1 of 56
Download to read offline
詳説
word2vec
word2vec
• 単語の意味をベクトルとして学習する手法
• 正確には分散表現(後述)を学習する
• word2vecという名前自体はその実装を指す
• 単語を数値として学習する事で、
他の学習やアプリケーションの素性として利用できる
• 言葉の意味を加減算できることで話題になった
• king – man + woman = queen など
2017/12/09 数学とコンピュータ Advent Calendar 2017 2
基礎知識
本題に入る前に共通の背景について補足
2017/12/09 数学とコンピュータ Advent Calendar 2017 3
分散表現 [Hinton 86]
• 局所表現
• 1つの概念に1つの計算要素を対応させる表現
• e.g.) 理想的なハッシュ関数、One-hotベクトル(後述)
• 分散表現
• 1つの概念を複数の計算要素で構成する表現
• 複数の計算要素の組み合わせで1つの概念を説明する
• e.g.) 多次元のベクトル
2017/12/09 数学とコンピュータ Advent Calendar 2017 4
One-hot ベクトル
• 単語列を入力とした学習のモデルを考える
• 単語を計算可能なベクトルに置き換えたい
• この変換がone-hotベクトル
• 入力: 文書中のある単語𝑤を表す One-hot ベクトル
• 次元数は入力文書の語彙数に等しい
• 本解説では語彙数と次元数を𝑉とする
• 語彙をOne-hotベクトルのインデックスに一対一対応
• 文書中の語彙集合が以下の場合の “fox” の表現を図示
0 0 0 1 0 0 0 0 0[ ]
𝑇
{The, quick, brown, fox, jumps, over, a, lazy, dog}
2017/12/09 数学とコンピュータ Advent Calendar 2017 5
以降One-hotベクトルはこのように図示
6
	0
	0
⋮
	1
	0
⋮
One-hot ベクトル
2017/12/09 数学とコンピュータ Advent Calendar 2017
単語ベクトル
• ある語彙を指す分散表現
• 次元数はパラメータであり、𝑁とする(基本的に200から500)
• 学習モデルは単語ベクトルを語彙の数結合した重み行列を持つ
• 入力層と隠れ層の間、隠れ層と出力層の間に重み行列を持つ
2017/12/09 数学とコンピュータ Advent Calendar 2017 7
⋮
以降単語ベクトルはこのように図示
入力ベクトル / 出力ベクトル
• 入力ベクトル: 入力層から隠れ層間の単語ベクトル
• 𝑖番目の語彙𝑤*に対応する入力ベクトルを 𝐯,-
(∈ ℝ0)とする
• 𝑉×𝑁次元の行列𝐖 = {𝑎67}は、
𝐖 = 𝐯,9
	𝐯,:
	⋯	𝐯,<
• 出力ベクトル: 入力層から隠れ層間の単語ベクトル
• 𝑖番目の語彙𝑤*に対応する出力ベクトルを𝐯′,-
(∈ ℝ0)とする
• 𝑁×𝑉次元の行列𝐖′ = {𝑎′76}は、
𝐖> =
𝐯′,9
?
𝐯′,:
?
⋮
𝐯′,<
?
2017/12/09 数学とコンピュータ Advent Calendar 2017 8
文脈
• word2vecで1単語について一度学習するために
入力として必要な周辺の単語数
• 補足: 「文脈(Context)」と「窓(Window)」
• 窓は文脈の具体的な幅を指す
• 本解説では窓は不用だが、実際の実装では窓で考える
• 学習中に窓の幅をランダムに変えることで精度が上がる手法
[Goldberg 14]など、改善の余地がありそうな部分
2017/12/09 数学とコンピュータ Advent Calendar 2017 9
入力: “Jackdaws love my big sphinx of quartz”
窓1: my sphinx
窓2: love my sphinx of
学習対象を”big”とした窓の例
本編
ここから論文の構成に併せていきます
2017/12/09 数学とコンピュータ Advent Calendar 2017 10
Abstract
• word2vecによる語の分散表現が注目を集めた
• しかし著者は包括的な説明がないことに気付く
• 本ノートでは以下の手法群[Mikolov 13a]
について詳細な導出を行う
• 学習手法
• Continuous Bag-of-Word
• Skip-Gram
• 最適化手法
• Hierarchical Softmax
• Negative Sampling
2017/12/09 数学とコンピュータ Advent Calendar 2017 11
Continuous Bag-of-Word
(CBOW)
入力する語(列)を固定し中央に現れる語を予測
簡便化のため
はじめに文脈が1つの場合を説明し
次に複数の場合について説明します
学習モデル(文脈1の場合)
• 入力する語を固定し隣に
共起する語を予測する
• 入力の語が決まった時に共
起する単語の事後確率が
最大になるよう学習
• 入力-隠れ層の計算
• 𝐖とOne-hotベクトル𝐱の積
• 語彙に対応する入力ベクト
ルを抜き出す操作に相当
• 隠れ層𝐡 = {ℎ7}の計算
• 入力の語彙を𝑖𝑛𝑝𝑢𝑡として
𝐡 = 𝐖𝐱 = 𝐯*7GHI
2017/12/09 数学とコンピュータ Advent Calendar 2017 13
!
"′
$×!
$
&
⋮
	0
	0
⋮
	1
	0
⋮
	0
	0
⋮
	1
	0
⋮
"
!×$
!
文脈1の場合のネットワーク図
学習モデル(文脈1の場合)
• 出力層のスコア𝑢(𝑖)
• 𝐖′の𝑖番目の出力ベクトルに
対して𝐡を掛けることで𝑖番目
の語彙のスコア𝑢(𝑖)を得る
𝑢* = 𝐯′,-
?
𝐡
• 出力層𝑦*
• 入力語𝑖𝑛𝑝𝑢𝑡が定まった時𝑤*
が共起する事後確率𝑦*を得る
• 出力は語の予想としてOne-
hotで出すためsoftmax関数
2017/12/09 数学とコンピュータ Advent Calendar 2017 14
𝑝 𝑤* 𝑖𝑛𝑝𝑢𝑡 = 𝑦* =
exp(𝑢*)
∑ exp(𝑢6)Q
6RS
=
exp(𝐯′,-
?
𝐯*7GHI)
∑ exp(𝐯′,T
?
𝐯*7GHI)Q
6RS
!
"′
$×!
$
&
⋮
	0
	0
⋮
	1
	0
⋮
	0
	0
⋮
	1
	0
⋮
"
!×$
!
文脈1の場合のネットワーク図
隠れ-出力間の重み更新
• 目的関数の最大化から出発
• 事後確率が最大となるような語彙のインデックスを𝑖∗とする
• 以下損失関数𝐸の導出
max	𝑝 𝑤*∗ 𝑖𝑛𝑝𝑢𝑡 = max	𝑦*∗			
= max log 𝑦*∗
= max 𝑢*∗ − log ] exp 𝑢6
Q
6RS
= max(−𝐸)
𝐸 ≔ −𝑢*∗ + log ] exp 𝑢6
Q
6RS
• この損失関数𝐸を最小化していく
• “Note that this loss function can be understood as a special case
of the cross-entropy measurement between two probabilistic
distributions.”
2017/12/09 数学とコンピュータ Advent Calendar 2017 15
隠れ-出力間の更新式導出
• 損失関数を偏微分していく
• ここで出力層の誤差𝑒*及びラベル𝑡*が定義される
𝜕𝐸
𝜕𝑢*
= 𝑦* − 𝑡* ≔ 𝑒*
𝑡* ≔ b
	1, 	𝑖 = 𝑖∗									
	0, otherwise
• 隠れ-出力間の重みから勾配を得る
• 𝐖′	の各要素𝑎′76で偏微分
𝜕𝐸
𝜕𝑎′76
=
𝜕𝐸
𝜕𝑢6
j
𝜕𝑢6
𝜕𝑎>
76
= 𝑒6 j ℎ7
2017/12/09 数学とコンピュータ Advent Calendar 2017 16
隠れ-出力間の更新式導出
• 確率的勾配降下法によって更新式を得る
• パラメータである学習率を𝜃(正の実数)とする
𝑎>
76
(7l,)
= 𝑎>
76
(mno)
− 𝜃 j 𝑒6 j ℎ7
または語𝑤*を用いて、
𝐯′,-
(7l,)
= 𝐯′,-
(mno)
− 𝜃 j 𝑒* j 𝐡								for	𝑖 = 1, 2, ⋯ , 𝑉
• 更新する毎に語彙全体の再計算になることに注意
2017/12/09 数学とコンピュータ Advent Calendar 2017 17
隠れ-出力間の更新式の直観的理解
𝐯′,-
(7l,)
= 𝐯′,-
(mno)
− 𝜃 j 𝑒* j 𝐡							for	𝑖 = 1, 2, ⋯ , 𝑉
• 過大評価(𝑦* > 𝑡*)ならば、
• 𝐯′,-
から𝐡の誤差を引く
• 入力語(列)の単語ベクトル 𝐯*7GHI から離れる
• 過小評価(𝑦* < 𝑡*	, 	i. e. 	𝑖𝑛𝑝𝑢𝑡 = 𝑤*∗)ならば、
• 𝐯,-
に𝐡の誤差を加える
• 入力語(列)の単語ベクトル 𝐯*7GHI へ近づく
• 𝑡*に近づくほど次回の更新量が少なくなる
• ここでの近づくや離れるといった言葉は
距離が内積であることに注意
2017/12/09 数学とコンピュータ Advent Calendar 2017 18
入力-隠れ間の更新式導出
• 続いて入力-隠れ間の重み𝐖の更新について考える
• まず損失関数を隠れ層の出力で偏微分する
• EH: 誤差で重み付けられた全ての出力ベクトルの和
𝜕𝐸
𝜕ℎ7
= ]
𝜕𝐸
𝜕𝑢6
j
𝜕𝑢6
𝜕ℎ7
Q
6RS
= ] 𝑒6 j 𝑎76
>
Q
6RS
≔ EH7
• 入力層の各要素を𝑥*とすると
ℎ7 = ] 𝑥6 j 𝑎67
Q
6RS
2017/12/09 数学とコンピュータ Advent Calendar 2017 19
入力-隠れ間の更新式導出
• 以上により𝐖の各要素について𝐸の偏微分が考えられる
𝜕𝐸
𝜕𝑎67
=
𝜕𝐸
𝜕ℎ7
j
𝜕ℎ7
𝜕𝑎67
= EH7 j 𝑥6
• 入力層のベクトル𝐱とEHのテンソル積と等価
𝜕𝐸
𝜕𝐖
= 𝐱⨂EH = 𝐱EH?
• 𝐱がOne-hot →
yz
y𝐖
の行もOne-hot (値はN次元のEH?)
• 従って𝐖の更新式は、
𝐯*7GHI
(7l,) = 𝐯*7GHI
(mno) − 𝜃 j EH?
2017/12/09 数学とコンピュータ Advent Calendar 2017 20
入力-隠れ間の更新式の直観的理解
𝐯*7GHI
(7l,) = 𝐯*7GHI
(mno) − 𝜃 j EH?
• 文脈の入力ベクトルへ全語彙の出力ベクトルの
誤差分を加える
• 出力層にて語𝑤*が出力される確率が
• 過大評価 𝑦* > 𝑡* :	文脈の語𝑖𝑛𝑝𝑢𝑡は𝑤*から離れる
• 過小評価 𝑦* < 𝑡* :	文脈の語𝑖𝑛𝑝𝑢𝑡は𝑤*へ近づく
• ラベルに近づく程に更新量も小さくなる
• 文脈の語の入力ベクトルの動きは
全語彙の出力ベクトルから決まる
2017/12/09 数学とコンピュータ Advent Calendar 2017 21
更新式の直観的理解
• 語𝑤の出力ベクトルは共起する近辺の単語列の
入力ベクトルに引き寄せられる
• 入力ベクトルは全出力ベクトルから引き寄せられている
• 引き寄せられる力は単語間の共起の強さと学習率に関係
• 多くの繰り返しの後、相対的な位置関係が安定する
2017/12/09 数学とコンピュータ Advent Calendar 2017 22
文脈が複数の場合
• 入力が単語列であり中央の
単語を予測する
• 計算機に文章の穴埋め問題を
学習させるようなイメージ
• 文脈の数が𝐶(正の整数)の
隠れ層の出力𝐡
• 入力される語が複数あるため
隠れ層で平均をとる
𝐡 =
1
𝐶
𝐖? 𝐱S + 𝐱~ + ⋯ + 𝐱•
=
1
𝐶
𝐯,9
+ 𝐯,:
+ ⋯ + 𝐯,€
?
2017/12/09 数学とコンピュータ Advent Calendar 2017 23
!
"′
$×!
$
&
⋮
⋮
	0
	0
⋮
	1
	0
⋮
"
!×$
⋮
	0
	0
⋮
	1
	0
⋮
"
!×$
⋮
	0
	0
⋮
	1
	0
⋮
"
!×$
⋮
	0
	0
⋮
	1
	0
⋮
"
!×$
	0
	0
⋮
	1
	0
⋮
	0
	0
⋮
	1
	0
⋮
+⋮
C×!
C×$
-input3
-input345
-input346
-input347
-89
文脈が複数の場合
• 損失関数は隠れ層以降しか着目しないため同じ
• 文脈内で𝑐番目の入力語を𝑖𝑛𝑝𝑢𝑡‚とする
𝐸	= − log 𝑝 𝑤*∗ 𝑖𝑛𝑝𝑢𝑡S, 𝑖𝑛𝑝𝑢𝑡~	, … , 𝑖𝑛𝑝𝑢𝑡•
	= −𝑢*∗ + log ] exp 𝑢6
Q
6RS
	= −𝐯>
,-∗
?
⋅ 𝐡 + log ] exp 𝐯>
,T
?
⋅ 𝐡
Q
6RS
2017/12/09 数学とコンピュータ Advent Calendar 2017 24
文脈が複数の場合
• 隠れ-出力間の更新式も同じ
𝐯′,-
(7l,)
= 𝐯′,-
(mno)
− 𝜃 j 𝑒* j 𝐡							for	𝑖 = 1, 2, ⋯ , 𝑉
• 入力-隠れ間の更新式は文脈𝑖𝑛𝑝𝑢𝑡‚全てに対して更新
• EHも変更無し
𝐯*7GHI…
(7l,) = 𝐯*7GHI…
(mno) −
1
𝐶
j 𝜃 j EH?					for	𝑐 = 1, 2, ⋯ , 𝐶	
2017/12/09 数学とコンピュータ Advent Calendar 2017 25
Skip-Gram
ある単語を入力とした時
周辺にどのような語群が現れるか予測する
はじめから文脈が複数の場合で説明
学習モデル
• CBOWとは対照的にある単
語を入力とした時、周辺に
どのような語群が現れるか
学習する
• 入力の単語が決まった時に
周辺に共起する語群の事後
確率が最大になるよう学習
• 隠れ層𝐡 = {ℎ7}の計算
• 常時恒等関数になる
𝐡 = 𝐖𝐱 = 𝐯*7GHI
2017/12/09 数学とコンピュータ Advent Calendar 2017 27
!w"
#
$ $
%
	0
	0
⋮
	1
	0
⋮
	0
	0
⋮
	1
	0
⋮
	0
	0
⋮
	1
	0
⋮
	0
	0
⋮
	1
	0
⋮
*×#
,′
$×#
,′
$×#
,
#×$
	0
	0
⋮
	1
	0
⋮
⋮ ⋮
	0
	0
⋮
	1
	0
⋮
学習モデル
• 出力層の計算
• 1つ1つの事後確率の求め方
は文脈が1つのCBOWと同じ
• ただし文脈が出力側にある
• 𝑐番目の文脈を𝑜𝑢𝑡𝑝𝑢𝑡‚とし
行列のインデックスには𝑜𝑢𝑡‚
が対応する
• 結果は各文脈の同時確率
• 文脈毎のスコア
• 出力層のスコアを
文脈𝑜𝑢𝑡𝑝𝑢𝑡‚毎に計算する
以外はCBOWの 𝑢*と同じ
2017/12/09 数学とコンピュータ Advent Calendar 2017 28
!w"
#
$ $
%
	0
	0
⋮
	1
	0
⋮
	0
	0
⋮
	1
	0
⋮
	0
	0
⋮
	1
	0
⋮
	0
	0
⋮
	1
	0
⋮
*×#
,′
$×#
,′
$×#
,
#×$
	0
	0
⋮
	1
	0
⋮
⋮ ⋮
	0
	0
⋮
	1
	0
⋮
学習モデル
• 出力層の𝑐番目の文脈のスコア𝑢‚,*
𝑢‚,* = 𝑢* = 𝐯′,-
?
𝐡						for	𝑐 = 1, 2, ⋯ , 𝐶	
• 入力語が𝑖𝑛𝑝𝑢𝑡の時の出力層の計算
• 𝑐番目の文脈の語に対する出力層の計算𝑦*は
𝑦‚,* =
exp 𝑢‚,*
∑ exp(𝑢6)Q
6RS
• 𝐶個の出力層の語群𝑜𝑢𝑡𝑝𝑢𝑡S, 𝑜𝑢𝑡𝑝𝑢𝑡~, ⋯ , 𝑜𝑢𝑡𝑝𝑢𝑡•が
共起する確率は
𝑝 𝑜𝑢𝑡𝑝𝑢𝑡S, 𝑜𝑢𝑡𝑝𝑢𝑡~, ⋯ , 𝑜𝑢𝑡𝑝𝑢𝑡• 𝑖𝑛𝑝𝑢𝑡 = ‡ 𝑦‚,mHI…
•
‚RS
2017/12/09 数学とコンピュータ Advent Calendar 2017 29
更新式の導出
• 𝑖‚
∗ を実際に現れた𝑐番目の文脈に対応する重み行列の
インデックスとする
• 損失関数𝐸は
𝐸	= − log 𝑝 𝑜𝑢𝑡𝑝𝑢𝑡S, 𝑜𝑢𝑡𝑝𝑢𝑡~, ⋯ , 𝑜𝑢𝑡𝑝𝑢𝑡• 𝑖𝑛𝑝𝑢𝑡 	
	= − log ‡
exp 𝑢*…
∗
∑ exp(𝑢6)Q
6RS
•
‚RS
	
	= − ] 𝑢*…
∗
•
‚RS
+ 𝐶 ⋅ log ] exp 𝑢6
Q
6RS
2017/12/09 数学とコンピュータ Advent Calendar 2017 30
更新式の導出
• 各スコアで偏微分し文脈毎の誤差𝑒‚,*を定義する
𝜕𝐸
𝜕𝑢‚,*
= 𝑦‚,* − 𝑡‚,* ≔ 𝑒‚,*
𝑡‚,* ≔ b
	1, 	𝑖 = 𝑖∗									
	0, otherwise
• ある語彙の全文脈の誤差の総和EI*を全語彙について
まとめた𝑉次元ベクトルをEI = {EIS, ⋯ , EIQ}とする
EI* ≔ ] 𝑒‚,*
•
‚RS
2017/12/09 数学とコンピュータ Advent Calendar 2017 31
更新式の導出
• 𝐸を隠れ-出力間の行列𝐖′	について微分する
𝜕𝐸
𝜕𝑎′76
=
𝜕𝐸
𝜕𝑢‚,6
j
𝜕𝑢‚,6
𝜕𝑎>
76
= EI6 j ℎ7
• 以上により隠れ-出力間の行列𝐖′	の更新式を得る
• パラメータである学習率を𝜃(正の実数)とする
𝑎>
76
(7l,)
= 𝑎>
76
(mno)
− 𝜃 j EI6 j ℎ7
または語𝑤*を用いて、
𝐯′,-
(7l,)
= 𝐯′,-
(mno)
− 𝜃 j EI* j 𝐡								for	𝑖 = 1, 2, ⋯ , 𝑉
2017/12/09 数学とコンピュータ Advent Calendar 2017 32
更新式の導出
• 入力-隠れ間行列の更新式はCBOWの時と基本的に同じ
𝐯*7GHI
(7l,) = 𝐯*7GHI
(mno) − 𝜃 j EH?
• 但しEHの内容が異なる
• EHは以下の要素からなる𝑁次元ベクトルである
EH7 = ] EI6 ⋅ 𝑎76
>
Q
6RS
2017/12/09 数学とコンピュータ Advent Calendar 2017 33
Optimizing Computational Effciency
CBOW/Skip-Gram両者に使える最適化手法
概要
• これまでは最適化手法を適用してない状態
• CBOW/Skip-Gram共にbigramモデル
• 全語彙に対し入力及び出力ベクトルを求める必要あり
• 特に出力ベクトルが計算量が大きい
• 本章では2つの最適化手法を紹介する
• 両手法は出力ベクトルの計算量を削減する
• 特に3つの値に注目する
• 損失関数 𝐸
• 出力ベクトルの更新式
yz
y𝐯‰-
Š
• 入力ベクトルを更新する際に逆伝搬する誤差の総和
yz
y𝐡
2017/12/09 数学とコンピュータ Advent Calendar 2017 35
Hierarchical Softmax
出力ベクトルを2分木で持ち
一部だけを計算と更新に用いる
概要
• softmax関数の高速な計算手法[Morin 05] [Mnih 09]
• 全語彙を葉とする2分木で出力ベクトルを表現する
2017/12/09 数学とコンピュータ Advent Calendar 2017 37
!" !# !$ !% !&'" !&
⋯
⋮
⋮
⋮
⋮
⋮
*(!#, 1)
*(!#, 2)
*(!#, 3)
• 葉以外の節(以降内部節)は𝑉 − 1個
• 語彙は各葉に対応し、
根から唯一の経路が存在
• 根から語𝑤への経路の内、
𝑖番目の節を𝑛(𝑤, 𝑖)で指す
• 内部節は出力ベクトル
𝐯>
7(,,*)を持つ
• 実際には内部節が
常に2つの子を持ち
高速なハフマン木を採用
• 語𝑤~を指す例を右に図示
概要
• ある語𝑜𝑢𝑡𝑝𝑢𝑡が出力される確率を以下のように定義する
• 語𝑤の深さを𝐿(𝑤)とする
• 根から語𝑤への経路の𝑖番目の節を𝑛(𝑤, 𝑖)で指す
• 葉以外の節は出力ベクトル𝐯>
7(,,*)を持つ
• ch(𝑛)は節𝑛の左の子
nd 𝑤, 𝑖 ≔ •
	1, 	𝑛 𝑤, 𝑖 + 1 = ch 𝑛 𝑤, 𝑖
	−1, 	otherwise
𝑝 𝑤 = 𝑜𝑢𝑡𝑝𝑢𝑡 ≔ ‡ 𝜎 nd 𝑤, 𝑖 ⋅ 𝐯>
7 ,,*
?
𝐡
‘ , ’S
*RS
2017/12/09 数学とコンピュータ Advent Calendar 2017 38
確率に関する説明
• この確率の直観的理解
• 根からランダムウォークし
ある葉に到達する確率として定義
• 各葉以外の節にて左に行く確率及び右に行く確率を設定する
𝑝 𝑛, left 	≔ 𝜎 𝐯>
7
?
𝐡
𝑝 𝑛, right 	≔ 1 − 𝜎 𝐯>
7
?
𝐡 = 𝜎 −𝐯>
7
?
𝐡
• これを各深さについて同時確率をとったものが先の式になる
𝑝 𝑤 = 𝑜𝑢𝑡𝑝𝑢𝑡 = ‡ 𝜎 nd 𝑤, 𝑖 ⋅ 𝐯>
7 ,,*
?
𝐡
‘ , ’S
*RS
• Hierarchical Softmaxは全語彙の多項分布として定義される
ため以下を検証するのは難しくない
] 𝑝 𝑤* = 𝑤“
Q
*RS
= 1
2017/12/09 数学とコンピュータ Advent Calendar 2017 39
!" !# !$ !% !&'" !&
⋯
⋮
⋮
⋮
⋮
⋮
*(!#, 1)
*(!#, 2)
*(!#, 3)
パラメータの更新式
• 文脈が1語の場合から説明
• 損失関数𝐸はある語の出力される負の対数尤度
𝐸 ≔ − log 𝑝 𝑤 = 𝑜𝑢𝑡𝑝𝑢𝑡 𝑖𝑛𝑝𝑢𝑡 = − ] log 𝜎 nd 𝑤, 𝑖 𝐯>
7 ,,*
?
𝐡
‘ , ’S
*RS
• 𝐸を𝐯>
7 ,,*
?
𝐡について偏微分する
• 𝑡7(,,*)をnd 𝑤, 𝑖 = 1のとき1	、それ以外で0を返すラベルとすると
𝜕𝐸
𝜕𝐯>
7 ,,*
?
𝐡
	= 𝜎 nd 𝑤, 𝑖 𝐯>
7 ,,*
?
𝐡 − 1 ⋅ nd 𝑤, 𝑖
	= ”
	𝜎 𝐯>
7 ,,*
?
𝐡 − 1, 	nd 𝑤, 𝑖 	= 1
	𝜎 𝐯>
7 ,,*
?
𝐡 , 	nd 𝑤, 𝑖 	= −1
	= 𝜎 𝐯>
7 ,,*
?
𝐡 − 𝑡7(,,*)
2017/12/09 数学とコンピュータ Advent Calendar 2017 40
出力ベクトルの更新式
• 𝐸を𝑛(𝑤, 𝑖)のベクトルで偏微分する
𝜕𝐸
𝜕𝐯>
7 ,,*
=
𝜕𝐸
𝜕𝐯>
7 ,,*
?
𝐡
⋅
𝜕𝐯>
7 ,,*
?
𝐡
𝜕𝐯>
7 ,,*
= 𝜎 𝐯>
7 ,,*
?
𝐡 − 𝑡7 ,,* ⋅ 𝐡
• 以上より節のベクトルの更新式は
𝐯′7 ,,*
(7l,)
= 𝐯′7 ,,*
(mno)
− 𝜃 j 𝜎 𝐯>
7 ,,*
?
𝐡 − 𝑡7 ,,* ⋅ 𝐡
• 語𝑤を更新する度𝑖 = 1, 2, ⋯ , 𝐿 𝑤 − 1を更新する
2017/12/09 数学とコンピュータ Advent Calendar 2017 41
出力ベクトルの更新式の直観的理解
• 内部節にとっての”タスク”は
左右のどちらに進むか決定すること
• 𝑡7 ,,* = 1なら左の子へ𝑡7 ,,* = 0なら右の子へ
• 𝜎 𝐯>
7 ,,*
?
𝐡 は予測結果
• 誤差が減るように𝐯>
7 ,,* が𝐡へ近付くまたは離れる
• 内部節の予測が答えに近い程更新は小さくなる
• skip-gramの場合は出力語の文脈だけ繰り返す
• 余談(P.16):”the ground truth”は幾つかの分野のターム
• 直接データを観測し経験的に得られた(正解集合としたい)情報
• 機械学習ではラベルにあたる
• つまり”truth”に対し間違っている可能性が含まれる
2017/12/09 数学とコンピュータ Advent Calendar 2017 42
入力-隠れ間の更新式
• 𝐸を隠れ層の出力で偏微分する
𝜕𝐸
𝜕𝐡
	= ]
𝜕𝐸
𝜕𝐯>
7 ,,*
?
𝐡
⋅
𝜕𝐯>
7 ,,*
?
𝐡
𝜕𝐡
‘ , ’S
*RS
	= ] 𝜎 𝐯>
7 ,,*
?
𝐡 − 𝑡7 ,,* ⋅ 𝐯>
7 ,,*
‘ , ’S
*RS
≔ EH
• CBOWモデル: 更新式(スライドP.25)のEHと差し替える
• Skip-Gramモデル: 文脈毎に計算したEHの総和を
更新式(スライドP.33)のEHと差し替える
• 出力ベクトルの数をほぼ同数(𝑉 − 1個)に保ちつつ
計算量を文脈毎に𝑂 log 𝑉 まで削減
2017/12/09 数学とコンピュータ Advent Calendar 2017 43
Negative Sampling
各イテレーションにて出力ベクトルを全て更新せず
分布に応じて負例をサンプリングし計算量を削減
概要
• イテレーション毎に全ての出力ベクトルを更新しない
• 出力語として正しい語(正例,	positive	sample)を1つ選び、
間違った語(負例,	negetive	sample)を幾つかサンプル
• サンプルには何らかの確率的分布が必要
• これをノイズ分布𝑃7と呼ぶ
• 経験的に良い分布としてユニグラムの
˜
™
乗が知られている
[Mikolov 13b]
2017/12/09 数学とコンピュータ Advent Calendar 2017 45
損失関数の導出[Goldberg 14]
• 単純な単語予測のモデルから導出される
• 𝑤, 𝑐 を予測される語と文脈の組とする
• 組が入力文書集合𝐷にある確率を𝑝 𝐷 = 1|𝑤, 𝑐 とし、
無い確率を𝑝 𝐷 = 0|𝑤, 𝑐 = 1 − 𝑝 𝐷 = 1|𝑤, 𝑐 とする
• このモデルの確率分布のパラメータを𝜆とする
• 実際に観測される組全ての確率を最大化する𝜆を探索する
arg	max
Ÿ
‡ 𝑝 𝐷 = 1|𝑤, 𝑐; 𝜆
,,‚ ∈¢
	= arg	max
Ÿ
log ‡ 𝑝 𝐷 = 1|𝑤, 𝑐; 𝜆
,,‚ ∈¢
	= arg	max
Ÿ
] log 𝑝 𝐷 = 1|𝑤, 𝑐; 𝜆
,,‚ ∈¢
2017/12/09 数学とコンピュータ Advent Calendar 2017 46
損失関数の導出[Goldberg 14]
• 𝑝 𝐷 = 1|𝑤, 𝑐; 𝜆 の量はsoftmaxを用いて定義される
𝑝 𝐷 = 1|𝑤, 𝑐; 𝜆 ≔
1
1 + 𝑒’𝐯…
£ 𝐯‰
• ここまでの目的関数が導かれる
arg	max
Ÿ
] log
1
1 + 𝑒’𝐯…
£ 𝐯‰
,,‚ ∈¢
• この目的関数には問題がある
• この関数は全ての 𝑤, 𝑐 が𝑝 𝐷 = 1|𝑤, 𝑐; 𝜆 = 1になれば良い
• 全ての𝐯‚, 𝐯,に対し𝐯‚ = 𝐯,かつ𝐯‚
? 𝐯, = 𝑄となる𝜆で達成できる
• 𝑄は充分に大きな数字
• 著者らによればQ ≈ 40で全ての確率が1にサチる
2017/12/09 数学とコンピュータ Advent Calendar 2017 47
損失関数の導出[Goldberg 14]
• 全てのベクトルが同じ値になることを防ぐ仕組みが必要
• 文書に無い組合わせの値を下げる方法が考えられる
• 全て間違いのランダムな 𝑤, 𝑐 を含む負例集合𝐷′を導入
• 本手法名は負例(negative example)を
randomly samplingすることに起因する
2017/12/09 数学とコンピュータ Advent Calendar 2017 48
損失関数の導出[Goldberg 14]
• 再び目的関数を導出する
arg	max
Ÿ
‡ 𝑝 𝐷 = 1|𝑤, 𝑐; 𝜆
,,‚ ∈¢
‡ 𝑝 𝐷 = 0|𝑤, 𝑐; 𝜆
,,‚ ∈¢>
	
	= arg	max
Ÿ
] log 𝑝 𝐷 = 1|𝑤, 𝑐; 𝜆
,,‚ ∈¢
+ ] log 1 − 𝑝 𝐷 = 1|𝑤, 𝑐; 𝜆
,,‚ ∈¢>
	= arg	max
Ÿ
] log
1
1 + 𝑒’𝐯…
£ 𝐯‰
,,‚ ∈¢
+ ] log 1 −
1
1 + 𝑒’𝐯…
£ 𝐯‰
,,‚ ∈¢>
	= arg	max
Ÿ
] log
1
1 + 𝑒’𝐯…
£ 𝐯‰
,,‚ ∈¢
+ ] log
1
1 + 𝑒 𝐯…
£ 𝐯‰
,,‚ ∈¢>
2017/12/09 数学とコンピュータ Advent Calendar 2017 49
損失関数の導出[Goldberg 14]
• ここでシグモイド𝜎 𝑥 =
S
S¨l©ªより
arg	max
Ÿ
] log
1
1 + 𝑒’𝐯…
£ 𝐯‰
,,‚ ∈¢
+ ] log
1
1 + 𝑒 𝐯…
£ 𝐯‰
,,‚ ∈¢>
= arg	max
Ÿ
] log 𝜎 𝐯‚
? 𝐯,
,,‚ ∈¢
+ ] log 𝜎 −𝐯‚
? 𝐯,
,,‚ ∈¢>
• 最小化問題とすることで損失関数が得られる
arg	min
Ÿ
− ] log 𝜎 𝐯‚
? 𝐯,
,,‚ ∈¢
− ] log 𝜎 −𝐯‚
? 𝐯,
,,‚ ∈¢>
• これに次ページの不足分を取り入れることで
Negative Samplingの損失関数となる
2017/12/09 数学とコンピュータ Advent Calendar 2017 50
Negative Samplingへの不足分
• 𝐷と𝐷′の比をパラメータ𝐾とする
• 前述の導出では入力文書全体を用いて𝐷⋃𝐷′とした
• Negative Samplingでは1つの正例 𝑤, 𝑐 を更新する度
𝐾個の負例 𝑤, 𝑐S , ⋯ , 𝑤, 𝑐- を更新する
• 従って𝐷と𝐷′の比が1: 𝐾となる
• 𝐷′をノイズ分布𝑃7からサンプリングする事で生成
• 前述の導出ではランダムだが
𝑤, 𝑐 は以下のノイズ分布𝑃7に従う
𝑤, 𝑐 	~	𝑝,m¯o° 𝑤
𝑝‚m7Il±I° 𝑐
˜
™
𝑍
• 𝑍は正規化定数
• Mikolovらの論文[Mikolov 13b]では
𝑝,m¯o° 𝑤 = 𝑝‚m7Il±I° 𝑐 =	「ある語の頻度/入力文書の全語数」
2017/12/09 数学とコンピュータ Advent Calendar 2017 51
Negative Samplingの損失関数
• 以上の導出を本スライドに適用した損失関数𝐸を用いる
• 𝑤“は正例の出力語
• 𝑊7l´ = 𝑤* 𝑖 = 1, ⋯ , 𝐾}はノイズ分布𝑃7から
サンプリングした負例集合
• 更新毎のサンプリング数𝐾はパラメータ
𝐸 ≔ − log 𝜎 𝐯,µ
> ?
𝐡 − ] log 𝜎 −𝐯>
,-
?
𝐡
,-∈¶·¸¹
𝐡 ≔ º
1
𝐶
] 𝐯,-
•
*RS
, 		CBOWの場合									
𝐯*7GHI, 														Skip−Gramの場合
2017/12/09 数学とコンピュータ Advent Calendar 2017 52
更新式導出
• まず𝐸を出力語𝑤*のスコア値で偏微分
• 重み行列𝑖番目の語のラベルを𝑡*として
	
𝜕𝐸
𝐯,-
> ?
𝐡
	= ”
	𝜎 𝐯,-
> ?
𝐡 − 1, 	 𝑤* = 𝑤“
	𝜎 𝐯,-
> ?
𝐡 , 				𝑤* ∈ 𝑊7l´
	= 𝜎 𝐯,-
> ?
𝐡 − 𝑡*
• 出力ベクトル𝐯,-
> について偏微分
𝜕𝐸
𝜕𝐯,-
>
=
𝜕𝐸
𝜕𝐯,-
> ?
𝐡
⋅
𝜕𝐯,-
> ?
𝐡
𝜕𝐯,-
>
= 𝜎 𝐯,-
> ?
𝐡 − 𝑡* 𝐡
2017/12/09 数学とコンピュータ Advent Calendar 2017 53
出力-隠れ間の更新式
• 出力ベクトルの更新式が得られる
𝐯′,-
(7l,)
= 𝐯′,-
(mno)
− 𝜃 j 𝜎 𝐯,-
> ?
𝐡 − 𝑡* j 𝐡
• 1更新毎に語群𝑤* ∈ 𝑤“ ⋃𝑊7l´について計算するだけ
• 両モデルについてそのまま適用可能
• ただしSkip-Gramモデルでは文脈毎の計算を忘れない事
2017/12/09 数学とコンピュータ Advent Calendar 2017 54
入力-隠れ間の更新式
• 入力-隠れ間の更新式を求めるには𝐡で偏微分する
𝜕𝐸
𝜕𝐡
	= ]
𝜕𝐸
𝜕𝐯,-
> ?
𝐡
⋅
𝜕𝐯,-
> ?
𝐡
𝜕𝐡
,-∈ ,µ ⋃¶·¸¹
	= ] 𝜎 𝐯,-
> ?
𝐡 − 𝑡* 𝐯,-
> ≔ EH
,-∈ ,µ ⋃¶·¸¹
• CBOWモデル: 更新式(スライドP.25)のEHと差し替える
• Skip-Gramモデル: 文脈毎に計算したEHの総和を
更新式(スライドP.33)のEHと差し替える
• Skip-Gramとの組み合わせ(SGNS)が
word2vecの手法で最も有名
2017/12/09 数学とコンピュータ Advent Calendar 2017 55
参考文献 (登場順)
• 本スライド作成元
[Rong 14] Rong, X.: Word2vec parameter learning
explained, arxiv preprint arXiv:1411.2738 (2014)
• 図式提供
自作
• その他文献
[Hinton 86] Hinton, G. E., McClelland, J. L., and Rumelhart,
D. E.: Distributed representations, in Parallel distributed
processing: Explorations in the microstructure of cognition,
Vol. 1, chapter 3, pp. 77–109, MIT Press Cambridge, MA,
USA (1986)
[Goldberg 14] Goldberg, Y. and Levy, O.: word2vec
explained: deriving mikolov et al. ’s negative sampling
word-embedding method, arXiv preprint arXiv:1402.3722
(2014)
[Mikolov 13a] Mikolov, T., Chen, K., Corradoa, G., and
Dean, J.: Efficient estimation of word representations in
vector space, International Conference on Learning
Representations (2013)
[Morin 05] Morin, F. and Bengio, Y.: Hierarchical
probabilistic neural network language model, In AISTATS,
Vol. 5, pp. 246–252, Citeseer. (2005)
[Mnih 09] Mnih, A. and Hinton, G. E.: A scalable
hierarchical distributed language model, In Koller, D.,
Schuurmans, D., Bengio, Y., and Bottou, L., editors,
Advances in Neural Information Processing Systems 21,
pp. 1081–1088, Curran Associates, Inc. (2009)
[Mikolov 13b] Mikolov, T., Sutskever, I., Chen, K., Corrado,
G., and Dean, J.: Distributed Representations of Words and
Phrases and their Compositionality, Advances in Neural
Information Processing Systems, pp. 3111–3119 (2013)
2017/12/09 数学とコンピュータ Advent Calendar 2017 56

More Related Content

What's hot

状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38
horihorio
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
Kawamoto_Kazuhiko
 
変分推論と Normalizing Flow
変分推論と Normalizing Flow変分推論と Normalizing Flow
変分推論と Normalizing Flow
Akihiro Nitta
 

What's hot (20)

【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools
【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools
【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools
 
状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
 
ナレッジグラフ入門
ナレッジグラフ入門ナレッジグラフ入門
ナレッジグラフ入門
 
ノンパラベイズ入門の入門
ノンパラベイズ入門の入門ノンパラベイズ入門の入門
ノンパラベイズ入門の入門
 
【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法【DL輪読会】時系列予測 Transfomers の精度向上手法
【DL輪読会】時系列予測 Transfomers の精度向上手法
 
トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?
 
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
 
混合モデルとEMアルゴリズム(PRML第9章)
混合モデルとEMアルゴリズム(PRML第9章)混合モデルとEMアルゴリズム(PRML第9章)
混合モデルとEMアルゴリズム(PRML第9章)
 
【DL輪読会】Perceiver io a general architecture for structured inputs &amp; outputs
【DL輪読会】Perceiver io  a general architecture for structured inputs &amp; outputs 【DL輪読会】Perceiver io  a general architecture for structured inputs &amp; outputs
【DL輪読会】Perceiver io a general architecture for structured inputs &amp; outputs
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
 
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
 
[研究室論文紹介用スライド] Adversarial Contrastive Estimation
[研究室論文紹介用スライド] Adversarial Contrastive Estimation[研究室論文紹介用スライド] Adversarial Contrastive Estimation
[研究室論文紹介用スライド] Adversarial Contrastive Estimation
 
変分推論と Normalizing Flow
変分推論と Normalizing Flow変分推論と Normalizing Flow
変分推論と Normalizing Flow
 
グラフ構造データに対する深層学習〜創薬・材料科学への応用とその問題点〜 (第26回ステアラボ人工知能セミナー)
グラフ構造データに対する深層学習〜創薬・材料科学への応用とその問題点〜 (第26回ステアラボ人工知能セミナー)グラフ構造データに対する深層学習〜創薬・材料科学への応用とその問題点〜 (第26回ステアラボ人工知能セミナー)
グラフ構造データに対する深層学習〜創薬・材料科学への応用とその問題点〜 (第26回ステアラボ人工知能セミナー)
 
21世紀の手法対決 (MIC vs HSIC)
21世紀の手法対決 (MIC vs HSIC)21世紀の手法対決 (MIC vs HSIC)
21世紀の手法対決 (MIC vs HSIC)
 
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
 
深層生成モデルと世界モデル(2020/11/20版)
深層生成モデルと世界モデル(2020/11/20版)深層生成モデルと世界モデル(2020/11/20版)
深層生成モデルと世界モデル(2020/11/20版)
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
 
【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces
【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces
【DL輪読会】Efficiently Modeling Long Sequences with Structured State Spaces
 

Similar to 詳説word2vec

LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門
Yuichiro Kobayashi
 
mathemaical_notation
mathemaical_notationmathemaical_notation
mathemaical_notation
Kenta Oono
 
Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章
Prunus 1350
 
Math tutorial public
Math tutorial publicMath tutorial public
Math tutorial public
Kenta Oono
 
2011年11月11日
2011年11月11日2011年11月11日
2011年11月11日
nukaemon
 

Similar to 詳説word2vec (20)

Icml2011 reading-sage
Icml2011 reading-sageIcml2011 reading-sage
Icml2011 reading-sage
 
LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門
 
mathemaical_notation
mathemaical_notationmathemaical_notation
mathemaical_notation
 
Hessian free
Hessian freeHessian free
Hessian free
 
Python opt
Python optPython opt
Python opt
 
Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章
 
Math tutorial public
Math tutorial publicMath tutorial public
Math tutorial public
 
Yamadai.Rデモンストレーションセッション
Yamadai.RデモンストレーションセッションYamadai.Rデモンストレーションセッション
Yamadai.Rデモンストレーションセッション
 
Rustで始める競技プログラミング
Rustで始める競技プログラミングRustで始める競技プログラミング
Rustで始める競技プログラミング
 
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
 
Computing for Isogeny Kernel Problem by Groebner Basis
Computing for Isogeny Kernel Problem by Groebner BasisComputing for Isogeny Kernel Problem by Groebner Basis
Computing for Isogeny Kernel Problem by Groebner Basis
 
Hyperoptとその周辺について
Hyperoptとその周辺についてHyperoptとその周辺について
Hyperoptとその周辺について
 
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
 
PRML 8.4-8.4.3
PRML 8.4-8.4.3 PRML 8.4-8.4.3
PRML 8.4-8.4.3
 
Pythonintro
PythonintroPythonintro
Pythonintro
 
データサイエンス概論第一=2-1 データ間の距離と類似度
データサイエンス概論第一=2-1 データ間の距離と類似度データサイエンス概論第一=2-1 データ間の距離と類似度
データサイエンス概論第一=2-1 データ間の距離と類似度
 
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)
 
2011年11月11日
2011年11月11日2011年11月11日
2011年11月11日
 
Learning to automatically solve algebra word problems
Learning to automatically solve algebra word problemsLearning to automatically solve algebra word problems
Learning to automatically solve algebra word problems
 
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1
 

詳説word2vec