🚢🚢🚢AIテクノロジーソフトウェアと技術交流グループへのご参加をお待ちしております!最新のトレンドを把握し、一緒に技術的な課題を探求しましょう! 著者 | ヴィッキー・ボイキス 編纂者:岳陽 Word2Vecは、埋め込みの概念を用いて固定された特徴を持つ語彙表現を生成する、最も初期のニューラルネットワークアーキテクチャの一つでした。しかし、ニューラルネットワークは、主にいくつかの重要な要因により、自然言語モデリングにおいてますます普及しています。 まず、1980年代に研究者たちはバックプロパゲーションアルゴリズムを用いたニューラルネットワークの学習において一定の進歩を遂げました。バックプロパゲーションアルゴリズムは、ニューラルネットワークの重みに対する損失関数の勾配を計算し、微積分学の連鎖律[1]を用いることで収束を学習する方法です。このメカニズムにより、モデルは損失値の最小値に達したことを理解し、勾配降下法によってモデルパラメータの正しい重みを見つけ、それによってモデルを学習することができます。初期の方法(パーセプトロン学習則など)もこれを試みましたが、単純なモデルアーキテクチャにしか適用できない、収束時間が長い、勾配消失に遭遇するなどの制限があり、モデルの重みを効果的に更新することが非常に困難でした。 これらの進歩により、最初のタイプの多層ニューラルネットワークであるフィードフォワードニューラルネットワークが登場しました。 1998年には、バックプロパゲーションアルゴリズム[2]を用いて多層パーセプトロン上で手書き数字画像を認識するというタスクに成功した論文が発表され、開発者や研究者が実際に適用できる実世界のユースケースが示されました。このMNISTデータセットの使用は、現在ではディープラーニングの入門書として定番の「Hello World」の一つとなっています。 第二に、 21世紀初頭にペタバイト規模のデータ増加が出現したことで、インターネットから大量のマルチモーダル入力データを収集できるようになり、大規模なデータセットがいくつか作成されました。これにより、研究者はニューラルネットワークが大量のデータに対しても適切に機能することを実証するための多数の実験を行うことができました。例えば、スタンフォード大学の研究者は、ニューラルネットワーク入力データのゴールドスタンダードデータセットを作成し、モデルの性能向上を図ることを目指してImageNetを立ち上げました。FeiFei Liは、学生とAmazon Turkのクラウドソーシングワーカーからなるチームを組織し、インターネットから収集した320万枚の画像にラベルを付け、WordNet(1970年代に登場した分類法)に基づいてカテゴリごとに整理・分類しました[3]。 研究者たちは標準データセットの利点に気づきました。 2015年、アレックス・クリジェフスキーは、現在OpenAIに勤務するイリヤ・スツケヴァーと共同で、ImageNetコンペティションにAlexNetと呼ばれる論文を提出しました。これは、他の多くの手法を凌駕する性能を発揮した畳み込みニューラルネットワークでした。 AlexNetには注目すべき特徴が2つありました。1つ目は、重みとバイアスが8層に積み重なっていたことです。これは当時としては非常に珍しいことでした。今日では12層ニューラルネットワーク(BERTやその他のTransformerなど)はごく当たり前のことですが、当時は2層以上を持つこと自体が革命的でした。2つ目は、AlexNetがGPU上で動作していたことです。これは当時としては斬新なアーキテクチャコンセプトでした。GPUは主にゲームのグラフィックレンダリングに使用されていたからです。さらに、イリヤ・スツケヴァーは現在、生成型人工知能(GPU)の潮流の基盤となっているGPTシリーズのモデルを開発した主要研究者の一人です。 ニューラルネットワークアーキテクチャ(リカレントニューラルネットワーク(RNN)や、後に長短期記憶ネットワーク(LSTM)など)は、語彙表現を生成する手法として普及しています。これらのニューラルネットワークアーキテクチャは、テキストデータ処理にも利用され、自然言語処理やコンピュータービジョンなど、様々な機械学習タスクで使用されています。ニューラルネットワークは従来の機械学習モデルの拡張版ですが、独自の特性も備えています。従来の機械学習手法では、学習可能なパラメータセットまたは層は1つしかなく、モデルも1つしかありませんでした。入力データに複雑な相互作用がない場合、従来の機械学習モデルは特徴空間を非常に容易に学習し、正確な予測を行うことができます。 しかし、従来の機械学習モデルの問題は、テキスト、音声、動画などの非常に大規模な暗黙的特徴空間を扱う場合、特定の特徴を推測できないことです。これらの特徴を手動で作成すると、特徴は明確には現れません。ニューロンを積み重ねることで(訳注:これはニューラルネットワークを構築する方法の一つです。ニューロンを積み重ねることで、複数の層を相互接続し、より複雑な表現力を持つディープニューラルネットワークモデルを構築できます)、各ニューロンはモデルの特定の側面を表現し、ニューラルネットワークはこれらの潜在的な表現(訳注:機械学習やディープラーニングでは、データは通常、ベクトルまたは行列に変換されます。この変換プロセスは「表現学習」と呼ばれます。その中でも、入力データを暗黙的な表現の集合に変換することは、「暗黙的表現」または空間における「暗黙変数」とも呼ばれます)を抽出できます。ニューラルネットワークは、データの表現を学習することに非常に優れています。ニューラルネットワークの各層は、データの明確なイメージが得られるまで、前の層で学習した表現をより高いレベルの表現に変換します[4]。 01ディープラーニングアーキテクチャ既にWord2Vecニューラルネットワークについて触れましたが、これはテキスト内の単語間の関係性、つまり単語自体では分からない関係性を理解しようとするものです。この分野では、いくつかの主流のニューラルネットワークアーキテクチャが存在します。
RNNとCNNは主に特徴抽出に使用され、一般的にモデル構築プロセス全体を表すものではありません。しかし、これらは後にフィードフォワードモデルに入力され、分類や要約などのタスクを完了します。 図1. ニューラルネットワークの種類 ニューラルネットワークの構築と管理は、いくつかの理由から極めて複雑になっています。まず、最適化のためには、クリーンで適切にラベル付けされた大量のデータが必要です。次に、このプロセスには、独自のメタデータ管理とレイテンシを考慮した専用のGPUアーキテクチャが必要です。最後に、ニューラルネットワーク自体では、収束を達成するために、膨大な量のトレーニングデータを使用してモデルオブジェクトを処理する必要があります。計算に必要な特徴行列の数と、モデルの存続期間中メモリに保持する必要があるデータの量は継続的に蓄積されるため、広範なパフォーマンスチューニングが必要になります。 これらの特性により、ニューラル ネットワークの開発と実行には法外なコストがかかり、この状況にブレークスルーが起きたのはこの 15 年ほどのことです。まず、物理コンピューティングとクラウド コンピューティング サービスの拡張により、ストレージ スペースの市場が飛躍的に成長し、膨大な量のトレーニング データを保存できるようになりました。インターネット データの爆発的な増加により、Google などの企業にも膨大な量のトレーニング データが提供されました。次に、GPU の使用が広まりました。GPU は並列コンピューティングをサポートするハードウェアで、単語カウントなど、並列実行可能なタスクに簡単に分割できるタスクに適しています。ニューラル ネットワークでは、通常、単一のニューロン レベルを含め、任意の数の方法で並列計算を行うことができます。 GPUはもともとコンピュータグラフィックス処理用に設計されていましたが、21世紀初頭[5]に研究者たちは汎用コンピューティングにおけるその可能性を発見し、NVIDIAはCUDA(GPU上のAPIレイヤー)を導入することでこの分野に参入し、汎用コンピューティングにおけるGPUに「賭け」ました。これが、PyTorchやTensorflowといった主流の高度なディープラーニングフレームワークの出現と発展を促しました。 ニューラルネットワークは現在、大規模に学習および実験することが可能です。以前紹介した手法と比較すると、TF-IDFを計算する際には、各単語をループ処理し、データセット全体にわたって順次計算を実行することで、他の単語に比例したスコアを得る必要があり、その時間計算量はO(ND) [6]となります。 しかし、ニューラルネットワークでは、モデルトレーニングを異なるGPUに分散させることができ、このプロセスはモデル並列処理または計算バッチと呼ばれています。トレーニングデータのサイズがモデルに入力され、ハイパーパラメータはトレーニングループ中に他のデータと並列に更新され、各ミニバッチの最後に更新されます。これはデータ並列処理と呼ばれます[7]。 02トランスフォーマーWord2Vecはフィードフォワードネットワークであり、モデルの重みと情報はエンコード状態から隠れ埋め込み層(入力単語をベクトル表現(埋め込みベクトルとも呼ばれる)に変換する層)へ、そして出力確率層(Word2Vecモデルの最終層で、隠れ層からの埋め込みベクトルを各単語の確率分布にマッピングする層)へのみ流れます。2層目と3層目の間にはフィードバックがないため、各層は後続の層の状態を認識しません。そのため、コンテキストウィンドウのサイズよりも長い推論提案を提供することはできません。ただし、このモデルは、単一の静的な語彙のみを必要とする機械学習の問題には非常に効果的です。 しかし、 Word2Vecは文脈の中で単語を理解する必要がある長い記事ではうまく機能しません。例えば、会話の中で「ラングストン・ヒューズのあの文章を読みました。気に入ったのですが、彼の後期の作品はあまり読んでいません」と言う場合、「それ」はその文章を指しており、前の文章の文脈を考慮する必要があることは理解できます。一方、「彼」は両方の文章で言及されている「ラングストン・ヒューズ」を指しています。 さらに、 Word2Vecは語彙外の単語、つまりモデルがまだ学習しておらず、一般化が必要な単語を扱うことができません。つまり、ユーザーが新しく生成された人気単語を検索した場合、あるいはモデルの学習後に生成されたコンテンツを推奨したい場合、モデルが頻繁に再学習されない限り、ユーザーはモデルの結果に関連性の高いコンテンツを見ることができません[8]。 Word2Vecが直面するもう一つの問題は、多義性によって引き起こされる文脈の崩壊です。多義性とは、同じ単語が複数の異なる意味を持つことを意味します。例えば、同じ文に「jail cell(独房)」と「cell phone(携帯電話)」が含まれている場合、Word2Vecは異なる文脈におけるこれらの2つの単語の異なる意味を区別できない可能性があります。そのため、深層学習ベースのNLPにおける研究の多くは、文脈を保存・理解し、モデルを通じて意味を伝播・抽出できるようにすることを目的としています。 Word2Vecのこれらの限界を克服するために、様々なアプローチが提案されており、一部の研究者はリカレントニューラルネットワーク(RNN)の活用を試みています。RNNは従来のフィードフォワードネットワークに基づいていますが、モデルの各層が前の層にフィードバックを提供するという点で異なります。これにより、モデルは文中の単語を取り巻く文脈を記憶し、その文脈における多義語の意味をより正確に理解できるようになります。 図2. フィードフォワードニューラルネットワークとリカレントニューラルネットワークのアーキテクチャ図 従来のRNNは、バックプロパゲーション中に重みを前層のニューロンに渡さなければならないという問題を抱えており、勾配消失問題を引き起こします。これは、バックプロパゲーション中に連鎖律で使用される偏微分を連続的に微分し、偏微分がゼロに近づくことで発生します。偏微分がゼロに近づくと、ニューラルネットワークは局所最適値に達したとみなし、収束前に学習を停止します。 この問題に対処するため、RNNの派生モデルとして非常に人気のあるLong Short-Term Memory(LSTM)が登場しました。このネットワークはもともとSchmidhuberによって開発され、その後、音声認識や画像キャプション作成などの分野で広く利用されてきました[9]。一度に1つのベクトルしか入力できなかった従来のモデルと比較して、RNNはゲート付き回帰ユニット(GRU)を使用してベクトルシーケンスを処理できるため、LSTMは入力で分析される情報量を制御できます。LSTMは非常に優れたパフォーマンスを発揮しますが、一定の制限もあります。複雑なアーキテクチャのため、並列学習ができず、学習時間が長くなり、計算コストが高くなります。 2.1エンコーダ/デコーダとアテンション:エンコーダ/デコーダのアーキテクチャとアテンションメカニズム以前の RNN や Word2Vec と比較して、エンコーダー/デコーダー アーキテクチャとアテンション メカニズムという 2 つの概念により、研究者は、より大きなコンテキスト ウィンドウに長いベクトルを記憶するという計算コストの高い問題を克服できるようになりました。 エンコーダ/デコーダアーキテクチャは、2つのニューラルネットワークから構成されるニューラルネットワークアーキテクチャです。エンコーダはデータから入力ベクトルを受け取り、固定長の埋め込みを作成します。デコーダ(これもニューラルネットワーク)は、エンコードされた埋め込みを入力として受け取り、テキスト翻訳やテキスト要約などの静的出力セットを生成します。これら2つの層の間には、アテンションメカニズムが存在します。これは、重み付き行列乗算を継続的に実行することで、入力状態全体を維持する手法です。これらの乗算により、語彙内の特定の用語間の関連性を強調することができます。アテンションは、テキスト内の単語と、それらの単語が入力と出力でどのように異なる表現にマッピングされるかを追跡する、非常に大規模で複雑なハッシュテーブルと考えることができます。 図3 エンコーダ/デコーダアーキテクチャ図 図4. 典型的なエンコーダ/デコーダアーキテクチャ(The Annotated Transformer [10]より) 2017年の論文「Attention is All You Need(必要なのは注意だけ)」[11]では、これら2つの概念を単一のニューラルネットワークアーキテクチャに統合しました。この論文は瞬く間に成功を収め、Transformerは自然言語処理タスクで使用される標準モデルの1つとなりました。 オリジナルモデルの成功を基に、Transformerアーキテクチャの数多くの派生モデルがその後リリースされました。GPTとBERTは2018年にリリースされ、BERTの小型化・コンパクト化を図ったDistilbertは2019年に、GPT-3は2020年にリリースされました。 図5. Transformerモデル開発のタイムライン Transformer アーキテクチャ自体は新しいものではありませんが、これまでに説明したすべての概念 (ベクトル、エンコーディング、ハッシュ マップ) が組み込まれています。 Transformerモデルの目標は、入力コーパス内の単語群の複数のビュー(つまり、複数のコンテキストウィンドウ)を作成することで、マルチモーダルコンテンツを取得し、コンテンツ内の潜在的な関係性を学習することです。Transformerの論文では、自己注意メカニズムはスケールドドット積アテンションとして実装されており、6つのエンコーダー層と6つのデコーダー層を通して、データの異なるコンテキストウィンドウを複数回作成します。出力は、文の翻訳や段落の要約などの特定の機械学習タスクの結果であり、最後から2番目の層はモデルの埋め込みであり、下流のタスクに使用できます。 図6は、この図[12]を含む複数の情報源からインスピレーションを得たこのトランスフォーマーのレイヤービューを示しています。 論文で説明されているTransformerモデルは、テキストコーパスを入力として受け取ります。まず、トークン化によってテキストをトークン埋め込みに変換し、各単語またはサブワードをインデックスにマッピングします。これはWord2Vecのプロセスに似ており、各単語を行列の要素に割り当てるだけです。しかし、これだけでは文脈を理解するには不十分です。そこで、正弦関数または余弦関数を用いて位置埋め込みをさらに学習し、語彙内の他のすべての単語の位置をマッピングして行列に圧縮します。このプロセスの最終的な出力は、位置ベクトルまたは単語エンコーディングです。 次に、これらの位置ベクトルは並列にモデルに渡されます。Transformerの論文では、モデルは6つのエンコード層と6つのデコード層で構成されています。まずはエンコーダ層から見ていきましょう。エンコーダ層は、自己注意層とフィードフォワードニューラルネットワークという2つのサブ層で構成されています。自己注意層は重要な部分であり、スケールドドット積アテンションを用いて各用語と他の用語の関係を学習します。自己注意層は、微分可能なルックアップテーブル、あるいは用語とその位置の両方を含む大規模なルックアップ辞書と考えることができます。各用語と他の用語の関係の重みは、前の層から取得されます。 スケールドドット積アテンションは、キー行列、クエリ行列、値行列の3つの行列の計算を伴います。これらの行列は、最初は前の層の出力と同じ値を含んでいます。モデルの最初の学習反復中に、これらの行列はランダムに初期化され、勾配降下法を用いて各ステップで調整されます。各埋め込みに対して、学習されたアテンションの重みに基づいて加重平均値が生成されます。クエリ行列とキー行列のドット積を計算し、最後にソフトマックスを用いて重みを正規化します。マルチヘッドアテンションとは、スケールドドット積アテンションの計算を複数回並列に実行し、結果を単一のベクトルに連結することを指します。 ドット積アテンション(およびエンコーダの全層)をスケーリングする利点は、Word2Vecとは異なり、1つのトークンの処理が完了するのを待たずに、コーパス内のすべてのトークンを並列処理できることです。そのため、コーパスの語彙サイズに関わらず、入力ステップ数は一定です。 デコーダーはエンコーダーと若干異なります。まず、入力データセットが異なります。Transformerの論文では、ターゲット言語のデータセットを使用しています。例えば、英語をイタリア語に翻訳する場合、イタリア語のコーパスで学習する必要があります。それ以外の操作はすべて同じです。インデックス付き埋め込みを作成し、それを位置埋め込みに変換します。次に、ターゲットテキストの位置埋め込みを、マスク付きマルチヘッドアテンションメカニズム、マルチヘッドアテンションメカニズム、フィードフォワードニューラルネットワークの3つの層に入力します。マスク付きマルチヘッドセルフアテンションメカニズムは、エンコーダーのセルフアテンションメカニズムと基本的に同じですが、追加のコンポーネントがあります。デコーダーの入力語彙は必要な「答え」、つまり翻訳されたテキストであるため、このステップで導入されたマスク行列はフィルターとして機能し、アテンションヘッドが将来のトークンを参照するのを防ぎます。 マスクされたマルチヘッド自己注意層からの出力は、エンコーダー・デコーダー注意部に渡されます。この注意部は、最初の6つのエンコーダー層からの最終入力をキーと値の行列として、また前のデコーダー層からの入力をクエリ行列として受け取り、スケールされたドット積を計算します。最後に、各出力をフィードフォワード処理して、最終的な埋め込みを生成します。 各トークンの隠れ状態を取得したら、タスクヘッドを追加できます。私たちが取り組んでいるタスク、つまり翻訳では、タスクヘッドは次の単語を予測するために使用されます。このプロセスの各ステップにおいて、デコーダーは前のステップを参照し、それらのステップに基づいて完全な文を生成します[13]。最終的に、Word2Vecと同様に、予測された単語が得られます。 Transformer が革命的である理由は数多くあります。それは、人々が解決に苦労してきたいくつかの問題を解決したからです。
03バート図7 エンコーダのみのアーキテクチャ Attention is All You Needの大成功を受けて、様々なTransformerアーキテクチャが登場し、ディープラーニングの分野では研究と実装が爆発的に増加しました。次に大きな進歩と見なされているTransformerアーキテクチャは、2018年にGoogleがリリースしたBERTです。BERTはBi-Directional Encoderの略で、2018年にGoogleの論文に基づいてリリースされました[14]。感情分析、質問応答、テキスト要約などの一般的な自然言語処理タスクを解決するための手法です。BERTもAttentionメカニズムに基づくTransformerモデルですが、そのアーキテクチャはエンコーダ部分のみを含んでいます。BERTの最も顕著な応用はGoogle検索であり、これによりGoogle検索はユーザーのクエリ意図をより正確に理解し、より有用な検索結果を提供できるようになりました。 Googleが2019年に公開したブログ記事では、検索ランキングアルゴリズムにBERTが追加されたことが強調され、Googleはキーワードベースの方法ではなくクエリにコンテキストを追加する理由について具体的に説明しました。 BERTはマスク型言語モデルです。Word2Vecの実装では、単語を削除してコンテキストウィンドウを作成することでマスクを実現します。Word2Vecを用いて表現を作成する際は、前方に移動するスライディングウィンドウのみに焦点を当てます。BERTの「B」は双方向性(bidirectional)を表し、スケールドドット積アテンション(scaled dot-product attention)を通して双方向に単語に焦点を当てることを示しています。BERTには12層のTransformer層があります。まずWordPieceアルゴリズムを用いて単語をサブワードに分割し、トークンに変換します。BERTの学習の目的は、コンテキストに基づいてトークンを予測できるようにすることです。 BERTの出力は、単語とその文脈の潜在表現、つまり埋め込みの集合です。本質的には、BERTはより長い文脈ウィンドウを記憶できる超並列Word2Vecです。BERTは非常に柔軟性が高く、言語翻訳やテキスト要約から検索エンジンのオートコンプリートまで、様々なタスクに使用できます。デコーダーコンポーネントがないため、テキストを生成することはできません。これが、BERTの後継としてGPTモデルが採用される道を開くものです。 04 GPTBERTの開発と並行して、OpenAIは別のTransformerアーキテクチャであるGPTシリーズも開発していました。GPTとBERTの違いは、GPTは埋め込まれたテキストをエンコードするだけでなく、デコードもできるため、確率推論に使用できることです。 初期のGPTモデルはBook Corpusのデータで学習され、デコーダーコンポーネントのみを備えた12層12ヘッドのTransformerでした。その後のバージョンでは、このモデルを継続的に改良し、文脈理解能力の向上を目指しました。最大のブレークスルーは、人間のフィードバックによる強化学習を用いて学習されたGPT-4でした。この学習特性により、テキストからの推論が可能になり、その結果は人間が書いたものに近いものになりました。 私たちは今、埋め込み技術の最先端に到達しました。OpenAIのChatGPTや、LlamaやAlpacaといった新興のオープンソースモデルなど、人間のフィードバックを伴う生成手法や強化学習の台頭により、この記事で説明されている内容は、公開時点で既に時代遅れとなっていました。 組み込み技術は実稼働環境においてどれほど効果的でしょうか?次回の記事では、組み込み技術の活用事例をいくつかご紹介します。どうぞお楽しみに。 終わり 🚢🚢🚢AIテクノロジーソフトウェアと技術交流グループへのご参加をお待ちしております!最新のトレンドを把握し、一緒に技術的な課題を探求しましょう! |