Transformerがもっと強力になったら、個々のアプリもいらなくなるかも。
たとえば、時間を聞いて、その場で時計盤の画像を生成して見せくれるなら、極端な話 時計も時計アプリもいらなくなっちゃう。
すでに、そういう次元じゃないかもしれないけど。
あとは、電気代の問題ですね。
- Transformerモデルがすごいのは、「自己注意機構」でテキスト内の単語間関係を分析できるようになったこと。
旧来のモデルと比べ、効率的に文脈全体を把握できるようになったのが成長の背景です。 - 翻訳や要約といった自然言語処理(NLP)の複雑な課題に対応できるようになったことで、一躍注目を受けることになりました。
- また、柔軟性が高いのも特徴。
「アプリ」のようにさまざまな課題に対応する「NLPタスク」があり、それを同じ土台の上で実行できる「スーパーツール」です。 - このような柔軟性は、「自然言語」というデータの持つ、高い複雑性、曖昧さ、文法構造、非構造化データに由来するものだと考えられます。
1. Transformerモデルの「変換」とは?
Transformerがそれ以前の人工知能と比較して、どう新しいの?
Transformerモデルの「すごさ」は、「自己注意機構」による効率的な文脈理解と並列処理能力にあります。
これによって、従来のRNNやCNNモデルに比べて、自然言語の課題処理が速く高精度にできるようになりました。
「Transformer」という名前は、このモデルが採用する核心技術に由来します。
そこが「自己注意機構(Self-Attention Mechanism)」。
言語モデルは入力されたテキスト内の各単語が他の単語とどのように関連しているかを「変換(Transform)」し、その関係性に基づいて文脈全体を理解します。
つまり、テキストデータをいったん別の表現空間に「変換」してから、文脈の理解を始めます。
Transformerが提唱された論文「Attention Is All You Need(2017年)」によると、
シーケンス変換モデルでは、エンコーダ/デコーダ構成の複雑なRNNやCNNが優勢です。
[1706.03762] 必要なのは注意だけです
最高のパフォーマンスのモデルは、「注意機構」を通じてエンコーダーとデコーダーを接続します。
私たちは、再帰と畳み込みを完全に省き、「注意機構」のみに基づいた、新しいシンプルなネットワーク アーキテクチャである Transformer を提案します。
2. 従来のAIモデルとの違い
「自己注意機構」の変換プロセスは、テキストデータの扱い方を根本から変えました。
この点が、従来のAIモデルとは一線を画します。
- RNN
(Recurrent Neural Network:再帰型)
過去の情報を思い出しながら処理するAI。 - CNN
(Convolutional Neural Network:畳み込み)
局所的な特徴を捉えるのが上手なAI。
2-1. RNN(再帰型)の課題
従来のRNNやその派生形式のモデルは、テキストデータを順序通りに処理し、各ステップで前のステップの情報を「記憶」することで文脈を捉えようとします。
しかし、長い系列データを処理する際には、遠く離れた情報間の関係を捉えるのが難しく、また計算コストが高いという問題がありました。
「リカレント(Recurrent)」という言葉は、「再発する」や「繰り返される」という意味です。
RNNでの「リカレント」とは、このネットワークが過去の情報を繰り返し利用できる性質を指しています。
具体的には、RNNは時系列データやシーケンスデータを処理する際に、過去のステップの出力を現在のステップの入力として再利用(リカレント)することで、シーケンス内の情報を時間を通じて伝播させることができます。
2-2. CNN(畳み込み)の課題
CNNは、主に画像処理に適したモデルです。
自然言語処理の一部のタスクも試みられましたが、画像の特徴の検出と文脈の理解にはだいぶ隔たりがあったようです。
「畳み込み」という用語は、CNNが画像や音声などのデータから特徴を抽出する際に使用する数学的操作、すなわち「畳み込み演算(Convolution Operation)」に由来しています。
畳み込み演算では、入力データに対して小さなウィンドウをスライドさせながら、ウィンドウ内のデータとカーネルの要素ごとの積の合計を計算します。
この操作を通じて、画像のエッジ検出やテクスチャ認識など、局所的な特徴を効率的に捉えることができます。
3. 「パーティーでの会話」に対応しようとするRNNとTransformerの違い
RNNとTransformerのアプローチの違いを、パーティーのたとえで見てみます。
たとえば、あなたがパーティーにいて、複数の小グループで同時に会話が行われていると想像してください。
あなたの目的は、「周りの人々が何について話しているかを理解し、適切なタイミングで自分の意見を述べること」です。
宴会で回って話すのって大変だよね。
3-1. RNNは思い出し作業で「疲れ果てる」
旧来の人工知能モデル、特に自然言語処理におけるRNNやその発展形であるLSTM(Long Short-Term Memory)では、いくつかの課題がありました。
- 遠くの関連を捉えるのが難しい
- 計算効率が悪く時間がかかる
- 過去の情報の重み付けの問題
RNNは、思い出す力はあるものの労力がいるので、何でも覚えておくのは大変。
パーティーで初めに交わされた話題や情報をずっと覚えておいて、時間が経ってからの発言で効果的にリンクさせる、というのは難しいです。
また、一度に一つのグループの会話にしか参加できません。
一つ一つ順番に対応していかなければならないため、パーティーで複数の会話があると、理解に時間がかかります。
話の途中で何を思い出すのかも大切。
ところが、過去のどの発言が今の議論に最も関連があるのかを、「思い出す前に」選び取るのは難しい課題です。
これが難しいのは、人間でも同じだとは思うけど。
文脈を理解するために「過去のステップの出力を現在のステップの入力として再利用(リカレント)する」という方法論による制約なんだね。
3-2. Transformerはまず「頭の中を整理する」(ベクトル化)
Transformerモデルでは、以下のようなプロセスで対処しようとします。
Transformerモデルの「ベクトル化」は、あなたがパーティーで周囲の会話を「聞く」過程に例えられます。
耳から話の情報が脳に入ると、会話の各発言は脳で処理しやすい形に処理されているはずです。
これが、Transformerの場合は「ベクトル」です。
あー、聞いた話を一字一句覚えていなくても、なんとなく意味はわかるもんね。
大ざっぱにいえば、各会話を、以下のような「属性」を持つベクトルとして捉えることに似ています。
- 話題の種類:
政治、スポーツ、映画、音楽など、どのジャンルに属しているか。 - 感情の強度:
喜び、悲しみ、怒り、興奮など、どのような感情を含んでいるか、その強度はどれくらいか。 - 関与する人物:
会話に登場する人物や、その人物が話者にとってどのような関係性にあるか。
ある会話が、「面白かった映画の有名な俳優」について話しているなら、その会話を「映画」「興奮」「有名人」という軸でプロットできます。
会話の「特性」を、複数の「属性」に分解して数値化することは、それぞれの会話を多次元空間上の点(ベクトル)として表現したことになります。
まずは、とりあえず文脈関係なく、会話を分類していきます。
要は「ベクトル化」っていうのは、話の要点や特徴を元に頭の中で整理しているのと同じなのか。
3-3. 自己注意機構:会話の文脈の把握
次に、自己注意機構は、あなたが会話の流れを理解する過程に相当します。
あなたは全ての発言をぼやっと理解しながら、それぞれの発言が会話全体の中でどのような意味を持っているのかを評価しています。
この「ぼやっと理解する」っていうのが、RNNでは難しかったんだよね。
これを機械的に処理する上で、あらかじめ会話をベクトル化したことが役立ちます。
ベクトルは、数学的な操作で類似度の計算や分類などの分析ができるのです。
- 聞き分ける:
各グループで交わされている会話ごとの「関連性」から、特に注目すべきポイント(重要な単語)を見つけます。 - 関連付ける:
会話の流れ(文脈)の中で、各発言がどのように関連しているかを理解し、全体像を把握します。 - 反応する:
会話の文脈を踏まえ、適切なタイミングで自分の意見やコメントを述べます。
なるほど。
単に、だらだら順番に話を聞いていたからしんどかったのか。
いったん頭で整理してから話を聞くことで、スッキリと関連がわかるようになったんですね。
4. Transformerの自己注意機構の仕組み
でも、いろんな状況に対応して「聞き分ける」処理ってどんな感じなの?
Transformerの自己注意機構は、主に以下のステップで構成されています。
- 入力の埋め込みベクトルに変換する
まずは「埋め込み層」で、入力されたテキストを固定長のベクトル(埋め込みベクトル)に変換します。
埋め込みベクトルは、単語の意味的特徴を「濃縮」しているわけです。 - 位置エンコーディングの追加する
Transformerは系列の順序情報を直接はモデル化しません。
その代わり、各単語の位置情報を表すベクトル(位置エンコーディング)を埋め込みベクトルに加算します。 - 自己注意スコアを計算する
埋め込みベクトルと位置エンコーディングの結果から、
クエリ(Q)、キー(K)、バリュー(V)ベクトルを生成します。
これらに基づいて、各単語が文脈内の他の単語とどのように関連しているか「自己注意スコア」を計算します。 - 出力を生成する
自己注意スコアは、応答の生成に使います。
各単語に新しい意味を与え(文脈化)、各単語の新しい表現(文脈化された埋め込み)を計算します。
これが、テキスト全体を反映した応答になっているわけです。
なんかよくわかんないけど、言葉を文字列としてではなく、単なる数値でもなく、ベクトルとして扱っているのがポイントなんだね。
それで、最後にまた言語に戻すと。
4-1. 並列処理能力:複数の会話を同時に処理する
ここまでは、人間の話の応答に似ていました。
しかし、ここから Transformerは人間離れした能力を発揮します。
それが、「並列処理」です。
「各単語のベクトル化」など計算処理は、文脈とは関係ないです。
なので、どの順番で実行しても同じ結果になります。
そこで、プロセッサーをたくさん使うほど一度にたくさん処理できるのです。
複数のグループで同時に進行している会話を全て聞き、それぞれについて瞬時に理解し反応できると想像してください。
通常の人間では一つの会話に集中する必要がありますが、Transformerは内部で分業できるので全ての会話を同時に処理できます。
これが大幅な計算効率の向上で、長いテキストでもうまく処理できる秘訣だったのです。
「スケーラビリティ」って感じだね。
5. Transformerはスマホのような「万能ツール」
Transformerモデルのもう一つの特徴は、「柔軟性」です。
つまり、いろんな仕事に対応できることです。
ちょうどスマホのように、Transformerモデルも「万能ツール」と言えます。
- ある日は翻訳の問題を解決し(翻訳アプリ)、
- 別の日はユーザーの質問に答える(Q&Aアプリ)、
- また別の日はニュース記事を要約する(要約アプリ)
といった具合に、同じものを使っているのに、必要に応じて異なる仕事ができます。
5-1. NLPタスクと微調整
Transformerモデルは、「自然言語処理」という広い領域のさまざまな問題に対応できます。
「Transformerモデルの柔軟性」を日常的なイメージで説明するために、スマートフォンに例えてみましょう。
スマートフォンでの「アプリ」に相当するのは、
Transformerモデルでは「NLPタスク」と言えます1。
NLPタスクは、「利用者がしてほしいと求めている仕事」、つまり利用者のニーズや要求に応えるために設計された、自然言語処理に関連する特定の作業や機能を指します。
つまり、特定用途に特化した生成AIがたくさん作れます。
NLPは「Natural Language Processing」の略で、日本語では「自然言語処理」と訳されます。
人間が日常で使用する自然言語(英語、日本語、中国語など)をコンピュータが理解、解析、そして生成するための技術や研究分野を指します。
NLPの目的は、人間の言語をコンピュータに理解させ、人間とコンピュータ間のより自然なコミュニケーションを実現することです。
Transformerモデルは、一つの汎用的な「プラットフォーム」で、その上で特定のNLPタスクを実行するためのモジュールやプログラムを追加・削除・交換して利用します。
- タスク特有の処理と微調整
各NLPタスクには、そのタスク特有の処理があります。
事前学習された汎用モデルを特定のNLPタスクに適用するために、タスク固有のデータセットでモデルを微調整(fine-tuning)します。 - 入力の前処理:
Transformerモデルに入力する前に、テキストデータは適切に前処理される必要があります。
これには、トークン化(テキストを単語やサブワードに分割)、ベクトル化(単語をベクトルに変換)、位置エンコーディングの追加などが含まれます。 - 出力の後処理:
モデルからの出力を最終的なタスクの結果に変換するための後処理が必要になることがあります。
例えば、翻訳タスクでは、出力されたトークン列を自然な文に再構成する必要があります。
ゲームのキャラクターの「特技・スキル」みたいな感じだね。
用途に合わせて特別の学習させる、と。
どの専門学校に行かせるかで、できることが変わるんだね。
これらのNLPタスクは、利用者の目的に応じて「アプリ」のように切り替えて使えるのです。
Transformerが広く使われるのは、NLPプラットフォームとしてのこの柔軟性とモジュール性のおかげです。
- 多機能性:
さまざまなNLPタスクを実行できます。 - カスタマイズ可能:
Transformerは事前学習後、特定のタスク(例えば、翻訳、質問応答、テキスト生成など)に対して微調整できます。 - 適応性:
Transformerも新しいデータセットやタスクに適応して、パフォーマンスを向上できます。
5-2. AIがあれば「アプリ」はいらない?
スマホ以前は、タスクごとにガジェットが必要でした。
電話機、カメラ、ICレコーダー、音楽プレーヤー、携帯ゲーム機、インターネット端末、など。
スマホによって、これらのさまざまなガジェットが一つに集約されました。
スマホ内のアプリに置き換わったのです。
極端な話、Transformerの登場によって、未来には個々のアプリすらもいらなくなるかもしれません。
すでに指示に対して、画像や動画出力もできる機能があります。
利用者の求めに対してリアルタイムで出力ができれば、可能性は無限大になります。
たとえば、時間を聞いたら、その場で時計盤の画像を生成して見せることができれば、時計アプリはいりません。
あるいは、時計で時間を気にすることそのものがなくなるかも?
6. 基本アーキテクチャは自然言語IO
Transformerは、さまざまなNLPタスクに対応できるんだね。
じゃあ、Transformerモデルの「基本システム」は何なの?
Transformerモデルをスマホに類比した場合、「基本システム(OS)」に相当するものは、基本アーキテクチャを実装したライブラリやフレームワークと見なせます。
Transformerアーキテクチャの核になるは、自己注意機構(Self-Attention Mechanism)と位置的エンコーディングです。
入力テキストの特徴を捉え、それに基づいて出力を生成する機能で、いろんなNLPタスクをサポートしています。
多様なNLPタスクに適用可能な汎用的な「エンジン」のようなものです。
自然言語の入力と出力を処理する基本部分だから、まさにインプット・アウトプットのシステムなんだね。
実際の開発では、Transformerアーキテクチャを基にしたいくつかのライブラリやフレームワークがその役割を担っています。
- TensorFlowとその上のTensor2Tensor、Transformers(Hugging Face社による)
- PyTorchとFairseq、Transformers
6-1. 自然言語だからこその「特殊性」
データセットからパターン学習するというのは、ほかのAIも一緒だよね。
自然言語はさまざまなデータの一部に過ぎないと思うんだけど。
でも、Transformerモデルのすごさを見ると、自然言語が重要だったようにも思うんだよね。
自然言語はその複雑性、多様性、曖昧さ、文法と構造、非構造化データという特性があって、データの中では特殊な存在です。
だからこそ、これまで扱いが難しい分野でした。
- 多様性:
自然言語は、単純な数値データやカテゴリデータとは異なり、非常に複雑で多様です。
異なる言語、方言、スラング、さらには同じ言語内でも文脈や文化によって意味が変わることがあります。 - 曖昧さ:
自然言語はしばしば曖昧で、同じ単語やフレーズが異なる意味を持つことがあります。 - 非構造化データ:
自然言語データは一般にテキストの形で存在する非構造化データです。
文法というルールに基づいて構造化されていますが、これらのルールは複雑で例外も多く、プログラムによる解析を難しくしています。
6-2. 記号システムの力
自然言語の「高い複雑性と多様性」という特徴は、言語が持つ「記号システムとしての性質」から生じています。
言語は多様な単語や文法を組み合わせて、「無限」のアイデアや情報を表現できるシステムです。
- 記号システムとしての性質:
言語は、意味を持つ最小単位(単語)とそれらを組み合わせるルール(文法)から成り立つ複雑な記号システムです。
組み合わせによって、「無限」のアイデアを表現できます。 - 意味の創出:
言語の使い方は、単純な情報伝達だけではありません。
比喩や造語によって新たな意味を創出できます。
この創造性は、他のコミュニケーション形態と区別する特徴の一つです。 - 文化・思考との関係:
言語は特定の文化や社会と深く関連しており、その文化固有の概念や価値観を反映します。
また、言語が世界の認識や思考の枠組みに影響を与える可能性も示唆されています(サピア=ウォーフの仮説)。
Transformerモデルのような技術は、これらの特性に対処し、自然言語データから有意義な情報を抽出し、理解を深めることを目指しています。
その結果、自然言語処理はAIやデータサイエンスにおける重要な分野となり、多様な応用が期待されています。
自然言語は、これまで機械的な扱いが難しかったものの、扱えるとすごいパワーがあるんだね。