【論文ノート】重要な情報の想起による医療対話応答の生成

重要な情報を思い出して医療対話の応答を生成

ここに画像の説明を挿入

  • タスク: 医療対話の生成
  • カンファレンス: KDD 2022

1. 動機

既存のジョブ:

(1) 発話間の医療実体の関係には注意が払われない。

(2) 鍵情報を十分に活用できない。

患者の状態を包括的に理解するために、医療対話は比較的長いことが多く、各発話には豊富な医療専門用語が散りばめられており、誘導された復帰の生成が重要な役割を果たします。

既存の研究では、異なる発話間の複雑な医学的関係を活用することが不十分であり、その結果、既存の医療対話生成モデルは、主に相互注意メカニズムがトレーニングされていないために、長い対話履歴から重要な情報を取得して正確で有益な応答を生成できなくなります。キー情報のリコールを実行するときに表示される教師あり信号。

図に示すように、最初の文の「テネスムス」と 4 番目の文の「腸炎」の間には症状の関係がありますが、この医学的関係を無視したため、生成された応答ではキーエンティティである「大腸炎」が欠落している可能性があります。

ここに画像の説明を挿入

2. 主要なアイデア

複数の発話間の複雑な医学的関係をモデル化することにより、デコーダが応答生成中に対話履歴内の重要な情報を完全に活用できるように明示的にガイドされます。

この論文は、知識認識型対話グラフ エンコーダー想起強化ジェネレーターの 2 つの部分で構成される Pivotal Information Recalling (MedPIR) を提案します知識認識対話グラフ エンコーダは、発話内のエンティティ間の関係を利用して対話グラフを構築します。グラフ アテンションによって生成されたダイアログ グラフはジェネレーターに入力されるため、知識認識型ダイアログ グラフ エンコーダーは、グローバルな対話構造の観点から、複数の文に分散された重要な医療情報をジェネレーターが使用することを容易にします

次に、再現強化ジェネレーターは、正確な応答を生成する前に会話の概要を生成することで、重要な情報の使用を強化しますRecall Augmented Generator は、最初に長い対話履歴から重要な情報を明示的に生成するように設計されています。次に、リコール情報を応答のプレフィックスとして使用して、より重要な情報に焦点を当てた応答を生成します。この上、

(1) リコール ジェネレーターは、クロス アテンション メカニズムの使用を強制して、リコール信号を持つエンコーダーからの重要な情報を最大限に活用します。

(2) さらに、想起強化ジェネレータは、デコーダ内の自己注意メカニズムを通じて、対話履歴から想起される重要な情報と応答の間の相互作用も強化します。

3.モデル

BERT-GPT をバックボーンとして、BERT をエンコーダーとして、GPT をデコーダーとして使用します。コンテキストエンコーダは、連結された対話履歴をエンコードすることでコンテキスト表現H ctx H_{ctx}を取得します。Hctx _ _次に、外部知識を取得することにより、知識エンコーダを通じて知識表現が取得されます: H k H_kH

3.1 知識認識対話グラフエンコーダ(KDGE)

モチベーション

基本的な対話モデルは医療対話履歴を一連の発話としてのみ考慮するため、異なる発話間の複数の医学的因果関係をモデル化することが困難であり、これらの複雑な関係は次の応答を引き起こす重要な医療情報を暗示しますこの問題に対処するために、本論文では、対話知識グラフを構築し、そのグラフをグラフ・アテンション・ネットワークで符号化するKDGEを提案する。

グローバル対話ナレッジグラフの構築

まず、対話履歴をグラフ化し、各発話をノードとみなしますノード間には 2 種類のエッジがあり、1 つは規則的なタイミング エッジ、もう 1 つは医療関係を通じて散在する談話を接続する知識認識エッジです。これらの知識認識エッジは、外部の医学知識グラフからの医学知識を対話に組み込み、モデルが発話間の複雑な医学的関係を表現できるようにします。

具体的には、まず各文から医療エンティティを抽出し、外部知識グラフ CMeKG でそれらの関係を調べます。2 つの発話からの医療エンティティ間に何らかの関係がある場合、2 つの発話間に知識認識エッジを追加します。

ここに画像の説明を挿入

対話ナレッジグラフの構造エンコーディング

知識認識型ダイアログ グラフを構築した後、リレーショナル グラフ アテンション ネットワーク (RGAT) を使用して、これらのダイアログ内の重要なリレーショナル情報をエンコードします。リレーショナル グラフ アテンション ネットワーク (2019)。

  • 談話の文レベルの表現: グラフGG用Gの各ノードvi v_iv私は、トランスフォーマーベースのエンコーダーを使用して対応する発話をエンコードし、平均単語表現を計算して文レベルの表現 (実際には MeanPooling) を取得しますh私は

  • 対話構造グラフ内の発話のノード表現: 次に、この文レベルの表現が、対応する話者表現 (話者埋め込み) と接合されて、最初のノード埋め込みが形成されます: vi 0 v_i^0v0

    最後に、RGAT を使用してノード表現を更新します:
    ( v 1 , . . . , v M ) = RGAT ( ( v 1 0 , . . . , v M 0 ) , G ) (v_1,...,v_M) = RGAT((v_1^0,...,v_M^0),G)( v1... vM=RG A T (( v10... vM0G )

  • 発話の想起スコア: 対話の想起のために、コンテキストH ctx H_{ctx}をエンコードします。Hctx _ _初期の対話履歴表現として、想起スコアα vi \alpha_{v_i}を定義します。あるv私は発話X i X_iとしてバツ私は想起中の重要度の測定:
    α vi = σ ( ( W vqhctx ) T ( W vkvi ) ) \alpha_{v_i} = \sigma((W_v^qh_{ctx})^T(W_v^kv_i))あるv私は=s (( Wvqhctx _ _T (Wvv私は))
    ここでhctx h_{ctx}hctx _ _スプライスされたすべての対話履歴の BERT エンコード後のH ctx H_{ctx}Hctx _ _平均値プール後に取得されます。

    ここでは、内積アテンション機構と同様に、コンテキストをクエリとして利用し、単一の文(ノード)のグラフ表現結果をキーとしてアテンションスコアを計算する。

  • 発話の最終的な構造エンコーディング: 次に、最終的なX i X_iバツ私はの構造エンコードは、文のエンコードとグラフ ノードのエンコード、および再現スコアの重み付けによって取得されます。

hstc , i = α vi ( hi + vi ) h_{stc,i} = \alpha_{v_i}(h_i+v_i)hs t c , i=あるv私は( h私は+v私は

  • 対話履歴の構造エンコーディング: 最後に、すべての文の構造表現が結合さ​​れて、対話の構造エンコーディングが取得されます: H stc H_{stc}Hstc_ _

    要約すると、会話履歴の構造エンコードをどのように取得するのでしょうか? まず、対話履歴の各文をエンコードして文レベルの表現を取得し、次に対話グラフ内のノードの表現を更新してノード レベルの表現を取得します。次に、各文の再現スコアを計算し、コンテキストを照会します。対話履歴のノード表現をキーとして使用し、重み付けして談話の構造表現を取得します。最後に、各文の構造エンコーディングを連結して、対話履歴の構造エンコーディングを取得します。

3.2 リコール強化ジェネレーター (REG)

モチベーション

基本モデルでは、生成モデルはまずセルフアテンションを実行し、各タイム ステップでデコード状態を生成し、次にコンテキストを使用してH ctx H_{ctx}を表します。Hctx _ _と知識表現H k H_kHクロスアテンションを行います。応答生成のトレーニングのプロセスにおいて、この種のモデルが長い対話履歴をモデル化し、その中の重要な情報に注意を払うことは通常困難です。

リコール情報の生成

この論文では、REG が応答を生成する前に鍵情報RRを明示的に生成することを提案します。RRRRは、会話履歴に関する重要な情報を含む簡潔な要約です。RRの生成Rの後、モデルは次の応答を生成します。
yt = REG ( H ctx , H k , H stc , [ R ; yy < t ] ) y_t = REG(H_{ctx},H_k,H_{stc},[R; y_{y<t}])y=REG ( Hctx _ _HHstc_ _[ R ;yy < t])
トレーニング中、RRR は、重要な情報を呼び出すようにモデルをトレーニングするための監視信号として、医療事前トレーニング モデルPCL-MedBERT推論中、MedPIR は最初にリコール情報を生成し、次に PCL-MedBERT モジュールから分離された監視信号である応答を生成します。このアプローチには次の 2 つの利点があります。

  • 事前に生成されたRRR は、ジェネレータがセルフアテンションを通じて重要な履歴情報にアクセスするためのショートカットを提供します。

  • クロスアテンション メカニズムは、エンコーダーによって提供される重要な情報に焦点を当てるように強化されています。(わかりません、 RRだからです)セルフアテンションを介してRによって生成された表現は、次のステップではクロスアテンションとエンコーダの相互作用を介して生成されますか? )

    図に示すように、ジェネレーターは最初にリコール情報RRを生成します。Rの後に区切り文字 [RSEP] が続きます。知識 H_k を使用して H kHネットワークの平均プーリングは、生成プロセスでの知識の融合を促進するためのセパレータの埋め込みとして使用されます

ここに画像の説明を挿入

情報集約

エンコーダからのさまざまなタイプの情報を集約するために、セルフ アテンション (SA) モジュールと LN モジュールの後に、集約モジュール Fusion() が導入されます。これは、コンテキスト エンコーディング H ctx H_{ctx} を接続するゲート メカニズムですHctx _ _、構造コーディングH stc H_{stc}Hstc_ _、知識コーディングH k H_kH

まず、SA と LN の出力h S , tl h_{S,t}^lhS tQueryとして、クロスアテンションのKeyとして3種類の情報を使用します。次に、線形層とシグモイドを通じてゲーティング スコアが取得され、続いて 3 つのスコアのソフトマックス正規化が行われ、最後に重み付き合計が行われます。

ここに画像の説明を挿入
ここに画像の説明を挿入

最終的に生成されると、次のようになります。

ここに画像の説明を挿入

情報の呼び出しと応答の生成中、ゲート型集約ネットワークは、コンテキストのエンコード、構造のエンコード、および知識のエンコードの情報フローを動的に制御します。構造コーディングは、コンテキストコーディングに補完的な情報を提供し、重要な情報の想起を容易にします。

訓練

医療対話要約コーパスが不足しているため、本論文では抽出要約に PCL-MedBERT を使用し、ターゲット応答に最も関連するいくつかの対話履歴発話をトレーニング信号として選択します。PCL-MedBERT は、各発話と応答をエンコードし、それらのコサイン類似度を計算します。

ここに画像の説明を挿入

次に、類似度スコアが最も高い K 個の発話を選択し、それらをターゲット想起情報としてつなぎ合わせますこれは比較的あいまいな監視信号ですが、次の図に示すように、抽出された要約発話には通常、有益な医療応答を生成するために必要な重要な情報が含まれています。

ここに画像の説明を挿入

推論中にモデルが適格なRRを生成するのをさらに容易にするためRは、教師付き再現スコアを導入することで、主要な発話の識別を容易にします

ここに画像の説明を挿入

其中, r i ∈ { 0 , 1 } r_i \in \{0,1\} r私は{ 0 ,1 }、キーの発話がリコールに属するかどうかを示します。再現スコアが高いほど、対応する発話に対応する再現の重要性が高くなります。

最終的な最適化目標、リコール情報、および応答の生成は、2 つの独立したサブ損失です。

ここに画像の説明を挿入
ここに画像の説明を挿入

外部の知識とレトリバー

MedDG の調査研究では、応答に現れる可能性のある医療エンティティを予測することが、有益な医療エンティティを生成するのに非常に役立つことが示されているため、この論文では、応答に現れる可能性のある医療エンティティを取得するために独自の知識検索モデルをトレーニングします。

まず、CMeKGでは、対話履歴に出現する医療エンティティを中心ノードとして、ワンホップ関係を持つサブグラフを選択する。次に、サブグラフ内のエンティティのみを取得します。対話履歴XXを個別にエンコードする 2 つの独立した PCL-MedBERT を採用XおよびエンティティEEE (複数のトークンを含む)、h X h_Xh× h E h_E hE次に、エンコーダ出力として [CLS] を取得します。2 つの内積がエンティティの検索スコアです。E i + E_i^+とするE+はターゲット応答に現れる正のエンティティです{ E j − } j = 1 n \{E^-_j\}^n_{j=1}{ Ej}j = 1nnのために表示されないn 個の負のエンティティについて、次の損失を最適化して取得者をトレーニングします。

ここに画像の説明を挿入

対話履歴の上位 20 エンティティを取得し、別の PCL-MedBERT をナレッジ エンコーダとして使用して、取得スコアに従って取得したエンティティを並べ替え、[SEP] を使用してそれらをシーケンスにつなぎ合わせて送信します。 PCL-MedBERT エンコードしてH k H_kを取得するH

おすすめ

転載: blog.csdn.net/m0_47779101/article/details/131580957