会話の概要作成

Azure AI サービス

ほとんどの企業は、製品のクエリ、トラブルシューティング、機能または製品自体のメンテナンスまたはアップグレードを支援するため、カスタマー サービス サポートを提供しています。 満足のいく解決策を提供するには、カスタマー サポートのスペシャリストは迅速に対応し、正確な情報を提供する必要があります。 OpenAI は、カスタマー サポートにおいて組織をさまざまな方法で支援できます。

このガイドでは、Azure OpenAI GPT-3 モデルを使用して、顧客とエージェントのインタラクションの概要を生成する方法について説明します。 テキスト入力の概要の取得に関連する主なコンポーネントを示すエンドツーエンドのサンプル アーキテクチャが含まれています。 テキスト入力の生成は、このガイドの範囲外です。 このガイドの焦点は、サンプルとなるエージェントと顧客の一連の会話を要約するプロセスを説明し、要約に対するさまざまなアプローチの結果を分析することです。

会話のシナリオ

  • セルフサービスのチャットボット (完全自動)。 このシナリオでは、顧客は GPT-3 を利用し、業界固有のデータでトレーニングされたチャットボットと対話できます。 チャットボットは、顧客の質問を理解し、ナレッジ ベースから学習した回答に基づいて適切に回答できます。
  • エージェントの介入を伴うチャットボット (半自動)。 顧客から寄せられる質問が複雑で、人間の介入が必要な場合があります。 このような場合、GPT-3 は顧客とチャットボットの会話の概要を提供し、エージェントが大規模なナレッジ ベースから追加情報をすばやく検索するのに役立ちます。
  • 音声テキストの要約 (完全自動または半自動)。 ほとんどのカスタマー サポート センターでは、エージェントは記録保持、将来のフォローアップ、トレーニング、およびその他の内部処理のために、会話を要約する必要があります。 GPT-3 では、今後の使用のために会話の重要な詳細を取得する自動化または半自動化された概要を提供できます。

このガイドでは、Azure OpenAI GPT-3 を使用して音声テキストを要約するプロセスに焦点を当てています。

エージェントが顧客との 1 回の会話を要約するには、平均で 5 分から 6 分かかります。 サービス チームが日々処理する依頼の量を考えると、この追加のタスクによってチームに過剰な負荷が発生する可能性があります。 OpenAI は、エージェントが要約関連のアクティビティを行うのに役立つ優れた方法です。 カスタマー サポートのプロセスの効率と正確性を向上させることができます。 会話要約は、エージェントと顧客のインタラクションを含む任意のカスタマー サポート タスクに適用できます。

会話要約サービス

会話要約は、カスタマー サポートの会話が質問と回答の形式を取るシナリオに適しています。

要約サービスの使用には次のような利点があります。

  • 効率の向上: カスタマー サービス エージェントが顧客との会話をすばやく要約できるようにします。これにより、長いやり取りを行う必要がなくなります。 この効率性は、顧客の問題の解決を高速化するのに役立ちます。
  • カスタマー サービスの向上: エージェントは、会話の要約を今後のインタラクションで使用して、顧客の懸念を正確に解決するために必要な情報をすばやく見つけることができます。
  • 知識共有の向上: 会話要約は、カスタマー サービス チームが互いとの知識共有をすばやく効果的に行うのに役立ちます。 カスタマー サービス チームにより優れた解決策を提供し、より迅速にサポートを行うよう支援します。

アーキテクチャ

会話サマライザーの一般的なアーキテクチャには、前処理、要約、後処理の 3 つのメイン ステージがあります。 入力に口頭での会話または何らかの音声形式が含まれている場合は、音声をテキストに文字起こしする必要があります。 詳細については、Azure 音声テキスト変換サービス に関するページを参照してください。

アーキテクチャのサンプルを次に示します。

会話要約のアーキテクチャを示す図。

このアーキテクチャの PowerPoint ファイルをダウンロードします。

ワークフロー

  1. 入力データを収集する: 該当する入力データをパイプラインにフィードします。 ソースがオーディオ ファイルの場合は、Azure Text to Speech などのテキスト読み上げ (TTS) サービスを使用してテキストに変換する必要があります。
  2. データの前処理: 機密情報と重要でない会話をデータから削除します。
  3. サマライザーにデータをフィードする: Azure OpenAI API を使用してプロンプトでデータを渡します。 コンテキスト内学習モデルには、ゼロショット、少数ショット、またはカスタム モデルが含まれます。
  4. 概要の生成: モデルによって会話の概要が生成されます。
  5. データの後処理: 不適切表現フィルターとさまざまな検証チェックを概要に適用します。 前処理のステップで削除された機密データを、概要にもう一度追加します。
  6. 結果を評価する: 結果を確認して評価します。 このステップは、モデルで改善する必要がある領域を特定し、エラーを見つけるのに役立ちます。

以下のセクションでは、3 つのメイン ステージについて詳しく説明します。

前処理

前処理の目的は、サマライザー サービスに提供されるデータに重要性があり、機密情報が含まれないようにすることです。

生データを適切な状態にするのに役立つ前処理ステップのいくつかを次に示します。 ユース ケースによっては、1 つまたは複数のステップを適用する必要がある場合があります。

  • 個人を特定できる情報 (PII) を削除します会話 PII API (プレビュー) を使用して、書き起こされたテキストや文字テキストから PII を削除できます。 次の例は、API によって PII が削除された後の出力を示しています。

    Document text: Parker Doe has repaid all of their loans as of
          2020-04-25. Their SSN is 999-99-9999. To contact them, use 
          their phone number 555-555-0100. They are originally from 
          Brazil and have Brazilian CPF number 998.214.865-68 
    Redacted document text: ******* has repaid all of their
          loans as of *******. Their SSN is *******. To contact 
          them, use their phone number *******. They are originally from Brazil and have Brazilian CPF number 998.214.865-68
    
    ...Entity 'Parker Doe' with category 'Person' got redacted
    ...Entity '2020-04-25' with category 'DateTime' got redacted
    ...Entity '999-99-9999' with category 'USSocialSecurityNumber' got redacted
    ...Entity '555-555-0100' with category 'PhoneNumber' got redacted
    
  • 余分な情報を削除します。 顧客エージェントは、重要な情報を含まないカジュアルなやりとりで会話を開始します。 会話にトリガーを追加して、懸念または該当する質問が最初に取り上げられたタイミングを識別できます。 このやりとりをコンテキストから削除すると、モデルが会話内の最も重要性の高い情報で微調整されるため、サマライザー サービスの精度が向上する可能性があります。 Curie GPT-3 エンジンは、このタイプのカジュアルな会話を識別するために、インターネットからのコンテンツを介して広範囲にトレーニングされているため、このタスクによく使用される選択肢です。

  • 過度に否定的な会話を削除します。 会話には、不満を持つ顧客からの否定的な感情も含まれる場合があります。 Azure Content Moderator などの Azure コンテンツ フィルター処理方法を使用して、機密情報を含む会話を分析から削除できます。 代わりに、OpenAI ではモデレーション エンドポイントが用意されています。このツールは、コンテンツが OpenAI のコンテンツ ポリシーに準拠しているかどうかをチェックするために使用できます。

サマライザー

OpenAI のテキスト補完 API エンドポイントは、入力候補エンドポイントと呼ばれます。 テキスト入力候補プロセスを開始するには、プロンプトが必要です。 プロンプト エンジニアリングは、大規模な言語モデルで使用されるプロセスです。 プロンプトの最初の部分には、自然言語の指示や、要求された特定のタスクの例が含まれます (このシナリオでは要約)。 プロンプトを使用すると、開発者は API にコンテキストを提供できるため、より重要性の高い正確なテキスト入力候補を生成するのに役立ちます。 その後、モデルは最も可能性の高い次のテキストを予測して、タスクを完了します。 この手法は、コンテキスト内学習と呼ばれます。

Note

抽出要約では、テキストから重要な情報を識別して抽出し、それをグループ化して、意味やコンテキストを理解せずに簡潔な要約を生成しようとします。

抽象要約では、最初に内部セマンティック表現を作成してから、自然言語処理を使用して要約を作成することによって、テキストを書き換えます。 このプロセスには言い換えが含まれます。

コンテキスト内学習のためのモデルのトレーニングには、ゼロショット、少数ショット、微調整の 3 つの主なアプローチがあります。 これらのアプローチは、モデルに与えられるタスク固有のデータの量によって異なります。

  • ゼロショット: このアプローチでは、モデルに例は提供されません。 タスク要求が唯一の入力です。 ゼロショット学習では、モデルは GPT-3 が既にトレーニングされているデータ (インターネットから利用可能なデータほぼすべて) に依存します。 既に学習した既存のカテゴリに特定のタスクを関連付け、それに応じて応答しようとします。

  • 少数ショット: このアプローチを使用する場合、プロンプトに、予想される応答形式とコンテキストを示す少数の例を含めます。 モデルには、予測を導くためのごく少量のトレーニング データ (通常はいくつかの例) が提供されます。 少数の例を使用したトレーニングでは、モデルを一般化し、関連性はあるが以前には気付かれなかったタスクを理解できます。 このような少数ショットの例では、モデルで実行するタスクを明確にする必要があるため、作成が困難な場合があります。 よく見られる問題の 1 つは、トレーニング例で使用される書き方に対し、モデル (特に小規模なモデル) が敏感になるということです。

    このアプローチの主な利点は、タスク固有のデータの必要性が大幅に減少し、大規模で狭い微調整データセットから過度に狭い分布を学習する可能性が減少することです。

    このアプローチでは、事前トレーニング済みモデルの重みを更新することはできません。

    詳細については、「少数ショットで学習する言語モデル」をご覧ください。

  • 微調整: 微調整は、独自のデータセットから特定の目的の結果を得るためにモデルを調整するプロセスです。 これには、新しいデータでモデルを再トレーニングすることが含まれます。 詳細については、「アプリケーションのモデルをカスタマイズする方法について」を参照してください。

    このカスタマイズ手順を使用すると、次の方法でプロセスを改善できます。

    • より大きなサンプル データのセットを含める。
    • 従来の最適化手法と逆伝搬法を使用してモデルの重みを再調整する。 これらの手法を使用すると、ゼロショットまたは少数ショットのアプローチ単独でもたらされるよりも高品質の結果が得られます。
    • 特定のプロンプトと特定の構造を使用してモデルの重みをトレーニングすることで、少数ショットの学習アプローチを改善する。 この手法を使用すると、プロンプトで例を示さずに、より多くのタスクでより良い結果を得られます。 結果として、送信されるテキストが減り、トークンが減ります。

    デメリットとして、すべてのタスクにおける大規模な新しいデータセットの必要性、分散による一般化が不十分になる可能性、トレーニング データの誤った特徴を悪用する可能性があります。その結果、人間のパフォーマンスとの比較が不公平になる可能性が高くなります。

    モデルのカスタマイズ用のデータセットの作成は、他のモデルと使用するためのプロンプトの設計とは異なります。 候補呼び出しのプロンプトは、多くの場合、詳細な手順または少数ショット学習手法を使用し、複数の例で構成されます。 微調整では、各トレーニング例を 1 つの入力例とその目的の出力で構成することをお勧めします。 プロンプトで詳細な手順や例を指定する必要はありません。

    トレーニング例の数を増やすと、結果が向上します。 少なくとも 500 個の例を含めることをお勧めします。 数千から数十万のラベル付けされた例を使用するのが一般的です。 データセットのサイズを 2 倍にするたびに、モデルの品質が直線的に向上することがテストからわかっています。

このガイドでは、curie-instruct/text-curie-001 と davinci-instruct/text-davinci-001 エンジンを示しています。 これらのエンジンは頻繁に更新されます。 お客様が使用しているバージョンは異なる場合があります。

後処理

GPT-3 から取得した結果の有効性をチェックすることをお勧めします。 ユース ケースに応じて、プログラムによるアプローチまたは分類子を使用して有効性チェックを実施します。 重要なチェックのいくつかを次に示します。

  • 重要なポイントが抜けていないことを確認します。
  • 事実に関する誤りがないかを確認します。
  • モデルで使用されているトレーニング データによって偏りが発生してないかを確認します。
  • 新しいアイデアやポイントを追加することで、モデルがテキストを変更しないかを確認します。 この問題は幻覚と呼ばれます。
  • 文法やスペルのエラーがないかを確認します。
  • Content Moderator などのコンテンツ不適切表現フィルターを使用して、不適切なコンテンツや無関係なコンテンツが含まれないようにします。

最後に、機密情報など、以前に概要から削除された重要な情報をもう一度組み込みます。

場合によっては、会話の概要が元の音声テキストと一緒に顧客に送信されます。 このような場合、後処理では、概要に音声テキストを追加することが含まれます。 また、"以下の概要をご覧ください" などの前置きの文を追加することもできます。

考慮事項

業界固有のトレーニング データセットを使用してベース モデルを微調整し、使用可能なデータセットのサイズを変更することが重要です。 微調整されたモデルは、トレーニング データに少なくとも 1,000 個のデータ ポイントが含まれており、モデルのトレーニングに使用されるグランド トゥルース (人間が生成した概要) が高品質な場合に、最適に機能します。

その代わり、コストというトレードオフが発生します。 データセットのラベル付けとクリーニングのプロセスにはコストがかかる場合があります。 トレーニング データを高品質であるようにするには、グラウンド トゥルースの概要を手動で検査し、低品質の概要を書き換える必要がある場合があります。 要約のステージについて、次の点を考慮してください。

  • プロンプトのエンジニアリング: 指示がほとんどない場合、多くの場合、Davinci は他のモデルよりも優れたパフォーマンスを発揮します。 結果を最適化するには、モデルごとに異なるプロンプトを試します。
  • トークン サイズ: GPT-3 を基盤とするサマライザーでは、プロンプトと完了を含め、合計 4,098 個のトークンに制限されます。 より大きな節を要約するには、これらの制約に準拠するようにテキストを複数に分割します。 各部分を個別に要約し、それらの結果を最終的な概要にまとめます。
  • ガーベージ イン、ガーベージ アウト: トレーニング済みのモデルの品質は、提供するトレーニング データに依存します。 トレーニング データのグラウンド トゥルースの概要が、最終的にダイアログで要約する情報に適していることを確認します。
  • 停止ポイント: モデルは、指定した自然停止ポイントまたは停止シーケンスに達すると、要約を停止します。 このパラメーターをテストして、複数の概要の中から選択し、概要が不完全と思われるかどうかを確認します。

シナリオ例: コール センターでの音声テキストの要約

このシナリオでは、Azure OpenAI の要約機能が、顧客サービス エージェントの要約タスクにどのように役立つかを示します。 ゼロショット、少数ショット、微調整のアプローチをテストし、結果を人間が生成した概要と比較します。

このシナリオで使用されるデータセットは、Xbox カスタマー サポート センターエージェントと顧客の間の、さまざまな Xbox 製品とサービスに関する架空の会話です。 架空のチャットにはプロンプトというラベルが付けられています。 人間が書いた抽象要約には、完了というラベルが付けられています。

Prompt Completion
顧客: XAIL についての質問

エージェント: こんにちは! 何かお困りですか?

顧客: こんにちは。アクセシビリティ インサイダー リングについて質問があります

エージェント: かしこまりました。 喜んでお手伝いいたします。

顧客: アクセシビリティ リーグに参加するには、プレビュー リングにサインアップする必要がありますか?

エージェント: いいえ。 本体で Xbox プレビュー リングにサインアップしなくても、リーグに参加できます。 ただし、一部のエクスペリエンスでは、Xbox プレビュー リングへの参加が必要な場合があります。

顧客: わかりました。 後でプレビュー リングにサインアップすることはできますか?

エージェント: はい、できます。

顧客: いいね。
顧客が、Xbox アクセシビリティ インサイダー リーグに参加するためにプレビュー リングにサインアップする必要があるかどうかを知りたい場合。 エージェントは、サインアップは必須ではないが、一部のエクスペリエンスでは必要になる可能性があると応答します。

理想的な出力。 目標は、"顧客は、x と言いました。 エージェントは、y と応答しました。" という形式を取る概要を作成することです。もう一つの目標は、対話の重要な特徴 (顧客の苦情など)、提案された解決策、フォローアップ アクションを取得することです。

カスタマー サポートのインタラクションと、それに続いて人間が作成した包括的な概要を以下に示します。

ダイアログ

顧客: こんにちは。 ゲーム パスについて質問があります。

エージェント: こんにちは。 エージェント: いかがお過ごしでしょうか?

顧客: 元気です。

エージェント。 Xbox ゲーム パスに関するヘルプが必要なのですね。

顧客: はい。 ゲームがゲーム パスから外れた後、どのくらいの期間ゲームにアクセスできるかを知りたいです。

エージェント: ゲームが Xbox ゲーム パス カタログから外れた場合、ゲームのプレイを続けるには、Windows 版 Xbox アプリまたは Microsoft Store からデジタル コピーを購入するか、ディスクを使用してプレイするか、別の形式のエンタイトルメントを取得する必要があります。 Xbox は、Xbox ゲーム パス カタログからゲームが外れる前に、メンバーに通知します。 また、メンバーは、カタログ内のゲームを最大 20% オフ (または利用可能な最大割引価格) で購入して、カタログから外れた後もゲームを続けることができます。

顧客: わかりました、ありがとう

グランド トゥルースの概要

顧客は、ゲーム パスから外れた後にゲームにアクセスできる期間を知りたがっています。 エージェントは、引き続きアクセスするにはゲームを購入する必要があることを顧客に通知します。

ゼロショット

ゼロショット アプローチは、ラベル付けされたトレーニング データが十分にない場合に便利です。 この場合、グランド トゥルースの概要が十分にありません。 関連情報を抽出するために、プロンプトを慎重に作成することが重要です。 顧客とエージェントのチャットから一般的な概要を抽出するために、次の形式が使用されます。

prefix = "Please provide a summary of the conversation below: "

suffix = "The summary is as follows: "

ゼロショット モデルを実行する方法を示すサンプルを次に示します。

rouge = Rouge()
# Run zero-shot prediction for all engines of interest
deploymentNames = ["curie-instruct","davinci-instruct"] # also known as text-davinci/text-instruct
for deployment in deploymentNames:
url = openai.api_base + "openai/deployments/" + deployment + "/completions?api-version=2022-12-01-preivew"
response_list = []
rouge_list = []
print("calling..." + deployment)
for i in range(len(test)):
response_i = openai.Completion.create(
engine = deployment,
prompt = build_prompt(prefix, [test['prompt'][i]], suffix),
temperature = 0.0,
max_tokens = 400,
top_p = 1.0,
frequence_penalty = 0.5,
persence_penalty = 0.0,
stop=["end"] # We recommend that you adjust the stop sequence based on the dataset
)
scores = rouge.get_scores(normalize_text(response_i['choices'][ 0]['text']),test['completion'][i])
rouge_list += [scores[0]['rouge-1']['f']],
response_list += [response_i]
summary_list = [normalize_text(i['choices'][0]['text']) for i in response_list]
test[deployment + "_zeroshotsummary"] = summary_list
test[deployment + "_zeroshotroguescore"] = rouge_list

結果と観察

ゼロショット モデルの出力は、基本モデルから直接生成されます。 この場合、Curie と Davinci はどちらもダイアログを非常によく要約します。 唯一の顕著な違いは、Curie モデルでは詳細がわずかに少なくなることです。 Curie は概要の冒頭で "Customer asks the agent about the Xbox game pass" (顧客がエージェントに Xbox Game Pass について質問する) とします。Davinci での対応文は、「お客様は、Xbox Game Pass カタログを離れた後、どのくらいの期間ゲームにアクセスできるかを尋ねました」です。

ダイアログ

顧客: こんにちは。 ゲーム パスについて質問があります。

エージェント: こんにちは。 いかがお過ごしでしょうか?

顧客: 元気です。

エージェント: Xbox ゲーム パスに関するヘルプが必要なのですね。

顧客: はい。 ゲームがゲーム パスから外れた後、どのくらいの期間ゲームにアクセスできるかを知りたいです。

エージェント: ゲームが Xbox ゲーム パス カタログから外れた場合、ゲームのプレイを続けるには、Windows 版 Xbox アプリまたは Microsoft Store からデジタル コピーを購入するか、ディスクを使用してプレイするか、別の形式のエンタイトルメントを取得する必要があります。 Xbox は、Xbox ゲーム パス カタログからゲームが外れる前に、メンバーに通知します。 また、メンバーは、カタログ内のゲームを最大 20% オフまたは利用可能な最大割引価格で購入して、カタログから外れた後もゲームを続けることができます。

グランド トゥルース

顧客は、ゲーム パスから外れた後にゲームにアクセスできる期間を知りたがっています。 エージェントは、引き続きアクセスするにはゲームを購入する必要があることを顧客に通知します。

Davinci の結果

顧客は、ゲームが Xbox ゲーム パス カタログから外れた後にゲームにアクセスできる期間について質問しました。 エージェントは、ゲームを引き続きプレイするには、Windows 版の Xbox アプリまたは Microsoft Store からゲームのデジタル コピーを購入する必要があると伝えました。 また、エージェントは、Xbox ゲーム パス カタログからゲームが外れる前に通知を受け取ることを顧客に知らせました。 顧客はメンバーであるため、カタログ内のゲームを最大 20% オフまたは利用可能な最大割引価格で購入できます。

Curie の結果

顧客は、Xbox ゲーム パスについてエージェントに質問します。 エージェントは、ゲームが Xbox ゲーム パス カタログから外れた場合、顧客がゲームのプレイを続けるには、Windows 版 Xbox アプリまたは Microsoft Store からデジタル コピーを購入するか、ディスクを使用してプレイするか、別の形式のエンタイトルメントを取得する必要があることを顧客に伝えます。 また、エージェントは、Xbox ゲーム パス カタログからゲームが外れる前に、Xbox がメンバーに通知することを顧客に知らせます。

少数ショット

少数ショット アプローチを使用する場合、モデルには少数の例が提供されます。

context_primer = "Below are examples of conversations and their corresponding summaries:"

prefix = "Please provide a summary of the conversation below: "

suffix = "The summary is as follows: "

少数ショット モデルを実行する方法を示すサンプルを次に示します。

train_small = train[]
train_small_json = train_small.to_dict(orient='records')
compiled_train_prompt = build_prompt_fewshot(prefix,context_primer, train_small_json, suffix)

for deployment in deploymentNames:
url = openai.api_base + "openai/deployments/" + deployment + "/completions?api-version=2022-12-01-preivew"
response_list = []
rouge_list = []
print("calling..." + deployment)
for i in range(len(test)):
response_i = openai.Completion.create(
engine = deployment,
prompt = compiled_train_prompt+build_prompt(prefix, [test['prompt'][i]], suffix),
temperature = 0.0,
max_tokens = 400,
top_p = 1.0,
frequence_penalty = 0.5,
persence_penalty = 0.0,
stop=["end"] # We recommend that you adjust the stop sequence based on the dataset
)
scores = rouge.get_scores(normalize_text(response_i['choices'][ 0]['text']),test['completion'][i])
rouge_list += [scores[0]['rouge-1']['f']],
response_list += [response_i]
summary_list = [normalize_text(i['choices'][0]['text']) for i in response_list]
test[deployment + "_fewshot"] = summary_list
test[deployment + "_FSscore1"] = rouge_list

結果と観察

少数ショット アプローチでは、概要では会話の重要な特徴が引き続き取得されます。 Davinci の概要は、よりコンパクトで、グラウンド トゥルースに近くなります。 Curie では、簡単な詳細がいくつか作成されます。

ダイアログ

顧客: こんにちは。 ゲーム パスについて質問があります。

エージェント: こんにちは。 いかがお過ごしでしょうか?

顧客: 元気です。

エージェント: Xbox ゲーム パスに関するヘルプが必要なのですね。

顧客: はい。 ゲームがゲーム パスから外れた後、どのくらいの期間ゲームにアクセスできるかを知りたいです。

エージェント: ゲームが Xbox ゲーム パス カタログから外れた場合、ゲームのプレイを続けるには、Windows 版 Xbox アプリまたは Microsoft Store からデジタル コピーを購入するか、ディスクを使用してプレイするか、別の形式のエンタイトルメントを取得する必要があります。 Xbox は、Xbox ゲーム パス カタログからゲームが外れる前に、メンバーに通知します。 また、メンバーは、カタログ内のゲームを最大 20% オフまたは利用可能な最大割引価格で購入して、カタログから外れた後もゲームを続けることができます。

グランド トゥルース

顧客は、ゲーム パスから外れた後にゲームにアクセスできる期間を知りたがっています。 エージェントは、引き続きアクセスするにはゲームを購入する必要があることを顧客に通知します。

Davinci の結果

顧客は、ゲーム パスから外れた後にゲームにアクセスできる期間を知りたがっていました。 エージェントは、ゲームが Xbox ゲーム パス カタログから外れると、顧客がゲームのプレイを続けるには、デジタル コピーを購入するか、別の形式のエンタイトルメントを取得する必要があることを知らせます。

Curie の結果

顧客はゲーム パスについての質問があります。 顧客は元気です。 エージェントは Xbox ゲーム パスに関するヘルプを必要とします。 顧客は、ゲームがゲーム パス カタログから外れた後にゲームにアクセスできる期間について質問します。 エージェントは、ゲームが Xbox ゲーム パス カタログから外れた場合、顧客がゲームのプレイを続けるには、Windows 版 Xbox アプリまたは Microsoft Store からデジタル コピーを購入するか、ディスクを使用してプレイするか、別の形式のエンタイトルメントを取得する必要があることを知らせます。 顧客はこれを聞いて安心し、エージェントに感謝します。

微調整

微調整は、独自のデータセットから特定の目的の結果を得るためにモデルを調整するプロセスです。

形式の例を次に示します。

{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}

結果と観察

テストでは、微調整された Curie モデルが、Davinci の少数ショット モデルと同等の結果につながることが示唆されています。 どちらの概要も、割引に関する詳細を取得したり、コンテンツを追加したりすることなく、顧客の質問とエージェントの回答を取得しています。 どちらの概要も、グランド トゥルースに似ています。

ダイアログ

顧客: こんにちは。 ゲーム パスについて質問があります。

エージェント: こんにちは。 いかがお過ごしでしょうか?

顧客: 元気です。

エージェント: Xbox ゲーム パスに関するヘルプが必要なのですね。

顧客: はい。 ゲームがゲーム パスから外れた後、どのくらいの期間ゲームにアクセスできるかを知りたいです。

エージェント: ゲームが Xbox ゲーム パス カタログから外れた場合、ゲームのプレイを続けるには、Windows 版 Xbox アプリまたは Microsoft Store からデジタル コピーを購入するか、ディスクを使用してプレイするか、別の形式のエンタイトルメントを取得する必要があります。 Xbox は、Xbox ゲーム パス カタログからゲームが外れる前に、メンバーに通知します。 また、メンバーは、カタログ内のゲームを最大 20% オフまたは利用可能な最大割引価格で購入して、カタログから外れた後もゲームを続けることができます。

グランド トゥルース

顧客は、ゲーム パスから外れた後にゲームにアクセスできる期間を知りたがっています。 エージェントは、引き続きアクセスするにはゲームを購入する必要があることを顧客に通知します。

Curie の結果

顧客は、ゲーム パスから外れた後にゲームにアクセスできる期間を知りたがっています。 エージェントは、ゲームが Xbox ゲーム パス カタログから外れた場合、ゲームのプレイを続けるには、Windows 版 Xbox アプリまたは Microsoft Store からデジタル コピーを購入するか、ディスクを使用してプレイするか、別の形式のエンタイトルメントを取得する必要があると説明します。

まとめ

一般に、Davinci モデルでは、Curie などの他のモデルよりもタスクを実行するための命令が少なくて済みます。 Davinci は、コンテキストまたは特定の言語を理解する必要があるテキストの要約に適しています。 Davinci は最も複雑なモデルであるため、待機時間が他のモデルよりも長くなります。 Curie は Davinci よりも高速で、会話を要約できます。

これらのテストは、少数ショットまたは微調整を使用してモデルにより多くの指示を提供する場合に、より適切な概要を生成できることを示唆しています。 微調整されたモデルは、トレーニング データセットから学習した構造とコンテキストに準拠する方が優れています。 概要がドメイン固有の場合 (たとえば、医師のメモやオンライン処方カスタマー サポートから概要を生成する場合など) に、この機能は特に役立ちます。 微調整を使用する場合、表示される概要の種類をより細かく制御できます。

簡単な比較のために、前に示した結果の概要を次に示します。

グランド トゥルース

顧客は、ゲーム パスから外れた後にゲームにアクセスできる期間を知りたがっています。 エージェントは、引き続きアクセスするにはゲームを購入する必要があることを顧客に通知します。

Davinci のゼロショットの結果

顧客は、ゲームが Xbox ゲーム パス カタログから外れた後にゲームにアクセスできる期間について質問しました。 エージェントは、ゲームを引き続きプレイするには、Windows 版の Xbox アプリまたは Microsoft Store からゲームのデジタル コピーを購入する必要があると伝えました。 また、エージェントは、Xbox ゲーム パス カタログからゲームが外れる前に通知を受け取ることを顧客に知らせました。 顧客はメンバーであるため、カタログ内のゲームを最大 20% オフまたは利用可能な最大割引価格で購入できます。

Curie のゼロショットの結果

顧客は、Xbox ゲーム パスについてエージェントに質問します。 エージェントは、ゲームが Xbox ゲーム パス カタログから外れた場合、顧客がゲームのプレイを続けるには、Windows 版 Xbox アプリまたは Microsoft Store からデジタル コピーを購入するか、ディスクを使用してプレイするか、別の形式のエンタイトルメントを取得する必要があることを顧客に伝えます。 また、エージェントは、Xbox ゲーム パス カタログからゲームが外れる前に、Xbox がメンバーに通知することを顧客に知らせます。

Davinci の少数ショットの結果

顧客は、ゲーム パスから外れた後にゲームにアクセスできる期間を知りたがっていました。 エージェントは、ゲームが Xbox ゲーム パス カタログから外れると、顧客がゲームのプレイを続けるには、デジタル コピーを購入するか、別の形式のエンタイトルメントを取得する必要があることを知らせます。

Curie の少数ショットの結果

顧客はゲーム パスについての質問があります。 顧客は元気です。 エージェントは Xbox ゲーム パスに関するヘルプを必要とします。 顧客は、ゲームがゲーム パス カタログから外れた後にゲームにアクセスできる期間について質問します。 エージェントは、ゲームが Xbox ゲーム パス カタログから外れた場合、顧客がゲームのプレイを続けるには、Windows 版 Xbox アプリまたは Microsoft Store からデジタル コピーを購入するか、ディスクを使用してプレイするか、別の形式のエンタイトルメントを取得する必要があることを知らせます。 顧客はこれを聞いて安心し、エージェントに感謝します。

Curie の微調整の結果

顧客は、ゲーム パスから外れた後にゲームにアクセスできる期間を知りたがっています。 エージェントは、ゲームが Xbox ゲーム パス カタログから外れた場合、ゲームのプレイを続けるには、Windows 版 Xbox アプリまたは Microsoft Store からデジタル コピーを購入するか、ディスクを使用してプレイするか、別の形式のエンタイトルメントを取得する必要があると説明します。

概要作成の評価

概要作成モデルのパフォーマンスを評価する複数の手法があります。

いくつかの例を次に示します。

ROUGE (Recall-Oriented Understudy for Gisting Evaluation)。 この手法には、人が作成した理想的な概要と比較して、概要の品質を自動的に判別する尺度が含まれます。 これらの方法では、評価対象のコンピューター生成の概要と理想的な概要との間で重複する単位 (n-gram、ワード シーケンス、ワード ペアなど) の数がカウントされます。

次に例を示します。

reference_summary = "The cat ison porch by the tree"
generated_summary = "The cat is by the tree on the porch"
rouge = Rouge()
rouge.get_scores(generated_summary, reference_summary)
[{'rouge-1': {'r':1.0, 'p': 1.0, 'f': 0.999999995},
  'rouge-2': {'r': 0.5714285714285714, 'p': 0.5, 'f': 0.5333333283555556},
  'rouge-1': {'r': 0.75, 'p': 0.75, 'f': 0.749999995}}]

BertScore。 この手法では、生成された概要と参照の概要をトークン レベルで整合させることで、類似性スコアを計算します。 トークン アラインメントは、BERT からのコンテキスト化されたトークン埋め込みの間のコサイン類似性を最大化するためにしきりに計算されます。

次に例を示します。

  import torchmetrics
  from torchmetrics.text.bert import BERTScore
  preds = "You should have ice cream in the summer"
  target = "Ice creams are great when the weather is hot"
  bertscore = BERTScore()
  score = bertscore(preds, target)
  print(score)

類似性マトリックス類似性マトリックスは、概要評価における異なるエンティティ間の類似性を表したものです。 これを使用して、同じテキストのさまざまな概要を比較し、その類似性を測定できます。 これは 2 次元グリッドで表され、各セルには 2 つの概要間の類似性の尺度が含まれます。 コサイン類似性、Jaccard 類似性、編集距離などのさまざまな方法を使用して、類似性を測定できます。 次に、マトリックスを使用して概要を比較し、どの概要が、元のテキストを最も正確に表しているかを決定します。

2 つの類似した文の BERTScore 比較の類似性マトリックスを生成するサンプル コマンドを次に示します。

bert-score-show --lang en -r "The cat is on the porch by the tree"
                          -c "The cat is by the tree on the porch"
                          -f out.png

最初の文 "猫は木のそばの玄関にいます" は候補と呼ばれます。 2 番目の文は、参照と呼ばれます。 このコマンドでは、BERTScore を使用して文を比較し、マトリックスを生成します。

次のマトリックスには、前のコマンドによって生成された出力が表示されます。

類似性マトリックスを示す図。

詳細については、SummEval: 概要評価の再評価に関するページを参照してください。 要約のための PyPI ツールキットについては、Summ-eval 0.892 を参照してください。

責任ある使用

GPT は優れた結果を生み出すことができますが、社会的、倫理的、法的バイアスと有害な結果がないか、出力をチェックする必要があります。 モデルを微調整する場合は、モデルによる学習が害となる可能性のあるデータ ポイントを削除する必要があります。 レッド チーム テストを使用して、モデル内の有害な出力を特定できます。 このプロセスは手動で実装し、半自動メソッドを使用してサポートできます。 言語モデルを使用してテスト ケースを生成し、分類子を使用してテスト ケースの有害な動作を検出できます。 最後に、生成された概要の手動チェックを実行して、使用する準備ができていることを確認する必要があります。

詳細については、「言語モデルを使用して、言語モデルのレッド チーム テストを行う」をご覧ください。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパル作成者:

その他の共同作成者:

パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

次のステップ