>100 Views
December 04, 18
スライド概要
2018/11/29
Deep Learning JP:
http://deeplearning.jp/hacks/
DL輪読会資料
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding Kosuke Suzuki Kyoto University, Physical Engineering B3 !1
行なったこと • BERTを動かしてみた - 一般の方が公開していたPyTorchコードを参考に実装 - 日本語Wikpediaをコーパスに事前学習 (コーパスサイズ2.5GB) - Googleが公式に発表しているものよりはるかに小さいモデルサイズ (8 Layers x 8 Heads, 256 hidden dim) - だいたい10 epochs くらい. (8 hours x 10 epochs) AWS GPU V100 4つ x 80 hours (10万円くらい) - Next Sentence Prediction Acc rate 90% 程度まで引き上げたところで終了 - Jupyter Notebook 形式で公開済み • 今回の考察内容の詳細はこちらに公開済み !2
書誌情報 •Title – BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding •URL – ArXiv •著者 –Jacob Devlin Ming-Wei Chang Kenton Lee Kristina Toutanova –Google AI Language •概要 –Bidirectional Transformerをユニットにフルモデルで構成したモデル –事前学習タスクとして、マスク単語予測タスク、隣接文判定タスクを与える –8つのタスクでSOTA達成 –Googleが事前学習済みモデルを公開済み / TensorFlow / PyTorch !3
一分でBERTをおさらい • Googleが発表したPre-trainedモデル • 8つのタスクで軒並みSOTAを叩き出しDL for NLP界隈で 盛り上がっている • Transformer (Self-Attention) を多層に積み重ねた非常に シンプルなモデル • 事前学習に大規模コーパスを使用する GoogleはWikipediaとBook corpusを使用 • 事前学習タスクはふたつ • 文中でMask or shuffleされた箇所の正しい単語を予測させる @_RyobotさんのTweetより引用 • 二文を与え、文章が隣接しているものか否かを判定させる • 事前学習の特性上、学習に膨大な時間がかかる → お金がかかるので、気軽に試しにくい !4
一分でBERTをおさらい •QA応答のタスクSQuADでは従来のアプローチが 一掃され、人間のスコアと争う事態に (ついこの前まで人間が負けていました) !5
動機 BERTの内部動作をみてみよう !6
背景 @taku910さんのツイートを引用 !7
実験手法1 •手法1 - 全ての Attention heads の出力の加算平均を取り可視化する - Attention状況の可視化は、Attention機構を持つモデルの観察で行われる定石手段 例1) 極性分析 例2) 翻訳 !8
実験手法2 •手法2 - BERTによって生成される単語の内部状態を可視化する - Word2Vecでよく行われていた手法 - 異なるカテゴリの単語がどのようにマッピングされるかを観察する - 単語の内部状態をPCAで二次元に圧縮し可視化 - 多義語が空間上でどのようにマッピングされるかも観察する -Word2Vecでは表層系が同じ単語は一点にまとめられていた -文脈情報をとらえる(と言われる)BERTなら多義語解釈も可能か !9
実験結果(手法1) 赤:通常の単語にかかるAttention, 緑:Mask単語にかかるAttention !10
実験結果(手法1) • 極性分類や翻訳の時のようなわかりやすいAttentionの傾向は見えない - Mask単語予測と隣接文予測の複合タスクを事前学習タスクとしている - そもそも人間的に自然なAttentionというのがそもそも自明でないから比較できない? !11
実験結果(手法1) • 単語にかかるAttention平均値(X軸)と単語の出現頻度(Y軸)の関係性を調べた - Attentionが強くなるほど、単語の出現頻度は少なくなる傾向 - 「珍しい単語に注意が集まる」という極めて人間的な傾向 - 「珍しい単語」=「説明力の高い単語」という仮説 !12
実験結果(手法2) • カテゴリごとの分類はほぼできている 様子 • 全く同じ単語でも空間上の違う点にマッ ピングされる !13
実験結果(手法2) ちなみに学習に用いるコーパスサイズに違いによる内部状態の分布の差 100MB 500MB コーパスサイズが大きくなるほどクラスターがはっきりしてきます 2500MB !14
実験結果(手法2) 多義語分類1 【首】 辞書的な意味 - 人体の一部の意の「首」 - 解雇、リストラの意の「首」 - 市長、知事などリーダーの意の「首」 内部状態空間では 1. 知事、市長などの付近の「首」 2. 解雇、退職などの付近の「首」 3. スーツ、ワンピースなどの付近の「首」 !15
実験結果(手法2) 多義語分類1 【右】【左】 辞書的な意味 - 方向の右・左 - 思想傾向の右・左 内部状態空間では 1. 革新、保守などの付近の「右」「左」 2. スーツ、ワンピースなどの付近の「右」「左」 → 多義語解釈に基づいたマッピングを行なっていそう !16
Appendix ある多クラス分類データにBERTを試験的に応用した結果 方針1. BERTから出るCLSトークンをSVMで分類する(BERTモデルはフリーズ) 方針2. BERTから出るT1~Tnトークンの加算平均をSVMで分類する 方針3. BoW + Countベースでベクトル化しSVMで分類する 方針4. BoW + TFIDFベースでベクトル化しSVMで分類する 方針4 方針3 方針1 感想 • 使用したデータベースの特性上、データの拡張はキー ワードをベースに人為的に行っている → BoWアプローチが有利か?(BERTの擁護) • では、データベースに存在しない単語を用いたクエリ が来た場合に文章分類を行うタスクではBERTが有利 か?(BERTの擁護) • BERTのパラメタ更新をフリーズさせて、ただの特徴量 抽出機としてだけ使うのには限界がありそう。セオリー 方針2 通りFineTuning時にパラメタ更新を行うべきか。 !17
まとめ・感想 • まとめ - BERTは事前学習の際に、一部のDiscriminativeな単語に注意を当てていると思われる - 注意が強い単語は出現頻度が低い(レア)な傾向がある - BERTは文脈に基づいた多義語解釈が可能 - Word2Vecで一点に押しつぶされていた情報がBERTでは損失しない - 多様な応用可能性 • 感想 - 汎用モデルとはいえ、少量データセットのタスクにおいては性能がいまひとつ - NLPでは原始的なアルゴリズムが性能を発揮することが多いが、人間の認知回路に近づいたBERTによっ てその所以が少し解明されるかも? - BERTのAttention状況がidf (Inverse Document Frequency、逆文書頻度) と類似しているように思える !18