「注意モデル--Attention注意機構」について学びます

「注意モデル--Attention注意機構」について学びます

 

この記事の参照のほとんどは注意メカニズムの深さの調査(2017年版)  張Junlinのブログが、プロセスのいくつかの個人的な反射と理解を追加しました。モデルベースのフレームワークを見つけるためのコードはGitHubの上で実装kerasを実行できることに注意してください:Attention_Network_With_Keras  (:このモデルの詳細な理解のためにはを参照することができ、「注意モデルのサンプルコードの実装と分析」

注意モデル:目標重量のデータが変更されます。最終的な分析では、人間の脳の注目モデルは、与えられた瞬間に、資源配分モデルであるブラインドの他の部分ながら、あなたの注意は常に、画面の焦点部分に焦点を当てています。------(と思う:なぜ、その部分に焦点を当てて、その部分が問題を解決することができるため?)

1.注意メカニズムとは何ですか?

私たちは人々に同じことを見ると、私たちは常に、現在に注意を払う私たちは別の場所に移動するために見たときにどこかに私たちは現在、他の言葉で、物事を見ているされている必要があり、注意が目の動きでもありますそれが目標やシーンは、シーン内のターゲットと位置の空間分布上のすべての注意の内部は同じではないことが指摘されたとき、ということを意味転送、。---------(と思う:絵のために、いくつかの特に目を引くシーンが最初に注目を集めたことになるであろう彼の頭は、テキストのためにこの種のものに非常に敏感であるので、それは我々主に意図的に、です。読んで、順次検索、注文を読んでますが、ご理解の過程で、我々は理解する私たち自身の目的にしている、注意に。注意モデルは、特定の目的(あるいはミッション)と併用する必要があります。)

空間的注意の空間的注意と時間的注意時の注意:注意の役割の観点から、我々は2つの観点から静聴を分類することができます。より実用的なアプリケーションでは、また、ソフト注意注意とハード注意に分けることができます。ソフト注意フィルタ条件を設定されていないすべてのデータは、注意が対応する重み値を計算することに留意されたいです。注目の条件を満たしていない部分を除外しますハード注意がそれは注意が右これらの非適格部分にはもはや注意を払うように理解することができます0、あります、重みの後に注意を生成しました。

前記第1の符号化理解 - 復号化フレーム:エンコーダ・デコーダのフレームを

文献の大半はAMモデルはエンコーダ・デコーダのフレームワークに接続されて登場し、現在、当然のことながら、実際には、AMモデルは、それ自体に注意が必要なエンコーダ・デコーダモデルに依存しない、一般的なアイデアとして見ることができます。エンコーダ・デコーダのフレームワークの研究・モデルは、非常に広範なアプリケーションシナリオは、それ自体で詳細に入るれ、テキスト処理場として見ることができます。

 
図1エンコーダ・デコーダ抽象フレームワーク

エンコーダ・デコーダのフレームが理解するように直感的であってもよい:文(またはチャプター)処理に適しにおいて汎用処理モデル文(またはチャプタ)によって生成されることが考えられます。<X、Y>の文のために。--------(と思う:<X、Y>は、Xは疑問である、Yは、答えは非常に一般的であるために、Xは、Yが関係トリプルを抽出した文である; Xは、Yの中国文であります中国の文章の英訳がある。など)、私たちの目標は、与えられた入力文X、目標エンコーダ・デコーダのフレームワークY.によって生成されることが予想文にあります XおよびYは、同じ言語であってもよいし、2つの異なる言語であってもよいです。そして、XとYは、それぞれの単語列で構成されています。

 

エンコーダ名が示唆中間体Cの意味表現に非線形変換することにより、文章の入力をX入力文を符号化することです。

 

復号するためのデコーダ、そのタスクは、中間YIセマンティック文であるC及びXは、以前に生成された履歴情報を表し、Y1、Y2 ... .yi-1は、一度生成される単語を生成するI:

 

各YIを順次ように生成され、それはそう、全体システムXは、入力文Yに応じた目標文章を生成しています ------(と思う:実際には、ここではエンコーダ・デコーダは、シーケンスにモデルseq2seqシーケンスされたのです、モデルが順序に依存します。)

エンコーダ・デコーダは、非常に汎用性の高いコンピューティングフレームワークであり、このような共通CNN / RNN / BiRNN / GRU / LSTM /ディープLSTMなどとして、研究者自身によって与えられているか、特定の使用モデルのエンコーダとデコーダのように、それは非常に多く、ここでの変化の組み合わせです。------(と思う:人間の学習プロセスを、入力、出力、入力モデル.Encoder外部評価は、人間の学習プロセス、学習プロセスの人間の出力に似たデコーダモデルに似ているなど、出力の内容を評価することに似ています損失関数の英語の先生は私にいくつかの英語の授業、I常に入力エンコーダを教え、突然テストするクイズがあり、私はタイトルの出力デコーダを行う必要があり、最終的には英語の先生グレーディング論文、私にスコアを与える、間違った場所私は再考(-------)入力データのための私の反映処理方法を調整する必要があります。元の入力データ、Xの同等の英語の教科書やテキスト上の単語を翻訳、私は脳にこれらのデータを処理します。今私は、英語の文章を翻訳してみましょう、このタスクはYに相当し、私は教科書を回すことができないので、私は私の頭の加工を使用することができます;、同等のエンコーダモデルは、データの多くの後処理、Cの同等は、私の心がありますCデータは、私が同等のデコーダである脳を、移動する必要があり、この文を翻訳する。学習の過程を知らない、リードを高めるために、整理して学ばなければならないとは何ですか どのような)1日が来るまで、そのエンコーダ・デコーダは、学習のための一般的なフレームワークであることができます

3.Attentionモデル

あなたが脇見気晴らしモデルとしてそれを見ることができますので、上記のエンコーダ・デコーダモデルは、「注意モデルを」反映されていません。なぜそれを集中されていませんか?次のように各単語が生成され、目標文Yを遵守してください:

 

Fは、デコーダの非線形変換関数です。ワードに関係なく発生の対象単語文を生成する場合、ここから分かるように、Y1、Y2又は良いだけY3であり、それらはセマンティック符号C Xの文を使用して、任意の区別なしに、同じです。文の各単語を符号化するセマンティックは、C Xはワードが生成されるに関係なく、Y1、Y2又はY3は、実際には、ターゲットワードを生成する文Xにおける任意の単語がYIの影響であることを意味し、エンコーダのエンコーディングを介して生成されます同じですが、シーケンスモデルにするときのシーケンスエンコーダはRNNであれば(実際には、それから、理論的には、入力より、そのGoogleの推定値は、前方に置く理由は、右、上の逆入力文の入力を見つけていない単語の影響も大きいがそう違いはありません翻訳は)良く少しトリックの理由だろう。このモデルは、注意の理由を反映していないと述べたのはこのためです。

AMモデルは、英語の文の例を翻訳するために、導入される:トム・チェイスジェリー:Xを入力します。理想的な出力:トム・チェイスジェリー。

翻訳のための英語の単語は、次の値に類似した確率分布を与えるよう異なる中国語の単語、の影響の現在の程度を反映するとき、「ジェリー」に翻訳する必要があります。

(トム、0.3)(チェイス、0.2)(ジェリー、0.5)

注目の代わりに、それぞれの英語の単語の確率時に異なる英語の単語に割り当てられた現在の単語の翻訳「ジェリー」注意配分モデルのサイズ。これは、新しい情報の導入ので、単語の正しいターゲット言語の翻訳は、確かに便利です。同様に、文中の各単語の目標は、サブワードのソース文を対応する確率分布情報を集中することを学ぶべきです。これは、各単語李を生成する際に、原稿が中央Cの同一の意味表現は、現在の世代に基づいて、単語と変化Clで置き換えられることを意味します。ここで重要なのは、固定された中間体Cで表されるモデルAM、すなわち現在の出力ワードCIに基づいて追加注意モデルを調整するために意味論的変化を置き換えることを理解すべきです。

 
図2は、エンコーダ・デコーダモデルAMフレームを導入します

これは、文は次のような形式になってきたターゲット単語を生成するプロセスであります:

 

各CIの注意配分は、上記中国語翻訳のような確率分布の異なるソースサブワードステートメントに対応することができる以下のように、対応する情報であってもよいです。

 

其中,f2函数代表Encoder对输入英文单词的某种变换函数,比如如果Encoder是用的RNN模型的话,这个f2函数的结果往往是某个时刻输入xi后隐层节点的状态值;g代表Encoder根据单词的中间表示合成整个句子中间语义表示的变换函数,一般的做法中,g函数就是对构成元素加权求和,也就是常常在论文里看到的下列公式:

 

假设Ci中那个i就是上面的“汤姆”,那么Tx就是3,代表输入句子的长度,h1=f(“Tom”),h2=f(“Chase”),h3=f(“Jerry”),对应的注意力模型权值分别是0.6,0.2,0.2,所以g函数就是个加权求和函数。如果形象表示的话,翻译中文单词“汤姆”的时候,数学公式对应的中间语义表示Ci的形成过程类似下图:

 
图3  Ci的形成过程

这里还有一个问题:生成目标句子某个单词,比如“汤姆”的时候,你怎么知道AM模型所需要的输入句子单词注意力分配概率分布值呢?就是说“汤姆”对应的概率分布:

划重点(注意力权重获取的过程)(Tom,0.3)(Chase,0.2)(Jerry,0.5)是如何得到的呢?

为了便于说明,我们假设对图1的非AM模型的Encoder-Decoder框架进行细化,Encoder采用RNN模型,Decoder也采用RNN模型,这是比较常见的一种模型配置,则图1的图转换为下图:

 
图4 RNN作为具体模型的Encoder-Decoder框架

注意力分配概率分布值的通用计算过程:

 
图5 AM注意力分配概率计算

对于采用RNN的Decoder来说,如果要生成yi单词,在时刻i,我们是可以知道在生成Yi之前的隐层节点i时刻的输出值Hi的,而我们的目的是要计算生成Yi时的输入句子单词“Tom”、“Chase”、“Jerry”对Yi来说的注意力分配概率分布,那么可以用i时刻的隐层节点状态Hi去一一和输入句子中每个单词对应的RNN隐层节点状态hj进行对比,即通过函数F(hj,Hi)来获得目标单词Yi和每个输入单词对应的对齐可能性,这个F函数在不同论文里可能会采取不同的方法,然后函数F的输出经过Softmax进行归一化就得到了符合概率分布取值区间的注意力分配概率分布数值(这就得到了注意力权重)。图5显示的是当输出单词为“汤姆”时刻对应的输入句子单词的对齐概率。绝大多数AM模型都是采取上述的计算框架来计算注意力分配概率分布信息,区别只是在F的定义上可能有所不同。

上述内容就是论文里面常常提到的Soft Attention Model(任何数据都会给一个权值,没有筛选条件)的基本思想,你能在文献里面看到的大多数AM模型基本就是这个模型,区别很可能只是把这个模型用来解决不同的应用问题。那么怎么理解AM模型的物理含义呢?一般文献里会把AM模型看作是单词对齐模型,这是非常有道理的。目标句子生成的每个单词对应输入句子单词的概率分布可以理解为输入句子单词和这个目标生成单词的对齐概率,这在机器翻译语境下是非常直观的:传统的统计机器翻译一般在做的过程中会专门有一个短语对齐的步骤,而注意力模型其实起的是相同的作用。在其他应用里面把AM模型理解成输入句子和目标句子单词之间的对齐概率也是很顺畅的想法。

当然,从概念上理解的话,把AM模型理解成影响力模型也是合理的,就是说生成目标单词的时候,输入句子每个单词对于生成这个单词有多大的影响程度。这种想法也是比较好理解AM模型物理意义的一种思维方式。

图6是论文“A Neural Attention Model for Sentence Summarization”中,Rush用AM模型来做生成式摘要给出的一个AM的一个非常直观的例子。

 
 
  图6 句子生成式摘要例子  

这个例子中,Encoder-Decoder框架的输入句子X是:“russian defense minister ivanov called sunday for the creation of a joint front for combating global terrorism”。对应图中纵坐标的句子。系统生成的摘要句子Y是:“russia calls for joint front against terrorism”,对应图中横坐标的句子。可以看出模型已经把句子主体部分正确地抽出来了。矩阵中每一列代表生成的目标单词对应输入句子每个单词的AM分配概率,颜色越深代表分配到的概率越大。这个例子对于直观理解AM是很有帮助作用。 

A Neural Attention Model for Sentence Summarization》论文提供的实验数据集链接(开放可用):DUC 2004 

 
摘要生成  开放数据集
 
数据下载还是有一定的限制

A Neural Attention Model for Sentence Summarization》论文没有提供源码,但提到了一个可用工具:Torch 

 

 

 

 

参考文章:

【1】自然语言处理中的Attention Model:是什么及为什么     写得非常好

【2】深度学习中的注意力机制(2017版)   写得非常好

【2】Attention注意力机制--原理与应用

おすすめ

転載: www.cnblogs.com/yumoye/p/10947306.html