最新AI論文をキャッチアップ

捨ててしまうのはもったいない!BERTの出力を組み合わせて文ベクトルを作るSBERT-WK

捨ててしまうのはもったいない!BERTの出力を組み合わせて文ベクトルを作るSBERT-WK

natural language processing

3つの要点
✔️ BERT の埋め込み表現が各層で異なる情報を捉えていることを実証
✔️ 各層の情報を統合して文ベクトルを構成する手法を提案

✔️ 提案手法で主要なタスクでの精度向上を達成

SBERT-WK: A Sentence Embedding Method by Dissecting BERT-based Word Models
written by 
Bin WangC.-C. Jay Kuo
(Submitted on 16 Feb 2020 (v1), last revised 1 Jun 2020 (this version, v2))

Comments: Accepted at arXiv
Subjects: Computation and Language (cs.CL); Machine Learning (cs.LG); Multimedia (cs.MM)
  Official
 
  Comm  

はじめに

近年の自然言語処理では、巨大なコーパスで事前学習を行ったモデルが大きな成功を収めています。その代表格とも言えるのが、2018年に Google が公開した論文 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding にて提案された BERT (Bidirectional Encoder Representations from Transformers) です。BERT は Transformer を複数層重ねたモデルで、大量の教師なしテキストを用いた事前学習タスクを解くことで、下流タスクに有用な表現を獲得します。原著論文で提案されている事前訓練タスクは以下の二つです。

  • テキスト内の単語のうち15%を選択し、それらを正解として単語予測を行う (MLM: Masked LM)。選択された各トークンは以下のように処理される。
    • 80% を [MASK] という特殊トークンに置き換える
    • 10% をランダムなトークンと入れ替える
    • 10% はそのまま
  • BERTの tokenization の際に文頭に付与される特殊トークン [CLS] を用いて、2つの文を入力した時に、2文目が1文目の続きの文かどうかを予測する(NSP: Next Sentence Prediction)。

BERT で得られる単語のベクトル表現は文脈化単語埋め込み表現と呼ばれており、Word2VecGloVe や fastText など既存の単語埋め込み表現が捉えることができていなかった、多義性を考慮したベクトル表現を得ることが出来ます。

例えば、「金庫」や「土手」といった複数の語義を持つ "bank" という単語に対し、Word2Vec では一つのベクトルでしか表現できていませんでしたが、BERT ではその単語が出てくる文脈によって異なるベクトルを与えることができるということです。

原著論文では、上記の訓練を BooksCorpus (8億単語) と English Wikipedia (25億単語) を用いて行っており、多数のタスクで既存の研究と比べて大幅な精度向上を達成しました。

より詳しい解説については、別途本サイトで BERT の解説記事を掲載していますので、是非ご覧ください。

また、上記 BERT の訓練手法を見直し、頑健性を向上させるための様々な手法を盛り込んだのが、論文 RoBERTa: A Robustly Optimized BERT Pretraining Approach で提案された RoBERTa です。より大きなデータ、バッチサイズを使用し、事前訓練タスクから次文予測を除くことで種々のタスクでの性能向上を果たしました。

また、BERT の問題点を克服するために新しい学習手法を導入した論文 XLNet: Generalized Autoregressive Pretraining for Language Understanding で提案された XLNet というモデルもあります。こちらも詳しい解説は本サイトの解説記事に譲ります。

ところで、自然言語処理では、文の埋め込み表現を作成したい時があります。文の埋め込み表現は例えば、ある記事に対してそれと類似した記事を推薦したり、文章から筆者の感情極性を推定したりといった用途に用いることができます。既存の手法では、Word2Vec から得られた単語ベクトルを単純に足し合わせる、またはその平均をとるといった手法で文ベクトルを作成していましたが、先述の通りこの手法では単語の多義性を上手く考慮することができていない可能性がありました。また、BERT の  [CLS] ベクトルや出力ベクトルの平均を取った場合の文ベクトルとしての性能は良いとは言えず、効果的な文ベクトルの生成手法が必要となっていました。

この問題に対して、BERTを用いて文ベクトルを生成する手段を提供したのが論文 Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks にて提案された SBERT (Sentence-BERT) です。SBERT は事前訓練済みの BERT にさらに学習をさせることで、有用な文ベクトル表現を作成することを可能にしました。

本記事では、BERT が捉えている情報を上手く用いることによって、SBERT をさらに改良した SBERT-WK というモデルをご紹介します。事前の準備として、 SBERT の概要とその論文について解説を行い、さらに SBERT-WK の論文に関する解説を行います。なお、図表は全て論文ないからの引用となります。

続きを読むには

(14066文字画像17枚)

AI-SCHOLARに
登録いただく必要があります。

1分で無料で簡単登録する

または
塚越駿 avatar
コードを書いたり埋め込み表現の研究をしたりしています。

記事の内容等について改善箇所などございましたら、
お問い合わせフォームよりAI-SCHOLAR編集部の方にご連絡を頂けますと幸いです。
どうぞよろしくお願いします。

お問い合わせする