最先端NLP2020“Kernelized Bayesian Softmaxfor Text Generation”(Miao+, NeurIPS 2019)
持橋大地
統計数理研究所 数理・推論研究系
daichi@ism.ac.jp
2020-9-25(金)どんな論文?

l ニューラルネットで最後に単語を出力するSoftmaxレイヤ

を改良
l 単語ベクトルが一つに決まっていると、複数の意味がある場合に問題 à 混合モデルにしてSoftmaxを計算– カーネル関数による内積を用いることで、柔軟なモデル化
l カーネル関数のパラメータも自動学習à 意味によって分散が異なる (一般的な単語には大きな分散)
l Seq2seq, Transformerと接続することで高い生成性能

背景

l 単語の意味は必ずしも一意ではない– 上は、BERTによる単語のEmbeddingの例
l 3つの性質(1) 単語の意味は複数のクラスタに分かれる →図(b)(2) 各クラスタの分散はそれぞれ異なる →図(a),(c)(3) 外れ値が存在する →図(b)意味と外れ値l 複数の意味を持つ単語の例: 有名なbank以外にも、“change”, “sentence”, “brother” など多数ある
l “monitor” の意味の外れ値...?

従来のアプローチ

l Word2vec, GloVe: 意味は単語に一つl BERT: 単語の意味はすべて動的に決まるが、大量データが必要、専用アーキテクチャ
l Vilnis and McCallum (2015): 単語の意味をガウス分布で表現、KLダイバージェンスで類似度を測る
l Athiwaratkun and Wilson (2017): 混合ガウス分布で単語の意味を表現
l Sun+ (2018): KLは数値的に不安定なため、Wasserstein
距離を導入

KerBS: Kernelized Bayesian Softmaxl 単純に、意味を混合モデルとして考える

l ニューラルネットの最終層からactivation ht が出力される

時、

8>
>
>
< p(yt = w|ht )=KXp(yt = w, st = k|ht )k=1!
exp(k(h,wk ))>✓t>>: p(yt = w, st = k|ht ) = PW PK!
exp(k(h,wk ))
✓tw=1
k=1
<latexit sha1_base64="CoSRp/iPJHwdOkKc8iUkMLaOafo=">AAAI1nicjZVLb9NAEMcnLY9gHm3hgsQlJUqVSm3YpAgQUqUWqKBqVbUppam6JbLdTWLFTizbTZoac0NInDjBgRNIHBBfgRsC8QU49CMgjkXiwoHx2lEe3hRsJd6d+f3HM7vrXcXUNdsh5DA2NHzi5KnT8TPS2XPnL4yMjl18ZNf3LJVtqHW9bhUU2Wa6VmMbjuborGBaTDYUnW0q1bu+f7PBLFur1x46LZPtGHK5ppU0VXbQVByLXaM6KznUpeMpiSqsrNVc2bLklufquieZ6VbRoeOzdLz5pFJ0Jidm6a5mm7rcsp2WzhLU3jOKbnU26z12qW3IdsVd8jwp0aWbssNWlUdIULo9TTIzzNiRBlO0YpuyytzpbOYG2/cSE7OJnhdLtGTJqkvZvpmuFqlTYY6cRuEUbTDVbXpFrKfqTU56khuk2PRT3OxKdynxH2LKarvhcEjU0soVJ1McTZIM4Vci2siGjSSE12p9bPg+UNiFOqiwBwYwqIGDbR1ksPHehiwQMNG2Ay7aLGxp3M/AAwm1e0gxJGS0VvG/jL3t0FrDvh/T5moV36Ljz0JlAlLkO/lAjsg38pH8IH8GxnJ5DD+XFj6VQMvM4siLy+u//6ky8OlApaM6RqEgfXxNDpTgFq9Fw9pMbvGrVIP4jYPXR+u38yl3grwjP7G+t+SQfMYKa41f6vs1ln+D0VN8vBlGotDApwpJHGMXe+1cFfS53OqF+Yj5Ou9beGuYYQW1Mu/VoTlQvy94076Aawm4loA7EHAHAq4p4JoCriTgSgKuKuCqAm5ewM0LuEUBtyjglgTckoArCLiCgNsScFsCjgg4EuGUcH79lSyaVyWc18AfnU+FfwdtPxP4DVzzHYLyfpQyMUethwssItKOkLaQ9HPzV3g327ZFaX+U2ny3omP3BCqd7xoKWvp13R6RcjVS8eqAitf512r0VdKxRhXLPVl1NMt9OXWrVsL8VfTpuDetRIiFvhWlYH8hQuUFVD5C3eO7TRJynC7hHuTvnMFsts+MII9gVxJ7cn5cPMGy/edVtPEol8nOZHJr15Nzd8KzLA5X4CqkMf5NmIMHOP4boMZexT7FvsS+xgvxp/Fn8ecBOhQLNZeg54q//AuGfvww</latexit>– 要するに、K個の意味との内積を計算して和を取っているガウス混合モデルとの違い?
l Vilnis and McCallum (2014), Athiwaratkun and Wilson(2017) のように埋め込み空間に多次元ガウス分布を導入するのは、一見自然なように見えるが..
l 実際の単語ベクトルは、埋め込み空間より低い次元の部分空間に存在する
l d次元の空間内のd1次元部分空間に単語ベクトルがあった
時、外れ値(d次元超立方体上に一様に分布)があると、ガウス分布で必要なノルムPd<latexit sha1_base64="4KjTpwlQmU+6oM9yEQacgPXxwrI=">AAAHgXichZXNbtNAEMenDeBSPprCBQkhRUSt4FJtDBIIhNQClahaVWlC2lRNG8XOJlixHSvepEmsnLjxAhw4gcSh4gaPwIUX4NBHQByLxIUD47UjJ/G0dZTs7szvP5nZXe9qjmm4grHjqenEhYuXlJnLs1euXrs+l5y/se022y2dF/Sm2WwVtYrLTcPmBWEIkxedFq9Ymsl3tMYL37/T4S3XaNqvRc/h+1albhs1Q68INJWTd0qCd4UreiZPldy2VfaMZ5nBQTXVLRsHajmZZktMPql4JxN20hA+2eZ8YhFKUIUm6NAGCzjYILBvQgVc/OxBBhg4aNsHD20t7BnSz2EAs6htI8WRqKC1gb91HO2FVhvHfkxXqnX8FxO/LVSmYIH9ZEfshP1gX9gv9u/UWJ6M4efSw1YLtNwpz727lf97rsrCVsCbSHWGQkP67JoE1OCxrMXA2hxp8avUg/id/vuT/JPcgrfIPrHfWN9Hdsy+Y4V254/+eYvnPsjoVdTUsO1gq0MaZ9jD0TBTDX2etA7CbCK+S5BdgusRXI/g+gTXJ7hDgjskuBrB1QiuQXANglshuBWCWyO4NYJbJ7h1gisSXJHgdglul+AYwbEYp4Xr6+9Dal21cF0Df3w9NbmLh35O+C3csRFRkuM45WCOxhgXWCjSjZEuSfq5Cax/lB3a4rQ/S0N+VBHZB4TKlO+8hpZJ3aiHUmZjFWdPqTiP1rpcyVE6ssYVG2NZRZqNiZxGVZth/jr6TDxZNmPE6sSO0nC8GqNyBJWLUS/laZMGVdI1PJ/9cy9YzeGJH+QRnEq0R/Xj4v2Tmbxt4p1tdSnzYEndephefh7eRDNwG+7CPYz/CJbhFc5/AXN4C0fwFb4pCeW+whQ1QKenQs1NGHuUp/8B5SaMZg==</latexit>

2xi=1 iは、普通の点でd1, 外れ値でd/12になる→dが大きいと、外れ値にdominateされる
l 予備実験でも、混合ガウス分布は上手く行かなかった

カーネル関数l activation hとembedding e に対し、k✓ (h, e) = |h||e|(a exp( ✓ cos(h, e))a)<latexit sha1_base64="t0x2WpXJzeUJc3AjAhs7z391KVU=">AAAH3HichZVLb9NAEMenLZBSHk3hgsTFIgpKJBptAgKEhNQCFVStqjQhbaqmRLbZNFac2LKdd3LjBOIKB7iAxAHxLeCCBFcO/QiIY5G4cGC8dpSHp8VW4t2Z3388s7veVUxdsx3GDqamZ06cPBWaPT135uy58/PhhQtbtlG3VJ5TDd2w8opsc12r8ZyjOTrPmxaXq4rOt5XKfde/3eCWrRm1x07b5HtVeb+mlTRVdtBUDN+sFAtOmTtyrHyNx6W7Uq/c6/FeTJYKvGVKsUXJcxdUwxZIXFqU5HgxHGEJJi4p2Ej6jQj4V9pYmHkIBXgKBqhQhypwqIGDbR1ksPHehSQwMNG2B120WdjShJ9DH+ZQW0eKIyGjtYL/+9jb9a017LsxbaFW8S06/ixUShBlP9hHdsi+sk/sJ/t7ZKyuiOHm0san4mm5WZx/fin757+qKj4dKA9VxygUpI+vyYES3Ba1aFibKSxulaoXv9F5fZi9k4l2r7L37BfW944dsC9YYa3xW/2wyTNvMHpUjDfHSAVo4FOFCI5xF3uDXBX0dYW17+dD84boW3hrmGEZtbLoGdA8Ut8i3tQiuDbBtQmuQ3AdgmsSXJPgSgRXIrgKwVUIbpnglgluleBWCW6N4NYILk9weYLbIbgdgmMExwKc4s+vu5KpeVX8efX8wflUxHcw8HPCX8U1PyQKoh+kTMxRG+M8C0XaAdImSTc3d4WPsgNbkHZHacCPKob2PqHSxa6hoGVSN+qhlOlAxekjKs6Kr7U6UcnQGlSsj2U11KxP5DSq2vDzV9Gn4960ESBWJlaUgv2VAJUhqEyAeiB2mwikBF3CPcjdOb3ZHJwZXh7erkR7Um5cPMGSk+dVsLGVSiSvJ1KbNyJL9/yzbBYuwxWIYfxbsASPcPxzmMNb+Azf4HvoSehZ6EXopYdOT/maizB2hV79AyJjoTk=</latexit>

ここでaは正規化定数で, a =✓ ! 0 で通常の内積に一致✓2(e ✓ + ✓1)<latexit sha1_base64="9a7xJLVz5ohbe770f6eX8C4+i6A=">AAAH2HichZXNbtNAEMenLZBSPprCBYmLIQoqQo02AQmEhNQCFVStqjQhbUpTIttsGiuObdlO0sSKxA3BkQtInEDigHgHLhzoC3DoIyCOReLCgfHaUT48KbYS7878/uOZ3fWuYuma4zJ2ODE5deLkqdj06ZkzZ8+dn43PXdh0zIat8oJq6qZdVGSH65rBC67m6rxo2VyuKzrfUmoPfP9Wk9uOZhpP3LbFd+vynqFVNFV20VSOZ2TpnrQglSq2rHolt8pduetl5vkzbyHsSaUrN6SgjWD6erccT7AUE5cUbaTDRgLCK2vOTT2CEjwHE1RoQB04GOBiWwcZHLx3IA0MLLTtgoc2G1ua8HPowgxqG0hxJGS01vB/D3s7odXAvh/TEWoV36Ljz0alBEn2g31mR+yAfWE/2d+xsTwRw8+ljU8l0HKrPPv6Uv7Pf1V1fLpQ7auOUShIH1+TCxW4I2rRsDZLWPwq1SB+s/P2KH83l/SusY/sF9b3gR2yb1ih0fytftrgufcYPSnGm2OkEjTxqUICx9jDXi9XBX2esHbDfGjeFH0bbw0zrKJWFj0TWmP1+8Sb9gmuTXBtgusQXIfgWgTXIrgKwVUIrkZwNYJbIrglglshuBWCWyW4VYIrElyR4LYJbpvgGMGxCKeE8+uvZGpelXBeA390PhXxHfT8nPDXcc33iZLoRykLc9SGuMBCkU6EdEjSz81f4YNszxal/VHq8YOKvr1LqHSxayhoGdUNeihlNlJxdkzFefG11kcq6VujirWhrPqatZGcBlXrYf4q+nTcm9YjxPLIilKwvxyhcgSVi1APxW6TgIygK7gH+TtnMJu9MyPII9iVaE/Gj4snWHr0vIo2NjOp9M1UZuNWYvF+eJZNw2W4CvMY/zYswmMc/wLm8A6+wnc4iD2NvYi9jL0K0MmJUHMRhq7Ym39zHaBH</latexit>

l<latexit sha1_base64="slv82exhnYNd/r5LQH6zmqk0SXU=">AAAHdHichZXNbtNAEMenLTSlfDSFCxIcUqxUnKJNQAJxaoFKVK2qNCFtqrqKvO46teLYlu2kTaK8AC/AAS4gFQnxGFx4AQ59BMSxCC4cGK8d5cPT4ijZ3ZnffzKzu97lrmX6AWNnU9MzV67OpuauzV+/cfPWQnrx9o7vtDxdVHTHcrwq13xhmbaoBGZgiarrCa3JLbHLGy9C/25beL7p2K+DjisOmlrdNg1T1wI01dJpNTgSgZZRl9TAUZcyrJZWWI7JJ5Ps5OOOAvFTdBZnlkGFQ3BAhxY0QYANAfYt0MDHzz7kgYGLtgPooc3Dnin9Avowj9oWUgIJDa0N/K3jaD+22jgOY/pSreO/WPj1UJmBLPvOPrNz9o19YT/Y3wtj9WSMMJcOtjzSCre28OZu+c9/VU1sAzgaqi5RcKQvrykAA57KWkyszZWWsEo9it/uvj0vPytle8vsI/uJ9X1gZ+wrVmi3f+mn26L0TkY/RI2BbRtbHRSc4R6OBply9PWktR9nM+RPCPKE4DoE1yG4LsF1Ce6Y4I4JziA4g+AaBNcguFWCWyW4dYJbJ7gNgtsguCrBVQluj+D2CI4RHEtwPF7fcB9S68rjdY38yfXkchcP/ILwN3HHDglVjpOUizmaY1xkoUg/QfokGeYWYP2j7MCWpMNZGvCjiqG9T6gs+c5ztEzqRj2UspiouHhBxWW01uVKjtJDa1KxOZbVULM5kdOoaivOX0efhSfLVoJYm9hRHMdrCapEUKUE9VKeNgoUJG3g+Ryee9FqDk78KI/oVKI9hTAu3j/5ydsm2dkp5PKPcoXtx8rK8/gmmoN78AAeYvwnsAKvcP4rmEMb3sMpfJr9nbqfUlLZCJ2eijV3YOxJ5f4BFWSG+w==</latexit>

l 勾配を計算すると、– cos(h, e) ! 0 のとき勾配 ! 1/✓ ... 外れ値があっても勾配は一定に収まる (i.e. 外れ値に対して安定)<latexit sha1_base64="oLIr/DB5xwjlJVbIOW3+Q1ckr3Q=">AAAHuHichZXNbtNAEMenLeBSPpqWCxKXlCioSKjaBCRQTy1QQdWqShPSpqqrYJtNYsVfsp1v5QV4AQ5ISCAhQDwGF16AQx8BcSwSFw6M147y4UmxlXh35vcfz+yud1XH0D2fsdOZ2bkLFy9J85cXrly9dn0xsbR84NkNV+NFzTZst6QqHjd0ixd93Td4yXG5YqoGP1TrTwL/YZO7nm5bL/yOw09MpWrpFV1TfDSVE8uyZnurtXv8rrwi+7a8kmTlRIqtMXEl441M1EhBdOXspblnIMMrsEGDBpjAwQIf2wYo4OF9DBlg4KDtBHpoc7GlCz+HPiygtoEUR0JBax3/q9g7jqwW9oOYnlBr+BYDfy4qk5BmP9gXdsa+s6/sJ/s7NVZPxAhy6eBTDbXcKS++vln481+ViU8fakPVOQoV6fNr8qECj0QtOtbmCEtQpRbGb3bfnBXW8+neHfaB/cL63rNT9g0rtJq/tY/7PP8Wo6fFeHOMJEMTnxqkcIx72BvkqqKvJ6z9KB+at0XfxVvHDGuoVUTPhtZUfZt4U5vgOgTXIbguwXUJrkVwLYKrEFyF4OoEVye4TYLbJLhtgtsmuB2C2yG4EsGVCO6I4I4IjhEci3FqNL/BSqbmVY3mNfTH51MV38HAzwm/iWt+SMiiH6cczFEf40ILRXox0iPJILdghY+yA1ucDkZpwI8qhvY+oTLErqGiZVI36qGUuVjFuSkVF8TXak5UMrTGFbtjWQ01uxM5jar2ovw19Bm4N+3FiK2JFaVifytG5QkqH6Oeit0mBVlBV3APCnbOcDYHZ0aYR7gr0Z5sEBdPsMzkeRVvHGTXMvfXsvsPUhuPo7NsHm7BbVjF+A9hA57j+Bcxhza8g0/wWVqXXkpVSQ/R2ZlIcwPGLsn9B5nClCE=</latexit><latexit sha1_base64="w4emN51OHJWHqd5cRbDhkVJJHOU=">AAAHsHichZXNbtNAEMenLeBSPtrCBYlLRBTEKWwCEohTC1RQtarShLSpmirymk1j4i/ZTtIkygvwAHDgwIfEAfEYXHgBDn0ExLFIXDgwXjvKx06LrcS7M7//eGZ3vcs9ywxCxo5nZufOnb+gzV9cuHT5ytXFpeVrO4Hb8g1RNlzL9StcD4RlOqIcmqElKp4vdJtbYpc3n0T+3bbwA9N1XoRdTxzY+qFj1k1DD9FUrYZuKne3GjZEqNeW0izL5JVSG7mkkYbkKrjLc8+gCi/BBQNaYIMAB0JsW6BDgPc+5ICBh7YD6KPNx5Yp/QIGsIDaFlICCR2tTfw/xN5+YnWwH8UMpNrAt1j481GZggz7wb6wE/adfWU/2d9TY/VljCiXLj55rBVebfH1jdKf/6psfIbQGKnOUHCkz64phDo8lLWYWJsnLVGVRhy/3Xt7UnpUzPRvs0/sF9b3kR2zb1ih0/5tfN4WxXcYPSPHW2CkKrTxaUAax7iPvWGuHH19aR0k+dC8K/s+3iZm2ECtLnsudE7VHxFvOiK4LsF1Ca5HcD2C6xBch+DqBFcnuCbBNQluleBWCW6d4NYJboPgNgiuQnAVgtsjuD2CYwTHFI4n8xutZGpeeTKvsV+dTy6/g6FfEH4b1/yIqMq+SnmYoznBxRaKDBQyIMkot2iFj7NDm0pHozTkxxUj+4BQWXLX4GiZ1o17KGVBqbhwSsUl+bXaU5WMrKpicyKrkWZzKqdx1VaSv4E+C/emLYVYm1pRHPtrClUkqKJCPZW7TRrykq7jHhTtnPFsDs+MOI94V6I9+SgunmC56fNKbezks7l72fz2/fTK4+Qsm4ebcAvuYPwHsALPcfzLmIMHb+A9fNDyWkWraXqMzs4kmuswcWmv/gEq+JJx</latexit>

注：l 正規化定数aはから得られると思われるが、自分で計算するとこの値はになった (バグ?)カーネル関数のプロット

l θに応じて、ガウス分布では表せない裾の広さを持つ

学習アルゴリズム

l ランダムに合計M個の意味(sense)を単語に割り当てて、(1) 尤度を最大化するように、意味ベクトルと対応するカーネルパラメータθを最適化(2) 使われなかった意味を単語から削除して、他の単語に割り当てる
l 実験では、語彙数Vに対してM=3Vの意味を設定;
単語あたりの最大の意味素数＝4l 予測が当たらなかった単語 i について、
l 次の予測確率の平均Piが閾値以下になった単語 i について、最も使われなかった意味を削除して、新しい意味に置き換える→ 次スライド意味素の更新

l 移動平均で Pi を更新し、Pi < ε となった単語iについて(1) Uij が最小の意味を削除(2) それを、事前分布の期待値(全体の平均) Unew で置き換え；対応するθ=1e-8 で初期化
l 注意：
– この基準では、頻度が多い語(機能語)が優先して更新される– 予測確率が本来高い語 (isなど)・本来低い語 (abideなど)を同じ基準で扱ってよい?

全体の学習アルゴリズム

l 意味とカーネルパラ

メータはAdamで更新
l Qは意味の更新レート(公開実装では200)

実験l 機械翻訳(MT)：独→英 196k words

言語モデル(LM)：One-Billion-Wordコーパスから300k語
対話生成(Dialog)：DailyDialogデータセット, 13,118対話
l 生成の結果

実験 (2)l 生成された例とTransformer, Mixture of Softmaxとの比較

l 注意：DeepLによると、

meine gebildete Mutter aber wurde Lehrerin.
=「しかし、教育を受けた母は教師になった。」
man erreicht niemals eine Gemeinde mit Ideen, man setzt
sich mit den Einheimischen zusammen.
=「郷に入りては郷に従え」

実験 (3)l 対話応答の生成 (文脈をより考慮する必要がある)実験 (4/5)

l 意味の数と単語 (ただし, 更新則が理由の可能性あり)– Specificな語は意味の数が少なく、多義語には多くの意味が自動的に割り当てられている– モデル全体での意味の数Mを先に指定する

パラメータθと意味の広さ

l θが大きいほど、カーネルで内積を取る際に遠くまで考慮→θは意味の「広さ」を反映
l specific→genericに並んだ上の3つの単語ペアについて、学習されたθがそれと正しく対応している

論文のまとめl 単語を出力するsoftmax関数を exp(kernel) の形で書き換え、複数の意味(sense)に対する混合モデルを考えることで、単語の多義を自動的に考慮する出力レイヤを提案– senseごとにカーネルのパラメータθを学習することで、意味の広さも同時に考慮– 計算量は、ナイーブなsoftmaxの2倍程度
l 単語ベクトルに確率分布を考えるのではなく、内積を計算する際のカーネル関数を適応的にしたところが新しい– ほぼ双対に近いが、より柔軟に定義できる– exp(cos)の形は理論的にも妥当