Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Neural Networks for Sequences

yusumi
July 06, 2022

Neural Networks for Sequences

参考資料 (https://probml.github.io/pml-book/book1.html) を元にAttention, Transformer を解説しています.

yusumi

July 06, 2022
Tweet

More Decks by yusumi

Other Decks in Research

Transcript

  1. Table of contents 1. Attention 2. Transformers 3. Efficient Transformers

    4. Language models and unsupervised representation learning 1
  2. 15.4 Attention Attention は検索システムにおける「辞書引き」と考えることができる. 例えば Youtube で動画を見るとき, 検索エンジンはあなたの query (検索バーに入力する

    テキスト) を, Database 内の候補動画となる一連の key (動画のタイトル, 説明など) に対応 付け, 最もマッチした value (動画) を提示する. 2
  3. 15.4.1 Attention as soft dictionary lookup Attention はベクトルの「辞書引き」 1. ベクトル検索用の

    query q ∈ Rq を用意. 2. query q と検索対象の辞書 key ki ∈ Rk, (i = 1, · · · , m) の類似度 αi (q, k1:m ) を計算. 3. 類似度の高い key ki に対応する value vi ∈ Rv を取り出す. 辞書引きを微分可能にするため, 次に示す凸結合を計算する. Attn(q, (k1 , v1 ), · · · , (km , vm )) = Attn(q, (k1:m , v1:m )) = m ∑ i=1 αi (q, k1:m )vi ∈ Rv (15.34) ここで αi (q, k1:m ) は query q と i 番目の key ki の類似度 (Attention 重み) を表す. 0 ≤ αi (q, k1:m ) ≤ 1, ∑ i αi (q, k1:m ) = 1. 3
  4. 15.4.1 続き | Attention 重みの計算 Attention 重みは softmax 関数で計算される. αi

    (q, k1:m ) = Si ([a(q, k1 ), · · · , a(q, km )]) = exp (a(q, ki )) ∑ m j=1 exp (a(q, kj )) (15.35) ここで a(q, ki ) ∈ R は query q と key ki の類似度を計算する関数である. この関数は Attention score とも呼ばれる. 4
  5. 15.4.2 Kernel regression as non-parametric Attention kernel 回帰 (16.3.5 節)

    は以下で示す non-parametric モデルの形式を持つ. f(x) = n ∑ i=1 αi (x, x1:n )yi (15.36) 記号の定義 • x : 入力データ • x1:n = x1 , · · · , xn : 訓練データの組 • αi (x, x1:n ) ≥ 0 : 入力データ x と訓練入力データ xi の類似度を計算する関数 • yi : i 番目の訓練データの目的変数値. αi (x, x1:n ) の定義より, kernel 回帰は Attention として考えることができる. 6
  6. 15.4.2 続き | kernel 関数と Attention score の対応関係 Attention score

    を a(x, xi ) = Kgauss (x − xi ) と定義する. Kgauss (u) = 1 √ 2πσ2 e− 1 2σ2 u2 (15.37) 式(15.37)は Gaussian Kernel と呼ばれ, σ はバンド幅を表す. αi (x, x1:n ) は softmax 関数で正規化されるため, 1 √ 2πσ2 は取り除くことができる. Kgauss (u; w) = exp ( − w2 2 u2 ) (15.38) ここで w = σ−1 と再定義している. 7
  7. 15.4.2 続き | nonparametric Attention 式(15.38)を式 (15.36) に当てはまると, 次式を得る. f(x)

    = n ∑ i=1 αi (x, x1:n )yi (15.39) = n ∑ i=1 exp [−1 2 ((x − xi )w)2] ∑ n j=1 exp [−1 2 ((x − xi )w)2] yi (15.40) = n ∑ i=1 Si [ − 1 2 ((x − x1 )w)2, · · · , − 1 2 ((x − xn )w)2 ] yi (15.41) これは nonparametric Attention と解釈することが可能で, query がテスト入力データ x, key が訓練入力データ xi , value が訓練出力データ yi に対応している. 8
  8. 15.4.2 続き | Attention マップと kernel 回帰 w = 1

    とした時の Attention 行列 Aji = αi (xj , x1:n ) と回帰結果を下の図に示す. ここで, 入力データ xj は訓練入力データの値を再利用している. w はバンド幅 σ の逆数であるため, w を大きくすればバンド幅が狭くなる (左図の斜めの 帯幅が狭くなる) が, 同時に過学習を起こす. 9
  9. 15.4.3 続き | Additive Attention query と key を 1

    つの隠れ層を持つ MLP に入力して Attention score を求める手法. query q ∈ Rq と key k ∈ Rk からパラメータ Wq ∈ Rh×q, Wk ∈ Rh×k, wt ∈ Rh を求める. a(q, k) = wv ⊤ tanh (Wq q + Wk k) ∈ R (15.42) 一般的には, 次ページで示す内積計算による手法の方がパラメータを調整する必要がなく 処理が速いことが知られている. 11
  10. 15.4.3 続き | Scaled Dot-Product Attention Attention score を query

    q ∈ Rd と key k ∈ Rd の内積で求める手法 (ベクトル同士の内積 は類似度を表す). 内積の分散は d となるが, 入力次元に関わらず 1 となるように正規化しておく. a(q, k) = q⊤k √ d ∈ R (15.43) query の数を n 個まとめて Q ∈ Rn×d, key の数を m 個まとめて K ∈ Rm×d, value の数を m 個まとめて V ∈ Rm×v とすると, Attention は次式で求められる. Attn(Q, K, V ) = S ( QK⊤ √ d ) V ∈ Rn×v (15.44) 12
  11. 15.4.4 Seq2Seq with Attention 15.2.3 節で, 機械翻訳向けに提案された sequence-to-sequence (Seq2Seq) を扱った

    [10]. このモデルは 2 つの RNN を直列に結合した Encoder-Decoder モデルとして登場した. Seq2Seq の復習 機械翻訳において, 長さ T の Sequence x1:T から別言語の長さ T′ の Sequence y1:T ′ への 翻訳を考える. 1. RNN を用いた Encoder fe の最終状態 T から入力 Sequence の context vector c = fe (x1:T ) (文章をベクトル表現にしたもの) を得る. 2. RNN を用いた Decoderfd で出力 Sequence y1:T ′ = fd (c) の単語を1つずつ生成する. 13
  12. 15.4.4 続き | Seq2Seq に Attention を適用 RNN を 2

    つ直列につなげた Seq2Seq モデルは, 機械翻訳で貧弱な精度になることがある. 理由として, Decoder 側で入力 Sequence の単語を直接参照できない点がある. (全て context vector c に埋め込まれてしまう) そこで [11] は Seq2Seq に Attention を適用した. 15
  13. 15.4.4 続き | Soft Attention 機械翻訳のように入出力単語の関係が重要なタスクでは, 翻訳前の単語を直接参照できる モデルが必要である. 従って Attention

    と Seq2Seq の相性は良く, 以下のように出力 Sequence の単語毎に context vector ct (t ∈ {1, · · · , T}, T は Sequence 長) を求める. ct = T ∑ i=1 αi (hd t−1 , he 1:T )he i (15.45) 記号の定義 • hd t−1 : query に対応. 1つ前の単語における Decoder の隠れ層. • he 1:T : key に対応. Encoder の全ての隠れ層. • he i : value に対応. 単語 i における Encoder の隠れ層. 16
  14. 15.4.5 Seq2Vec with Attention (text classification) Attention は Seq2Vec (15.2.2

    節) にも応用できる. Seq2Vec は入力 Sequence から出力ベクトル y を予測するためのモデルであり, 主にテキ スト分類などに利用される. [16] は, 電子健康記録のテキストデータから入院患者の生死を 予測する問題に Seq2Vec with Atention を適用した. 18
  15. 15.4.6 Seq + Seq2Vec with Attention (text pair classification) 下に示す

    premise (前提) と hypothesis (仮説) を眺めてみよう. 前提 •「A person on a horse jumps over a log」 仮説 1.「A person is outdoors on a horse」 2.「A person is at a dinner ordering an omelette」 3.「A person is training his horse for a competition」 premise は hypothesis を内包している, つまり premise があれば hypothesis はより可能 性が高いと合理的に言えるだろうか? 19
  16. 15.4.6 続き | textual entailment premise があれば hypothesis はより可能性が高いと合理的に言えるだろうか? 前提

    •「A person on a horse jumps over a log」 仮説 1.「A person is outdoors on a horse」→ 言えそう. 2.「A person is at a dinner ordering an omelette」→  言えなさそう. 3.「A person is training his horse for a competition」→ どちらともとれる. このように 2 つの文章の対を 3 つのクラスに分類する問題を textual entailment または natural language inference という. 補足として, この分野の標準的なデータセットは 550,000 個のラベル付けされた文章対を持つ Stanford Natural Language Inference (SNLI)[1] である. 20
  17. 15.4.6 続き | Attention によるアプローチ この分類問題に対するアプローチとして [12] の手法を紹介する. premise に対応する文章集合を

    A = (a1 , · · · , am ), hypothesis に対応する文章集合を B = (b1 , · · · , bn ) とする. ここで ai , bj ∈ RE は単語の埋め込みベクトルである. 1. premise の文章 ai と hypothesis の文章 bj の Attention score (15.4.1 節) を次式で計算 する. eij = f(ai )⊤f(bj ) (15.46) ここで f : RE → RD は MLP である. 2. 全ての hypothesis に関する Attention (15.4.1 節) を求める. βi = n ∑ j=1 exp (eij ) ∑ n k=1 exp (ei,k ) bj (15.47) 21
  18. 15.4.6 続き | 式の導出続き 1. premise の文章 ai と Attention

    βi を比較するため, concatenate して潜在空間に射影 する. vA,i = g([ai , βi ]), i = 1, · · · , m (15.48) ここで g : R2E → RH は MLP である. 2. 比較結果を集計し, hypothesis に対する premise の全体的な類似度を求める. vA = m ∑ i=1 vA,i (15.49) 22
  19. 15.4.6 続き | 式の導出続き 前ページでは hypothesis に対する premise の類似度を求めたが, 逆も同様に求められる.

    αj = m ∑ i=1 exp (eij ) ∑ m k=1 exp (ek,j ) aj (15.50) vB,j = g([bj , αi ]), j = 1, · · · , n (15.51) vB = n ∑ j=1 vB,j (15.52) 最終的に, 得られた潜在ベクトル vA , vB を用いてクラス分類する. ˆ y = h([vA , vB ]) (15.53) ここで h : R2H → R3 は MLP である. 23
  20. 15.4.7 Soft vs Hard Attention 今まで扱ってきた Attention は全ての重みに 0 以上の値を割り当てていた.

    これを Soft Attention と呼ぶ. 一方で一箇所の重みのみを 0 より大きい値に割り当て, それ以外を 0 と する場合を Hard Attention と呼ぶ. 画像のキャプション生成における例 (左図: Soft Attention, 右図: Hard Attention). 25
  21. 15.5 Transoformers Transformer[19] は Seq2Seq モデルの 1 種である. しかし今まで議論してきた Seq2Seq

    と は異なり, モデルに RNN を一切使わず, Encoder と Decoder 共に Attention のみを使う. こ うすることで従来の手法よりも計算量も予測精度も改善され, 現在様々な系列データ生成 に用いられるようになった. Transformers の適用例 • 機械翻訳 • 小選挙区解析 • 音声生成 • タンパク質配列生成 • 文章要約 • 画像生成 • etc... Transformer を確認する前に, それを構成するパーツについて先に説明する. 26
  22. 15.5.1 Self-Attention 15.4.4 節の Seq2Seq with Attention では, RNN の

    Decoder が入力 Sequence に Attention す ることで, 各入力の文脈的表現を捉えることができると説明した. しかしもっと簡単に考 えて, Encoder が自身に Attention するようにモデルを修正できる. この修正を加えたモデ ルを Self-Attention と呼ぶ. yi = Attn(xi , (x1 , x1 ), · · · , (xn , xn )) ∈ Rd (15.54) この式において query は入力 Sequence xi ∈ Rd, key, value は全ての入力 Sequence x1 , · · · , xn である. 従って query, key, value 全てが自分自身の入力に対応している. Decoder については, Encoder でそれまでに得られた Attention を入力にとる. 従って 式(15.54)において xi = yi−1 , n = i − 1 とすれば良い. Encoder の出力が得られれば, 直ちに Decoder の出力を計算できるため, 並列計算が可能である. 27
  23. 15.5.1 続き | 機械翻訳 機械翻訳の課題の1つに, 指示語”it” の指す内容の把握がある. 次の 2 文が指す

    it はそれぞれ何だろうか? • The animal didn’t cross the street because it was too tired. • The animal didn’t cross the street because it was too wide. Self-Attention を使えば, これらの指す内容を自身に対する Attention から精度良く推定で きることが示された. 28
  24. 15.5.2 Multi-Headed Attention Multi-Head-Attention (MHA) では, query, key, value を小さな複数の

    head (組) に分けて Attention を行う. query を q ∈ Rdq , key を kj ∈ Rdk , value を vj ∈ Rdv とすると, i 番目の head の Attention は次式で定義される. hi = Attn(W (q) i q, {W (k) i kj , W (v) i vj }) ∈ Rpv (15.55) ここで, W (q) i ∈ Rpq×dq , W (k) i ∈ Rpk×dk , W (v) i ∈ Rpv×dv は射影行列である. 式のお気持ち query, key, value の対応関係をより多角的に捉えるには, いくつか方法が考えられる. 1. 注目する query を限定してみる. 2. key を回転させたときの query との対応関係を見てみる. 3. value を回転させて出力結果を調整してみる...etc 行列 W (q) i , W (k) i , W (v) i を掛けることでこれらの比較を可能にし, 複数の head において別 々の視点で対応関係を学習できる. 29
  25. 15.5.2 続き | head の統合 最終的に h 個の head を

    stack することで, 1つの Attention を得る. h = MHA(q, {kj , vj }) = Wo    h1 . . . hh    ∈ Rpv (15.56) ここで, Wo ∈ Rpo×hpv である. もし pq h = pk h = pv h = po とした場合, 全ての出力 head を並列計算できる. 30
  26. 15.5.3 Positional Encoding 通常の Self-Attention は入力単語の順序を無視するため性能が低くなることがある. 例えば, 次の 2 つの文は全く同じ意味として扱われる.

    • 私 / は / 君 / より / 賢い • 君 / は / 私 / より / 賢い 対処法として, 単語の埋め込み (Word Embeddings) に位置の埋め込み (Positional Embeddings) を足し合わせる. 32
  27. 15.5.3 続き | Positional Encoding (PE) の定式化 系列データの数を n, 埋め込み後の次元を

    d とした時の位置行列 P ∈ Rn×d を定義する. P の各要素 pi,j は次式で表される. pi,2k = sin ( i C2k/d ) , pi,2k+1 = cos ( i C2k/d ) (15.57) C は最大系列数を表し, 通常 10000 に設定する. 式のお気持ち 位置の概念を数直線的に捉えてしまいがちだが, この式は位置を循環する値として表現し ている. 各要素 pi,j は 2π (j = 0) から 2Cπ (j = d) までの回転周期を持つが, i > C になる と必ず同じ位置埋め込みが得られてしまう. 従って C は十分大きな値に設定する (ここで は 10000). 33
  28. 15.5.3 続き | Positional encoding の適用例 単語埋め込みの次元が d = 4

    の時, 位置行列の i 行目は次式で表される. pi = [ sin ( i C0/4 ) , cos ( i C0/4 ) , sin ( i C2/4 ) , cos ( i C2/4 )] (15.58) 下図は系列データ数 n = 60, 単語埋め込み次元 d = 32 とした時の位置行列を表す. 左図は位置行列のヒートマップ, 右図は 6 列目から 9 列目までの基底関数を表す. 34
  29. 15.5.3 続き | 三角関数を用いる利点 式(15.57)を用いる利点は 2 つある. 1. n ≤

    C を満たす任意の数の系列データを扱える. 2. ある系列の PE は別の系列の PE の線形変換で表現できる. 2. について確認するため, 試しに pt を ϕ だけずらした pt+ϕ を計算してみる. ( sin (wk (t + ϕ)) cos (wk (t + ϕ)) ) = ( sin (wk t) cos (wk ϕ) + cos (wk t) sin (wk ϕ) cos (wk t) cos (wk ϕ) − sin (wk t) sin (wk ϕ) ) (15.59) = ( cos (wk ϕ) sin (wk ϕ) − sin (wk ϕ) cos (wk ϕ) ) ( sin (wk t) cos (wk t) ) (15.60) 線形変換を行う関数を f とすると, 確かに pt+ϕ = f(pt ) の形となった. ϕ が小さければ, pt+ϕ ≈ pt となる. 35
  30. 15.5.3 続き | 単語埋め込みと位置埋め込みの連結 位置埋め込み行列 P が得られたら, それを単語埋め込み行列 X と足し合わせる.

    POS(Embed(X)) = X + P (15.61) なぜ単語埋め込みと concat しないの? concat するとデータの次元が増えるだけでなく, 学習パラメータ数も増加してしまい, そ の分時間がかかる. Transformers では, 足し合わせても単語埋め込みと PE の特徴を捉える ことができる. PE の次元を減らして concat する方法ではダメ? どれくらいの次元まで減らせるかをハイパラを導入して学習しなければならず, 追加の計 算コストがかかってしまう. (そうする位なら単に足し合わせた方が楽ということ?) 足し合わせ v.s concat の議論については, こちらに詳しく書かれていた. 36
  31. 15.5.4 続き | Positional Encoding まず Input となる単語から Embedding レイヤーを通して

    Word Embedding を得る. しか し Transformer で用いられる Attention には単語の順番概念が無いため, Positional Encoding (15.5.3 節) による単語の位置を考慮した埋め込み表現を作成する. これにより RNN などを使わずに位置情報を考慮できる. 38
  32. 15.5.4 続き | Encoder N 個の Encoder block から成る. それぞれの

    block は Multi-Headed Attention (15.5.2 節) , Add & Norm, Feed Forward Network (FFN) で構成される. Add & Norm では, 残差結合 (Residual Connection, 13.4.4 節), 正規化層 (layer normalization, 14.2.4.2 節) が用いられて いる. 39
  33. 15.5.4 続き | Encoder の Multi-Headed-Attention Encoder の Multi-Headed-Attention では,

    query, key, value が全て同じ入力の値をとる. そ こでこれらを適当な行列で線形変換して Attention することで, 多角的な特徴を捉えるこ とができる. なお Attention には Scaled Dot-Product Attention (15.4.3 節) を使用する. 40
  34. 15.5.4 続き | Decoder (一番下の block) はじめに Masked Multi-Headed Attention

    があり, その後 Add & Norm が続く. Masked と は使うべきでない単語を隠すことである. 機械翻訳において, 翻訳後の i 番目の単語を予測 する際は, i − 1 番目までの単語しか使用すべきではないからである. 41
  35. 15.5.4 続き | Decoder (真ん中の block) この Multi-Headed-Attention のみ, query,

    key, value が全て同じでは無い. 機械翻訳におい て key, value は” 注意を向ける先” を表すので Encoder の出力 (翻訳前の埋め込み表現) を 使用する. 一方 query は” どこから注意を向けるのか” なので, Decoder の前の層の出力 (翻 訳後の埋め込み表現) を使用する. 42
  36. 15.5.5 Comparing transformers, CNNs and RNNs Sequence x1:n から別の Sequence

    y1:n の生成における出力計算量 (Complexity), 逐次計算 量 (Sequential ops), 最大パス長計算量 (Max. path length) を比較してみる. 逐次計算量と は, 全ての単語を学習するのに必要な計算量, また最大パス長計算量とは, 最も離れている 単語同士を埋め込むのに必要な計算量である. • 比較モデル: Self-Attention, RNN, 1d-CNN ここで n は Sequence の長さ, d は単語の分散表現の次元数, k は 1d-CNN の kernel size を 表す. 43
  37. 15.5.5 続き | 各計算グラフの考察 1d-CNN 出力計算量は O(knd2) であり, 入力 Sequence

    は階層的に CNN と接続されるため, 逐次計 算量は O(1) で並列計算が可能である. また最も離れた単語同士を埋め込むには, ⌈n/k⌉ ま たは ⌈logk (n)⌉ の層が必要であるため, 最大パス長計算量は O(logk n) となる. RNN 出力計算量は O(nd2) であり, 単語を逐次的に入力するため逐次計算量は O(n) である. ま た最も離れた単語同士が埋め込まれるのは最終層の入力であるため, 最大パス長計算量は O(n) となる. Self-Attention 出力計算量は O(n2d) であり, 一般的な入力 Sequence (n ≪ d) では他より優れた計算量で ある. また全ての層は入力と直接繋がっているため, 逐次計算量は O(1) で並列計算が可能 である. さらに最も離れた単語同士が埋め込まれるのも最初の層であるため, 最大パス長 計算量は O(1) となる. 45
  38. 15.5.7 Other transformer variants • Gshard[9] は, FFN の一部を Mixture

    of Experts (13.6.2 節) に置き換えることにより, Transformer をより多くのパラメータに拡張する方法を提案した. • conformer[7] は,Transformer 内部に畳み込み層を追加し, さまざまな音声認識におけ る有用性を示した. 47
  39. 15.6 Efficient transformers 一般的な trasformers の出力計算量は Sequence 長 n に対して

    O(N2) を要した (15.5.5 節). これは長い系列データを扱う際にはあまり実践的ではない. 本節ではこのボトルネックを 克服するための近年の提案手法をいくつか紹介する. 下図はその要約である. 48
  40. 15.6.1 Fixed non-learnable localized Attention patterns 最も単純な方法は, それぞれの token が

    Attention する token を局所的に限定することで ある. 例えば, 入力 Sequence の各トークンを事前に K 個の block に分割しておき, それぞ れの token は特定の block 内の token のみに Attention する. こうすれば, 計算量は O(N2) から O(N2/K) まで減らすことができる. 49
  41. 15.6.2 Learnable sparse Attention patterns 前ページにおいて, 具体的な K をデータから決定するのが主たる興味である. 本節では

    2 つのアプローチを紹介する. hashing によるアプローチ Reformer[8] は, 全ての token を事前に hash 化する. この手法により出力計算量を O(NM2 log(M)) まで下げることに成功した. ここで M は token の埋め込み次元を表す. clustering によるアプローチ Clustering Transformer [17] は, 全ての token を K-means (21.3 節) により事前にクラスタ リングすることで出力計算量を O(N2/K) まで下げた. 50
  42. 15.6.3 Memory and recurrence methods • Momery ベースの手法 [20] は,

    サブメモリが複数の token に同時にアクセスできる. • Transformer-XL [4] は, 分割した異なる block が再帰的に接続する. 51
  43. 15.6.4 Low-rank and kernel methods Performer[3] は, Attention 行列を kernel

    関数 (17.1 節) を用いて計算できることを示した. そもそも kernel 関数 K(q, k) ≥ 0 (q ∈ RD, k ∈ RD) は, q と k の類似度を測っていると考 えることができる. 例えば Gaussian kernel は次式で定義される. Kgauss (q, k) = exp ( − 1 2σ2 ||q − k||2 2 ) (15.63) この式は Scaled-Dot-Product Attention (15.4.3 節) に適用することができる. Ai,j = exp ( qi ⊤kj √ D ) = exp ( −||qi − kj ||2 2 2 √ D ) × exp ( ||qi ||2 2 2 √ D ) × exp ( |kj ||2 2 2 √ D ) (15.64) 右辺の最初の term は Kgauss (qi D−1/4, kj D−1/4), σ = 1 に等しい. 52
  44. 15.6.4 続き | random features を用いた Attention 行列 Gaussian kernel

    は random features (17.2.9.3 節) の期待値として近似できる. Kgauss (q, k) = E[η(q)⊤η(k)] (15.65) ここで η(q) ∈ RM は q から派生した random feature ベクトルである. この式を用いると, 式(15.64)の Attention 行列の要素は次のように書き直せる. Ai,j = E[ϕ(qi )⊤ϕ(kj )] (15.66) ここで ϕ は次式で定義される. ϕ(x) = exp ( ||x||2 2 2 √ D ) η ( x D1 4 ) (15.67) 53
  45. 15.6.4 続き | random features を用いた Attention 行列 式(15.66)を行列としてまとめると次式で表せる. A

    = E[Q′ (K′ )⊤] (15.68) ここで Q′ , K′ ∈ RN×M は query と key に対応する各行に random feature を適用した行 列である (下図). 54
  46. 15.6.4 続き | random features を用いた Attention 式(15.66)から, Attention 行列

    A は random features ベクトル ϕ(qi ), ϕ(kj ) および小さい次 元数 M を用いることで近似できる. この操作で query Q, key K, value V に対する Attention を求めると, 出力計算量は O(N) まで下げられる. ˆ Attention(Q, K, V ) = diag−1(Q′ ((K′ )⊤1N ))(Q′ ((K′ )⊤V )) (15.69) 55
  47. 15.7 Language models and unsupervised representation learning ここからは, 文の生成では無く, 文の特徴表現の手法に焦点を当てる.

    すなわち, 文書に対 する表現学習のための教師無しモデルについて説明する. 表現学習: 生データから特徴の検出または分類に必要な表現をシステムが自動的に発見で きるようにする一連の手法. 56
  48. 15.7.1 ELMo Embeddings from Language Model (ELMo) [18] は, 順方向の

    LSTM と逆方向の LSTM を組合 わせた手法である. これは双方向 RNN (biRNN) (15.5.2 節) とは異なり, 入力と出力のペアを 必要としない教師無し学習である (あるいは自己教師あり学習). 57
  49. 15.7.1 続き | ELMo の事前学習 適当な文 (x1 , · ·

    · , xT ) が与えられたとき, その t 番目に位置する単語 xt の出現確率を予測 することを考える. 1. 順方向の LSTM からは, xt より前の文章 x1:t−1 を文脈とする予測確率 p(xt |x1:t−1 ; θe , θ→, θs ) を計算する. ここで θe は Embedding layer のパラメータ, θs は Softmax 出力のパラメータ, θ→ は順方向 LSTM のパラメータである. 2. 逆方向の LSTM からは, xt より後の文章 xt+1:T を文脈とする予測確率 p(xt |xt+1:T ; θe , θ←, θs ) を計算する. ここで θ← は逆方向 LSTM のパラメータである. 1., 2. を組合せて, 対象となる単語よろも前にある文章からの予測と後にある文章からの予 測のそれぞれの性能が上がるように損失関数を定義し, 学習を行う. L(θ) = − T ∑ t=1 [log p(xt |x1:t−1 ; θe , θ→, θs ) + log p(xt |xt+1:T ; θe , θ←, θs )] (15.70) 58
  50. 15.7.1 続き | 特徴抽出器としての ELMo 学習が終了したら, 順方向 LSTM と逆方向 LSTM

    を組合せて t 番目の単語の分散表現 rt = [et , h→ t,1:L , h← t,1:L ] を得る. ここで L は LSTM の層数である. そして task に特化した線 形重み wj との内積を学習することで, task j に応じた分散表現 rj t = r⊤ t wj を得る. task には品詞タグ付け (Part-Of-Speech (POS)) や語義の曖昧性解消 (Word Sense Disambiguation (WSD) などがある. 品詞などのラベル付きデータは目的変数 y1:T に対応 し, これらを得られた分散表現ベクトルから学習する. 59
  51. 15.7.2 BERT Bidirectional Encoder Representations from Transformers (BERT) [5] は,

    Transformer (15.5 節) を用いて欠損した Sequence を元の Sequence に戻すためのモデルである. 欠損した Sequence とは, 文章の t 番目の単語が Mask された Sequence を意味する. BERT の目的は, この Mask された単語が何であるかを予測する. この課題は text-in-the-blank または cloze と呼ばれる. 60
  52. 15.7.2.1 Masked language model task BERT は次式の negative log pseudo-likelihood

    を最小化する. L = Ex∼D Em ∑ i∈m − log p(xi |x−m ) (15.71) ここで m は Mask を制御するランダムな 2 値である. 従って式(15.71)は Mask された単語 の予測確率を表し, これが最大になるように学習する. Mask 付き文章の例 Let’s make [MASK] chicken! [SEP] It [MASK] great with orange sause. ここで [SEP] は文の切れ目を示す separator token である (例文に入る [MASK] は左から順 番に”some”, ”tastes”). 61
  53. 15.7.2.1 続き | Mask された単語の確率予測 出力層における Mask された単語の予測確率は Softmax 関数で計算される.

    p(xi |x−m ) = exp (h(x−m )⊤ i )e(xi ) ∑ x′ exp (h(x−m )⊤ i )e(x′ ) (15.72) ここで e(x) は token x の埋め込みベクトル, h は隠れ層の出力である. このモデルは別名 masked language model とも呼ばれる. 62
  54. 15.7.2.2 Next sentence prediction task BERT では next sentence prediction

    と呼ばれる次文予測も可能である. この task では与 えられた 2 つの文が連続するかどうかを判別する. 例えば 2 つの文 A1 , A2 , · · · , Am と B1 , B2 , · · · .Bn の比較を考える (Ai , Bj は単語). CLS A1 , A2 , · · · , Am , SEP B1 , B2 , · · · , Bn SEP (15.73) CLS はクラスを示す特別な token である. 文 A のあとに文 B が続くと予測すれば, 目的変 数を y = 1 と設定する. 逆に B がランダムに選択されたと予測すれば, y = 0 と設定する. この手法は 15.4.6 節で紹介した textual entailment に役立つ. ただし BERT の場合, 教師無 し (自己教師あり) 学習である. 63
  55. 15.7.2.2 続き | Token の Embedding BERT による Next sentence

    prediction では, token に対して次の 3 つの Embedding を足し 合わせた埋め込みを Encoder に渡す. • Token の Embedding • 文単位の Embedding • Positional Encoding (15.3.3 節) 64
  56. 15.7.2.3 続き | Sentence classification (e.g. sentiment analysis) BERT で得られた分散表現

    (図 a の出力) は, MLP のクラス分類に有効な特徴量となる. 66
  57. 15.7.2.3 続き | Single sentence tagging BERT は固有表現抽出 (Named Entity

    Recognition (NER)) にも適用可能である. 固有表現抽 出を実装するには, 各 token に tag を与える必要がある. 68
  58. 15.7.2.3 続き | Token の tag 付け Token に tag

    を与える方法は様々あるが, BERT では BIO 法が用いられる. この手法を用い て各 token に B, I, O のいずれかの tag を貼る. 1. B-Beginning : token が固有表現に含まれてる, かつ固有表現の先頭に位置する. 2. I-Inside : token が固有表現に含まれてる, かつ固有表現の先頭以外に位置する. 3. O-Outside : token が固有表現に含まれていない. 例文の tag 付け結果を示す. 69
  59. 15.7.2.3 続き | tag の種類を増やす tag の種類について, 名詞句毎に分割し, 人名, 地名,

    組織などより細かく分けてみる. ここでは, 人名には P (Person), 地名には L (Location) を追加している. BERT に入力する際 には, tag を数字のラベルに置き換えて学習する. 70
  60. 15.7.2.3 続き | BERT の QA における MLP の適用 Background

    text の開始位置 s と終了位置 e は,Background text の出力に対して 2 つの MLP を適用することで計算される. MLP の出力は全ての位置に関する Softmax 値で与えられ, si + ej (fori ≤ j) の値を最大化す る文中箇所 (i, j) を抽出する. 72
  61. 15.7.3 GPT • Generative Pre-training Transformer (GPT) [13] は, Decoder

    に Mask 付き Transformer を用いた生成モデルである. • GPT-2 [14] は, GPT をより大規模なデータ (WebText) で事前学習した言語モデルであ る. • GPT-3 [2] は,GPT をさらに大規模なデータ (The Pile, 800GB) で事前学習した言語モデ ルである. 73
  62. 15.7.3.1 Application of GPT GPT-3 は, 2020 年 9 月にマイクロソフトが独占ライセンスを取得し,

    同社のクラウドサー ビス「Microsoft Azure」上で利用できる API(申請制)として公開されている. GPT-3 を活 用することで, 記事や小説を自動生成したり, ゲームでストーリーに沿った会話をインタ ラクティブに生成したり, 文章でイメージを伝えるだけでアプリケーションのデザインを 生成させたりすることなどができるようになる. 例えば, マイクロソフトは 2021 年 5 月に, ローコード開発ツール Microsoft Power Apps 内で GPT-3 を活用することで, 言葉からプロ グラミングコードを自動生成する機能を提供することを発表した. OpenAI の発表によると 2021 年 3 月時点で, GPT-3 の API を利用した 300 以上のアプリケ ーションが開発され, 1 日平均で 45 億語を生成しているようである.2 2引用: https:www.nri.comjpknowledgeglossarylstalphabetgpt_3 74
  63. 15.7.4 T5 Text-to-text Transfer Transformer (T5) [15] は, Seq2Seq の一種で入出力ともにテキストが

    出力される. 事前学習では, 入力 Sequence x を2つのペア (x′ , x′′) に分ける. ここで x′ は, x の一部の token を Mask した Sequence である. また x′′ は, x′ で Mask した token そ のものである. これらで事前学習したモデルは教師付きの (x, y) の組で Fine-tuning する ことができる. 例 入力 Sequence が x = ”Thank you for inviting me to your party last week” のとき, <X>, <Y> で一部を Mask すると以下で表せる. 1. x′ = ”Thank you <X> me to your party <Y> week” 2. x′′ = ”<X> for inviting <Y> last <EOS>” 75
  64. 15.7.4 続き | 超大規模な事前学習 論文中では Colossal Clean Crawled Corpus (C4)

    と呼ばれるデータ (750GB) で事前学習し, NLP 界隈で多くの SOTA を達成した. 76
  65. References i [1] S. R. Bowman, G. Angeli, C. Potts,

    and C. D. Manning. A large annotated corpus for learning natural language inference. arXiv preprint arXiv:1508.05326, 2015. [2] T. Brown, B. Mann, N. Ryder, M. Subbiah, J. D. Kaplan, P. Dhariwal, A. Neelakantan, P. Shyam, G. Sastry, A. Askell, et al. Language models are few-shot learners. Advances in neural information processing systems, 33:1877–1901, 2020. [3] K. Choromanski, V. Likhosherstov, D. Dohan, X. Song, A. Gane, T. Sarlos, P. Hawkins, J. Davis, A. Mohiuddin, L. Kaiser, et al. Rethinking attention with performers. arXiv preprint arXiv:2009.14794, 2020.
  66. References ii [4] Z. Dai, Z. Yang, Y. Yang, J.

    Carbonell, Q. V. Le, and R. Salakhutdinov. Transformer-xl: Attentive language models beyond a fixed-length context. arXiv preprint arXiv:1901.02860, 2019. [5] J. Devlin, M.-W. Chang, K. Lee, and K. Toutanova. Bert: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805, 2018. [6] A. Dosovitskiy, L. Beyer, A. Kolesnikov, D. Weissenborn, X. Zhai, T. Unterthiner, M. Dehghani, M. Minderer, G. Heigold, S. Gelly, et al. An image is worth 16x16 words: Transformers for image recognition at scale. arXiv preprint arXiv:2010.11929, 2020.
  67. References iii [7] A. Gulati, J. Qin, C.-C. Chiu, N.

    Parmar, Y. Zhang, J. Yu, W. Han, S. Wang, Z. Zhang, Y. Wu, et al. Conformer: Convolution-augmented transformer for speech recognition. arXiv preprint arXiv:2005.08100, 2020. [8] N. Kitaev, Ł. Kaiser, and A. Levskaya. Reformer: The efficient transformer. arXiv preprint arXiv:2001.04451, 2020. [9] D. Lepikhin, H. Lee, Y. Xu, D. Chen, O. Firat, Y. Huang, M. Krikun, N. Shazeer, and Z. Chen. Gshard: Scaling giant models with conditional computation and automatic sharding. arXiv preprint arXiv:2006.16668, 2020.
  68. References iv [10] M.-T. Luong. Neural machine translation. 2016. [11]

    M.-T. Luong, H. Pham, and C. D. Manning. Effective approaches to attention-based neural machine translation. arXiv preprint arXiv:1508.04025, 2015. [12] A. P. Parikh, O. Täckström, D. Das, and J. Uszkoreit. A decomposable attention model for natural language inference. arXiv preprint arXiv:1606.01933, 2016. [13] A. Radford, K. Narasimhan, T. Salimans, I. Sutskever, et al. Improving language understanding by generative pre-training. 2018.
  69. References v [14] A. Radford, J. Wu, R. Child, D.

    Luan, D. Amodei, I. Sutskever, et al. Language models are unsupervised multitask learners. OpenAI blog, 1(8):9, 2019. [15] C. Raffel, N. Shazeer, A. Roberts, K. Lee, S. Narang, M. Matena, Y. Zhou, W. Li, P. J. Liu, et al. Exploring the limits of transfer learning with a unified text-to-text transformer. J. Mach. Learn. Res., 21(140):1–67, 2020. [16] A. Rajkomar, E. Oren, K. Chen, A. Dai, N. Hajaj, P. Liu, X. Liu, M. Sun, P. Sundberg, H. Yee, K. Zhang, G. Duggan, G. Flores, M. Hardt, J. Irvine, Q. Le, K. Litsch, J. Marcus, A. Mossin, and J. Dean. Scalable and accurate deep learning for electronic health records. npj Digital Medicine, 1, 01 2018.
  70. References vi [17] A. Roy, M. Saffar, A. Vaswani, and

    D. Grangier. Efficient content-based sparse attention with routing transformers. Transactions of the Association for Computational Linguistics, 9:53–68, 2021. [18] J. Sarzynska-Wawer, A. Wawer, A. Pawlak, J. Szymanowska, I. Stefaniak, M. Jarkiewicz, and L. Okruszek. Detecting formal thought disorder by deep contextualized word representations. Psychiatry Research, 304:114135, 2021. [19] A. Vaswani, N. Shazeer, N. Parmar, J. Uszkoreit, L. Jones, A. N. Gomez, Ł. Kaiser, and I. Polosukhin. Attention is all you need. Advances in neural information processing systems, 30, 2017.
  71. References vii [20] M. Zaheer, G. Guruganesh, K. A. Dubey,

    J. Ainslie, C. Alberti, S. Ontanon, P. Pham, A. Ravula, Q. Wang, L. Yang, et al. Big bird: Transformers for longer sequences. Advances in Neural Information Processing Systems, 33:17283–17297, 2020.