読者の皆さん、こんにちは。大規模言語モデル (LLM) の魅力的な世界に飛び込む私と一緒に参加できることを嬉しく思います。LLM の開発は、さまざまな分野の人々の関心を集めています。このトピックに不慣れな方は、ここが最適な場所です。このブログでは、トランスフォーマー、そのコンポーネント、その仕組みなどについて説明します。
始める準備はできましたか? さあ始めましょう!
トランスフォーマー モデルは、自然言語処理 (NLP) タスクで広く使用されているディープラーニング ニューラル ネットワーク モデルの一種です。トランスフォーマー モデルは、与えられた入力データのコンテキストをシーケンスとして学習し、そこから新しいデータを生成する専門家です。近年、トランスフォーマーは多くの大規模言語モデル (LLM)のベースライン モデルとして使用されています。
トランスフォーマーアーキテクチャは、2017 年 6 月に論文「 Attention Is All You Need 」で紹介されました。トランスフォーマーの導入後、NLP の分野はトランスフォーマーアーキテクチャを中心に劇的に進化しました。トランスフォーマーをバックボーンとして、多くの大規模言語モデル (LLM) と事前トレーニング済みモデルがリリースされました。NLP 分野におけるトランスフォーマーの進化の概要を簡単に見てみましょう。
2018年6月、最初のトランスフォーマーベースのGPT (Generative Pre-trained Transformers)が導入されました。同年後半には、 BERT (Bi-directional Encoder Representations from Transformers)がリリースされました。2019年2月には、GPTの高度なバージョンであるGPT-2がOpenAIによってリリースされました。同年には、 XLMやRoBERTaなどの多くの事前トレーニング済みモデルが導入され、NLP分野の競争がさらに激しくなりました。
2020 年から、NLP の分野は急成長し、多くの新しい事前トレーニング済みモデルがリリースされました。これらのモデルの成長は、主にトランスフォーマー アーキテクチャに依存していました。上記はリストのほんの一部に過ぎませんが、実際のシナリオでは、トランスフォーマー アーキテクチャに基づいて開発されたモデルも数多くあります。
トランスの構造を調べる前に、まずいくつかの基本的な概念を理解しましょう。
事前トレーニングとは、機械学習 (ML) モデルを最初からトレーニングする行為です。トレーニング手順は、最初にモデルの重みをランダム化することから始まります。このフェーズでは、学習のために大量のデータがモデルに供給されます。通常、このトレーニング フェーズはコストがかかり、時間がかかります。
ファインチューニングは、ドメイン固有の情報を使用して事前トレーニングされたモデルに対して実行されるトレーニング手順です。事前トレーニングされたモデルは広範な知識を獲得しているため、特定のドメインには適していません。このプロセスでは、事前トレーニングされたモデルが再トレーニングされますが、すでにいくつかの概念を学習しているため、コストは削減されます。
事前トレーニング済みモデルの微調整を実行するために、転移学習の手法を採用しています。転移学習とは、モデルが 1 つのユースケースから学習した知識を適用して、別のユースケースでの推論を予測する機械学習手法です。
トランスフォーマーのエンコーダーは、データのシーケンスを入力として受け取り、指定された入力シーケンスのベクトルのシーケンスを生成します。エンコーダー モデルは、その中にある自己注意レイヤーを利用してこれを実現します。これらの自己注意レイヤーについては、後で詳しく説明します。
これらのモデルは、しばしば「双方向」の注意を持つと説明され、自動エンコーディング モデルとも呼ばれます。エンコーダー モデルは、主に文の分類と固有表現抽出 (NER) で使用されます。
エンコーダーのみのモデルは、アーキテクチャー内にエンコーダーのみを持つトランスフォーマー モデルです。テキスト分類など、テキストの基礎となる表現を理解することを目的としたモデルの使用例では非常に効率的です。
トランスフォーマーのデコーダーは、一連のベクトルを入力として受け取り、一連の出力トークンを生成します。これらの出力トークンは、生成されたテキスト内の単語です。エンコーダーと同様に、デコーダーも多くの自己注意レイヤーを使用します。デコーダー モデルの事前トレーニングは、通常、文中の次の単語を予測することを中心に行われます。これらのモデルは、テキスト生成を伴うタスクに最適です。
デコーダーのみのモデルは、アーキテクチャー内にデコーダーのみを持つトランスフォーマー モデルです。テキスト生成に非常に効率的です。デコーダーは出力トークン (テキスト) の生成に特化しています。機械翻訳とテキスト要約は、デコーダーのみのモデルが優れているいくつかのユース ケースです。
トランスフォーマーの自己注意層により、モデルは入力テキスト内の単語間の長距離依存関係を学習できます。
つまり、このレイヤーは、指定された入力テキスト内の特定の単語にさらに注意を払うようにモデルに指示します。
モデルは、入力シーケンス内のテキストのペア間の類似度スコアを計算することによってこれを実行します。次に、レイヤーはこのスコアを使用して入力ベクトルの重みを計算します。これらのレイヤーの出力は、重み付けされた入力ベクトルです。
エンコーダー、デコーダー、アテンション レイヤーの基本的な概念を理解したので、トランスフォーマーのアーキテクチャについて詳しく見ていきましょう。
トランスフォーマーモデルの構造は、下図のようになります。
エンコーダーは左側に配置され、デコーダーは右側に配置されます。エンコーダーはテキストのシーケンスを入力として受け入れ、出力としてベクトルのシーケンスを生成し、これがデコーダーの入力として送られます。デコーダーは出力トークンのシーケンスを生成します。エンコーダーは自己注意レイヤーで積み重ねられています。
各レイヤーは入力ベクトルを受け取り、すでに説明した自己注意メカニズムに基づいて重み付けされた入力ベクトルを返します。重み付けされた合計が自己注意レイヤーの出力です。
デコーダーには、自己注意層のスタックとリカレント ニューラル ネットワーク (RNN) も含まれています。自己注意層はエンコーダーと同じように動作しますが、RNN はベクトルの加重合計を出力トークンに変換する役割を担います。したがって、RNN が加重ベクトルを入力として受け入れ、出力トークンを出力として生成することは、これで明らかです。簡単に言えば、出力トークンは出力文に存在する単語です。
トランスフォーマーをコードレベルで理解するには、トランスフォーマーの PyTorch 実装を調べていただければ幸いです。
トランスフォーマーは、大量のデータの処理に優れ、人工知能 (AI) と自然言語処理 (NLP) の分野に革命をもたらしました。Google の BERT や OpenAI の GPT シリーズなどの主要モデルは、検索エンジンとテキスト生成に革新的な効果をもたらします。
その結果、それらは現代の機械学習に不可欠なものとなり、AI の限界を押し広げ、技術進歩の新たな機会を生み出しています。その結果、それらは現代の機械学習に不可欠なものとなり、AI の限界を押し広げ、技術進歩の新たな道を切り開いています。
楽しい学習を!
大規模言語モデル (LLM) に関するこのシリーズの他の記事を参照してください。