|
翻訳者|朱賢宗 校正:孫淑娟 トークンの視点からの注目度計算グラフの可視化(トークン間の関係性に注目) ここ数年、数多くのTransformerベースのモデル(引用文献1 )が登場し、自然言語処理やコンピュータビジョンなど、多くの分野で成功を収めてきました。本稿では、深層学習モデル(特にTransformer )を、深層学習とシンボリック人工知能を組み合わせたハイブリッドアーキテクチャとして表現するための、簡潔で解釈可能かつスケーラブルな方法を探求します。これを実現するために、 PythonベースのニューラルシンボリックフレームワークであるPyNeuraLogicを用いてモデル設計を実装します。 [注記]この記事の著者は、 PyNeuraLogic フレームワークの設計者の一人でもあります。
記号表現とディープラーニングを組み合わせることで、既存のディープラーニングモデルにおける、既成概念にとらわれない解釈可能性や推論手法の不足といった欠陥を補うことができます。カメラのメガピクセル数を増やしても必ずしも写真の質が向上するわけではないのと同様に、パラメータの数を単純に増やすことは、望ましい結果を得るための最善の方法ではないかもしれません。 PyNeuraLogic フレームワークのワークフロー全体アーキテクチャ 神経記号概念の高レベルな可視化は、リレーショナルニューラルネットワーク(LRNN 、引用文献3を参照)を強化し、 (Py)NeuraLogicを用いて実装できます。ここでは、線形層とそれに続く加算集約というシンプルなテンプレート(論理手順)を示します。各(入力)サンプルに対して、固有のニューラルネットワークが構築されます。 PyNeuraLogicフレームワークは、特別に設計された論理プログラミング(微分可能なパラメータを含む論理プログラム)に基づいています。このフレームワークは、小規模な構造化データ(分子など)や複雑なモデル(Transformerやグラフニューラルネットワークなど)に適しています。ただし、 PyNeuraLogicは非リレーショナルデータや大規模なテンソルデータには最適な選択肢ではないことに注意が必要です。 このフレームワークの主要コンポーネントは、テンプレートと呼ばれる微分可能な論理手順です。テンプレートは、ニューラルネットワークの構造を抽象的に定義する論理ルールで構成されており、モデルアーキテクチャの設計図と考えることができます。テンプレートは入力データの各インスタンスに適用され、入力サンプルに固有のニューラルネットワークを生成します(グラウンディングとニューラライゼーション)。このプロセスは、異なる入力サンプルに合わせて調整できない定義済みのアーキテクチャを持つ他のフレームワークとは全く異なります。このフレームワークの詳細な説明については、グラフニューラルネットワークの観点からPyNeuralogicに焦点を当てた別の記事を参照してください。 シンボリックトランスフォーマークラシックトランスフォーマーモデル図 Transformerアーキテクチャは、エンコーダ(左)とデコーダ(右)という2つのブロックで構成されています。2つのブロックは共通点があり、デコーダは拡張されたエンコーダです。そのため、この記事ではデコーダの実装はエンコーダと似ているため、エンコーダの解析のみに焦点を当てます。 ディープラーニングモデルは、入力トークンを大きなテンソルに一括処理したテンソル演算として実装されることが多いです。これは理にかなっています。なぜなら、ディープラーニングフレームワークやハードウェア(GPUなど)は、通常、形状やサイズの異なる複数のテンソルではなく、より大きなテンソルを処理するように最適化されているからです。Transformerも例外ではなく、個々のトークンのベクトル表現を大きな行列に一括処理し、モデルをこれらの行列に対する演算として表現することがよくあります。しかし、このような実装では、Transformerのアテンションメカニズムが示すように、個々の入力トークン間の関係性が隠蔽されてしまいます。 注意メカニズムアテンション機構は、すべてのTransformerモデルの中心となるものです。特に、そのクラシックバージョンでは、いわゆるマルチヘッドスケールドドットプロダクトアテンション機構が利用されています。わかりやすくするために、スケールドドットプロダクトアテンションを、単一のヘッドを用いた単純な論理的手順に分解してみましょう。 スケーリングドット積アテンション方程式 アテンションの目的は、ネットワークが入力のどの部分に焦点を当てるべきかを決定することです。アテンションは、入力キーKとクエリQの適合度を表す重み付き値Vを計算することで実現されます。この特定のバージョンでは、重みはクエリQとキーKのドット積のソフトマックス関数を入力特徴ベクトルの次元d_kの平方根で割ることによって計算されます。 ( R . weights ( V . I , V . J ) <= ( R . d_k , R . k ( V . J ). T , R . q ( V . I ))) | [ F . product , F . softmax_agg ( agg_terms = [ V . J ])] , PyNeuraLogicでは、上記の論理規則を用いてアテンションメカニズムを完全に捉えることができます。最初の規則は重みの計算を記述しており、j番目のキーベクトルとi番目のクエリベクトルの転置を乗じた次元の平方根を計算します。次に、ソフトマックスを用いて、iとすべての可能なjを与えられたすべての結果を集約します。 次に、2 番目のルールは、重みベクトルと対応する j 番目の値ベクトルの積を計算し、異なる j 番目の対応する i 番目のトークンごとに結果を合計します。 注意マスク訓練と評価の過程では、通常、入力トークンが注目できる対象を制限します。例えば、トークンが次の単語に注目するように制限したい場合があります。PyTorchのような一般的なフレームワークは、マスキング技術を用いてこれを実現します。マスキング技術では、スケールされたドット積の要素のサブセットを非常に小さな負の数に設定します。これらの数値は、ソフトマックス関数に、対応するトークンペアに重みとしてゼロを割り当てるように強制します。 ( R .重み( V . I , V . J ) <= ( この記法を用いると、制約としてシングルトン関係を追加するだけでこれを実現できます。重みを計算する際、インデックス j がインデックス i 以下になるように制限します。マスキングスキームとは異なり、スケールされたドット積は必要に応じてのみ計算します。 通常のテンソル表現と記号表現における注意の可視化 従来のディープラーニングフレームワークは、マスキング(左側)によって注意を制約します。まずQK^T行列全体を計算した後、値の低いセル(白い十字のセル)を重ねることで値をマスクし、関連するトークン(青いセル)のみに注意を払っているように見せかけます。PyNeuraLogicでは、シンボリック制約(右側)を適用することで必要なスカラー値のみを計算し、不要な計算を回避します。この利点は、以下のバージョンの注意においてさらに顕著になります。 より良い注目の集約もちろん、シンボリックな「マスク」は完全に任意に決めることができます。GPT -3(あるいはChatGPTなどのその応用[引用4 ] )は、スパーストランスフォーマーに基づいています。スパーストランスフォーマーのアテンション(段階的バージョン)は、 2種類のアテンションヘッドに分けられます。
両方のタイプのヘッダーの実装には、わずかな変更のみが必要です(例: n=5 の場合) 。 ( R .重み( V . I , V . J ) <= ( 関係的注意方程式 実際、この注意は、関係的注意と同様に、グラフのような(関係的な)入力にも拡張できます。このタイプの注意は、ノードが隣接ノード(エッジで接続されたノード)のみに焦点を合わせているグラフ上で機能します。この場合、クエリQ、キーK、値Vは、ノードベクトル埋め込みに追加されたエッジ埋め込みとなります。 ( R . weights ( V . I , V . J ) <= ( R . d_k , R . k ( V . I , V . J ). T , R . q ( V . I , V . J ))) | [ F . product , F . softmax_agg ( agg_terms = [ V . J ])] , 私たちの例では、このアテンションは先に示したスケールドドット積アテンションとほぼ同じです。唯一の違いは、エッジを捕捉するための用語が追加されていることです。グラフをアテンション機構への入力として使用するのは自然な流れのように思えます。Transformerは(マスクが適用されていない場合)全結合グラフ上で動作するグラフニューラルネットワークであることを考えると、全く驚くことではありません。従来のテンソル表現では、これはそれほど明白ではありません。 トランスエンコーダここまででアテンション機構の実装について説明しました。実際、 Transformerエンコーダブロック全体を構築する上で欠けている部分は、非常に直感的です。 埋め込みRelational Attentionにおける埋め込みの実装方法については既に説明しました。従来のTransformerでも埋め込みはほぼ同じです。入力ベクトルをキー、クエリ、値の3つの埋め込みベクトルに投影するだけです。 R . q ( V . I ) <= R . input ( V . I )[ W_q ] 、 接続性、標準化、フィードフォワードネットワークを省略クエリ埋め込みは、接続をスキップすることでアテンション出力に追加されます。結果のベクトルは正規化され、多層パーセプトロン(MLP)に入力されます。 ( R . norm1 ( V . I ) <= ( R . attention ( V . I ), R . q ( V . I ))) | [ F . norm ] 、 MLP の場合、論理ルールとしてエレガントに表現できる 2 つの隠し層を持つ完全接続ニューラル ネットワークを実装します。 ( R . mlp ( V . I )[ W_2 ] <= ( R . norm ( V . I )[ W_1 ])) | [ F.レル] 、 スキップ接続が正規化された最後のものは、前のものと同じです。 ( R . norm2 ( V . I ) <= ( R . mlp ( V . I ), R . norm1 ( V . I ))) | [ F . norm ] 、 組み立てられたここまでで、 Transformerエンコーダに必要なすべてのコンポーネントを構築しました。デコーダも同じコンポーネントを使用するため、実装は似ています。さて、上記のすべてのコードブロックを組み合わせて、微分可能論理プログラムを作成しましょう。このプログラムはPythonスクリプトに埋め込み、 PyNeuraLogicを使用してニューラルネットワークにコンパイルできます。 R . q ( V . I ) <= R . input ( V . I )[ W_q ] 、 結論本稿では、Transformerアーキテクチャを分析し、 PyNeuraLogicと呼ばれるニューラルシンボリックフレームワークを用いた実装例を紹介します。このアプローチにより、わずかなコード変更のみで様々なタイプのTransformerを実装することができ、新しいTransformerアーキテクチャへの迅速な移行と開発方法を示します。さらに、本稿では、様々なバージョンのTransformerと、グラフィカルニューラルネットワーク(GNN)を用いたTransformerとの顕著な類似点についても指摘します。 参考文献[1]: Vaswani, A.、Shazeer, N.、Parmar, N.、Uszkoreit, J.、Jones, L.、Gomez, A.、Kaiser, L.、および Polosukhin, I.. (2017)。必要なのは注意だけです。 [2]: マーカス・G. (2020). 「AIの次の10年:堅牢な人工知能に向けた4つのステップ」 [3]: グスタフ・シューレク、フィリップ・ジェレズニー、オンドジェ・クジェルカ (2021)。リフトされたリレーショナル ニューラル ネットワークを備えたグラフ ニューラル ネットワークを超えて。機械学習、110(7)、1695–1738 。 [4]:Brown, T., Mann, B., Ryder, N., Subbiah, M., Kaplan, J., Dhariwal, P., Neelakantan, A., Shyam, P., Sastry, G., Askell, A., Agarwal, S., Herbert-Voss, A., Krueger, G., Henighan, T., Child, R., Ramesh, A., Ziegler, D., Wu, J., Winter, C., Hesse, C., Chen, M., Sigler, E., Litwin, M., Gray, S., Chess, B., Clark, J., Berner, C., McCandlish, S., Radford, A., Sutskever, I., & Amodei, D.. (2020). 言語モデルは少数ショット学習者である。 [5]: Child, R., Gray, S., Radford, A., & Sutskever, I. (2019). スパーストランスフォーマーを用いた長いシーケンスの生成.
翻訳者紹介Zhu Xianzong 氏は、51CTO コミュニティ エディター、51CTO 専門ブロガー兼講師、維坊の大学のコンピュータ サイエンスの教師、そしてフリー プログラミング コミュニティのベテランです。 原題: Beyond Transformers with PyNeuraLogic 、著者: Lukáš Zahradník |
トランスフォーマーを超えて: PyNeuraLogicに基づくニューラルシンボリックプログラミング
関連するおすすめ記事
-
オープンソースの Harmony 3.2 Beta4 がリリースされ、AB パーティション アップグレードのサポートが追加されました。
-
UIUC のエージェントレス ソリューションは、SWE-bench で実際のプログラミング問題を簡単に解決し、オープンソース AI ソフトウェア エンジニアのリストでトップに立っています。
-
2月のGitHubで人気のオープンソースプロジェクト
-
オープンソースの人材が不足している一方で、コミュニティの差別は悪化しており、3年間で125%増加しています。
-
OpenAI の最新のオープンソース ツールキットを使用すると、計算時間がわずか 20% 増加するだけで、モデルのサイズを 10 倍に拡大できます。
-
Ansibleを使用してPodmanコンテナを構成する