NLU 専門家フィードバックループ

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:16分
  • 仮想エージェントチャットログの発話に関するフィードバックを提供して、システムが継続的に学習し、ユーザー入力をより適切に予測できるようにします。

    使用方法の概要

    専門家フィードバックループは、インスタンスからデータを取得し、フィードバックのために提供します。このデータは、ユーザーの仮想エージェント (VA) チャットログから取得され、それらのログからの発言が含まれます。nlu_adminロールを使用して、 すべて > NLU ワークベンチ > 専門家フィードバックループ そして、発話がインテントに対して正しい (一致) か正しくない (不一致) かを確認することで、モデル内の各発話をマークします。このフィードバックは、モデルがモデルのパフォーマンスを継続的に改善するのに役立ちます。

    インストール

    専門家フィードバックループは、 ServiceNow® Store で利用可能な NLU ワークベンチ - 拡張機能アプリの一部です。

    専門家フィードバックループを使用するには、インスタンスで NLU ワークベンチ - 拡張機能型 (sn_nlu_workbench) プラグインがアクティブになっていることを確認してください。詳細については、「NLU ワークベンチのNLU ワークベンチのインストール:拡張機能とアクティブ化」を参照してください。

    専門家フィードバックループは VA チャットログのデータに依存するため、Glide 仮想エージェント (com.glide.cs.chatbot) プラグインもアクティブであることを確認してください。「 仮想エージェントのアクティブ化」を参照してください。

    インスタンス間での専門家フィードバックループデータのインポート

    インポートを開始する前に、インスタンス内のデータへのアクセス権があり、フィードバックを処理するのに十分なデータがあることを確認してください。

    準本番インスタンスで作業している場合は、本番インスタンスの open_nlu_predict_intent_feedback テーブルから準本番インスタンスにフィードバックデータをインポートする必要があります。インポート方法のガイダンスについては、「 別の ServiceNow インスタンスからのインポート」を参照してください。

    ここでは、フィードバックループの発話を格納する NLU モデルのシステム動作に関するデータシナリオをいくつか紹介します。
    • モデルを別のインスタンスに移動しても、フィードバックデータは保持されます。
    • インスタンスをアップグレードしても、フィードバックデータは保持されます。
    • インスタンスをクローンした場合、データは保持されないため、上記の手順に従ってクローンされたインスタンスにデータをインポートする必要があります。

    フィードバックのコンテキストとアクセス

    専門家フィードバックループは、発話の選択したサブセットで提供するフィードバックを通じて、VA に展開された NLU モデルを改善するためのメカニズムを提供します。発話ごとに、予測されたインテントを確認するか、発話が属する正しいインテントを指定するように求められます。このフィードバックが完了すると、データを使用してモデルのパフォーマンスが調整され、その結果、モデルが改善され、再展開してより多くのエンドユーザーデータを収集できるようになります。これは、システムが継続的にデータを収集し、提供されたフィードバックから学習し、そのフィードバックを使用して NLU モデルをさらに改善できるようにする反復サイクルです。

    システムは 30 日に 1 回、VA チャットログから専門家フィードバックループに最大 300 の発言サンプルをプルします。発言は、ログ内のすべての発言をどの程度適切に表しているかに基づいて、フィードバック用に選択されます。VA チャットログからサンプリングされたすべての発話には、システムによって選択された予測インテントがあります。

    glide.mlpredictor.option.nlu.activeLearning.label_candidate_table.max_response_size システムプロパティの設定を調整することで、VA チャットログからプルされる発言の数を設定することもできます。

    VA チャットログから発話を取得するプロセスの詳細については、以下の「オンデマンドで追加の VA フィードバックデータを調達する」および「アクティブラーニングジョブを使用する」セクションを参照してください。

    発話を確認しながら、各発話が予測されたインテントに属するか、別のインテントに移動する必要があるかを判断します。正しいインテントがわからない場合は、さらにレビューするために発話にマークを付けることができます。少なくとも 100 の発言にフィードバックのマークを付けると、マークされたすべての発言を使用してモデルが調整および改善されます。

    VA チャットログの発話の確認

    ループに入ると、次の画像に、VA モデルのインテントをサポートする NLU 発話のリストが表示されます。リストの各ページには、ページあたり約 20 件の発言が表示されます。目標は、各発話を確認し、その関係ステータスを特定の VA インテントにマークすることです。各発話を [NLU_Match]、[ 不一致]、または [不明] のいずれかの値でマークします。

    発言を NLU_Match としてマークすることは、その発言の NLU 予測に同意することを意味します。発話を 不一致 としてマークすると、その発話が別のインテントに属していることを意味します。 「不一致」を選択すると、インテントのドロップダウンが表示され、正しいインテントを選択できます。どのインテントが正しいかわからない場合は、「 不明」としてマークできます。

    NLU_Match値または不一致値でマークされて保存された発言は、[完了したレビュー] セクションに移動されます。[ 不明 ] 値でマークされて保存された発言は、[ さらにレビューが必要 ] セクションに移動されます。

    発言レビューを完了するために使用する基本的な手順のシナリオを次に示します。
    1. [フィードバックループをエクスポート (Export Feedback Loop)] 画面の上部で、プロンプト に対する専門家フィードバックループ でレビューするモデルを選択します。この機能内では、これらのモデルは主にレビューでマークしている発話を格納する機能を備えているため、ある意味ではどのモデルを選択しても問題ありません。したがって、このシナリオ例では、5 つのインテントと、それらの各インテント内に多数の発話がある IT モデル モデルを選択することにします。次の画像に示すように、確認する必要がある発言の数が、予測されるインテントの名前の横に表示されます。これらのモデルのインテントは、画面の [ 予測されるインテント] 列に一覧表示されます。どの予測済みインテントでも発言をレビューしてマークできますが、インテントが最初に表示される順序で連続してレビューを完了することをお勧めします。たとえば、 ad_password_change インテントから始めて、他の予測されるインテントに進みます。
    2. ad_password_changeインテントをクリックすると、レビューのためにその発言が [To do] セクションにロードされます。
    3. インテントの 15 個の発言を確認します。このシナリオでは、まず [AD パスワードを変更します ] 発言を ad_password_change インテントに一致するように正しくマークすることから始めました。
    4. [ フィードバックを保存] をクリックします。
      結果:マークした発言が画面の [完了 ] セクションに移動します。同時に、[ To Do (To Do )] 発言のカウントは 15 から 14 に減少し、[ Done (完了 )] セクションのカウントは 0 から 1 に増加します。別の発言にも [ 不明] 値をマークし、その変更を保存した場合、[ さらにレビューが必要 ] セクションの発言数も 0 から 1 に増加します。
      注:
      どのインテントが発話に最も一致するかわからない場合は、「 不明 」値でマークします。このアクションにより、発話が [さらにレビューが必要 ] セクションに移動し、[ To Do ] セクションで、インテントとの照合や不一致が容易な他の発話をマークする時間が確保されます。いつでも [Needs further review (さらにレビューが必要)] セクションに戻って、特定のインテントにピン留めするのが難しい発話をマークできます。
    5. 手順 1 から 4 を繰り返しながら、[ 予測されたインテント ] 列の残りのインテントに移動します。
    図 : 1. 発話を VA インテントに一致または不一致としてマークする
    レビュー中にその発言をマークできるように、予測されるインテントを選択します

    ad_password_changeインテントの発話は、インテント内に少なくとも 1 つの発話に「password」という単語が含まれているため、予測されたインテントに一致するものとして簡単にマークできます。

    予測されたインテントの発言の確認が終了し、[ フィードバックを保存] をクリックすると、画面が更新され、モデル内の次の予測インテントが強調表示されます。

    発言を値別にグループ化して表示する場合は、[ 表示 ] フィルターをクリックし、プロンプトでオプションの 1 つを選択します。値は、[ すべて]、[ NLU_Match]、および [不明] です。

    カードビューオプションを使用して発言をレビューする

    専門家フィードバックループの発話は、これまで見てきた多くの画像に示すように、デフォルトでリストビューの [To do ] セクションに表示されます。ただし、カード内にフレーム内の各発言を表示する別のビューを選択することもできます。このオプションを選択すると、各発言が 5 つのグループでページに表示されます。リストビュー内で 、カード アイコンをクリックします。

    カードビューをアクティブ化する方法

    結果:カードビューがリストビューに置き換わります。発言カードのページの両側にある左右の矢印に注意してください。右矢印をクリックすると、次の 5 枚のカードのセットにページがめくれます。左矢印をクリックすると、前の 5 枚のカードセットにページがめくれます。カードビューではなくリストビューに戻す場合は、下の画像の右上隅に示すように リスト アイコンをクリックします。

    リストビューに戻る方法

    発言値の変更

    発話をマークした後で、選択した値を変更した場合は、[ 不一致 ] をクリックして別のインテントを選択することで問題を解決できます。[ フィードバックを保存 ] をクリックして変更を保存します。

    未保存のフィードバック

    発言をマークするセッションを終了してログアウトしたが、変更を保存するのを忘れた場合は、[表示中] プロンプトから [未保存の変更] を選択します。このアクションでは、フィードバックを提供したが、まだ保存していないすべての発言が表示されます。

    追加の VA フィードバックデータをオンデマンドで調達する

    専門家フィードバックループで使用する VA チャットログからさらにデータを取得するには、次の手順を実行します。
    1. nlu_adminロールを使用して、 すべて > システム定義 > スケジュール済みジョブ > アクティブラーニング.
    2. [Active Learning (アクティブラーニング)] をクリックします。

      アクティブラーニングジョブを開く

    3. [Execute Now (今すぐ実行する)] をクリックします。

      [今すぐ実行] ボタンをクリックして、アクティブラーニングジョブを開始します

    4. 次の 4 つの NLU システムプロパティの値を増減します。
    • glide.mlpredictor.option.nlu.activeLearning.va_chat_logs.max_row_limit - 3000
    • glide.mlpredictor.option.nlu.activeLearning.label_candidate_table.max_data_size - 10000
    • glide.mlpredictor.option.nlu.activeLearning.label_table.max_data_size - 10000
    • glide.mlpredictor.option.nlu.activeLearning.label_candidate_table.max_response_size-300

    これらのプロパティが他の NLU プロパティのコンテキスト内でどのように機能するかを確認するには、「 NLU ワークベンチのプロパティ」を参照してください。

    未分類の発話の確認

    VA チャットログから専門家フィードバックループへのフィードの一部として、VA インテントに含まれていないインスタンス内の発話が収集され、リストに表示されます。これらの発話にアクセスするには、画面上部のプロンプトに対する専門家フィードバックループ[Uncategorized (未分類)] を選択します。

    画面が更新されると、これらの発言が画面の [未分類の発言 (Uncategorized utterances)] セクションの [発言] 列に表示されます。
    重要:
    システムは、これらの発話に関連するインテントがないことを示唆しているため、この発話セットに関するフィードバックを提供することが非常に重要です。この関連性の欠如を確認するか、これらの発話を既存のインテントに関連付けることで、モデルが正しく学習するのを助けます。
    未分類の発話をインテントに接続する手順は次のとおりです。
    1. [ 発言 ] 列で、リストから発言を選択します。
    2. [ 修正されたインテント ] 列で、発話に最も一致すると思われるインテントとそのモデルをプロンプトから検索して選択します。
    たとえば、この接続に適した組み合わせは、次の画像に示すように、[発話] 列の [ESPP? を交換できますか?] 発言と、[修正されたインテント] 列の [401kBenefitsInquiry] インテントです。
    注:
    [修正されたインテント] 列を使用すると、インスタンス内のすべてのモデルですべてのインテントを検索して使用できます。
    図 : 2. 未分類の発話とインテントおよびそのモデルのペアリング
    未分類の発話の数は、専門家フィードバックループへの日次フィードに取り込まれる仮想エージェントチャットログによって異なります

    上の画像に関して、次のように、未分類の発言ページがどのように機能するかを説明するのに役立ついくつかの項目について説明します。[ To Do (To Do )] セクションでは、インテントに接続する必要がある発話を収集します。この日は、そのような発話が120件あります。まだアクションを実行していないため、画面の [完了 ] セクションには発話がないことに注意してください。

    また、画面の右端には垂直バーがあり、上下にスクロールして発話のリストを移動できることにも注意してください。このスクロール画面の下部には左右を指す矢印があり、その日の完全な発言リストの次または前のページに戻ることができます。

    また、接続を確立するアクションを実行すると、通常はデフォルトでアクティブになっている [ フィードバックの保存 ] ボタンが非アクティブになります。これは、システムがアクションを認識して変更を自動的に保存するためです。

    [モデルを調整] フェーズでの専門家フィードバックループのデータ

    専門家フィードバックループの [ モデルの調整 ] ボタンは常に有効になっており、[専門家フィードバックループの [完了 ] タブからモデルとそのテストセットに発話を移動するエクスペリエンスをサポートします。モデルを調整または再調整する必要があるときはいつでも、nlu_adminロールを使用してこのボタンをクリックします。

    モデルを調整すると、公開前に最適化されます

    専門家フィードバックループで発話を確認した後、フィードバックデータの一部をモデルのデフォルトのテストセットにプッシュできます。これらの発話は、モデルの [ Test utterances (発話のテスト)] タブに直接追加されます。これにより、実際のエンドユーザーの発話でテストセットを継続的に維持および更新できます。システムは、テスト発話のソースを追跡して、エキスパートフィードバックループからのものか、別のソースからのものかを把握します。

    少なくとも 100 件の発言をマークして保存する前に [ モデルの調整] ボタンをクリックすると、画面が更新され、下の画像のテキストで参照されているように、100 件の発言フィードバック目標を超えるとモデルのパフォーマンスの品質が向上することが通知されます。

    [モデルを調整] ボタンはいつでもクリックしてモデルを改善できますが、最初に少なくとも 100 個のマークされた発言の目標を設定すると、調整結果が最適になります

    フィードバックデータのマークと保存を続けると、レビュー済みの発言 (緑色) とまだレビュー可能な発言 (白色) の比率が、下の進捗状況バー画像に表示されます。

    進捗状況バーには、レビュー済みの発言の数と、レビュー可能な発言の数が表示されます。

    下の [Tune your model (モデルを調整 )] の画像では、モデル トレーニング セットとモデル テスト セットの既定の 60 対 40 の割合の分割を確認できます。これらのデフォルト値は、必要に応じて、2 つのボックス (%) のそれぞれで独自の数値を選択することで調整できます。パーセンテージ分割に満足したら、[ 調整 ] ボタンをクリックして、選択したパーセンテージ値に基づいてモデルを調整します。
    注:
    [ フィードバックを表示 ] キャレットをクリックすると、[専門家フィードバックループ] 画面が表示され、フィードバック発言の確認、マーク付け、保存を続行できます。

    [調整] ボタンをクリックする前に、パーセンテージ分割値を設定します

    アクティブラーニングジョブの使用

    スケジュール済みジョブは、バッチジョブまたはバッチスケジューリングとも呼ばれ、特定の時間または定期的なスケジュールで実行される自動化された作業です。多くのジョブはスケジュールに従って実行されますが、ここでは例としてアクティブラーニングジョブに焦点を当てています。

    ここでは、アクティブラーニングジョブを利用する際にできることを3つ紹介します。
    • アクティブ学習ジョブの実行に設定する繰り返し頻度の間隔を変更します。
    • アクティブ学習ジョブに次のスケジュールされた実行がいつ設定されているかを確認します。
    • 必要なときにいつでも (オンデマンドで) アクティブ学習ジョブを実行します。
    ここでは、いくつかの手順をご紹介します。
    1. nlu_adminロールを使用して、[ All ] フィールドに移動し、「 sysauto_script.list」と入力してから、キーボードの Return キーを押します。画面が更新されて [スケジュール] ページが表示され、すべてのスケジュール済みジョブが一覧表示されます。

    2. 「スケジュール」ページで、「 アクティブラーニング」をクリックします。以下の画像に示すように、アクティブ学習ジョブのレコードが表示されます。
      カレンダーを開く
    3. アクティブラーニングレコードで、次のフィールドを設定します。
      • [ 実行 ] フィールドで、ジョブの 8 つの [繰り返し間隔] オプションのいずれかを選択します。オプションは、[ 日次]、[ 週次]、[ 月次]、[ 定期的]、[ 1]、[ オンデマンド]、[ ビジネスカレンダー:エントリ開始]、および [ビジネスカレンダー:エントリ終了] です。
      • [ 繰り返し間隔 ] フィールドに、アクティブ学習ジョブの現在から次の繰り返し間隔までの日数を入力します。
      • [開始(Starting)] フィールドで [カレンダー(Calendar)] アイコンをクリックし、次のアクティブ学習ジョブ間隔の日時を選択します。
      • [ 更新 ] ボタンをクリックして設定を保存するか、[ 今すぐ実行] ボタンをクリックしてアクティブラーニングジョブの実行を開始します。
      • 次のアクティブ学習ジョブがいつ実行されるかを確認するには、[ All ] フィールドに移動して「 sys_trigger.list」と入力し、キーボードの Return キーを押します。[スケジュール] ページが表示されます。[Active Learning (アクティブラーニング)] をクリックします。[スケジュールアイテム/アクティブラーニング] レコードが表示され、[ 次のアクション ] フィールドに次のアクティブラーニングジョブの実行日時が入力されます。
        アクティブラーニングレコード
    NLU のアクティブラーニングジョブの詳細については、サポートポータルの KB 記事「KB1633901」を参照してください。