深層学習による自然言語処理 輪読会#2 資料
by
Yoichi Tokita
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
深層学習による⾃然⾔語 処理 輪読会 #2 2022/03/10 @yoichi_t
Slide 2
Slide 2 text
⾃⼰紹介 • tokita(@yoichi_t) • 所属:株式会社Glia Computing (https://www.glia-computing.com/) • 2018年8⽉に設⽴(Co-Founder) • 機械学習/データ分析のPoC、導⼊⽀援、コンサル • 過去 • 広告会社で推薦システムの開発をやっていたり、警備会社で⼈物⾏動 の研究をしてました
Slide 3
Slide 3 text
⾃⼰紹介 • tokita(@yoichi_t) • チョコボールの秘密を解明するために、⽇々データを収集&解析 • その他の活動はこちら チョコボール 統計
Slide 4
Slide 4 text
3章 ⾔語処理における深層学習の基礎 深層学習ベースのNLPにおける「⾔語モデル」について解説 • 3.1 準備 • 記号のベクトル表現(one-hot-vector) • 3.2 ⾔語モデル • 「⽂」の⽣成される確率のモデル(系列データの確率モデル) • 3.3 分散表現 • 「記号」のベクトル表現(実数ベクトル) • 3.4 系列変換モデル • ⽂(系列)から⽂への変換(ニューラル⾔語モデルの拡張)
Slide 5
Slide 5 text
3.1 準備 • NLPで扱うデータ(=テキスト)は可変⻑の「記号」列(sec.1) • ニューラルネットワークは⾏列積(sec.2)であるので、数値(ベクト ル表現)に変換する必要がある 天気 は 良い です 今⽇ 𝑥! 𝑥" 𝑥# 𝑥$ 𝑥% 𝑿 = NN 𝑦! 𝑦" 𝑦# 𝑦$ 𝑦% 𝒀 = 天気 は 良い です 今⽇ 𝑒$ 𝑜$ 記号 数値 𝑓 ⋅
Slide 6
Slide 6 text
3.1 準備 • NLPで扱うデータ(=テキスト)は可変⻑の「記号」列(sec.1) • ニューラルネットワークは⾏列積(sec.2)であるので、数値(ベクト ル表現)に変換する必要がある 天気 は 良い です 今⽇ 𝑥! 𝑥" 𝑥# 𝑥$ 𝑥% 𝑿 = NN 𝑦! 𝑦" 𝑦# 𝑦$ 𝑦% 𝒀 = 天気 は 良い です 今⽇ 𝑒$ 𝑜$ 記号 数値 one-hot ベクトル 埋め込みベクトル (3.3節) 𝑓 ⋅ ソフトマックス関数 ニューラル⾔語モデル(3.2, 3.4節)
Slide 7
Slide 7 text
one-hotベクトル • 定義3.1 (p.44) • 語彙(単語種類数)次元Dのベクトルにおいて、該当の語彙ID次元の 要素が1で他の要素は全て0のベクトル • 例. 語彙𝒱 = 今⽇, 天気, 良い, は, です • 今⽇:𝑥! = 1, 0, 0, 0, 0 " • は: 𝑥# = 0, 0, 0, 1, 0 " 5次元
Slide 8
Slide 8 text
埋め込みベクトル • 単語を固定次元(任意)の実数ベクトルで表現したもの • 単語の「分散表現」とも呼ばれる • いわゆる特徴抽出 • 事前に埋め込み⾏列を取得せず、NNの層として暗に仮定するケースもある (NLPでは事前に変換⾏列を取得することが多い?) • one-hotベクトルに「埋め込み⾏列E」をかけて算出 • 埋め込み⾏列Eについては、3.3節 • ̅ 𝑥 = 𝐸𝑥 ̅ 𝑥& ̅ 𝑥! ̅ 𝑥' 埋め込み⾏列E D次元 V次元
Slide 9
Slide 9 text
NN出⼒から記号へ • 記号世界への変換はsoftmax関数(スケーリング係数付き) スケーリング係数aを⼤きくすると、 one-hotベクトルを近似 • 確率モデルとしてカテゴリ分布を仮定(多 クラスロジスティック回帰)した⽅が理解 しやすくないか? • 実装的にはargmaxを取る操作をする?
Slide 10
Slide 10 text
3.2 ⾔語モデル • 確率的⾔語モデル𝑃 𝑌 :⽂が⽣成される確率のモデル化 • 単語の種類だけでなく、順番が重要(BOS(⽂頭)からEOS(⽂末)) • 単語の⽣成が独⽴ではなく、系列データとして意味があるということ (各単語の確率の単純な総積ではない) 𝑌 = 𝑦!, 𝑦#, ⋯ , 𝑦$ , 𝑦% はone-hotベクトル • Nグラム⾔語モデル(古典的な⼿法):N個の単語の組み合わせの頻度 • 組み合わせの数をカウントするだけ • ニューラル⾔語モデル:ニューラルネットで確率を推定 • ニューラルネットのパラメータ推定が必要(学習コスト⾼い) • Nグラムモデルよりも⾔語モデルとしての性能が優れている ⽂脈(context):単語の出現確率の計算に⽤いる周囲の単語 RNNのケースでは最初の単語から全て考慮(𝑌(:*+! ) Nグラム(順伝播型)のケースでは𝑌*+,:*+!
Slide 11
Slide 11 text
順伝播型ニューラル⾔語モデル • 𝑌)*+:)*- を⼊⼒し、順伝播ニューラルネット(Feedforward NN;FFNN)によってt番⽬の単語の確率をモデル化 𝑌*+-:*+! 𝑝* = softmax 𝒐* 5 𝑦* ℎ* 𝑜* 𝑊. 𝑊/ 式(3.11) V次元ベクトル
Slide 12
Slide 12 text
再帰ニューラル⾔語モデル • 再帰ニューラルネット(Recurrent NN; RNN)を⽤いたモデル • 可変⻑⼊⼒を⾃然に扱える • 過去の全ての単語列をcontextに利⽤ モデルとしてはcontextが異なるだけ 式(3.13) ℎ*+! 𝑌*+! 𝑝* = softmax 𝒐* 5 𝑦* ℎ* 𝑜* 𝑊. 𝑊/ 𝐾× 𝐷 + 𝐾 ⾏列 K次元ベクトル 𝐷次元ベクトル V次元ベクトル
Slide 13
Slide 13 text
⾔語モデルの評価 • 𝒟 個の評価データに対して⾔語モデル𝑃./012 を評価したい • パープレキシティ(perplexity; PPL) • 負の対数尤度と関係する。 • コストとみなせるので、⼩さいほど良いモデル。 𝑃𝑃𝐿 = 𝑏< データnに対する対数尤度 正解単語の予測確率が⾼いほどPPLは ⼩さくなる(=良いモデル) 確率に対数をかけているので −∞, 0
Slide 14
Slide 14 text
⾔語モデルからの⽂⽣成 • ⾔語モデルは⽂脈を条件とした条件付き確率なので、⽂の⽣成 ができる • ⾔語モデルは⽂(単語系列)が⾃然か否かを評価することが本来の⽬ • ⽣成の場合、⽣成した系列が「⽂脈」として⼊⼒されることになる。⾔語モデル では⽂脈は既知としているので、この点からも⽣成の難しさが直感的に理解でき そう • ⽣成の議論は3.4節 • 状態空間モデルを想像すると、観測データが⼊⼒されないため予測分 布の更新が⾏われず、フィルタ分布が計算できない。→難しそう • スケーリング係数付きsoftmaxで予測値を1つに確定するのではなく、 予測分布を扱うべきでは?→ビームサーチ(3.4.4)
Slide 15
Slide 15 text
⽂字単位の⾔語モデル • ⽇本語など、分かち書き(単語分割)が必要な⾔語では、分かち 書きがそもそも難しい • →⽂字単位での⾔語モデル • 語彙の数は⼤幅に減るが計算量が増えるし、精度もあまりよくないこ とが知られている • ただ、最近の研究では分かち書きフリーなモデルが提案されてきてい るらしい • 「NLP における分かち書き最適化・分かち書きフリー⼿法の総まとめ」, ステー ト・オブ・AIガイド(2022/01/19, 有料記事), link • Linting+, 2021, ByT5: Towards a token-free future with pre-trained byte-to- byte models, link • Jonatham+, 2021, CANINE: Pre-training an Efficient Tokenization-Free Encoder for Language Representation, link
Slide 16
Slide 16 text
3.3 分散表現 • 離散オブジェクトをD次元のベクトルで表現したもの • 離散オブジェクト:記号。物理的な量を持たない表現。カテゴリ。 • 何がうれしいか • 離散オブジェクトに対して加算や乗算といった 演算を定義できる • オブジェクトの類似度算出、意味の加算/減算など • 単語の持つ「意味」(のようなもの)を扱える • 分布仮説:ある単語の周囲の⽂脈によって「意味」が決まる • 近い⽂脈で現れる単語は似た意味を持っているはず→ベクトルの類似度が近い テキストp.59, 図3.1 テキストp61, 図3.3
Slide 17
Slide 17 text
分散表現の獲得 • 3つの⼿法が紹介されている • (1)ニューラル⾔語モデルを利⽤する • 普通のニューラルネットを利⽤して普通にニューラルネットを学習 • (2)対数双線形モデルを利⽤する • (1)の派⽣系 • word2vecとして知られている⼿法で使われる • (3)負例サンプリングにより獲得 • (2)の課題に対するアプローチ(計算量の削減)
Slide 18
Slide 18 text
分散表現の獲得1 • ⽅法1: ニューラル⾔語モデルの1層⽬として普通に学習 • 式(3.11, 3.13)のE(埋め込み⾏列)を固定値ではなく、学習するパラメー タとする 𝑌*+-:*+! 𝑝* = softmax 𝒐* 5 𝑦* ℎ* 𝑜* 𝑊. 𝑊/ 式(3.11) これを学習で獲得 このアプローチは、NLPだけでなく、カテ ゴリ型の変数を扱う分類等のモデルでよく 採られる気がする (機械の異常検知、広告レコメンドなど)
Slide 19
Slide 19 text
分散表現の獲得2 • ⽅法2: 対数双線形モデルを⽤いる • ニューラル⾔語モデルの派⽣系として、分散表現を獲得するのに特化 • 数百万規模の語彙を扱えるように計算量の課題に対処(word2vec) • word2vec:skip-gramとCBoWというモデルの総称 テキストp67, 図3.5 • CBoW(Countinuous Bag-of-Words) • 周辺の単語からマスク単語の予 測を⾏う課題を通して、埋め込 み⾏列Eを獲得 • skip-gram • 1つの単語を⼊⼒して、次に現 れる単語(周辺語)を予測する 課題
Slide 20
Slide 20 text
分散表現の獲得2 • skip-gramはCBoWの特殊形 • マスク単語の周辺複数語か⼀つの単語かの違い • ⼊⼒単語群(ℋ)から出⼒単語(𝑦A )を予測する線形NNで表現できる CBoW(式3.17, 18) skip-gramではℋが1単語となるだけ ←softmax関数(確率の定義に押し込める) ←線形NNと同じ
Slide 21
Slide 21 text
分散表現の獲得2 • φの計算を図で考える まずはskip-gramで確認 CBoWはskip-gramの出⼒を単純に総和 テキストp.68, 図3.6の1層のNN(多クラスロジスティック回帰) と等価であるという説明がいまいちしっくりこないです。特 徴抽出層(E)が恒等写像を活性化関数にしているので等価な1 層NNが存在するということ?
Slide 22
Slide 22 text
分散表現の獲得2 • CBoWの学習 • 負の対数尤度(交差エントロピー)を最⼩化する問題として定式化 • 構造として多クラスロジスティック回帰と等価であることからも理解できる 語彙数分の計算が必要→計算が重い →負例サンプリング(⽅法3)
Slide 23
Slide 23 text
分散表現の獲得3 • ⽅法3: 負例サンプリングによる獲得 • 語彙数が多くなった場合の計算⾼速化へのアプローチ • モデルを変更する CBoW(skip-gram) • ⼊⼒語彙からマスク単語の予測 • 多クラス分類 負例サンプリング • 実データの確率分布から得られ たデータか否かの分類タスク • 2クラス分類 語彙ℋとマスク単語𝑦& のペアの特徴量φが実データの確率分布から得られているのか否かをモデル化する 2クラス分類ということから、シグモイド関数を利⽤した交差エントロピーを損失関数として定式化 (確率モデル的に考えると、ベルヌーイ分布を利⽤した対数尤度となる)
Slide 24
Slide 24 text
分散表現の獲得3 • 確率モデル的に式3.25を導出 • モデルの定義
Slide 25
Slide 25 text
分散表現の獲得3 • 確率モデル的に式3.25を導出 • 対数尤度の導出(式3.24が導出できる) 式3.24の符号反転 実データからサンプリングされた確率はシグモイド関 数を使って確率化する(2クラス分類なので)
Slide 26
Slide 26 text
分散表現の獲得3 • 確率モデル的に式3.25を導出 • 対数尤度の導出(式3.25の導出) ということで、3.25が導出できた 3.25では学習データ数分の総和しかなく、計算量が 低減されていることがわかる
Slide 27
Slide 27 text
3.4 系列変換モデル • 系列から別の系列を⽣成するモデル(seq2seq) • 翻訳、質問応答、⽂書要約など ⼊⼒ 出⼒ 𝑥! 𝑥" 𝑥# 𝑥$ 𝑥0 𝑿 = 𝑦! 𝑦" 𝑦# 𝑦$ 𝑦1 𝒀 = 𝑧 = Λ 𝑿 再帰ニューラルネット 再帰ニューラルネット 系列の最後の隠れ状態は⼊⼒系列 全ての情報を持っている ⼊⼒系列の隠れ状態を初期状態と して再帰NNにより系列を⽣成
Slide 28
Slide 28 text
系列変換モデルの定式化 • seq2seqの定式化 再帰ニューラル⾔語モデル(式(3.12))において、⼊⼒系列Xが条件とし て与えられている 再帰ニューラルネットの出⼒層と同じ定式化 再帰ニューラルネットの隠れ状態と同じ定式化。 だが、隠れ状態の初期値が以下の値(⼊⼒系列 を特徴量化したもの)。
Slide 29
Slide 29 text
系列変換モデルの構造 • seq2seqのモデル構造(テキストp.77, 図3.8) RNN構造(式2.37) LSTM、双⽅向RNNなど RNNの初期隠れ状態が⼊⼒系列の隠れ状態になっている ⽣成系列を⼊⼒ 符号化器で⽤いるRNNを複雑なモデルにすること が多い • 複合化の初期値に⼊⼒系列の情報が集約してお り、符号化をなるべく精緻にしておきたい • 複合化器は⽣成した値を逐次⼊⼒する形であり、 設計の⾃由度が少ない
Slide 30
Slide 30 text
系列変換モデルの学習 • seq2seqのモデルの学習 • 負の対数尤度を損失関数として学習 • 他のニューラル⾔語モデルと全く同様に、出⼒の活性化関数はsoftmax関数であ る。つまり、交差エントロピーを損失関数として学習することになる テキストp.74, 式3.32
Slide 31
Slide 31 text
系列変換モデルによる系列の⽣成 • ⾔語モデルを利⽤した系列⽣成(3.2.6参照) • 課題 • 各タイミングでの最適な単語を選択しても⽣成系列全体として最適とは限ら ない • 系列全体としての尤度は各単語の尤度の積ではない(系列データなので、⽂脈に依存 する) • 複合化器の⼊⼒は⽣成系列 • ⼀度推定が失敗すると、以降その失敗をひきづることになる • アプローチ • 貪欲法:各タイミングでの最適値を推定値と信じる • ビーム探索:各タイミングで上位K個の候補を保持して処理を進める
Slide 32
Slide 32 text
ビーム探索 • ⽬的は式(3.47)を満たす系列を⽣成すること ⽣成系列の尤度→系列としての尤度(累積対数尤度)を最⼤にしたい テキストp.84, 図3.9 各タイミングでの累積対数尤度の上位K候補を保持し ておく。Kを⼤きくすると最適に近い系列に近づく。
Slide 33
Slide 33 text
系列変換モデルの応⽤ • テキストデータからテキストデータ • 翻訳、対話システム • 翻訳については、従来の⼿法よりも良い精度が得られると⽰されている • Encoder-Decoderモデルとして • ⼊⼒データとしては「系列データ」に限定する必要はない • 複合化器の隠れ状態の初期状態を作れれば良い • show-and-tell • 画像データをencodeして、そこから説明⽂を⽣成
Slide 34
Slide 34 text
まとめ • 深層学習ベースのNLPにおける基礎的なトピックを眺めてきた • 記号世界と実数世界の橋渡し • 記号をベクトルとして扱うためにone-hotベクトルを利⽤ • softmax関数を利⽤して、実数ベクトルから記号(one-hotベクトル)へ変換 • ニューラル⾔語モデル • ⽂全体が⽣成される確率をモデル化したものが「確率的⾔語モデル」。コンテキス ト(周辺単語)を条件とした条件付き確率で定義。 • 分散表現 • 単語を密なベクトルで表現したもの。単語同⼠の演算ができる • 系列変換モデル • 系列を⼊⼒として別の系列を⽣成するモデル。モデルとしては再帰ニューラル⾔語 モデルと同様の定式化。