こんばんは。本日は、自然言語処理モデルのBERTについて調べて分かったことをまとめておこうと思います。
最近、テーブルデータ分析を少し離れて自然言語処理(NLP)を勉強し始めているのですが、KaggleなどでNLPのコンペのNotebookを見ていると、BERTを活用しているものが非常に多かったため、調べてみることにした次第であります。理解が誤っている部分がありましたら、ご指摘いただけますと幸いです。
それでは早速参ります!
Contents
BERTとは?
Googleが2018年10月に発表した論文で紹介された自然言語処理モデルです。こちらが原点の論文です。
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
以下、BERTの概要メモ
・Bidirectional Encoder Representations from Transformersの略。Transformerによる双方向のエンコーダ表現だが、この”双方向”という部分がキモ。(後ほど解説)
・ファインチューニング用に事前学習されたモデルであり、予測モデル自体ではない。(後ほど解説)
・BERTは予測モデルではないが、事前学習にあたっては、「Mask Language Model」と「Next Sentence Prediction」という二つのタスクに対して学習を行なう
・Mask Language Modelでは、入力データの単語をランダムに(15%)[MASK]として入れ替えて、この[MASK]に入る単語を、前後の単語セットを踏まえて予測させるモデル
・Next Sentence Predictionでは、入力データを語句に分解し、50%の確率で二句目を他の語句に入れ替えた時に、この二句目が元の語句か(文脈として正しいか)どうかを判定
・最終的に8個のベンチマークタスクでSOTA (State-of-the-Art:最先端)を達成
・BERTのモデルには、Attention機構が取り入れられている。
*Attentionについてはこちらの記事を参照。
・既に104の言語で事前学習済で、日本語にも対応済。
Google Trendで調べてみても、登場以来注目が高まってきていることがわかります。
そして中国でサーチされている割合がもっとも高い模様。
BERTを理解するための関連知識
Attention
従来のRNNでは、入力文が長くなると過去の情報を十分に記憶できなくなってしまう問題があったところ、これを解決するために発案されたのがこのAttention機構で、2015年に発表されました。
明確な定義は存在しないようですが、一般的には入力されたデータのうち、どの部分を重視するかを決定する手段の総称です。
このAttentionが大きな注目を集めたのは、入出力の関係の学習にあたり、入力データを1つの固定長ベクトル表現に変換することなく、可変長のデータ全体を保持したまま入力データの各要素と出力データの関係性を学習することを可能にしたためでした。
Attentionは、時系列データを扱うRNNへの導入が盛んに研究されているが、時系列データ以外にも利用可能な汎用的な技術として注目されているようです。
Transformer
Transformerは、2017年にGoogleが発表した論文「Attention is All You Need」で提唱されたモデルで、現在は自然言語処理分野でデファクトスタンダードとして利用されているモデル構造です。
どういう構造かというと、これまで自然言語処理で利用されてきたRNNやCNNを、Self-Attention-Layerと呼ばれる層に入れ替えたモデルのようです。
Transformer以前で主流であったRNNと比較すると、以下の点で優れているようです。
・精度が高い:現在のSOTAの多くがAttentionベースのモデル
・学習が早い: RNNは前の時刻の計算が終わるまで次の時刻の計算が開始できないため、学習が直列だったが、Transformerでは全ての時刻の計算を同時に行えるのでリソース(GPU)をフル活用して高速で計算が行える
・構造がシンプル:RNNを利用しないため、構造がシンプルに表現される(RNNを利用せず、Attention機構のみ利用)
Self-Attention-Layer
(工事中)
双方向
(工事中)
事前学習済モデル
事前学習済モデルとは、大量のデータを学習させて事前に構築された汎用的なエンコーダのことを指します。これらのモデルでは一般的に最終的に各タスクを処理する最終層(デコーダ)は含まれておらず、転移学習・ファインチューニングによりこれを獲得することで各タスクを処理できるようになるという考え方です。
*転移学習・ファインチューニングについては、こちらの記事を参照。
事前学習済モデルはBERT以前にも存在しており、自然言語処理の分野だと、OpenAI GPTがありましたが、上述しましたがこちらのモデルは双方向な学習ではなく、単一方向のみの学習であった点がBERTとの違いになります。
コメントを残す