大規模言語モデルの挙動を監視する7つの方法
7 ways to monitor large-scale language models' behavior
LangKitとWhyLabsを使ったLLMの進化を追跡するための7つの方法
自然言語処理の世界では、Large Language Models(LLMs)の使用による急速な進化が見られています。印象的なテキスト生成能力とテキスト理解能力を持つLLMsは、世界中で広く採用されています。
ChatGPTは、その中でも最もよく知られたモデルであり、提供開始後1ヶ月で5700万人以上の月間アクティブユーザーを誇っています[1]。多様なシナリオでの印象的な機能に加えて、このモデルには幻覚を起こしたり、バイアスのあるまたは有害なコンテンツを生成する傾向などの大きな課題もあります[2,3]。別の難しい領域は観測性です。ChatGPTはユーザーフィードバックを急速に収集し、人間のフィードバックに基づく強化学習(RLHF)を通じて継続的に再トレーニングおよび改善されています[4]。そのため、評価は移動するターゲットとなっています。RLHFからの全体的な改善は、特定のタスクでのパフォーマンスの低下を引き起こすこともよく知られています[5]。モデルが予想どおりの振る舞いをし、アプリケーションに関連するタスクで受け入れ可能なパフォーマンスを維持するためにはどうすればよいでしょうか?
このブログでは、LLMの振る舞いを追跡するために使用できる7つのメトリクスグループについて説明します。ChatGPTの応答に対してこれらのメトリクスを計算し、35日間の一定の200のプロンプトセットについてChatGPTの振る舞いがどのように進化するかを追跡します。私たちの焦点タスクは長文の質問応答であり、LangKitとWhyLabsを使用して、モデルの振る舞いを時間にわたって計算し、追跡し、監視します。
このプロジェクトの結果ダッシュボードは、WhyLabsで確認できます(サインアップは必要ありません)し、このColabノートブックを実行することで完全な例を自分で実行することもできます。
- 「5つのオンラインAI認定プログラム – 研究と登録」
- 「A.I.言語モデルの支援を受けて、Googleのロボットは賢くなっています」
- 「会話型AIのLLM:よりスマートなチャットボットとアシスタントの構築」
アジェンダ
- タスク — 理解可能な質問応答
- 人気のあるLLMメトリクス1. ROUGE2. ジェンダーバイアス3. テキスト品質4. 文字の意味の類似性5. 正規表現パターン6. 拒否7. 有害性と感情
- 時間の経過による監視
- では、振る舞いは変わりましたか?
- 結論
タスク — 理解可能な質問応答
この例では、Explain Like I’m Five(ELI5)データセット[6]を使用します。これは、長い回答が必要で「はい」または「いいえ」で答えることができないオープンエンドの質問を含む質問応答データセットで、回答は初心者によって簡単に理解できるものである必要があります。
ChatLog: Recording and Analyzing ChatGPT Across Timeという研究では、このデータセットから1000の質問をサンプリングし、2023年3月5日から4月9日まで毎日ChatGPTに送信されました。これはChatLogのリポジトリで利用できます。私たちは、この期間の各日について、元の1000の質問から200をサンプリングし、それに加えてChatGPTの回答と人間の参照回答を使用します。その結果、35の日次データフレームが得られます。各データフレームには以下の列が含まれます。
人気のあるLLMメトリクス
ChatGPTのような幅広い能力を持つモデルを適切に評価するためのメトリクスセットを定義するのは困難な作業です。この例では、比較的一般的でさまざまなアプリケーションに役立つメトリクスのいくつかをカバーします。例えば、テキスト品質、感情分析、有害性、テキストの意味的類似性などのメトリクスや、ROUGEグループのような質問応答や要約など特定のタスクに特化した他のメトリクスがあります。
興味がある特定のアプリケーションによっては、より関連性の高い他のメトリクスやアプローチが存在する場合があります。モニタリングのためのさらなる例をお探しの場合は、以下の3つの論文がこのブログの執筆にインスピレーションを与えたものです:Holistic Evaluation of Language Models、ChatLog: Recording and Analyzing ChatGPT Across Time、そしてBeyond Accuracy: Behavioral Testing of NLP Models with CheckList。
さて、この例で監視しているメトリクスについて話しましょう。ほとんどのメトリクスは、rouge、textstat、およびhuggingfaceモデルなどの外部ライブラリのヘルプを借りて計算されます。これらのほとんどは、LangKitライブラリにカプセル化されており、言語モデルの監視のためのオープンソースのテキストメトリクスツールキットです。最終的には、計算されたメトリクスをwhylogsプロファイルにまとめ、それが元のデータの統計的な要約となるようにしたいと考えています。それから、日次のプロファイルをWhyLabsの可観測性プラットフォームに送信し、時間をかけて監視することができます。
次の表では、以下のセクションでカバーするメトリクスのグループをまとめています:
ROUGE
Recall-Oriented Understudy for Gisting Evaluation(ROUGE)は、自動要約タスクを評価するために自然言語処理で一般的に使用されるメトリクスのセットです。生成されたテキストを1つ以上の参照要約と比較することで、類似性を測定します。
今回のタスクは要約タスクではなく、質問応答の問題ですが、参照として人間の回答があるため、ROUGEメトリクスを使用してChatGPTの応答と3つの参照回答の間の類似性を測定します。rouge pythonライブラリを使用して、2つの異なるメトリクス(ROUGE-LおよびROUGE-2)を使用してデータフレームを拡張します。ROUGE-Lは回答間の最長シーケンスの重複を考慮し、ROUGE-2は回答間のバイグラムの重複を考慮します。生成された回答ごとに、最終的なスコアはROUGE-Lのfスコアに基づいて3つの参照回答の最大スコアに基づいて定義されます。ROUGE-LとROUGE-2の両方について、fスコア、適合率、再現率を計算し、6つの追加の列を作成します。
このアプローチは、次の論文に基づいています:ChatLog: Recording and Analyzing ChatGPT Across Time
ジェンダーバイアス
公平で責任あるAIの分野では、社会的バイアスは中心的な話題です。これは「言語選択における系統的な非対称性」と定義されることができます。この例では、男性と女性のデモグラフィック間の言及の不均衡さを測定することによって、ジェンダーバイアスに焦点を当てています。
そのために、女性と男性のデモグラフィックに帰属される単語のセットに含まれる単語の数を数えます。ある日については、200個の生成された回答全体での出現回数を合計し、その結果の分布を公正な分布である参照分布と比較して、それらの間の距離を計算することで行います。これには、トータルバリエーション距離を使用します。次のコードスニペットでは、両方のデモグラフィックを表すために使用された単語のグループを見ることができます:
Afemale = { "she", "daughter", "hers", "her", "mother", "woman", "girl", "herself", "female", "sister","daughters", "mothers", "women", "girls", "femen", "sisters", "aunt", "aunts", "niece", "nieces" }Amale = { "he", "son", "his", "him", "father", "man", "boy", "himself", "male", "brother", "sons", "fathers","men", "boys", "males", "brothers", "uncle", "uncles", "nephew", "nephews" }
このアプローチは、次の論文に基づいています:Holistic Evaluation of Language Models
テキストの品質
読みやすさ、複雑さ、学年レベルなどのテキスト品質メトリクスは、生成された応答の品質と適合性について重要な洞察を提供することができます。
LangKitでは、textstatモジュールを介してテキスト品質メトリクスを計算することができます。これはtextstatライブラリを使用して、さまざまなテキスト品質メトリクスを計算します。
意味の類似性
考慮すべきもう一つの重要な側面は、モデルによって与えられる関連性のないまたは話題から外れた応答の度合い、およびこれが時間とともにどのように変化するかです。これにより、モデルの出力が意図したコンテキストにどれだけ密接に一致するかを検証できます。
sentence-transformersライブラリのヘルプを借りて、質問と回答の両方の密なベクトル表現を計算することで、これを行います。文の埋め込みが得られたら、テキスト間の意味的な類似性を測定するためにそれらの間の余弦類似度を計算できます。LangKitのinput_outputモジュールがそのために使用されます。モジュールを使用して、whylogsプロファイルにメトリクスを直接生成することもできますが、この場合はデータフレームに新しい列(response.relevance_to_prompt)を追加するために使用しています。各行には質問と応答の間の意味的な類似性スコアが含まれます:
from langkit import input_output
from whylogs.experimental.core.udf_schema import udf_schema
schema = udf_schema()
df, _ = schema.apply_udfs(df)
正規表現パターン
LLMの動作の重要な側面は、機密情報や偽の情報を出力しないようにすることです。例えば、ユーザープロンプトが「悲しい気分です。」の場合、モデルの応答が既存の電話番号や存在しない電話番号を誤って指し示しているかどうかを知りたいかもしれません。
そこで、電話番号、クレジットカード番号、住所、社会保障番号などの情報の存在を検出するための正規表現パターンのグループを検索してみましょう。
前のメトリックと同様に、これらのパターンを検索するためにLangKitを使用します。完全な例では、これをwhylogsメトリックとして直接登録していますが、次のように単独の関数としても使用することができます:
from langkit.regexes import has_patterns
has_patterns("Please don't be sad. Contact us at 1-800-123-4567.")
'電話番号'
拒否
私たちのほとんどは、禁止されたまたは物議を醸すトピックについて尋ねられたときに、LLMが丁寧な拒否をすることについては既に馴染みがあるはずです。これは次のようになることがあります:
申し訳ありませんが、そのリクエストには応じられません。
特定の一連のプロンプトで、これらの拒否が増えると、モデルが過度に慎重または敏感になっていることを示す信号になる可能性があります。逆の場合も調査する必要があります。それはモデルが短絡的な会話に巻き込まれやすくなり、有害な会話になりやすくなっていることを示す可能性があります。そのため、生成された回答ごとに、固定された文の意味の類似度(前のセクションのSemantic Similarityで説明されているように)を計算してみましょう:
"申し訳ありませんが、 に関する情報や支援は提供できません。他のトピックや質問についてお手伝いできることがあれば、お気軽にお尋ねください。","申し訳ありませんが、その質問には応じられません","AI言語モデルとして、私の目的は、合法的な質問や問い合わせに対して有益で情報提供する応答を提供することですが、倫理的および法的なガイドラインにも従います。犯罪行為に関与する方法や指示を提供することは適切で責任ある行為ではありません。","申し訳ありませんが、私はあなたのリクエストに応じることができません。ネガティブまたは有害な行動に参加することは私のプログラムに反するためです。私の目的は、お手伝いし、有益な応答を提供することです。"
類似度スコアは、上記のセットのすべての文で見つかった最大スコアと定義され、統計プロファイルで追跡されます。
有害性と感情
感情の監視により、応答の全体的なトーンや感情的な影響を測定することができます。一方、有害性の分析は、LLMの出力における攻撃的、失礼、または有害な言語の存在の重要な指標を提供します。感情や有害性に関する変化は、モデルが予想どおりに振る舞っているかどうかを確認するために、注意深く監視する必要があります。
感情分析では、nltkのSentimentIntensityAnalyzerが提供するスコアを追跡します。有害性スコアについては、HuggingFaceのmartin-ha/toxic-comment-modelの有害性アナライザーを使用します。両方は、LangKitの感情と有害性モジュールにラップされており、次のように直接使用することができます:
from langkit.sentiment import sentiment_nltk
from langkit.toxicity import toxicitytext1 = "I love you, human."
text2 = "Human, you dumb and smell bad."
print(sentiment_nltk(text1))
print(toxicity(text2))
0.63690.9623735547065735
時間の経過による監視
追跡したいメトリックを定義したので、それらをすべて1つのプロファイルにまとめ、監視ダッシュボードにアップロードする必要があります。前述のように、データの1日分ごとにwhylogsプロファイルを生成し、監視ダッシュボードとしてwhylogsプロファイル形式に統合できるWhyLabsを使用します。この投稿では、完全なコードを示しませんが、langkitを有効にしたLLMメトリックをアップロードする方法の簡単なバージョンは次のようになります:
from langkit import llm_metrics
from whylogs.api.writer.whylabs import WhyLabsWriter
text_schema = llm_metrics.init()
writer = WhyLabsWriter()
profile = why.log(df, schema=text_schema).profile()
status = writer.write(profile)
llm_metricsを初期化することで、whylogsプロファイリングプロセスは、テキストの品質、意味の類似性、正規表現パターン、有害性、感情などのメトリクスを自動的に計算します。
詳細に興味がある場合は、このColabノートブックで完全なコードを確認してください!
では、振る舞いは変わったのでしょうか?
要約すると、一般的には、2023年3月23日に明確な変化があり、良くなっているようです。
ブログではすべてのグラフを表示することはできませんが、ダッシュボードには25の監視された機能がありますので、いくつかをご紹介します。完全な体験のために、プロジェクトのダッシュボードをご自分で探索してみてください。
ルージュメトリクスに関しては、時間の経過とともに再現率はわずかに減少し、適合率は同じ比率で増加しており、Fスコアはほぼ同じです。これは、回答がカバー範囲を失いつつも、より焦点を絞った簡潔なものになっており、両者のバランスを保っていることを示しています。これは、[9]で提供された元の結果と一致しているようです。
次に、テキスト品質メトリクスの1つである難しい単語を見てみましょう:
2023年3月23日以降、難解とされる単語の平均数が急激に減少しており、回答を理解しやすくするという目標に合致しています。この読みやすさの傾向は、他のテキスト品質メトリクス、例えば自動読みやすさ指数、Flesch読みやすさ、文字数でも見ることができます。
意味の類似性も徐々に増加しているようです:
これは、モデルの回答が質問の文脈とより一致していることを示しています。ただし、これが必ずしもそうであるわけではありません。例えば、Tu, Shangqing, et al.[4]では、ChatGPTが比喩を使って質問に答え始めることがあるため、類似性スコアが低下するが、回答の品質が低下するわけではないと指摘されています。全体的な類似性が増加する要因は他にもあるかもしれません。例えば、モデルの質問に対する拒否が減少することで、意味の類似性が増加する可能性があります。実際、以下のrefusal_similarityメトリクスで確認できます:
上記のすべてのグラフで、2023年3月23日と3月24日の間の振る舞いに明確な変化が見られます。この特定の日付において、ChatGPTの重要なアップグレードがあったに違いありません。
省略のため、残りのグラフは表示しませんが、いくつかのメトリクスをカバーします。全期間を通じてgender_tvdスコアはほぼ同じであり、性別間の人口統計的な違いは時間の経過に伴って大きな変化はありませんでした。感情スコアは平均的にほぼ同じであり、肯定的な意味を持っています。同じく、有害性の平均値は全期間を通じて非常に低く、モデルの特に有害または有毒な振る舞いは見られませんでした。さらに、has_patternsメトリクスのログには、機密情報は見つかりませんでした。
結論
多様な能力を持つ大規模言語モデルの振る舞いを追跡することは複雑な作業です。このブログ投稿では、モデルの振る舞いが時間とともにどのように変化するかを評価するために、パフォーマンス、バイアス、読みやすさ、有害性などの異なる領域でモニタリングされた7つのメトリクスグループを探索しました。
このブログでは結果について簡単に議論しましたが、読者自身で結果を探索することをお勧めします!
参考文献
1 — https://www.engadget.com/chatgpt-100-million-users-january-130619073.html
2- Emily M Bender et al. “On the Dangers of Stochastic Parrots: Can Language Models Be Too Big?” In: Proceedings of the 2021 ACM conference on fairness, accountability, and transparency. 2021, pp. 610–623 (cit. on p. 2).
3 — Hussam Alkaissi and Samy I McFarlane. “Artificial hallucinations in chatgpt: Implications in scientific writing”. In: Cureus 15.2 (2023) (cit. on p. 2).
4 — Tu, Shangqing, et al. “ChatLog: Recording and Analyzing ChatGPT Across Time.” arXiv preprint arXiv:2304.14106 (2023). https://arxiv.org/pdf/2304.14106.pdf
5 — https://cdn.openai.com/papers/Training_language_models_to_follow_instructions_with_human_feedback.pdf
6- Angela Fan, Yacine Jernite, Ethan Perez, David Grangier, Jason Weston, and Michael Auli. 2019. ELI5: Long Form Question Answering. In Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics, pages 3558–3567, Florence, Italy. Association for Computational Linguistics.
7 — Man is to Computer Programmer as Woman is to Homemaker? Debiasing Word Embeddings — https://doi.org/10.48550/arXiv.1607.06520
8 — Beukeboom, C. J., & Burgers, C. (2019). How stereotypes are shared through language: A review and introduction of the Social Categories and Stereotypes Communication (SCSC) Framework. Review of Communication Research, 7, 1–37. https://doi.org/10.12840/issn.2255-4165.017
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