※本記事は、スタンフォード大学のオンラインAIプログラム「CS224N: NLP with Deep Learning | Spring 2024 | Lecture 16 - ConvNets and TreeRNNs」の講義内容を基に作成されています。講義の詳細情報は https://stanford.io/ai でご覧いただけます。本記事では、講義の内容を要約しております。なお、本記事の内容は原講義の内容を正確に反映するよう努めていますが、要約や解釈による誤りがある可能性もありますので、正確な情報や文脈については、オリジナルの講義(https://www.youtube.com/watch?v=S8d-7v3f5MQ )をご視聴いただくことをお勧めいたします。このコースへの登録については https://online.stanford.edu/courses/c... をご参照ください。コーススケジュールとシラバスは https://web.stanford.edu/class/archiv... でご確認いただけます。
登壇者紹介: クリストファー・マニング教授(Christopher Manning) スタンフォード大学 トーマス・M・シーベル機械学習教授 言語学・コンピュータサイエンス教授 スタンフォード人工知能研究所(SAIL)所長
1. 講義の導入
1.1. コース運営のアップデート
今回の講義では、私はまず週8のより選ばれた聴衆、つまり実際に学びたいと思って出席している人たちに向けて歓迎の言葉を述べたいと思います。今日来てくれた皆さんに感謝します。今日は主に、言語処理に使える他のニューラルネットワーク技術について話したいと思います。
今回取り上げる二つの技術は、最近ではあまり使われていないもので、それがコースの後半に配置されている理由でもあります。私たちはコースの前半で、皆さんが絶対に知っておくべき最も重要なことを教えるようにしています。しかし、科学の分野では様々なアイデアや技術が行き交っており、それらの異なるアイデアをいくつか知っておくことは良いことです。なぜなら、人々がしばしば新しい方法でそれらを再発明したり、組み合わせたり、異なる洞察を得たりするからです。
今日は、言語処理のための畳み込みニューラルネットワーク(CNNs)と、ツリー再帰的ニューラルネットワーク(Tree Recursive Neural Networks)について少し話したいと思います。でもその前に、コースの運営について少し触れておきたいと思います。
少し遅れてしまいましたが、中間アンケートに回答してくれたみなさんに感謝します。素晴らしい講義だった、内容が非常に興味深かったといった良い評価をしてくれた人もいました。一方で、State Space Modelsについてもっと教えてほしかったという意見もありました。まだその講義は追加していませんね。何人かの人は、このクラスに試験があったほうがいいと思っていましたが、CS231nの友人がいる人たちではなかったようですね。
全般的に、Edの運営には比較的満足してもらっているようですが、オフィスアワーについては少し不満があるようです。正直に言うと、オフィスアワーをうまく運営するのは難しい問題だと思います。Qステータスを使うべきだという意見もありますが、Qステータスを使わなかった年を思い出すと、課題の締め切り近くにはCが6時間も続くことがあり、それもあまり良い解決策とは思えませんでした。でも引き続き取り組んでいきます。
最後に、クラウドコンピューティングについては、皆さんがさまざまな問題を抱えていることは承知しています。まだGoogle Colabを使おうとしている人がかなりいますが、それは非常に便利で素晴らしいインターフェースである一方、GPUへのアクセスには制限があります。より良いGPUアクセスを得る最良の方法は、Colab Proに月10ドル支払うことです。5月と6月の2ヶ月分支払うことになるかもしれませんが、これは払い戻しできません。ただ、それほど多くのコピー代に相当する金額でもないですし、GPUへのアクセスが大幅に向上します。皆さんには、私たちが提供したGCPクレジットとAPI アクセスを使うことを勧めます。また、他の方法を試すこともできます。Kaggle Notebooksは実際にはより良いGPUアクセスを提供できますが、Colabの便利な機能はすべては備えていません。いくつかのグループはModalの使用を始めていますが、これもGPUアクセスを得るための良い方法となり得ます。
1.2. 学生からのフィードバックと対応策
中間アンケートの結果について、さらに詳しくお話しします。多くの学生から「素晴らしい講義内容で非常に興味深い」といった肯定的なコメントをいただきました。一方で、「State Space Modelsについてもっと教えてほしい」という要望もありました。残念ながら、まだその講義内容は追加できていません。
面白いことに、何人かの学生はこのクラスに試験があったほうがいいと提案していました。明らかにCS231nに友人がいる学生たちではなかったようですね。私が聞いた限りでは、CS231nの試験はかなり大変なようです。
Edプラットフォームの運営については、全般的に皆さんから好評をいただいています。一方で、オフィスアワーについては若干不満があるようです。正直に言って、オフィスアワーをうまく運営するのは難しい問題だと感じています。「Qステータス(順番待ちシステム)を使うべきだ」という意見もありますが、以前Qステータスを使わなかった年を思い出すと、課題提出の締め切り近くには待ち行列が6時間も続くことがあり、それも良い解決策とは思えませんでした。この問題については引き続き改善に取り組んでいきます。
クラウドコンピューティングリソースについては、多くの学生が様々な問題を抱えていることは認識しています。特にGoogle Colabを使用している学生が多いようですが、これはインターフェースが便利である一方、GPUへのアクセスには制限があります。この問題については、次のセクションでより詳しく対応策を説明します。
1.3. クラウドコンピューティングリソースの活用方法
クラウドコンピューティングリソースについては、多くの学生がさまざまな問題を抱えていることは承知しています。かなりの数の学生がまだGoogle Colabを使おうとしていますが、これは非常に便利で使いやすいインターフェースである一方で、GPUへのアクセスには制限があります。Google Colabでより良いGPUアクセスを得る最良の方法は、Colab Proに月10ドル支払うことです。これは5月と6月の2ヶ月分支払うことになるかもしれませんが、私たちはこれを払い戻すことはできません。ただ、それほど多くのコーヒー代に相当する金額でもないですし、GPUへのアクセスが大幅に向上します。
皆さんには、私たちが提供したGCPクレジットとAPIアクセスを使うことをお勧めします。また、他の選択肢を試すこともできます。Kaggle Notebooksは実際にはより良いGPUアクセスを提供できますが、Colabの便利な機能をすべては備えていません。
いくつかのグループはModalの使用を始めていますが、これもGPUアクセスを得るための良い方法となり得ます。これらの選択肢を検討して、自分のプロジェクトに最適なリソースを見つけてください。
2. 自然言語処理における畳み込みニューラルネットワーク(CNNs)の基礎
2.1. RNNとCNNの比較
今回のスライドでは、畳み込みニューラルネットワークと再帰的ニューラルネットワーク(RNN)を対比する形で紹介していますが、トランスフォーマーとの対比ではありません。これは一つには、私がスライドを十分に更新していないことが理由かもしれませんが、別の見方をすれば、畳み込みニューラルネットワークのアイデアが本格的に探求されたのは、多くの人がNLPで再帰的ニューラルネットワークを使用していた時代だったからです。当時、一部の研究者は「言語処理にも畳み込みニューラルネットワークを使ってみるべきではないか」と言い始めていました。
しかし実際には、ここ5年間はトランスフォーマーが支配的となり、NLPでの畳み込みニューラルネットワークの使用はあまり見られなくなっています。
再帰的ニューラルネットワークを振り返ると、これらは文やその一部の表現を提供する方法を与えていましたが、文字列を順に計算していくという特徴がありました。つまり、その時点までに来たすべてのものを含む表現を得ることになり、例えば「man walked into the ceremony」のような文の途中までの表現は得られますが、「ceremony」だけの表現は直接得られないという制約がありました。
対照的に、畳み込みニューラルネットワークは基本的に、n-gramモデルのように単語の組み合わせを捉えることができるという考え方に基づいています。例えば、「tentative deal reach to keep the government open」という例文では、「tentative deal reach」「deal reach to」「reach to keep」「to keep government」など、それぞれの3-gramに対して何らかのニューラル表現を作ることができます。
これは各n-gramに対して行われるもので、言語学的あるいは認知的に特別に妥当というわけではありませんが、複数の単語からなるユニットの表現を形成し、それを後で何らかの形でさらにグループ化するというアプローチです。これを行う標準的な方法が畳み込みニューラルネットワークです。
2.2. CNNの基本構造と動作原理
畳み込みニューラルネットワークの古典的な事例は画像処理の分野にあります。CNNは元々ビジョン向けに発明されたもので、フレーム内のどこにカンガルーがあっても認識できるような、平行移動不変のモデルを提供しました。スライドの下半分に示している小さな図は、2D画像におけるCNNの動作を表しています。畳み込みは画像上をスライドさせるマスクのようなもので、そのマスクは赤い部分で示されている重みによって定義されています。マスクをスライドさせる各位置で、マスクの項とその部分の要素の実質的に内積を取ることによってスコアを計算し、それが右側のピンク色で示されたマトリックスを埋めていきます。これが画像から畳み込まれた特徴を計算しています。
では、言語に対してこれを行う場合はどうなるでしょうか?言語では2Dの画像ではなく、1Dの絵、つまり単語のシーケンスを扱います。「tentative deal reach to keep government open」というような単語列があり、各単語はワードベクトルを持っています。私のスライドではコンパクトに保つために4次元の例を使用していますが、実際はもっと高次元です。
そこで、n-gram(この例では3-gram)に適用されるフィルタを適用できます。ビジョンの場合と全く同じように、一次元でスライドさせていくという違いだけです。フィルタと最初の3-gramの内積を計算し、もし私の計算が正しければ-1という値が得られます。次の位置にスライドさせて計算すると-0.5が得られる、といった具合です。それぞれの位置でこの計算を行い、通常はバイアス項を加えます(この例ではバイアスは+1)。そして、シグモイドなどの非線形関数に通します。
こうして各3-gramに対して数値を計算していくことになります。これが単一のフィルタに対する畳み込みで、一般的には複数のフィルタを使います。これについては後ほど説明します。
この例と先ほどのビジョンの例では、入力文は7つの単語でしたが、3-gramフィルタをスライドさせることで5つの3-gramしか得られないため、出力が縮小しています。しばしば元のサイズを保ちたい場合があり、その方法としてパディングを使用します。両端にゼロパディングを追加することで、元の7つの単語に対応する7つの3-gramを得ることができます。通常は単にゼロでパディングを行います。各端に2つのパディングを加えれば、ワイドな畳み込みとなり、7つの単語から9つの異なる要素に拡大することも可能です。
2.3. 言語処理におけるCNNの1次元適用方法
言語処理にCNNを適用する場合、一次元のデータ構造を扱うことになります。先ほど説明したように、我々は単語のシーケンスを入力とし、各単語はワードベクトルで表現されています。例えば「tentative deal reach to keep government open」のような文では、各単語は4次元のベクトルで表されています(説明を簡潔にするため次元数を低く設定しています)。
このシーケンスに対して、3-gramを捉えるフィルタを適用します。フィルタは単語ベクトルの次元と同じ高さを持ち、幅は3単語分(あるいは他のn-gramサイズ)となります。このフィルタをシーケンスに沿って一単語ずつスライドさせながら、各位置でフィルタと該当する部分との内積を計算します。
具体的には、最初の位置では「tentative deal reach」の3単語にフィルタを適用し、内積を計算して-1という値を得ます。次に一単語分スライドさせて「deal reach to」に適用し、-0.5という値を得る、という具合に進めていきます。各位置での計算後にバイアス項(例:+1)を加え、その後にシグモイドなどの非線形関数を適用します。
この操作により、入力シーケンスの各3-gramに対する値が計算され、結果として各n-gramに対応するベクトルが得られます。これが単一のフィルタによる畳み込みの結果です。
実際のPyTorchでの実装では、一次元畳み込みのためにnn.Conv1Dを使用します。一次元畳み込みは最も一般的なケースではないため、Conv1Dを使用することになります。出力チャネル数(フィルタの数)、カーネルサイズ(この例では3)などを指定できます。その後、max_pooling操作で結果を集約することができます。
言語処理におけるCNNの一次元適用は、このように単語のシーケンスに沿ったフィルタの適用と、その結果の集約という形で実現されます。この手法により、言語における局所的なパターンを効率的に捉えることが可能になります。
2.4. 画像処理と言語処理におけるCNNの違い
画像処理と言語処理でCNNを適用する際の最も明白な違いは、次元性にあります。画像処理では2次元データを扱いますが、言語処理では1次元のシーケンスを扱います。これは畳み込み操作の適用方法に直接影響します。
画像処理では、畳み込みマスクは2次元グリッド上を水平方向と垂直方向の両方にスライドします。例えば、スライドの下部で示した例では、2D画像に対して畳み込みマスクを適用しています。マスクは赤い数値で示された重みを持ち、画像の各位置でマスクと画像部分の要素同士の積和を計算します。この結果が右側のピンク色のマトリックスに格納されます。
一方、言語処理では畳み込みを1次元に適用します。単語のシーケンス「tentative deal reach to keep government open」のような入力に対して、フィルタは単語列に沿って一方向にのみスライドします。各単語位置で、フィルタと対応する単語ベクトルの内積を計算していきます。
もう一つの大きな違いは、入力データの性質です。画像処理では、ピクセル値という生のデータから始めることが多いですが、言語処理ではすでに単語ベクトルという形で意味を持った表現から始めることが多いです。これは、言語処理のCNNが画像処理よりも抽象化されたレベルから始めることを意味します。
さらに、画像処理では空間的な位置関係が重要である一方、言語処理では単語間の順序関係が重要です。画像処理のCNNは対象物の位置に関わらず認識できる平行移動不変性を目指していますが、言語処理では単語の順序が意味に大きく影響するため、異なる考慮が必要になります。
このような違いにより、言語処理のCNNは画像処理のCNNを直接適用するのではなく、言語の特性に合わせた適応が必要になります。一方で、基本的な畳み込み操作の概念は両者で共通しており、画像処理で成功した多くの技術は言語処理にも応用されています。
3. CNNの主要構成要素と技術
3.1. フィルタとスライディングウィンドウの仕組み
言語処理におけるCNNの核心は、フィルタとスライディングウィンドウの仕組みにあります。フィルタは基本的にマスクとして機能し、入力テキストの上をスライドさせていきます。このマスクは赤い部分で示されている重みによって定義されています。
フィルタをテキスト上でスライドさせる各位置において、マスクの各項と対応する入力要素の実質的な内積を計算します。これによって、右側のピンク色で示されたマトリックスに値が埋められていきます。この計算プロセスが、入力テキストから特徴を抽出する「畳み込み」操作です。
言語処理の場合、我々は単語のシーケンス、例えば「tentative deal reach to keep government open」のような入力を扱います。各単語はワードベクトルとして表現されており、スライドでは説明を簡潔にするために4次元の例を使用していますが、実際の応用ではもっと高次元のベクトルを使います。
この単語シーケンスに対して、n-gram(この例では3-gram)に適用されるフィルタを使用します。画像処理の場合と全く同じ原理ですが、一次元だけでスライドさせるという違いがあります。フィルタと最初の3つの単語「tentative deal reach」の内積を計算し、計算が正しければ-1という値が得られます。次に一単語分だけスライドさせ、次の3つの単語「deal reach to」との内積を計算すると-0.5が得られます。
このようにシーケンス全体を通してスライドさせながら計算を進め、通常はバイアス項(この例では+1)を加えます。そして最後に、シグモイドなどの非線形関数に通して最終的な出力値を得ます。
このプロセスにより、テキスト内の各n-gramに対する特徴値が計算され、テキストの局所的なパターンを効果的に捉えることができます。フィルタの重みは学習によって最適化され、特定のパターンや特徴を検出するように調整されます。
3.2. パディングの種類と目的
言語処理におけるCNNでは、入力と出力のサイズの関係が重要な考慮点となります。先ほどの例では、7つの単語からなる入力文があり、3-gramフィルタをスライドさせると、5つの3-gramしか得られませんでした。これは畳み込み操作による「縮小」が起きているためです。例えば、ビジョンの例でも7単語の入力に対して3-gramをスライドさせると、得られるのは5つの3-gramだけで、元の入力よりも小さくなってしまいます。
しかし、多くの場合、出力サイズを入力サイズと同じに保ちたいという要求があります。このようなサイズの一致を実現する方法がパディングです。もし両端にゼロパディングを追加すると、7つの単語に対して7つの3-gramを得ることができます。つまり、元の7単語に対応する7つの結果が得られるのです。
通常、パディングはゼロで行います。各単語ベクトルに相当するゼロベクトルを入力の前後に追加するわけです。これにより、フィルタが入力の端でも十分に機能できるようになります。
また、パディングによって出力サイズを入力より大きくすることも可能です。各端に2つのパディングを追加すれば、「ワイド畳み込み」となり、7つの単語から9つの異なる結果に拡大することもできます。
パディングの目的は主に次の3つです:
- 入力と出力のサイズを一致させる
- 入力の端に位置する要素の情報を保持する
- 特定のアーキテクチャ要件を満たす
このパディング技術は、単にサイズの調整だけでなく、モデルが入力の端に位置する情報をどのように処理するかにも影響を与えます。パディングなしでは、端の単語は中央の単語よりも少ない回数しかフィルタに含まれないため、情報の損失が生じる可能性があります。適切なパディングを行うことで、このような問題を軽減し、すべての入力要素を均等に扱うことができるようになります。
3.3. 複数フィルタの活用方法
単一のフィルタだけでは表現力が制限されてしまうため、一般的には画像処理の場合と同様に、複数のフィルタを定義して使用します。これにより、テキストの異なる側面や特徴を捉えることが可能になります。
複数のフィルタを使用すると、各3-gramに対して複数の値を計算することになり、結果として新しい表現がベクトルとして得られます。使用するフィルタの数と単語ベクトルの次元数の関係によって、この例のように出力表現が入力よりも短くなったり、同じ長さになったり、あるいは長くなったりすることもあります。
複数のフィルタを使用する場合、それぞれのフィルタが異なるパターンや特徴を検出するように学習します。例えば、あるフィルタは「I」「my」「we」「our」のような一人称の言葉を検出し、別のフィルタは「think」「say」「said」「told」などの発話動詞や思考動詞を検出するように学習するかもしれません。
このように、各フィルタはテキストの特定の特徴を検出するための機能を持ち、それらを組み合わせることで、テキストの多様な側面を捉えた豊かな表現を構築することができます。複数のフィルタによって得られた出力は、後の処理段階(分類など)で使用される特徴ベクトルとなります。
複数フィルタのもう一つの利点は、異なるサイズのn-gramを同時に捉えられることです。例えば、2-gram、3-gram、4-gramのフィルタを併用することで、異なる長さの単語パターンを同時に検出できます。これにより、単語間の短距離の関係と長距離の関係の両方を効果的にモデル化することが可能になります。
3.4. Maxプーリングとその意味
複数のフィルタを使用してテキストの様々な特徴を捉えた後、通常はこれらのフィルタの出力を何らかの形で要約する必要があります。最も一般的な方法が「Maxプーリング」です。Maxプーリングはニューラルネットワーク全般でよく見られる手法で、その動作原理を理解するための最も分かりやすい考え方は「特徴検出器」としての機能です。
例えば、あるフィルタが単語ベクトルを見て何か特定のものを検出するように学習したとします。例えば、「I」「my」「we」「our」などの一人称の言葉を検出するフィルタ、あるいは「think」「say」「said」「told」などの思考・発話動詞を検出するフィルタなどです。これらはテキストの特定の特徴を検出するための機能を持っています。
このような特徴検出器モデルを考えると、テキスト全体にわたってフィルタをスライドさせた時、テキストのどこかでその特徴が検出されたかどうかを知りたいわけです。例えば「この文章のどこかで一人称の言葉が使われているか」という情報は、その単語が文の最初、2番目、3番目、あるいは4番目の位置にあるかに関わらず知りたい情報です。
これがMaxプーリングが行うことです。テキストの各位置でフィルタが生成した値のうち最大のものだけを取り出します。つまり、特徴がテキストのどこかで強く反応したかどうかを測定しているのです。これにより、その特徴がテキスト内のどの位置で検出されたかという詳細情報は失われますが、その特徴が存在するかどうかという重要な情報は保持されます。
Maxプーリングの代替手法として「平均プーリング(Average Pooling)」も考えられます。例えば、テキストの「カジュアルさ」や「学術的な調子」といった質的な特徴を測定する場合は、テキスト全体でその特徴の平均値を知りたいかもしれません。その場合は、異なる部分でのカジュアル度の平均値を計算する平均プーリングが適しているでしょう。
実際には両方のプーリング方法を使って、MaxプーリングとAverageプーリングの両方の結果を特徴検出器に入れることもできます。ただし、一般的にニューラルネットワークで学習される特徴の種類では、どちらか一方だけを使う場合、Maxプーリングの方が効果的であることが多いです。特徴が「発火する」というメタファーがより適切な考え方として機能しているようです。
3.5. ストライド、局所的Maxプーリング、k-Maxプーリング
畳み込みニューラルネットワークで利用できる他の技術としては、ストライド、局所的Maxプーリング、k-Maxプーリングがあります。これらは言語処理においてはあまり広く使われていないかもしれませんが、知っておくと役立つテクニックです。
まず、ストライドについて説明します。通常の畳み込み操作では、フィルタを一単語ずつスライドさせながら処理しています。例えば、「tentative deal reach」、次に「deal reach to」、その次に「reach to keep」といった具合に処理します。しかし、これらは互いに大きく重複しており、特に5-gramのような大きなn-gramを使用する場合は重複が顕著になります。
ストライドを使用すると、フィルタをスライドさせる幅を調整できます。例えば、ストライド2を設定すると、最初の3-gramは「padding tentative deal」、次は「deal reach to」、次は「to keep government」となり、重複が少なくなります。これにより計算量を削減しながら、テキスト全体の特徴を大まかに捉えることができます。
次に、局所的Maxプーリングについてですが、これはストライドと関連した概念です。通常のMaxプーリングではテキスト全体から最大値を一つだけ取り出しますが、テキストが長い文章で、同じ特徴が複数の場所で検出される場合、その情報をすべて一つの最大値に集約してしまうのは情報損失と言えます。
例えば、「I」のような一人称の言葉が文章の4つの異なる位置で使われている場合、単一のMaxプーリングではそれを一点としてしか捉えられません。これに対して局所的Maxプーリングでは、テキストを部分ごとに区切り、各部分で独立にMaxプーリングを行います。例えば、最初の2つの位置でMaxプール、次の2つでMaxプール、といった具合に進めていけば、テキスト内での特徴の分布をより詳細に捉えることができます。
k-Maxプーリングは、これに関連する別のアプローチです。各列から最大値だけでなく、上位k個の値を保持する方法です。例えば、各列から上位2つの最大値を保持することで、ある特徴が2つの異なる場所で検出されたかどうかを確認することができます。これも特徴の複数回出現を捉えるための方法の一つです。
これらの技術を組み合わせることで、テキスト内の特徴分布をより細かく、かつ効率的に捉えることが可能になります。
3.6. 拡張畳み込み(Dilated Convolution)の概念
拡張畳み込み(Dilation)は、畳み込みフィルタをより広い範囲に適用するための概念です。通常の畳み込みでは隣接する要素に対してフィルタを適用しますが、拡張畳み込みではいくつかの要素をスキップして適用します。
具体的には、最初の畳み込み層で3-gramフィルタを適用して右上の部分の結果を得た後、次の層では「拡張された3-gram畳み込み」を行うことができます。これは、1番目、3番目、5番目の要素を組み合わせて畳み込みフィルタに適用し、次には2番目、4番目、6番目の要素を組み合わせて適用するというものです。
このようにして、依然として3-gramフィルタを使っていますが、それがカバーできる範囲が大きくなっています。通常の3-gramでは連続する3つの単語だけを見ますが、拡張畳み込みを使うと、より離れた位置にある単語間の関係も捉えることができます。
拡張畳み込みは自然言語処理よりも音声処理などの分野でより一般的に使用されています。しかし、言語処理においても、長距離の依存関係を捉えるために役立つ場合があります。例えば、文中で離れた位置にある関連する単語(主語と述語など)の関係を把握するのに役立つ可能性があります。
このように、拡張畳み込みはフィルタのサイズを増やすことなく、受容野(フィルタが一度に見ることができる範囲)を拡大するための効果的な手法です。階層的な拡張畳み込み層を積み重ねることで、少ないパラメータで効率的に長距離の関係を捉えることができます。
4. Yoon Kim (2014)のCNNによる文章分類モデル
4.1. 単純なCNN構造による感情分析
これまで説明してきた畳み込みニューラルネットワークの概念を使った研究の一つとして、2014年に発表されたYoon Kimの論文を紹介します。この研究は自然言語処理に畳み込みニューラルネットワークを用いた最も有名な論文の一つです。Yoon Kimは現在MITの助教授ですが、振り返ってみるとこの研究はかなりシンプルなものでした。しかし彼は「CNNをNLPに使えるのではないか」というアイデアを早い段階で提案し、明確な例を示してうまく機能させました。そのため、この研究は非常によく知られています。
この研究は感情分類器の作成、つまり文を見てそれが肯定的か否定的かを判断するモデルの構築を目的としていました。今日紹介する両方のモデルは感情分析を行っています。Kimは感情分析以外にも、文が主観的か客観的かの分類や質問のタイプ分類など他のタスクも考察しましたが、主な応用は感情分析でした。
このモデルの仕組みは、先ほど説明した概念とまったく同じです。単語ベクトルのn-gramを取り、それらに畳み込みを適用して新しいベクトルを計算します。彼のモデルでは、異なるサイズのn-gramに対して畳み込みフィルタを適用しました。つまり、2-gram、3-gram、4-gramそれぞれに対するフィルタがあり、これらを文の各位置にスライドさせていきます。
その後、先ほど議論したMaxプーリングを適用して、各フィルタから単一の数値を抽出します。これらのMaxプーリングされた値が、最終的な単純なソフトマックス層で分類器として使用され、完全な回答を提供します。
この論文で登場したもう一つの興味深いアイデアは、事前学習された単語ベクトルの微調整に関するものです。これは大規模な事前学習されたトランスフォーマーモデルではあまり問題にならないかもしれませんが、単語ベクトルと監視データでトレーニングされたニューラルネットワークモデルの古典的なケースでは次のような問題がありました。
gloveやword2vecなどの事前学習された単語ベクトルから始め、小さな感情分析データセットを使って感情分類器をトレーニングするとします。このプロセスでは、感情分類器のパラメータを学習するだけでなく、単語ベクトル表現にもバックプロパゲーションを行うことができます。
一見するとこれは良いアイデアに思えます。通常の単語ベクトルは感情予測に特化しておらず、むしろ単語の意味や内容に関するものだからです。しかし、そこには問題が生じます。トレーニングデータセットに含まれる単語はバックプロパゲーションによって移動しますが、トレーニングデータに含まれない単語はそのままの位置に留まります。
4.2. 学習済み単語ベクトルの微調整問題とその解決策
事前学習された単語ベクトルを微調整する際に生じる問題について、より詳細に説明します。この設定では、gloveやword2vecなどの事前学習された単語ベクトルから始め、より小さな感情分析データセットで感情分類器をトレーニングします。このプロセスでは、感情分類器のパラメータを学習するだけでなく、単語ベクトル表現にもバックプロパゲーションすることができます。
一見すると、これは良いアイデアに思えます。通常の単語ベクトルは感情予測に特に調整されているわけではなく、むしろ単語の意味や内容に関するものだからです。そのため、単語ベクトルに対してもバックプロパゲーションで変更できれば役立つはずです。
しかし、そこに問題が生じます。何が起きるかというと、トレーニングデータに含まれる一部の単語はバックプロパゲーションによって移動しますが、トレーニングデータに含まれない単語は単語ベクトルの元の位置に留まるのです。というのも、それらを動かす要因が何もないからです。
具体的な例で考えてみましょう。例えば最初、「tedious」「dull」「plotting」はすべて似た意味を持ち、何か否定的なものを示す類似した単語として近い位置にあったとします。しかし、トレーニング後には、「tedious」と「dull」はバックプロパゲーションの一部として移動し、否定的な領域に移っています。分類境界線もその近くに移動しています。
しかし「plotting」はトレーニングセットに含まれていなかったため、元の位置にそのまま留まっています。そのため、今では誤って肯定的な単語として扱われてしまいます。これは完全に間違っています。
この問題により、小さな教師付きデータセットで言語ニューラルネットワークをトレーニングする際、単語ベクトルにバックプロパゲーションを行うことで相反する結果が生じていました。一方では、単語ベクトルをタスクに特化させることでパフォーマンスが向上することもありましたが、他方では、初期の単語ベクトルで適切に捉えられていた意味関係が損なわれることもありました。
Yoon Kimはこの問題に対して、かなりシンプルな方法で対処しました。彼はチャネル数を単純に倍にしました。つまり、畳み込みニューラルネットワークの各フィルタ、各チャネルを2つのコピーにし、一方では微調整された単語ベクトルを使用し、もう一方では元の単語ベクトルを保持しました。こうすることで、両方の長所を活かすことができたのです。
4.3. チャネルの複製による精度向上テクニック
Yoon Kimが提案したモデルを詳しく見ていきましょう。この図はYoon Kimの論文の後に発表された続編の論文から引用したもので、彼のネットワーク全体を分かりやすく示しています。
入力文として「I like this movie very much」という肯定的に分類されるべき文があります。各単語はワードベクトルを持っており、それらに対して2-gram、3-gram、4-gramのさまざまなサイズのフィルタが適用されます。そして、これらのフィルタは微調整されていないワードベクトルと微調整されたワードベクトルの両方に対して機能します。
フィルタをテキスト上にスライドさせて表現を得る際、パディングなしでこれを行っているため、4-gramフィルタからはより小さなベクトルが出力され、2-gramフィルタからはより大きなベクトルが出力されます。その後、それぞれからMaxプーリングを行い、微調整されたワードベクトルとそうでないワードベクトルの両方から最大値を取得します。
このように、各フィルタから一つの特徴が抽出され、微調整されたベクトルと微調整されていないベクトルの両方から得た値を連結します。これにより、文全体に対する固定サイズのベクトルが得られ、このベクトルの長さはフィルタの数を反映しています。
最後に、このベクトルを単純な線形分類器からソフトマックスに通すことで、肯定的あるいは否定的な確率が得られます。これが彼のモデル全体であり、興味深いことに、このシンプルなモデルは自然言語分類タスクでうまく機能しました。
このモデルの重要な側面は、微調整された単語表現と元の単語表現の両方を利用する二重チャネルアプローチです。これにより、タスク特化の利点を享受しながらも、事前学習された単語埋め込みの一般的な意味関係を保持することができます。
特に、微調整チャネルではタスク固有の特徴(例えば感情に関連する単語の側面)を学習でき、固定チャネルでは訓練データに現れない単語に対しても一貫した表現を維持できるという利点があります。この二重チャネルアプローチは、特に小規模な訓練データセットで作業する場合に、過学習を防ぎながらモデルのパフォーマンスを向上させる効果的な戦略となりました。
4.4. 実験結果と従来手法との比較
Yoon Kimのモデルは、自然言語分類タスクで驚くほど良い結果を出しました。論文には様々なデータセットでの結果をまとめた大きな表があります。スタンフォード感情ツリーバンク(SST)の2つのバージョン、映画レビュー、別の感情データセット、主観性分類器、質問タイプ分類器(TREC)など、多様なデータセットが使用されています。
彼の主張は、この単純な畳み込みニューラルネットワークを使うことで、当時感情分析のために考えられていた他のどのモデルと比較しても同等、時にはより良い結果が得られるというものでした。スタンフォードを含む様々な研究者が、これらのデータセットで多くのモデルを構築していました。
ただし、この比較がCNNに少し有利だった点があります。それは、Dropoutの使用です。Dropoutは2012年頃に登場したと記憶していますが、これら他の手法の多くはDropout登場以前に開発されたものでした。一方、KimはDropoutを使用しており、これが彼に優位性を与えていました。より公平な実験手法としては、他のモデルにもDropoutを適用して比較すべきでしたが、彼はそうしていません。
それでも、このシンプルな構造でも畳み込みニューラルネットワークを使えば強い結果が得られることが示されました。この研究は、様々なNLPタスクにおけるCNNの有効性を示す重要な貢献となりました。
このモデルの成功の要因としては、次のような点が挙げられます:
- 異なるサイズのn-gramフィルタを用いることで、様々な長さの単語パターンを捉えられる
- 二重チャネル(微調整/非微調整)アプローチにより、単語表現の過学習を防ぎつつタスク特化を実現
- Dropoutの使用による正則化効果
- フィルタ数と畳み込み操作の単純さにより、効率的なモデル学習が可能
この研究は、複雑なモデル構造を必要とせずとも、適切に設計された畳み込みニューラルネットワークが言語分類タスクで高いパフォーマンスを発揮できることを示した点で、NLP分野における畳み込みニューラルネットワークの応用の先駆けとなりました。
5. 様々なニューラルネットワークアーキテクチャの比較
5.1. バッグオブベクトル、ウィンドウモデル、CNNの特性
これまで説明してきたことを踏まえて、ここで様々なニューラルネットワークアーキテクチャを比較してみましょう。私たちは様々な手法からなるツールキットを持っています。最初に紹介したのは単語ベクトルとバッグオブベクトルで、これらは単純な分類に使用できました。
初期の講義ではウィンドウモデルについて話しましたが、これらは畳み込みニューラルネットワークで得られるものに似ていますが、より特定の目的に合わせた(アドホックな)ものでした。
そして、畳み込みニューラルネットワークがあります。これらは分類に非常に適しており、並列化も容易という利点があります。また、再帰的ニューラルネットワークについても説明しましたが、これは左から右へと文を読み進める認知的に妥当なモデルである一方、並列化が難しいという欠点がありました。
最後に、トランスフォーマーについて話しました。これはある意味でNLPのための最良のモデルであり、現在あらゆる場所で使用されています。実際、現在では逆の動きも起きており、トランスフォーマーはビジョン(画像処理)にも増々使用されるようになっています。ただし、ビジョンの世界ではCNNとトランスフォーマーのどちらが優れているかについて、まだ議論が続いています。一部の研究者は、両者には補完的な利点があると主張しています。
これらのアーキテクチャを比較すると、バッグオブベクトルアプローチは最も単純で計算効率が良いものの、単語の順序や文脈を無視するという重大な欠点があります。ウィンドウモデルは文脈の一部を捉えますが、固定サイズのウィンドウに制限されます。
CNNはより柔軟で、異なるサイズのパターンを同時に捉えることができ、並列処理が容易です。しかし、単語間の長距離依存関係をモデル化するのは苦手です。RNNは順序に敏感で長距離依存関係を扱えますが、並列化が難しく、勾配消失問題にも悩まされます。
トランスフォーマーは自己注意機構により、任意の距離の依存関係を直接モデル化でき、並列処理も可能ですが、計算量が多いという欠点があります。これらの特性を理解することで、特定のタスクに最適なアーキテクチャを選択できるようになります。
5.2. RNNの認知的妥当性と並列化の課題
再帰的ニューラルネットワーク(RNN)は、文を左から右へと読み進める人間の読解プロセスと似た方法で言語を処理するという点で、認知的に妥当性を持つモデルとして考えられています。RNNは文や文の一部の表現を構築する方法を提供しますが、文字列に沿って順方向に計算を進めるという特徴があります。
この処理方法には興味深い制約があります。RNNを使うと、その時点までに処理した全ての単語を含む表現を得ることになります。例えば「man walked into the ceremony」という文の途中まで処理した場合、「man walked into the」までの表現は得られますが、「ceremony」だけの表現を直接得ることはできません。つまり、文の中の特定の単語や句だけに焦点を当てることが難しいのです。
また、RNNのもう一つの大きな課題は並列化の難しさです。RNNは本質的にシーケンシャルな処理を行うため、文を順番に処理する必要があります。つまり、時間ステップtの計算は、時間ステップt-1の計算が完了するまで開始できません。この連続的な依存関係により、GPU上での効率的な並列処理が困難になります。
長い文や文書を扱う場合、この並列化の制約は深刻なボトルネックとなります。例えば、100単語の文を処理するには、100回の連続した計算ステップが必要です。これに対して、CNNやトランスフォーマーなどの他のアーキテクチャでは、多くの計算を並列に実行できるため、同じ長さの入力でもはるかに高速に処理できます。
さらに、RNNは長距離依存関係を捉えるのが難しいという理論的な課題もあります。文の前半で現れた情報が、多くの単語を経た後でも関連性を保つケースは言語ではよくありますが、従来のRNNでは勾配消失問題により、このような長距離依存を効果的にモデル化するのが難しいのです。LSTM(Long Short-Term Memory)やGRU(Gated Recurrent Unit)などの改良されたRNNアーキテクチャは、この問題を部分的に解決しましたが、依然として並列化の課題は残ります。
これらの特性により、RNNは人間の言語処理の認知的なモデルとしては魅力的ですが、現代の大規模言語モデルのための実用的なアーキテクチャとしては、より並列処理に適したモデルに取って代わられています。
5.3. トランスフォーマーの位置づけと優位性
トランスフォーマーについては、ある意味でNLPにおける最良のモデルであり、現在あらゆる場所で使用されています。実際、現在では逆方向の動きも起きており、トランスフォーマーはビジョン(画像処理)にも増々使用されるようになっています。ただし、ビジョンの世界ではCNNとトランスフォーマーのどちらが優れているかについて、まだ議論が続いています。一部の研究者は、両者には補完的な利点があると主張しています。
トランスフォーマーがNLPの世界で他のアーキテクチャを凌駕した理由は複数あります。最も重要な点は、トランスフォーマーの自己注意機構(self-attention mechanism)です。この機構により、シーケンス内の任意の位置にある要素が、他のすべての位置の要素と直接的に情報をやり取りできるようになりました。
これはRNNとの決定的な違いです。RNNでは情報が前のステップから次のステップへと連続的に流れるため、距離が離れた要素間の依存関係を捉えるのが難しくなります。一方、トランスフォーマーでは各位置が他のすべての位置を「注視」できるため、長距離依存関係を直接モデル化できます。
また、トランスフォーマーはその構造上、高度な並列処理が可能です。全ての位置の計算を同時に行えるため、GPUなどの並列ハードウェア上での実行が非常に効率的です。これにより、RNNよりもはるかに大きなモデルを、はるかに大量のデータで訓練することが可能になりました。
さらに、トランスフォーマーは深層化が容易であるという特徴もあります。多層の自己注意層と位置ごとの全結合層を積み重ねることで、言語の非常に複雑な側面を捉えることができます。対照的に、RNNの深層化は勾配消失/爆発の問題のため困難でした。
このような優位性から、トランスフォーマーは現代の大規模言語モデル(BERT、GPT、T5など)のアーキテクチャ選択において主流となり、NLPタスク全般で以前のアーキテクチャを大きく上回る性能を示しています。また、トランスフォーマーの成功はNLPにとどまらず、ビジョン、音声処理、マルチモーダル学習など他の分野にも広がっています。
5.4. バッチ正規化とレイヤー正規化の違い
トランスフォーマーモデルで使用されるレイヤー正規化について話しましたが、これはニューラルネットワークの中間層の数値のサイズを、平均ゼロ、分散1にすることで一定に保つ手法です。しかし、正規化を行う方法はいくつか異なる種類があります。
畳み込みニューラルネットワークでは、通常はバッチ正規化が標準的に使用されます。実際、バッチ正規化はレイヤー正規化よりも先に発明されました。レイヤー正規化とバッチ正規化は、どちらも数値をスケーリングして平均ゼロ、分散1にするという同じことをしていますが、その計算を行う次元が異なります。
レイヤー正規化は特徴次元に沿って統計量を計算します。つまり、一つのデータサンプルの全ての特徴(ニューロン)について正規化します。一方、バッチ正規化はバッチ内の全要素に対して特徴ごとに独立に正規化を行います。言い換えると、バッチ内の全てのサンプルにわたって、各特徴の平均と分散を計算します。
この違いは、モデルのどの部分で正規化を適用すべきかという点に影響を与えます。バッチ正規化はCNNで特に有効である一方、レイヤー正規化はRNNやトランスフォーマーのような再帰的またはシーケンス処理を行うモデルで一般的に使用されます。バッチ正規化はバッチ内のサンプル間で情報を共有するため、バッチサイズに依存し、小さなバッチサイズでは効果が低下することがあります。一方、レイヤー正規化はサンプルごとに独立して機能するため、バッチサイズに依存せず、シーケンス処理タスクにより適しています。
この二つの正規化手法は、深層ニューラルネットワークの訓練を安定化させ、収束を早める上で非常に重要な役割を果たしています。どちらの正規化手法も、より深いモデルの訓練を可能にし、勾配消失や爆発の問題を軽減することで、深層学習の進歩に大きく貢献しました。
5.5. サイズ1の畳み込みの意味と活用
これまで紹介してきた内容は全て、n-gramのサイズが2や3、4などの畳み込みについてでしたが、実はサイズ1の畳み込みというものも存在します。一見すると、サイズ1の畳み込みは全く意味がないように思えるかもしれません。なぜなら、単に1つの要素だけを見て、それが1つの要素のままであれば、何も変わらないように思えるからです。
しかし、サイズ1の畳み込みは実際には意味があります。これは、一つの位置だけを見る小さな全結合層に相当するからです。言語の観点からいえば、単語ベクトルを取り、それを全結合ニューラルネットワークに通して、その単語だけの新しい表現を生成することに相当します。
実はこれは、トランスフォーマーの全結合層でも行われていることと同じです。トランスフォーマーには、一つのサブワードトークン位置だけを見て、その位置の新しい表現を計算する全結合層があります。
このサイズ1の畳み込みの利点は、文全体にわたる全結合層と比較して、はるかに少ないパラメータで新しい表現を作成できることです。全結合層が文全体を一度に処理する場合、パラメータ数は非常に多くなりますが、サイズ1の畳み込みは各位置独立に適用されるため、パラメータを効率的に共有できます。
これにより、モデルの複雑さを増すことなく表現力を高めることができるため、深層ニューラルネットワークアーキテクチャで広く使用されています。トランスフォーマーを含む多くのモデルでは、より広いコンテキストを捉える操作(自己注意機構など)と、各位置での表現を豊かにするためのサイズ1畳み込みに相当する操作を組み合わせることで、効果的な言語表現を学習しています。
6. 文字レベルCNNによる深層アーキテクチャ:Conneau et al. (2017)
6.1. VD-CNNモデルの構造と設計思想
ここでは、畳み込みニューラルネットワークの最近のより複雑なバージョンを紹介します。これも引き続きテキスト分類のために使用されていますが、2017年のConneau et al.によるものでより複雑なモデルです。
この研究もまだLSTMシーケンスモデルがNLPで主流だった時期に行われました。2017年は最初のトランスフォーマー論文が発表された年でもあります。当時の動機はビジョンと言語を比較することにありました。
この時点で、ビジョンにおける畳み込みニューラルネットワークモデルはすでに非常に深いモデルとなっていました。人々は30層、50層、100層を持つResNetのようなモデルを使用していました。これはLSTMを使用するシーケンスモデルの世界とは対照的でした。シーケンスモデルでは通常、2層のモデルを使用し、もっと深くしたい場合でも3層や4層が一般的で、非常に深くなってもせいぜい8層程度でした。つまり、層の数は常に一桁でした。
もう一つの違いは、ビジョンモデルはより生のデータを扱うモデルだったことです。個々のピクセルレベルで操作していたのに対し、NLPでは単語レベルのモデルを使用するのが標準でした。トランスフォーマーモデルでもこれは同様です。つまり、処理が始まる前にすでにデータがより多くグループ化されていたのです。
この論文のアイデアは、NLPをビジョンのように扱えるのではないかというものでした。生のデータとして文字を扱い、それをより深い畳み込みニューラルネットワークに入力し、ビジョンで使用されるのと同じようなアーキテクチャを言語分類タスクに使用するというものです。
これがVD-CNNアーキテクチャにつながりました。設計面で非常にビジョンシステムに似たモデルです。モデルの底部では個々の文字を扱い、それらに16次元の表現を与えます。分類するテキストの一定のサイズ(彼らの場合は1,024)があり、各段階で畳み込みブロックを適用していきます。
これらの畳み込みブロックは多数のフィルタを持っていますが、徐々に要素をグループ化して多文字単位にまとめていきます。最初は64個のサイズ3の畳み込みフィルタから始まり、これにより64×ウィンドウサイズの表現を得ます。その後、再びサイズ3、64個の畳み込みフィルタを適用します。
各ポイントには、トランスフォーマーでも見られた残差接続があります。これにより、情報が直接通過するパスが確保されます。この段階に達すると、ローカルプーリングを行い、ここでの各表現のペアをプールしてまとめます。その結果、元の1,024の長さではなく、512の長さになります。
次に、再び3-gram畳み込みを適用しますが、今度は128のチャネルを使用します。これを繰り返し、再びプーリングでグループ化します。これで長さは256になり、各段階で256のフィルタを使います。再度ローカルプーリングを行うと、各要素は文字の8-gramを表すようになります。このような8-gramに対して3-gramフィルタを適用しているので、畳み込みフィルタが見ている文の範囲は24文字、つまり約6単語の長さになります。
さらに畳み込みブロックを重ね、k-Maxプーリングを行い、シーケンス内で最も活性化の高い8つを見つけます。これはテキスト分類器にとって理にかなっています。例えば「これは銅鉱業に関するものか」というカテゴリであれば、テキスト内で銅鉱業について言及している箇所がいくつあるかを数えたいからです。
最後に最上部では、ビジョンネットワーク(VGGNetなど)でよく見られるように、複数の全結合層を通します。畳み込み層を多数重ねた後、最後に複数の全結合層を通すというのは典型的なパターンです。
6.2. Vision CNNとの類似点
VD-CNNモデルの設計は、非常にビジョン(画像処理)のCNNアーキテクチャに似ています。この類似性は偶然ではなく、意図的に画像処理の成功したアプローチを言語処理に適用しようとしたものです。
モデルの底部では個々の文字を入力として扱い、これは画像処理でピクセルを扱うのと同じアプローチです。つまり、より抽象的な単語ベクトルから始めるのではなく、生のデータ(文字)から始めています。これはビジョンモデルが個々のピクセル値から始めるのと非常に類似しています。
アーキテクチャ全体も画像認識モデルの設計原則に従っています。初期層では小さな受容野(この場合は3文字の窓)で細かい特徴を捉え、層を重ねるにつれて徐々に抽象度の高い特徴を捉えていく構造になっています。これはConvNetが画像の線やエッジから始め、徐々により複雑な形状を認識していく方法と同じです。
また、残差接続の使用も画像処理のResNetから直接取り入れられたものです。残差接続は、深いネットワークを訓練する際の勾配消失問題を軽減し、情報がネットワーク全体を通じて流れやすくします。
さらに、プーリング操作の使用も画像処理のCNNと類似しています。ローカルプーリングによって表現サイズを徐々に縮小し、より広い文脈を捉えるための抽象化を行います。k-Maxプーリングも、画像認識で使われる手法を言語データに適応させたものです。
最後に、モデルの最上部で複数の全結合層を使うアプローチも、VGGNetのような画像認識モデルで広く使われている設計パターンです。
これらの類似点は、画像処理の分野で成功した設計原則を言語処理に適用することで、文字レベルから始めて単語、フレーズ、そして文全体の理解へと階層的に進む能力を獲得しようとする試みを反映しています。
6.3. 畳み込みブロックと残差接続の活用
VD-CNNモデルでは、畳み込みブロックと残差接続を効果的に組み合わせています。各畳み込みブロックは複数のフィルタを持ち、さらにローカルプーリングを使って情報をグループ化しています。
まず、モデルの最下層では個々の文字が16次元の表現を持ちます。その上に最初の畳み込みブロックが配置され、64個のサイズ3の畳み込みフィルタが適用されます。これにより、元のシーケンス長(この場合は1,024)を維持しながら、64次元の表現を得ることができます。
次に、同じく64個のサイズ3の畳み込みフィルタを再度適用し、この時点で残差接続が重要な役割を果たします。残差接続は、層を超えて情報を直接伝達するパスを提供します。これはトランスフォーマーでも使われている技術ですが、実際にはビジョン分野で先に開発されたものです。この残差接続により、深い層を持つネットワークでも効果的に学習を行うことができます。
畳み込みブロックを通過した後、ローカルプーリングを行います。ここでは表現の各ペアがプールされ、シーケンス長が半分(512)になります。つまり、より広い文脈をカバーするためにデータを縮小しているのです。
次の層では128チャネルのサイズ3の畳み込みフィルタを適用し、再び同じ操作を繰り返した後、もう一度ローカルプーリングを行います。これにより長さはさらに半分の256になります。次の段階では256のフィルタを各段階で使用し、さらにローカルプーリングを行うと、今度は各要素が8文字分を表現するようになります。
これらの操作によって、情報は階層的に組織化され、より高次の抽象化が可能になります。残差接続の役割は特に重要で、これにより深いネットワーク(29層まで)でも効果的に学習でき、勾配消失問題を軽減できます。
このように、畳み込みブロックと残差接続を組み合わせることで、文字レベルから始めて徐々に高次の特徴を抽出し、最終的にはテキスト全体の意味や分類に関連する情報を抽出することが可能になります。
6.4. 実験結果と深さによる性能向上の証明
Conneau らの実験は、テキスト分類データセットで行われました。様々なニュース分類データセット、DBpediaオントロジー、そしてYelpレビューとAmazonレビューの感情分析などが含まれています。彼らは、以前に公開された最良の結果(表4に示されている)と比較して、自分たちのアーキテクチャがより良い結果を出せるかどうかを検証しました。
彼らは9層、17層、29層という異なる層の数のアーキテクチャを使用し、論文の結果として、すべてのケースで最も深いネットワークである29層モデルが最良の結果をもたらしました。これはビジョンの分野で行われていたことと類似しています。また、Maxプーリングとk-Maxプーリングのどちらが優れているかについては、データセットによって異なりましたが、常に深いモデルが最も良い結果を出しました。
具体的な結果を見ると、いくつかのテキスト分類タスクでは、以前の結果が彼らの結果よりもわずかに優れていましたが、DBpediaやYelpデータセットのようないくつかのタスクでは、彼らの結果が既知の最良の結果を上回りました。Amazonデータセットでは、一つは彼らの方が良く、もう一つは以前の方が良いという結果でした。
大まかに言えば、これは単に深い畳み込みニューラルネットワークを使って文字レベルから始め、事前に学習した単語ベクトルなどを使わなくても、テキスト分類システムの最先端に達することができることを示しています。これは、ビジョンシステムに似た生の文字レベルの畳み込みニューラルネットワークでもかなりの成果を上げられることを示した素晴らしい成果でした。
このモデルの重要な点は、文字レベルから始めることで、単語レベルでは捉えられない形態的な特徴(例えば接頭辞、接尾辞)や、辞書外の単語、スペルミスなどにも対応できるという点です。また、29層という深いアーキテクチャが常に最良の結果をもたらしたことは、言語処理においても深層学習の有効性を証明しています。
これらの結果は、文字レベルからのボトムアップアプローチでも、適切な深さと構造があれば、テキスト分類タスクで高いパフォーマンスを達成できることを示唆しています。
7. ツリー再帰的ニューラルネットワーク(TreeRNNs)の基礎
7.1. 言語の再帰的構造に関する言語学的背景
授業の最後の部分では、もう一方の極端なアプローチであるツリー再帰的ニューラルネットワークについてお話しします。ツリー再帰的ニューラルネットワークは私と学生たちがスタンフォードで開発したフレームワークです。私が2010年にニューラルネットワークの研究を始めた当初、最初の約5年間は私と学生たちがこのツリー再帰的ニューラルネットワークに取り組んでいました。そのため、これはいわば「スタンフォードブランド」とも言えるものでした。
最終的には、他のアプローチほど成功しませんでしたが、言語学的には興味深く、明確なアイデアがあり、今でも存在するアイデアだと思います。また、まだ活用できる部分があるかもしれませんが、それは後で触れます。
まず始めに、このアプローチは人間の言語の構造に動機づけられています。このスライドの大部分は、ノーム・チョムスキーと同僚による論文から取ったもので、人間の言語能力とは何か、誰がそれを持ち、どのように進化したかについての彼らの見解を議論しています。
詳細には立ち入りませんが、基本的にこの論文では、人間の言語の定義的特性、つまり人間が行う他のことには見られない特性は、言語が再帰的構造を持つことだと主張しています。同じ構造が自分自身の中に繰り返される階層的な入れ子構造があるのです。
例えば、「the person standing next to the man from the company that purchased the firm that you used to work at」という例を考えてみましょう。これ全体が名詞句で、「the person」が主要部です。その後に「standing next to」が続き、そして最初の角括弧内は別の名詞句「the man from」です。その中に前置詞句があり、その中にさらに別の名詞句「the company that purchased」があります。「the firm」も名詞句で、「that you used to work at」という関係節修飾語を持っています。
このように、同じ構文構造を持つ名詞句が入れ子になって埋め込まれています。言語学で使用する文脈自由文法のような形式では、これは無限の入れ子を許容し、プログラミング言語におけるif文のように好きなだけ深くネストできるという同じ種類の再帰的構造を持っています。
もちろん、人間は実際には無限の再帰を理解したり生成したりすることはできず、実際に文を言う際に8層以上深くなることはまずありませんが、言語の構造としては無限に深くできるように見えます。そして、実際に文の構造を見始めると、同じ構造がかなり深く繰り返されることがわかります。
これはペンツリーバンクの例で、最もよく知られた構成素ツリーバンクです。「analyst said Mr. Stronck wants to resume a more influential role in running the company」というランダムな文があります。ここでは、動詞句が入れ子になっています。「running the company」は動詞句で、「resume a more influential role in running the company」はより大きな動詞句です。「wants to resume a more influential role in running the company」はさらに大きな動詞句で、「said Mr. Stronck wants to resume a more influential role in running the company」はさらに大きな動詞句です。
このように、互いに入れ子になった1、2、3、4の動詞句があります。そこで私たちは、文がこのような木構造を持ち、木構造に基づいて文の意味の表現を計算するべきではないかと考えました。
7.2. 構成性の原理とベクトル表現への応用
私たちは単語がワードベクトル空間での表現を持つことを授業の最初に見てきましたが、では「the country of my birth」のような句の表現はどうすれば良いでしょうか?言語意味論のクラスや言語哲学で見られる古典的な言語学的答えは、構成性の原理(principle of compositionality)を使って句の表現を構築するというものです。
構成性の原理とは、句や文の意味はその構成要素である単語の意味(これが私たちのワードベクトル)と、それらを結合するルールによって決定されるというものです。つまり、文の句構造木を取り、何らかの方法で単語ベクトルを結合することで、より言語学的な方法で句の意味の表現を構築できるのではないかと考えたのです。
これにより、句のベクトル表現を得ることができ、そのベクトルをベクトル空間に配置することができます。私たちは「the country of my birth」のような句が、場所を表す単語が現れるのと同じようなベクトル空間の場所に現れることを期待します。
私たちが目指したのは、ワードベクトルから始めて文を構文解析し、文を解析しながら文の異なる句に対する表現を計算することです。ここでの違いは、再帰的(recursive)と再帰的(recurrent)の違いは実際には人為的なものであり、どちらも同じ「recur(繰り返す)」という単語から来ていますが、再帰的ニューラルネットワークではシーケンスに沿って再帰が起こるのに対し、ここでは木構造に沿って再帰が起こるということです。これにより、言語学的に意味のある句の表現を計算できます。
私たちが行ったのは、句構造木がわかっている場合、子ノードの表現を取り、それらをニューラルネットワークに入力して親ノードの表現を得ることができます。しかし、木構造も見つけたいので、ニューラルネットワークから二つ目の出力として、何かが構成素として妥当かどうかのスコアを得ることもできます。これらの二つのノードを一緒に結合して大きな構成素を形成することは意味があるかというスコアです。このスコアをパーサー(構文解析器)で使用することができます。
形式的には、最も単純な種類のツリーニューラルネットワーク、そして私たちが最初に探索したのは、二つの子ベクトルがある場合に、それらを連結し、行列を掛け、バイアスを足し、非線形性を適用して親表現pを得るというものでした。そして、学習されたパラメータの別のベクトルをpとドット積することで、それが良い構成素かどうかのスコアを得ます。再帰的ニューラルネットワークが同じパラメータを使い続けるのと同じように、木のすべてのノードで同じWパラメータが使用されました。
7.3. 句構造木に基づく意味表現の構築方法
構成性の原理に基づいて句構造木を使った意味表現の構築方法を考えてみましょう。もし句構造木と先ほど説明したシステムがあれば、貪欲なパーサー(構文解析器)を構築することができます。具体的には、すべての単語ベクトルから始め、すべての単語のペアを取り、このシステムに通して、そのペアが構成素としてどのような表現を持つかを計算し、それが良い構成素かどうかのスコアを得ることができます。
そして、貪欲に「これが最良の構成素だ」と決めることができます。例えば「the cat」が最良の構成素だと判断した場合、それにコミットしてから、他の単語ペアを組み合わせる可能性も既に分かっているので、「the cat」と「sat」を組み合わせる良さも評価できます。
このようにして、二分木のパース構造を生成していきます。次に最良のペアを貪欲に組み合わせるのは「the mat」なので、それらを組み合わせてコミットします。「on」と「the mat」を組み合わせるスコアを計算し、それが最良であればそれにコミットします。
このように上へと進み、文の二分木パースを生成し、それが文の表現を与えてくれます。これが私たちの単純なRNN(再帰的ニューラルネットワーク)です。
2011年に、これを文のパーサーとして使用するとかなり良い結果が得られることを示しましたが、それ以上に、文や句に対して計算した表現が、文分類や感情分析のようなタスクに使用できるほど十分に良い表現であることを示しました。そして、それはかなりうまく機能しました。
ただ、それがうまく機能したのは、もっと考えてみると、すべての点で使用される単一のW行列を持つこのアーキテクチャには強い制限があったからです。このアーキテクチャでは、異なる単語間の相互作用の形式を区別することができないのです。単に均一に計算しているだけです。
これは、自然言語における異なる種類のものが異なる性質を持つという事実とは対照的です。動詞とその目的語の間の関係と、形容詞が名詞を修飾する関係では、異なる単語の役割が異なります。
このアーキテクチャの限界を認識し始め、その後の数年間で、より柔軟に物事を組み合わせることができる他の方法でツリー再帰的ニューラルネットワークを構築する方法を探索し始めました。ここですべての詳細を示すわけではありませんが、ツリー再帰的ニューラルネットワークを構築するためのもう一つのモデルを紹介します。それは再帰的ニューラルテンソルネットワークと呼ばれ、感情分析の一部の研究で使用されました。
8. シンプルなTreeRNNから再帰的ニューラルテンソルネットワークへ
8.1. 基本的なTreeRNNの限界
先ほど紹介した最も単純な種類のツリー再帰的ニューラルネットワークには、いくつかの重大な制約がありました。もっと深く考えてみると、あらゆる点で同じ重み行列Wを使用するこのアーキテクチャでは、単語間の異なる相互作用の形を区別することができないという限界があります。
このモデルでは、均一に計算を行うだけで、異なる種類の言語構造に対して異なる処理を行うことができません。これは自然言語の実際の特性とは相容れません。自然言語では、動詞とその目的語の関係と、形容詞が名詞を修飾する関係では、単語の役割が大きく異なります。
例えば、「赤いボール」のような形容詞と名詞の組み合わせでは、「赤い」は名詞「ボール」の属性を与えていますが、「ボールを蹴る」のような動詞と目的語の場合、目的語である「ボール」は右側にありますが、役割は「赤いボール」の場合とは全く逆になります。
このような異なる種類の言語的相互作用を区別できないことは、モデルが言語の複雑さを捉える能力を大きく制限していました。特に、修飾関係や補完関係、主語と述語の関係など、さまざまな構文関係で異なる計算を行う必要性に対応できませんでした。
また、単一の重み行列を使用することで、深い構造を持つ木においても同じパラメータを繰り返し使用することになり、これがモデルの表現力を制限していました。言語構造の異なるレベルでは異なる種類の組み合わせが必要となるため、これは重大な問題でした。
これらの限界を認識した私たちは、その後の研究でより柔軟な方法でツリー構造に基づく計算を行うモデルを探索し始めました。単一の重み行列ではなく、異なる種類の組み合わせや構文関係に対して異なる計算を行えるようなより豊かなパラメータ化を目指したのです。
この探求は最終的に再帰的ニューラルテンソルネットワークやその後のツリーLSTMなどの高度なモデルへとつながっていきました。これらのモデルは、より柔軟で表現力豊かな方法で言語構造を捉えることができるよう設計されました。
8.2. 再帰的ニューラルテンソルネットワークによる改良
私たちがツリー再帰的ニューラルネットワークを構築するために開発したより高度なモデルの一つが、再帰的ニューラルテンソルネットワークです。これは感情分析のいくつかの研究で使用されました。実際にはこれが最終バージョンではなく、その後さらにLSTMのアイデアを取り入れて拡張し、ツリーLSTMを開発しましたが、今年はそれを紹介しません。
再帰的ニューラルテンソルネットワークの基本的なアイデアは、言語学的意味論の観点から、単語や句のペアが組み合わさる際、ペアによって互いを修飾する方法が異なるということです。例えば、「赤いボール」のような形容詞と名詞の組み合わせでは、「赤い」は名詞の属性を与えていますが、「ボールを蹴る」のような動詞と目的語の場合、目的語は全く異なる役割を持ち、関係性は逆転しています。
私たちは句の意味を計算する方法により柔軟性を持たせたいと考え、そのために考案したのが「ニューラルテンソル層」です。このニューラルテンソル層では、子単語や句の表現を持ち、単に連結して線形変換を行う代わりに、中間行列を学習します。これらを複数組み合わせることで三次元テンソルとなり、ベクトルとテンソルとベクトルの積を取ることで、各行列ごとに複数のベクトルを得ることができます。
このモデルを適用したのは感情分析タスクでした。感情分析の目的はテキストが肯定的、否定的、あるいは中立的かを判断することです。2010年代、おそらく今日でも、多くの感情分析システムは基本的にキーワード照合に基づいています。「great」「marvelous」「wonderful」などの単語が見つかれば肯定的感情、「poor」「bad」などが見つかれば否定的感情というように、辞書照合で十分に良い感情分析ができることが多いです。
しかし、人々は言語を様々な興味深い方法で使用するため、常にそれほど簡単ではありません。Rotten Tomatoesのような映画レビューの短い文を見ると、「With this cast and this subject matter, the movie should have been funnier and more entertaining」のような例が見られます。
辞書照合アプローチでは、「entertaining」は明らかに肯定的、「funnier」も肯定的なので、2つの肯定的単語があるため肯定的レビューだと判断するかもしれません。しかし実際には、これは否定的レビューです。なぜなら「should have been funnier and more entertaining」と言っているからです。つまり、人間言語の構成的構造により、「funnier」と「entertaining」が「should have been」の下で否定され、全体として否定的なレビューになるのです。
このような例に興味を持ち、文の構造をより理解し、感情分析をより良く行えるかどうかを検証しようと考えました。
8.3. スタンフォード感情ツリーバンクの開発背景
私たちがこのモデルを適用したのは感情分析タスクであり、これは実際にはスタンフォード感情ツリーバンクと呼ばれるデータセットに戻ります。これはYoon Kimの論文でも使用されました。
感情分析の目標はテキストが肯定的か否定的か、あるいは中立的かを判断することです。2010年代、そしておそらく今日でも、多くの人の感情分析システムは本質的にはキーワード照合に基づいています。「great」「marvelous」「wonderful」などの単語があれば肯定的感情、「poor」「bad」などがあれば否定的感情として扱います。こうした辞書照合で特に長い文書では比較的良い感情分析ができることが多いです。
しかし、人々は様々な興味深い方法で言語を使用するため、常にそれほど単純ではありません。Rotten Tomatoesのような映画レビューサイトの短い文を見ると、「With this cast and this subject matter, the movie should have been funnier and more entertaining」のような例があります。
単純に辞書照合として考えると、「entertaining」は明らかに肯定的単語で、「funnier」も肯定的です。つまり、2つの肯定的単語があるので、これは肯定的レビューだと判断されるかもしれません。しかし実際には、これは否定的レビューです。なぜなら「should have been」の下にあるので、「funnier」と「entertaining」が実際には欠けていることを示し、否定的レビューになっているのです。
このような例に私たちは興味を持ち、文の構造をより理解して感情分析をより良く行えるかどうかを検証しようと考えました。それまでは、テキストの断片に対して肯定的か否定的かという分類判断だけを持っていました。そこで私たちは、スタンフォード感情ツリーバンクを作ることにしました。
スタンフォード感情ツリーバンクでは、約12,000の文を構文解析し、文の全ての言語的句に感情判断を付けることにしました。例えば「With this cast」という句には感情はなく中立ですが、「entertaining」という一語の句は肯定的です。「funnier and more entertaining」という句は非常に肯定的ですが、「should have been funnier and more entertaining」というより大きな句は否定的になります。「the movie should have been funnier and more entertaining」というさらに大きな句も否定的です。
このように文を解析していくと、青いノードとオレンジのノードが見えます。これらは異なるサイズの単位における肯定的・否定的感情を反映しています。
このアプローチの興味深い点は、より豊かな注釈付きデータセットを提供することでした。単に全体の文や記事に感情が注釈付けされるだけでなく、異なる句に対する注釈があったのです。句に注釈を付けるという事実だけで、例からより多くを学べることになりました。非常に単純なナイーブベイズ分類器でさえ、単語と小さな句に注釈があるため、何が肯定的で何が否定的かをより良く学べるようになりました。
8.4. 否定表現の正確なモデル化における優位性
スタンフォード感情ツリーバンクデータセットを構築したことで最初に得られた結果は、バイグラムのナイーブベイズ分類器という非常に一般的な感情分類器を使った場合、通常の方法でトレーニングすると79%の精度が得られましたが、ツリーバンクの全ノードを使ってトレーニングすると83%という4%の向上が見られました。これはある程度良い結果でした。
ただし、この結果の否定的な側面として、私たちの初期のツリーRNNは、バイグラムのナイーブベイズ分類器よりも特に良いわけではなく、単語のナイーブベイズ分類器よりは良いという程度でした。感情分析に必要な多くの追加情報は、「not good」などのバイグラムからすでに捉えることができるため、バイグラムのナイーブベイズでも十分に捉えられていたのです。
そこで、より強力なモデルを持つことが私たちの次の希望でした。これが再帰的ニューラルテンソルネットワークの使用につながりました。単語や句ベクトル間の媒介乗法的相互作用を可能にしたこのモデルを構築し、結果としてバイグラムのナイーブベイズモデルよりも約22%良い性能のニューラルネットワークを得ることができました。これは進歩でしたが、おそらくより興味深いのは全体的な結果ではなく、このモデルが文の異なる部分とその組み合わせ方法について判断を下したことです。
例えば「There are slow and repetitive parts but it has just enough spice to keep it interesting」というレビュー文を考えてみましょう。全体としてこれは映画に対する肯定的な声明であることに同意していただけると思います。再帰的ニューラルテンソルネットワークはこの文の木構造を構築し、「slow and repetitive」は否定的、「there are slow and repetitive parts」も全体として否定的であるとしています。一方で右側の部分では、「interesting」「spice」は両方とも肯定的で、「spice to keep it interesting」も肯定的、「it has just enough spice to keep it interesting」も肯定的です。そして、このモデルはこの文の二つの半分を組み合わせたとき、全体的な判断は肯定的レビューのままであると正しく予測しています。
特に興味深いのは、このような句レベルの判断を構築していたことで、言語意味論を行う言語学者が見たいような文理解をより良く行えるように思われたことです。ニューラルネットワークが言語を扱う際によく批判される点の一つ(今日でもトランスフォーマーモデルを含めて批判されている)は、否定表現に十分に注意を払わないことです。例えば「多くの学生が期末試験のために勉強している」と「多くの学生が期末試験のために勉強していない」という文を比較すると、否定が失われて、表現や意味に期待される違いが生じないことがあります。
興味深いことに、このモデルでは文の構造の再帰的な構築をモデル化していたため、否定をモデル化する点で実際に興味深いことができました。特に、「it's just incredibly dull」という例では、「dull」は非常に否定的な単語、「incredible」は単独では肯定的な単語ですが、「incredibly dull」と言うとき、それは明らかにまだ否定的です。私たちの再帰的ニューラルテンソルネットワークは、「incredible」が一種の肯定的な単語であるにもかかわらず、「it's just incredibly dull」が非常に否定的であることを正しくモデル化しています。
このモデルでは実際には5段階の分類(非常に否定的、やや否定的、中立、やや肯定的、非常に肯定的)を行っていたため、「非常に否定的」と「やや否定的」の間で多少の変動がありました。なぜ途中で「やや否定的」になり、その後「非常に否定的」に戻るのかは説明できませんが、これがネットワークから出てきた結果です。いずれにせよ、全体として否定的なままであり、「incredible」が肯定的な単語であるにもかかわらず、「dull」を修飾すると否定的なままであるということをモデルは理解しています。
一方、「it's definitely not dull」という否定表現を入れた場合はどうでしょうか。興味深いことに、「not」自体は否定的な単語です。生の統計を取ると、「not」は肯定的な文よりも否定的な文により多く出現します。つまり、よりポジティブな人になりたいなら、否定表現をあまり使わないことです。
「not」自体は否定的ですが、「not dull」や「definitely not dull」という場合、二重否定となり相殺されて肯定的になります。そして「it's definitely not dull」は肯定的な文として出力されます。
この結果の興味深い点は、肯定的な文を否定した場合(「it's definitely not good」など)、様々なモデルが正しくモデル化できます。「not」が否定的な単語であるため、肯定的な文の肯定性を弱める効果があり、肯定的な文の前に「not」を置くとより肯定的でなくなります。これはナイーブベイズモデルでもできます。しかし難しいのは、否定的な文を否定した場合です。この場合、文はより肯定的になるはずですが、バイグラムのナイーブベイズモデルや初期の再帰的モデルではこれをうまく捉えられませんでした。一方、このRNN構造は、意味論的な修飾構造を正しく捉え、文をずっと肯定的にしたと言うことができました。
これは素晴らしい結果であり、ある意味では、他の多くの利点を持つ現在のトランスフォーマーモデルでさえ、この結果は十分に捉えられていないと思います。
9. TreeRNNの評価と将来の展望
9.1. Transformerモデルとの比較
最後に、これらのツリー再帰的ニューラルネットワークに関するいくつかの最終的な考察を述べたいと思います。これらのモデルが競争力を失った理由は、トランスフォーマーのような連想や情報の流れを許可しなかったからです。これらのモデルは厳密に文脈自由なバックボーンを持ち、情報の流れは文脈自由なバックボーンに従うツリー構造のみに限られていました。
対照的に、トランスフォーマーでは注意機構があり、あらゆる位置から他のすべての位置を見ることができるため、より一般的な情報の流れが可能です。全般的にこれは良いことであり、トランスフォーマーははるかに強力です。
しかし一方で、人間言語の意味論を慎重にモデル化したい、特に何が何を修飾するのか、文中の否定や限定詞がどのように振る舞うのかといった点に注目したい場合、ある意味でこれらのモデルはより正確でした。
そのため、私がまだ興味を持っている一つのことは、これらの二つの考え方の方法の利点を組み合わせる機会があるかどうかということです。トランスフォーマーのような柔軟性を持ちながら、より木構造を持つ何かがあり得るでしょうか。
TreeRNNは言語の構文構造に忠実に従い、構文木に沿った情報の流れを強制するため、言語学的に解釈しやすいモデルでした。しかし、この構文的制約がモデルの柔軟性を制限し、様々な種類の言語現象を捉える能力を制約してしまいました。
一方、トランスフォーマーは自己注意機構によって、単語間の関連性を構文構造に関係なく直接モデル化できます。これにより、長距離依存関係や複雑な意味的関連性を効果的に捉えることができますが、言語学的な構造の明示的なモデル化は失われています。
トランスフォーマーはまた、大規模なデータセットでの効率的な並列訓練が可能であり、これにより膨大なパラメータを持つモデルを訓練できるようになりました。これがTreeRNNよりも優れたパフォーマンスを示す主な理由の一つです。
しかし、TreeRNNが示した否定表現の正確なモデル化のような特定の能力は、トランスフォーマーでも完全に再現されていない可能性があります。これは、言語の構文構造を明示的にモデル化することの価値を示唆しています。
9.2. TreeRNNのコンテキストフリーな制約
ツリー再帰的ニューラルネットワークが競争力を失った主な理由は、これらのモデルが厳密に文脈自由なバックボーンを持っていたからです。情報の流れは文脈自由なバックボーンに従うツリー構造のみに限られていました。これにより、モデルが捉えることのできる言語現象の種類が制限されてしまいました。
トランスフォーマーには注意機構があり、各位置がシーケンス内の他のすべての位置を参照できるため、より一般的な情報の流れが可能です。これにより、より強力で柔軟なモデルとなっています。対照的に、TreeRNNでは情報は構文木に沿ってのみ流れることができます。
この制約の具体的な影響は以下のようなものです。TreeRNNでは、文の中の単語や句は、構文木において直接接続されている場合にのみ相互作用できます。例えば、主語と動詞が構文的に近い場合はそれらの間の関係を捉えることができますが、文中で離れた位置にある関連する要素間の関係を捉えることは難しくなります。
また、文脈自由文法に基づく構文木では、言語の一部の側面(例えば照応や談話レベルの関係)を適切に表現できないという根本的な制約もあります。これらの言語現象は、単なる構文関係を超えた情報の流れを必要とするからです。
一方で、TreeRNNのこのコンテキストフリーな制約は、モデルの解釈可能性と言語学的動機付けの強さにもつながっていました。構文構造に従った計算は、言語学の伝統的な理論と整合性があり、モデルの動作が言語学的に説明しやすくなります。
特に否定や修飾関係のモデル化において、構文構造に基づく情報の流れは、これらの現象の適切な処理を可能にしました。これは、単語の意味が構文構造に従って組み合わされるという構成性の原理と一致しています。
しかし最終的には、このコンテキストフリーな制約が、より柔軟なアーキテクチャと比較した場合の性能上の制限につながりました。言語の複雑さを完全に捉えるには、構文的制約を超えた、より自由な情報の流れを許可する必要があるのです。
9.3. 両方のアーキテクチャの長所を組み合わせる可能性
これらのツリー再帰的ニューラルネットワークに関する最終的な考察として、私がまだ興味を持っている点は、これら二つの考え方の長所を組み合わせる機会があるかどうかということです。つまり、トランスフォーマーのような柔軟性を持ちながら、より木構造的な特性を備えた何かが可能なのではないかということです。
一方ではTreeRNNは、人間言語の意味論を慎重にモデル化する上で利点を持っています。特に文中で何が何を修飾するのか、否定や量化子がどのように振る舞うのかという点において、これらのモデルはある意味で「より正確」でした。こうした言語の構成的側面をモデル化するために、構文構造に基づいた情報の流れは非常に効果的です。
他方でトランスフォーマーは、自己注意機構によって任意の位置間の直接的な情報伝達を可能にし、これが長距離依存関係や複雑な文脈理解において優れた性能をもたらしています。この柔軟性は現代の言語モデルの成功の鍵となっています。
両方のアプローチの長所を組み合わせる方法としては、いくつかの可能性が考えられます:
- 階層的自己注意機構:トランスフォーマーの自己注意機構に構文的な制約または階層的バイアスを導入することで、より構造化された情報の流れを実現しながら、必要に応じて構文的制約を超えた情報伝達も可能にする。
- ハイブリッドアーキテクチャ:明示的な構文構造の処理と自由形式の自己注意処理を組み合わせ、言語のさまざまな側面を異なるモジュールで処理する。
- 構文的に誘導された注意:構文木に基づいて注意の重みにバイアスをかけることで、構文的に関連する要素間の情報伝達を優先しつつ、関連する可能性のある他の要素も考慮する。
このような組み合わせにより、言語の構文的・意味的現象をより正確にモデル化しながら、トランスフォーマーの柔軟性と計算効率も維持できる可能性があります。特に否定、量化、照応関係など、言語の複雑な側面を扱う際に利点をもたらすかもしれません。
この方向性の研究は言語処理の次の段階への興味深い道筋となり得るもので、今後も探求する価値があるテーマだと考えています。