テキスト生成の評価におけるベクトル化されたBERTScoreのビジュアルガイド
美とファッションの専門家による、ベクトル化されたBERTScoreのビジュアルガイド評価
AIベースのテキスト生成は明らかに主流になっています。自動執筆アシスタント、法的文書生成、マーケティングコンテンツ生成、メール作成など、トランスフォーマーモデルが成功している商業用途において選択肢は豊富です(おそらく過剰)。企業は今やモデルとトレーニングのパラダイムを選ぶための充実した選択肢を持つようになりました。しかし、どのモデルを選ぶかの評価は経験則に委ねるべきではありません。モデルの評価は利用ケースに重要な基準の基盤を合意する関係者の実験として設定されるべきです。
テキスト生成のための評価基準にはの例が含まれます。つまり、この入力が与えられた場合にこの出力を生成してください。XとYは利用ケースにおいて重要なカバレッジケースです。ただし、このような基準は過度に指示的になる可能性があります。つまり、自動評価はXの出力とYが完全に一致することを重視しすぎてはいけません。代わりに、モデルの出力であるY’が厳密な表現やトークンの使用法とは一致しなくても、Yと同じ意味を持つことがより重要です。
BERTScoreはこのような厳密な基準の評価に対応するために作成されました。BERTのようなテキスト理解に優れた言語モデルを使用して、テストセットのYとモデル生成テキストを表すY’の類似性を評価することがBERTScoreの主なアイデアです。BERTScoreは、トークンのエンベディングをベースにした類似度スコアを計算し、人間による評価に対する類似性の代わりとして使用します。2020年のICLRでBERTScoreが発表された当時、BERT自体をテキスト生成の測定基準として一般的ではありませんでした。主要な手法は正確な文字列マッチングを使用するBLEUと、テキストマッチングのためのヒューリスティクスを使用するMETEORであり、これらにはよく知られた問題がありました。一方、BERTScoreの評価は依然として重要です。なぜなら、現在利用可能な多くの種類のBERTの中からお気に入りのフレーバーをプラグインすることができるからです。
BERTScoreの計算は完全にベクトル化された方法で行うことができるため、バッチ単位で参照文(Yハット)とその正解ラベル(Y)を比較することができます。これは、GPUカーネルを利用して並列化することができるため効率的です。また、BERTScore自体を対照損失関数として使用することも簡単です。例えば、テキスト生成モデルの微調整において、次のトークン予測に対する交差エントロピー損失の代わりとして使用することができます。これにより、損失関数が正確なテキストではなく意味に合致することになります。
- 3Dインスタンスセグメンテーションにおける境界の打破:改善された疑似ラベリングと現実的なシナリオを備えたオープンワールドアプローチ
- このAI論文は、概念関連伝播(CRP)を用いて、「どこ」や「何」を解き明かすための深層学習モデルの理解に新たなアプローチを提案しています
- 「Amazon SageMaker Feature Storeを使用して、あなたの生成型AIアプリケーションをパーソナライズしましょう」
本記事では、ベクトル化された方法でBERTScoreを計算する方法について説明します。まず、2文の例から始め、2つの文の類似性を計算します。次に、トレーニング目的におけるバッチベースの文の比較など、スケーリングアップします。
視覚化の詳細
計算手順は、ノードグラフ視覚化ツールを使用して視覚的に表示されます。各ブロックは、左側の入力を受け取り、右側の出力変数のデータを生成する操作です。リンクはデータの出力から入力へのパスを示し、入力側の円はデータが静的であることを示します。
操作は、入力側が親の入力であり、出力側が親の出力であるサブグラフに分解される「アンボックス」アイコンを含む複合操作、または「プリミティブ」として分解することができない原子操作で構成されます。プリミティブ操作は、NumPyやTensorFlowなどの低レベルのテンソル操作に対応しており、色はデータ型を、パターンはデータの形状を示します。青は整数型のデータを、紫/ピンクは小数型のデータを表します。実線のリンクは、データの形状がスカラーであることを示し、リンクのドットは配列の次元数を示します(ダッシュ間のドットの数)。各グラフの下部には、モデル内でデータを保持している変数の形状、型、および操作名を示す表があります。
以前の投稿では、GPT Fully VisualizedやBERT Fully Visualizedのように可視化をカバーし、Graph Attention NetworksとLoRA fine-tuning methodの解説でも使用してきました。
BERTScore
次の式に対するBERTScoreの計算手順について説明します:
以下の図は、ステップの概要を示しています。2つの文章、参照の文章と候補の文章に対して、BERTの埋め込みのペアワイズ類似度を計算します。そして、各参照トークンに対して、参照トークンの軸上での最大の類似度を取ります。最後に、重要度の重み (idf weights) による内積を行い、IDF weightsの総和で割ります。
元の論文では、Recall BERTScore(上記)とPrecision BERTScoreの両方があり、これらはF-BERTScoreとして組み合わされます。最大類似度が取られる軸には完全に相対する違いがあります。
IDFの重要度の重みは以下のように計算されます:
M個の参照文章のデータセットが与えられた場合、各トークンが出現する回数を数えて、Mで割り、その結果を負の自然対数の引数として使用します。
以下では、各トークンの重要度の重みを計算するブロックを見ています。例として、Standard Sentiment Treebank(SST)データセットの40文の一部を渡しています。出力は、語彙のサイズに対応する[30523]の1次元配列です。このステップは、前処理中に1回だけ計算する必要があります。
式ブロックのアンボックスアイコンをクリックすると、IDFの重要度計算のための完全な計算グラフが表示されます。BERT WordPieceトークナイザを使用して各文章の各トークンのIDを生成し、[40, 30523]の配列を生成します。40の軸を合計した後、[30523]の配列をすべての値が40である[30523]の配列で割ります(つまり、M=40です)。
「Get Tokenized 1 Hot」についての詳細コンテキストに関しては、特殊トークン([CLS]トークンや[PAD]トークンなど)の追加や、WordPieceトークナイザがVocabファイルから読み込んでいることが分かります。
次に、重要度の重みをR_{BERT}の計算に渡します。参照の文章は「the weather is cold today」であり、コンテキストの文章は「it is freezing today」です。元の論文のインフォグラフィックで使用される例と一致します。出力は、この場合のBERTScoreに対応する単一のスカラー値(0.7066)です。
BERTScore操作を内部から見て、計算方法を分解して説明します。まず、2つの文章を単にBERTに通します。通常、BERTは最後の隠れ状態であるテンソル([トークン数、768]の形状)とプーラー出力であるテンソル([768]の形状)を返します。重要度の重み付けはボキャブラリーのIDに基づいているため、BERTの内部で文の入力IDも返すように変更しました。
BERTグラフがどのようなものかの詳細については、以前の記事をご覧ください。
右にスクロールすると、埋め込みの類似度を測るためにコサイン類似度を使用しています。コサイン類似度操作の入力はBERTの出力の最後の隠れ状態の行であり、それぞれの行が入力文に対応します。ペアごとのトークンの類似度を生成した後、Y軸上で最大値を取ります。これはコンテキスト文のトークンに対応します(参照文のトークンに対応する軸ではありません)。重要度の重みを掛け、重要度スコアで割ります。
配列AとBが与えられた場合、コサイン類似度は次のように計算されます:
この計算をベクトル演算で行うことができます。最初に、XとYを転置してドット積を取り、[トークン数、トークン数]の形状の分子を生成します。次に、各項を二乗して合計することでXとYを正規化し、それぞれ[トークン数、1]の形状の出力を生成します(合計時に次元を落とさないようにすることで)。これらを掛け合わせて[トークン数、トークン数]の形状の行列を作り、分子をこの値で割ります。
バッチワイズBERTScore
これまでに2つの文のRecall BERTScoreを計算しました。これを2D BERTScoreと呼びます。今度は、一度に複数の文のBERTScoreを計算するようにスケーリングします。バッチワイズBERTScoreと呼ばれるのは、テンソルの形状が[num_sentences、num_tokens、hidden_dimensions]であるバッチの文に対して操作しているためです。明示的なループを使わずに完全にベクトル化された方法で行うと、GPUの並列化が可能になりパフォーマンスの向上が得られます。
説明するために、4組の<参照文、候補文>のペアのバッチを提出します。最初のペアは元の文章で、最後のペアは実際には同じ文章です。1.0の類似度を得るかどうかをテストします。
結果は[4]の配列であり、各ペアごとの類似度の比較のための浮動小数点数です。4番目の項目は、同じ文であったため、予想通り1.0のBERTScoreであることがわかります。
コサイン類似度操作が正しく設定されている場合(前述のように)、バッチワイズコサイン類似度にこれを拡張するための編集は必要ありません。結果は[num_sent、num_tokens、num_tokens]であり、文のペアごとのトークンの類似度に対応します。次に、最後の次元で最大値を取り、次元を保持して[num_sent、num_tokens、1]の形状のテンソルである「最大結果」を生成します。
そして、重要度スコアを乗算します。重要度スコアの形状を [num_sent, 1, num_tokens] に変形して、[num_sent, 1, 1] を乗算結果として出力できるようにします。実際には、文ごとに1つのスコアを持つことになります。最後のステップは、重要度スコアの合計で割ることです。末尾の次元1を削除する前または後に行うことができます。
結論
このビジュアルの手順では、BERTScoreの主要な式について説明しました。具体的には、重要度重みを使用した再現率BERTScoreをカバーしましたが、論文で推奨されている再スケーリングと結合することは簡単です。再現率BERTScoreプロジェクトとコサイン類似度演算は、GitHubで利用可能です。
BERTScoreは、テキスト生成の評価基準のメトリクスを生成するために使用することができます。モデルが生成したテキストを厳密に一致するテキストと比較するのではなく、その意味に基づいて理想的なテキストと比較することができます。これは、BLEUやMETEORといった従来の方法と比べて、人間が類似性を評価する方法によりよく似ていることが示されています。
また、興味深いアイデアとして、BERTScoreのようなものを訓練の目標損失関数として使用することが挙げられます。たとえば、GPTからのテキスト生成のモデルを微調整している場合、通常はタスクに合わせてテストセットがあるか、次のトークンの予測を直接訓練の目標として使用しています。BERTScoreを使用すると、モデルの出力がラベルと同じ意味のテキストを生成した場合、ペナルティを科さないで済みます。ただし、BERTScoreは、すべてのモデルの出力をBERTに入力する必要があるため、遅くなる可能性があります。そのため、いくつかの修正が必要になります。
どう思いますか?このビジュアルの手順は役に立ちましたか?次に何を見たいですか?コメントで教えてください!
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- 「Amazon SageMakerを使用して、マルチモダリティモデルを用いた画像からテキストへの生成型AIアプリケーションを構築する」
- 「大規模言語モデルの品質をどのように向上させることができるのか? PIT:暗黙の自己改善フレームワークに会ってください」
- Mistral AIは、Mistral 7Bをオープンソース化します:多くのユースケースに適応可能な小型だけどパワフルな言語モデル
- 「Amazon SageMakerでのMLOpsによる堅牢な時系列予測」
- コンセプトグラフの紹介:3Dシーンのためのオープンボキャブラリーグラフ構造表現
- アクセンチュアは、AWS上でジェネレーティブAIサービスを使用して、ナレッジアシストソリューションを作成しました
- 「DEHBを使用したXGBoostとPythonを使った機械学習モデルの最適化:包括的なガイド」