チャットボットの完璧な応答をしてみましょう| PaddlePaddleセマンティックマッチングモデルDAM

セマンティックマッチングは、NLPの重要なアプリケーションです。システム、インテリジェントな対話システムや顧客サービスに答えるかどうかは、質問と応答の間の意味の一致とみなすことができます。これらのNLPアプリケーションは、通常の人の前でロボットをチャットの形で提示し、目標は最高の応答を一致させるために、対話コンテキスト情報を使用することです。したがって、ご質問、セマンティックマッチングの重要な目標にボット完璧な応答をしましょう。主要な国内および国際的なNLPの技術的なチームとして、NLP、押し進めるの分野で正革新Baiduの、この重要なタスクNLPの返信ボットの選択で、ニューラルネットワークDAM、およびオープンソースのマッチング深注目の最適な効果を提案PaddlePaddleモデルは、上のベース。関連原則とモデルの適用は、この記事で紹介することにします。

  • DAMアドレスPaddlePaddleプロジェクトます。https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/deep_attention_matching_net

クリティカルなアプリケーション - 対話のチャットボットいくつかのラウンドを選択するように返信

与えられた候補回答からチャットロボットを取得するための最も重要な課題に基づき、最高の回答と一致していることを問題を選択します。

本研究における重要な課題は、コンテキストと会話応答候補の間の2つの異なる大きさの関係があり、対話の異なる粒子サイズ依存性、図1に示す例では対話のセマンティクスをキャプチャする必要があることです。

1)直接その語彙との間の直接の重なりがあり、そのような単語「パッケージ」および「パッケージ」またはフレーズ「Debianパッケージマネージャ」および「Debianパッケージマネージャー」として、テキストに関連します。

そのような応答単語「それ」が「dpkgの」上記において参照してください、応答「は、そのわずか安心」「どのパッケージ私のシステムにインストールされている」に相当するような音声セグメントの間2)暗黙の相関。

初期の研究では、談話のペアの大きさとの間に異なる意味関係からキャプチャ対話の多くのラウンドで最高の回答を選択するための鍵である、ということを示しています。しかし、より多くのキャプチャマルチ粒度意味表現、そしてあまりにも多くのオーバーヘッドに、いずれか、暗黙的に関連する関係のためによくない十分に抽出するために、既存のモデルやテキストの相関を検討しRNNモデルを使用することです。これらの課題に直面して、BaiduのNLPチームは、対話の問題いくつかのラウンドを解決するためにDAMモデル、セマンティックマッチングを思い付きました。

ここに画像を挿入説明

DAM・モデルの概要(ディープ注意マッチングネットワーク)

DAMは注目の的に完全に一致するネットワークベースの神経機構です。DAMの動機は対話の多くのラウンド、良好複数ラウンドのコンテキスト応答ダイアログを得るために、異なる粒子サイズの対話捕捉セマンティック依存要素です。
機械翻訳に触発DAM Transformerモデルは、変圧器の重要な注意メカニズムは、二つの側面から展開し、統一されたネットワークに導入します。

  • 注目機構(自己注意)ので、
    積層注意機構が単語レベルに埋め込まれ、徐々に異なる粒径の意味表現を捕捉します。例えば、注目のメカニズムを使用して文は、単語レベルの文章内の依存関係をキャプチャすることができます。これらの多粒度意味表現は、セマンティックコンテキストと依存性応答を探索するのに役立ちます。

  • クロスフォーカス機構(クロス注意が)
    ので、対話の多くのラウンドとしてテキストの関係を選択するために、より多くの補足情報を提供し、異なる談話右の間の暗黙的な依存関係をキャプチャするために、コンテキストと応答の注目機構との間に適用されます良好な応答。

実際にはさまざまなレベルでのその意味表現からの豊かな注意メカニズムを積層した後、中央の単語の周りで治療談話の中心意味論として、各文の各単語に、DAMコンテキストと応答、より多くの生成マルチレベルのセマンティック談話表現。そのようなコンテキストと関連する状況と依存関係を考慮した応答テキスト内のすべての単語、および粒度を一致。DAM返信する単語及び文レベルのステージからのコンテキスト間の最初のマッチング情報を取得し、その後、畳み込み演算と最もよく抽出された特徴、単一の検知ネットワークを照合することによって得られた最終スコアと一致することを最大のプール。

ここに画像を挿入説明
図1に示したDAMネットワーク構造モデル。マッチング- -それが表す含む3つの主要部分の重合、入力された対話データセット、UおよびR返信語は、組成物を埋め込む対応するテキストのコンテキストの各単語、結果として得られる出力は、コンテキストと会話応答との間の一致がありますスコア。
コンテキストは、Uは、異なる粒径の意味表現を構築するために、入力と応答Rブロックとすることができます。同じ自己注目モジュールを複数積層することにより、入力された単語の意味論的埋め込みは、より高度な意味表現を構築しました。意味表現を取得した後、コンテキスト及び音声セグメントに返信-音声セグメントの形で各照合類似度行列を。マッチング、マッチングと相互自己フォーカスの注目の試合の2種類があり、それぞれ、テキストとコンテキスト依存性の応答との関係を測定することができます。これらは、マッチングスコア図3DマッチQを形成し、その寸法は、各ワード、各ワードに対する各文章コンテキストと応答の各単語の代表です。次に、抽出および最大プールのコンボリューションによる音声セグメント間の情報のマッチングは、候補とリターン・コンテキスト間の一致度を表す照合スコアを得るために、単層知覚ネットワークさらに重合することにより調製しました。

ここに画像を挿入説明
DAMモジュールが相互の自己焦点注意および注意のメカニズムを実現するためにネットワークで使用される、その構造は、図1に示されています。構造は、Transformerモデルを達成するための注意メカニズムを描きます。それは、それぞれ、Q、KおよびV.、3つの入力セクション、クエリ文、キーと値の文文を持っています 計算式(1)及び(2)に詳細に示すように、注意が最初のモジュールと注目のクエリステートメントステートメントキースカラードット積の各ワードであろう(スケーリングドット製品注意)、算出されます。計算VATT意味情報は、クエリステートメントと値文との関係を表す、記憶されています。VATTクエリステートメントの入力は、彼らに意味表現の意味を表現するために労働組合を形成するために一緒に追加されます。次いで、層(正規化)操作によって正規化され、回避又は勾配消失を爆発させることができます。続いて、ワードは、式(3)の動作に示すように、さらに、重合性埋め込みRelu活性化機能を処理FFNを用いてニューラルネットワークをフィードフォワード:

ここに画像を挿入説明式(3)は、Xがクエリステートメント形状パラメータとして表される2Dtensor、W1、W2、B1とB2が学習されます。最終的な出力は、最終的な結果を得るために、標準化操作を通過します。式で表される全体注目モジュール(4)をもたらします。

整个注意力模块可以捕获query语句和key语句的依赖关系,利用依赖信息可以得到语义表示,再进一步的构建多粒度的语义表示。

公式(5)和(6)就是利用了注意力模块,得到了上下文和回复的多粒度语义表示信息。公式(7)得到了自注意力的匹配矩阵。公式(8)和(9)通过注意力模块得到上下文与回复之间的语义表示信息,进一步的组成互注意力的匹配矩阵。

ここに画像を挿入説明
自注意力矩阵和互注意力矩阵聚合成了一个3D匹配图Q。再通过带最大池化的3D卷积,得到匹配特征,最后通过单层感知层进行匹配分数的计算。

DAM模型在Ubuntu和豆瓣对话两个语料库上测试了多轮对话任务,如表1所示,相比其他模型获得了最优的效果。

Ubuntu语料库是英文的关于Ubuntu系统troubleshooting的多轮对话数据。它的训练集包括50万个多轮对话的上下文文本,每个对话文本带有1个人类积极回答的正例回复和1个随机采样的负例回复。它的验证集和测试集各自包括5万个上下文文本,每个上下文文本各有1个正例回复和9个负例回复。豆瓣对话语料库是中文的关于一些开放领域的对话数据集。它的验证集包括5万个对话实例,每个实例各有1个正例和负例回复,测试集有1万个实例,每个实例有10个候选回复。

ここに画像を挿入説明

DAM模型PaddlePaddle实战

环境准备:首先根据项目文档要求,下载最新版本的PaddlePaddle。Python的版本要求>=2.7.3
项目的代码目录及简要说明如下:

.
├── README.md               # 文档
├── model.py                # 模型
├── train_and_evaluate.py   # 训练和评估脚本
├── test_and_evaluate.py    # 测试和评估脚本
├── ubuntu                  # 使用Ubuntu语料库的脚本
├── Douban                  # 使用Douban语料库的脚本
└── utils                   # 通用函数

下载项目以后,接下来以Ubuntu语料库应用为例:

  1. 进入ubuntu目录
cd ubuntu
  1. 下载预处理好的数据用于训练。项目提供了下载数据的脚本
sh download_data.sh
  1. 执行训练和评估的脚本
sh train.sh

使用如下脚本,可以了解更多关于arguments的使用说明。

python ../train_and_evaluate.py --help

默认情况下,训练是在单个的GPU上执行的,用户也可以转到多GPU模式运行。只需要将train.sh脚本中的可见设备重置一下即可。比如

export CUDA_VISIBLE_DEVICES=0,1,2,3
  1. 执行测试脚本
sh test.sh

类似的,用户可以很容易的利用Douban对话语料库进行实验。

ポータル:
PaddlePaddle GitHubのプロジェクト住所:
https://github.com/PaddlePaddle

DAMのモデルプロジェクト住所:
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleNLP/deep_attention_matching_net

公開された116元の記事 ウォンの賞賛1 ビュー4568

おすすめ

転載: blog.csdn.net/PaddleLover/article/details/103927358