1. 程式人生 > >基於自注意力機制的句子表示的理解

基於自注意力機制的句子表示的理解

基於自注意力機制的句子表示

句子表示的思路

句子由詞所組成,所以一般首先將句子切分為連續的詞,對詞進行表示,然後將每個詞的表示以各種組合方式組合起來表示句子。

  • 常見的詞的表示方法有:

    1. One-Hot 表示
    2. 詞嵌入 (Embedding)

    對於 One-Hot 表示存在的問題是,句子的詞矩陣將特別稀疏,每個詞的表示向量只有一個值為 1,其餘全為0。並且任意兩個詞的表示向量 w1, w2 都是正交的,即 w1 w2T = 0 ,這樣就沒法表示詞的語義之間的關係。而且當資料特別多的時候,此時詞的個數特別大,這時候會出現維度詛咒的問題。

    對於詞嵌入表示方式,是將每個詞通過相應的技術用低維的稠密的向量表示,如 Word2Vec, Glove, FastText 等。這樣表示的詞通過求兩個詞向量之間的餘弦距離可以得到它們之間的語義相似度,並且解決了維度爆炸的問題。

    Note: Word2Vec, Glove, FastText 的詳細細節可閱讀相關論文

  • 詞表示組合為句子表示的方法:

    假設 句子 sentence : w1, w2, w3, w4

    1. 拼接, 即將各個詞的向量表示拼接起來。
      這裡寫圖片描述
    2. 相加求平均, 即將各個詞的向量表示相加後除詞的個數。
      這裡寫圖片描述
    3. CNN + GlobalMaxPooling
      這裡寫圖片描述
      通過多個視窗大小的 卷積核抓取資訊後,在卷積結果上進行全域性最大池化提取特徵,並將多個通道的結果拼接起來作為最後句子向量的表示。

    4. Bi-LSTM 取最後一步輸出
      這裡寫圖片描述
      將每個詞按次序作為雙向的 LSTM 神經網路的輸入,取網路最後一步的輸出作為句子向量的表示。

基於自注意力的句子的表示

  • 注意力 Attention

    可以直觀的把注意力想象成我們人類看東西時的過程,如:當你正在和 HR 面試,你的眼睛可以看到我們視野類的所有東西,但是此時我們看的最清楚(或者印象最深) 的是正在和你交流的面試官的臉,而旁邊的其他環境如桌椅板凳我們就不是那麼在意。再如我們理解英文文章句子意思的時候,我們從頭開始讀,我們總是對當前句子和它前後的一些句子比較關注,也就是上下文,對離它很有的句子就不是那麼在意。這就是注意力的直觀感受。在演算法設計上,我們用一組帶有引數的向量或者矩陣來模擬我們的眼睛,這組引數中,數值更大的部分所對應的位置往往就是在資料相應位置中我們更在意的部分,相對的就是不那麼在意的部分。
    這裡寫圖片描述


    如圖,0.1 與 0.2 所對應的詞 w1, w3, w4 就不在那麼重要,w2 最後就變得比較重要,這樣在要通過詞去表示句子的時候,注意力機制就能把我句子中重要的詞而減少一些對句子語義有干擾的干擾詞的作用。

  • 基於自注意力機制與 Bi-LSTM 結合表示句子的模型

    這裡寫圖片描述
    在上圖的左部分 (a) 中首先將每個詞的詞詞向量放入一個雙向的 LSTM 網路中,假定有 n 個詞,LSTM 的隱藏單元個數為 u, 那在 LSTM 網路的每個時間步輸出可以得到對每個時間步詞向量的更高階的抽象表示 Aii,維度為 2u,則所有的詞的表示就是一個 n -by-2u 的矩陣。具體計算過程如下:

    wt表示第 t 步的詞向量,則:

    ht=LSTM(wt,ht1)ht=LSTM(wt,ht1)ht=htht
    這樣綜合所有的時間步可得:
    H=(h1,h2,...,hn)
    接著就可以在 H 上施加註意力機制。

    在圖的右部分(b)中解釋瞭如何在 H 上施加註意力,整個 (b) 部分的模型圖可以概括為以下公式:

    a=softmax(ws2tanh(Ws1HT))
    在這裡 Ws1是個一個權重矩陣,形狀為: da-by-2u 。ws2 是一個向量,向量長度為 da, 其中 da是一個超引數。通過上面的公式最後就可以得到注意力向量 a,長度為 n,並且因為使用了 softmax 函式,所以向量 a 的每個元素代表一個概率,所有的元素的和應該為 1。在得到 a 之後,將 H 的每個元素與 a 中對應的元素相乘後相加就可以得到最後句子的表示,這個過程中就對 H 中每個詞的表示賦予了不同的權重,也就是施加了不同的注意力。
  • 注意力提升

    當只使用一個注意力 a 的時候可以在句子的某種語義蘊含上對句子的詞施加不同的注意力權重,但自然語言的語義往往是複雜的,抽象的,句子通常蘊含著多種子語義。一種語義上的注意力可能只能在這種語義上表現出較為合理的效果,但在其他語義上可能就不那麼有效。為了解決這個問題,可以加強注意力的數量,即使用多個 不同的 a, 也就是說此時的 w2不再是一個向量,而應該是一個矩陣 Ws2,形狀為 r-by_da,這裡 r 就是想使用的不同注意力的個數,這樣最後得到的也是一個注意力矩陣 A。

    A=softmax(Ws2tanh(Ws1HT))
    在得到注意力矩陣 A 後,以同樣的原理執行 M = AH,這樣就可以得到句子的表示為一個 r-by-2u 的矩陣。
  • 注意力提升可能產生的問題和解決方案

    上面解釋了試用 r 個注意力可以提高對不同語義混合的句子的表示,但如果最後得到的注意力矩陣 A (r-by-n) 中若每行的值都很接近,也就是說幾個注意力沒什麼區別,那在之後的 M = AH 中,得到的 M 中就會包含很多冗餘的資訊。

    所以為了解決這個問題,我們應該設法迫使 A 能夠保證每行的值具有明顯的差異,也就是說盡量去滿足注意力的多樣性,而不是得到沒什麼區別的 r 個注意力。因此可以採用一個懲罰項來達到這個目的。

    P=||(AATI)||F2
    從上面的公式中可以得到若 A的每行值越相似,那 P 的結果就會越大,A 的值每行越不相似, P 就越小。這樣就可以表示當 A 的 r 個注意力多樣性越大時,P越小,反之就越大。所以將這個懲罰項與 模型的 Loss 一起參與訓練,就可以儘量去保證 A 的多樣性。
    NewLoss=Loss+λP
    Note: 此處的解決方案的原理有點類似 L2 正則化

注意力機制在句子上的視覺化結果

  • 在情感分析的句子上

    1. 正面:
      這裡寫圖片描述

    2. 負面:
      這裡寫圖片描述

  • 施加了 P 懲罰項與沒施加懲罰項的區別

    1. 施加了 P:
      這裡寫圖片描述

    2. 未施加 P:
      這裡寫圖片描述

總結

注意力機制在對句子的語義表示上有著明顯的提升作用,能幫助模型更有效的去捕獲對句子語義有重要作用的詞並且消除干擾詞的印象。多種注意力的結合能提升句子在複雜語義上的表示,彌補單注意力的不足。合理地使用懲罰項能有效的解決多注意力在最後學的的多樣性不足時產生的資訊冗餘的問題。

程式碼實現連結

參考文獻

相關推薦

基於注意力機制句子表示理解

基於自注意力機制的句子表示 句子表示的思路 句子由詞所組成,所以一般首先將句子切分為連續的詞,對詞進行表示,然後將每個詞的表示以各種組合方式組合起來表示句子。 常見的詞的表示方法有: One-Hot 表示 詞嵌入 (Embedding) 對

用卷積神經網路和注意力機制實現QANet(問答網路)

歡迎大家關注我們的網站和系列教程:http://www.tensorflownews.com/,學習更多的機器學習、深度學習的知識! 在這篇文章中,我們將解決自然語言處理(具體是指問答)中最具挑戰性但最有趣的問題之一。我們將在Tensorflow中實現Google的QANet。就像它

自然語言處理中的注意力機制(Self-attention Mechanism)

from: https://www.cnblogs.com/robert-dlut/p/8638283.html 近年來,注意力(Attention)機制被廣泛應用到基於深度學習的自然語言處理(NLP)各個任務中,之前我對早期注意力機制進行過一些學習總結(可見http://www.cn

入門 | 什麼是注意力機制

來源 : 機器之心, 禁止二次轉載注意力機制模仿了生物觀察行為的內部過程,即一種將內部經驗和外部

句子表示為向量(下):基於監督學習的句子表示學習(sentence embedding)

類型 過多 並且 通過 輸入 集合 學習 不一定 論壇 1. 引言 上一篇介紹了如何用無監督方法來訓練sentence embedding,本文將介紹如何利用監督學習訓練句子編碼器從而獲取sentence embedding,包括利用釋義數據庫PPDB、自然語言推理數據SN

Non-local Neural Networks 原理詳解及注意力機制思考

Paper:https://arxiv.org/abs/1711.07971v1 Author:Xiaolong Wang, Ross Girshick, Abhinav Gupta, Kaiming He (CMU, FAIR) 1 創新點 這篇文章非常重要,個人認為應該算是cv領域裡面的自注意

基於Attention理論的LSTM 隱藏層權重調節機制

整體思路如下: 在兩層LSTM結構中,或者是BiLSTM結構中,其實不同隱藏層的輸出權重應該更有所選擇才好,比如用於情感分析的一句話,我今天心情很好,上午去打球了,下午去打遊戲了。如果我們採用傳統的方法去訓練LSTM再分類的話,會發現,這個分類結果可能是中性,當然這和訓練集有關,如何

NLP中的self-attention【-注意力機制

隨著注意力機制的深入研究,各式各樣的attention被研究者們提出。在2017年6月google機器翻譯團隊在arXiv上放出的《Attention is all you need》論文受到了大家廣泛關注,自注意力(self-attention)機制開始成為神經網路attention的研究熱點,在

基於注意力機制的細膩度影象分類

細膩度影象分類相比普通的影象分類具有更大的挑戰,因為在細膩度影象類別中類間差異往往只聚焦於很小的一個區域。比如在下圖海鷗的3個品種中,差異僅僅體現在喙與腳;而在人類活動識別(human activity recognition)中的彈奏樂器與拿著樂器也僅僅體現在手和嘴上。

論文淺嘗 | 基於常識知識圖譜感知和圖注意力機制的對話生成

OpenKG 祝各位讀者中秋快樂!連結:http://coai.cs.tsinghua.edu.

乾貨 | NLP中的self-attention【-注意力機制

原文連結:http://www.cnblogs.com/robert-dlut/p/863828

第四課:通過配置文件獲取對象(Spring框架中的IOC和DI的底層就是基於這樣的機制

ted const dex generate stat clas name 必須 nbsp 首先在D盤創建一個文件hero.txt,內容為:com.hero.Hero(此處必須是Hero的完整路徑) 接下來是Hero類 package com.hero; publi

對於反射機制原理的理解

反射: 動態獲取一個類的位元組碼檔案物件 從而獲取到物件中的所有的內容(欄位 函式 建構函式等) 1)獲取位元組碼檔案物件 Class 2)通過Class對類進行描述 1.準備好一個實體類 public class Person { private String name

JVM記憶體模型及GC回收機制的相關理解

在面試中我們經常會被問道關於JVM的面試問題。我們來整理下 這篇不錯 這個可以讓你恍然大悟 1 JAVA記憶體模型初體驗 JVM記憶體模型: 1 堆 :物件 2 棧(本地方法棧,虛擬機器棧):引數列表、基本資料型別 3 方法區(包括常量池):類變數、常量、程式碼段(code sege

DeepLearning.ai筆記:(5-3) -- 序列模型和注意力機制

title: ‘DeepLearning.ai筆記:(5-3) – 序列模型和注意力機制’ id: dl-ai-5-3 tags: dl.ai categories: AI Deep Learning date: 2018-10-18 18:39:10

幾篇不錯的注意力機制文獻

注意力機制 幾篇不錯的注意力文獻 在計算機視覺領域,注意力機制有各種不同形式的實現,可以大致分為soft attention和hard attention[1]。Soft attention的典型例子是stn[3],Residual Attention Network[

常見的兩種注意力機制

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

頂向下徹底理解 Java 中的 Synchronized

閱讀本文至少要知道 synchronized 用來是幹什麼的... 需要的前置知識還有 Java 物件頭和 Java 位元組碼的部分知識。 synchronized 的使用 synchronized 有三種使用方式,三種方式鎖住的物件是不相同的。 鎖分為例項物件鎖和 class 物件鎖 和 類物件鎖

SELECT... for update,排他鎖機制的簡單理解

會話1中:建立一個表SQL> create table t0416a (id number,val number);  Table created.插入一行記錄並提交SQL> insert into t0416a values (1,10);1

對Swoole、Workerman和php帶的socket的理解

開源項目 局限性 ole 來源 worker 建議 般的 detail 管理 為什麽php自帶的socket不怎麽聽說,基本都是用swoole,workerman去實現? 1、PHP的socket擴展是一套socket api,僅此而已。 swoole,用C實現,它的s