📑

【図解】BERTの仕組みと進化の流れ:Attention・Transformerから理解する

に公開

はじめに

自然言語処理(NLP)で注目される技術の一つが「BERT」です。Googleが開発したこのモデルは、検索エンジンや文章理解タスクで高い性能を発揮します。自然言語処理の手法・加味できることは、下図のように進化してきました。本記事では、特にRNN・LSTM以降の技術革新に焦点を当てながら、BERTの仕組みを解説していきます。

1. RNN(再帰ニューラルネットワーク)

BoWやWord2Vecでは、単語の並び順に関する情報を保持できません。これを補完する方法にRNNが挙げられます。RNNは、時系列を扱うのが得意なニューラルネットワークの1つです。文章も単語が順に並んでいるという点で、時系列データとみなしてRNNで扱うことができます。

RNNのイメージは以下の通りで、「現在の入力値と前回の出力値を合計して出力する」処理を繰り返しています。これにより、入力される単語の順番(≒文脈)を踏まえた処理ができます。一で、長文になるほど「過去の情報」が忘れられてしまう(長文になるほど文脈を捉えられなくなる)という「長期依存性の問題」があります

2. LSTM (長・短記憶)

RNNの「長期依存性の問題」を補うモデルとしてLSTMが挙げられます。RNNもLSTMも再帰処理を行う点は同じですが、複数のゲートを持つ隠れ層により、情報の取捨選択を自動的に行える点が特徴です。主な構成要素は以下の通りです。

  • CEC:過去のデータを保存する要素
  • 忘却ゲート:CECの中身をどの程度残すか調整する要素
  • 入力ゲート:前回の入力をどの程度受け取るか調整する要素
  • 出力ゲート:前回の出力をどの程度受け取るか調整する要素

これらの仕組みにより、RNNよりは文脈を捉えた処理ができるようになりました

上記のような計算手法を用いたモデルに「Seq2Seq」が挙げられます。このモデルは処理の途中で、文全体を1つの固定長ベクトルに圧縮して表現します。この方法は短文には有効ですが、文が長いほど1つの固定長のベクトルでは意味を表現しきれず、精度が落ちるという問題があります。

3. Attention(注意機構)

LSTMでも長文処理には限界がありました。そこで、より長文を処理できるように、Attentionという技術が開発されました。Attentionは、出力するごとに「どの入力単語に注目すべきか」を毎回計算し、適切に情報を抽出する仕組みです。これにより、RNNやLSTMよりも柔軟に対応できるようになります。Attentionは、以下のようにQuery・Key・Valueの3つのベクトルで計算されます。

  • Query:入力されたもののうち、検索をかけたいもの
  • Key:検索対象とQueryの近さを測る
  • Value:Keyに基づき出力されたもの




代表的なAttentionの種類は以下の通りです。

  • Self-Attention
    入力と記憶が同一のAttention。文法構造や単語同士の関係性などを得るために使われる。
  • SourceTarget-Attention
    入力と記憶が異なるAttention。Transformerではデコーダーとして使われる。
  • Multi-Head Attention
    複数のAttentionを並行に実行する。BERTで使用されている。
  • Masked Multi-Head Attention
    特定のKeyに対してAttentionWeightを0にする。Transformerではデコーダーとして使われる。入力した単語の先読み(カンニング)を防ぐために、情報をマスク(遮断)する。

4. Transformer

RNNでは、単語を一つずつ順番に処理する必要があるため、並列化が難しく、学習に時間がかかります。さらに、RNNでもLSTMでも「長期依存性の問題」の問題もありました。Transformerは、Attentionの仕組みだけを使って文を処理することで、これらの課題を解消したモデルです。

左の図は論文「Attention Is All You Need.」(2017)より引用



Transformerの主な特徴は以下の3つです。

  • Self-Attentionが導入されている
    これにより、文法構造や単語同士の関係性を把握できます。
  • Multi-Head Attentionが導入されている
    これにより、並列処理が可能な構造を活かして、
    全単語を一度に入力して高速かつ高精度な処理を実現できます。
  • ポジショナルエンコーディングが導入されている
    これにより、単語の位置情報が把握できます。

5. BERT

BERTは、Transformerのエンコーダ部分のみを活用した構造を持つモデルです。2018年にGoogleによって発表され、NLPタスクの多くで従来モデルを上回る性能を記録しました。

BERTの特徴

  • 学習の仕組み:事前学習+ファインチューニング
    BERTでは以下の2つのタスクを通して事前学習を行います。
    • Masked Language Model
      文中の単語を一部隠して、正しい単語を予測します。
    • Next Sentencee Prediction
      2文が連続するものかどうかを予測します。

その後、タスクに応じたファインチューニングを行います。従来の事前学習モデルでは、大量の教師データを使用して、タスクごとに学習していたのに対し、BERTでは、少量の教師データで、事前学習された共通のニューラルネットワークをタスクに応じてファインチューニングすることで学習できます。ファインチューニングの際には、出力層を修正することで対応しています。

  • 双方向表現
    単語を予測する際に、前後両方の単語を同時に参照することで、
    文全体の意味をより正確に捉えられます。

  • 入力ベクトルの構成
    単語+文+位置の3つの情報を合算したベクトルを入力とします。

    論文「BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding」(2018)より引用

BERTの種類

  • cl-tohoku/bert-base-japanese-v3
    東北大学により開発された日本語BERTモデルで、日本語Wikipediaをコーパスとして学習されています。多くの日本語NLPタスクにおいてベースラインとして広く使用されています。

  • 日本語 ModernBERT
    cl-tohoku/bert-base-japanese-v3よりも長文を処理できます。

  • LUKE Japanese Large
    BERTを基盤としながらも固有表現抽出に特化した構成が特徴です。日本語データにも対応し、意味的な情報抽出性能に優れています。

BERTでできること(活用例一覧)

活用領域 タスク例
テキストの理解 文の意味理解、感情分析、カテゴリ分類など
文と文の比較 類似性判定、含意判定(NLI)、重複検出
単語の意味解析 品詞、固有表現抽出、意味予測
QA・文脈理解 文脈から情報を抽出

BERT以降のモデル

  • DistilBERT
    BERTのパラメータ数を削減して軽量化したモデルで、元の性能をおおむね維持しつつも高速に推論が可能となるよう設計されています。

  • RoBERTa
    BERTの事前学習手法を最適化することで、より高い精度を実現したモデルです。特に訓練データの量や学習手順の見直しがなされています。

  • Electra
    Masked Language Modelではなく、入力文中の単語が置き換えられているかどうかを判別するタスク(置換検出)により事前学習を行うモデルで、学習効率の高さが特徴です。

  • GPT
    デコーダベースの自己回帰型モデルで、自然言語の生成を目的として設計されています。文生成・要約・会話などの生成タスクにおいて高い性能をします。

おまけ:BERTと生成AIの違い

BERTと生成AI(例:Mistral, GPT, ClaudeなどのLLM)は、目的・構造・学習方法・出力形式などが異なります。

観点 BERT 生成AI(MistralなどのLLM)
モデルの種類 Encoder型(双方向) Decoder型(自己回帰型)
処理の目的 文の理解
(分類・抽出・意味判定など)
テキストの生成
(回答・文章作成・要約など)
出力の性質 入力に対する固定長の特徴量・スコア 入力に続く自然な文章(連続トークン)
学習方式 Masked Language Model(MLM)
Next Sentence Prediction(NSP)など
Causal Language Modeling
(次の単語を予測)
主な用途 感情分析・分類・固有表現抽出・
意味判定・検索強化
会話応答・文生成・要約・
翻訳・自動コード生成

おわりに

本記事では、自然言語処理モデルの進化を、RNNからBERTまで整理しました。BERTは、TransformerとAttentionの発展の集大成であり、現在主流となっているLLM(大規模言語モデル)や生成AIの基礎にもなっています。

BERTは、その技術的な完成度だけでなく、「これまでの課題をどのように乗り越えたのか」という点でも非常に学びの多いモデルです。こうした背景を知ることで、モデルを「使うだけ」ではなく「理解して選ぶ力」も養われると思います。

GitHubで編集を提案

Discussion