1. 程式人生 > >用於文字分類的RNN-Attention網路

用於文字分類的RNN-Attention網路

之後在文字分類的任務中也用上Attention機制,這篇部落格主要介紹Attention機制在文字分類任務上的作用,與seq2seq中使用的可能會略有不同, 主要參考的論文是Hierarchical Attention Networks for Document Classification。這裡的層次Attention網路並不是只含有Attention機制的網路,而是在雙向RNN的輸出後加了Attention機制,層次表現在對於較長文字的分類,先將詞向量通過RNN+Attention表示為句子向量,再將句子向量通過RNN+Attention表示為文件向量。兩部分的Attention機制是一樣的,這篇部落格就不重複說明了。

一、Attention 的作用

在RNN的文字分類模型中,可以把RNN看成一個encoder,將需要被分類的文字表示為一個dense vector,再使用全連線層與softmax輸出各類別的概率。

在具體的文字的表示上,可以將RNN最後一個時刻的輸出作為文字的表示,也可以綜合考慮每個時刻的的輸出,將它們合併為一個向量。在tagging與classication的任務中常用雙向RNN(下文寫作BIRNN),每個時刻的輸出向量可以理解為這個時刻的輸入詞在上下文的語境中對當前任務的一個貢獻。BIRNN如下圖所示

BIRNN

根據人類的閱讀習慣進行思考,我們在閱讀的時候,注意力通常不會平均分配在文字中的每個詞。再回到上面的文字表示,如果直接將每個時刻的輸出向量相加再平均,就等於認為每個輸入詞對於文字表示的貢獻是相等的,但實際情況往往不是這樣,比如在情感分析中,文字中地名、人名這些詞應該佔有更小的權重,而情感類詞彙應該享有更大的權重。

所以在合併這些輸出向量時,希望可以將注意力集中在那些對當前任務更重要的向量上。也就是給他們都分配一個權值,將所有的輸出向量加權平均。假設輸出向量為ht,權值為αt,則合併後的表示為

s=tαtht

上文所說的為BIRNN的每個輸出向量分配不同權值,使得模型可以將注意力集中在重點幾個詞,降低其他無關詞的作用的機制就是Attention機制。使用了Attention機制可以使得文字表示的結果在當前的任務中更合理。

使用Attention的兩個好處:

  1. 可以更好的表徵文字,使訓練出的模型具有更好的表現(更高的精度)。
  2. 為模型提供了更好的解釋性,如直觀的看出在文字分類中哪些詞或句子更重要, 如果訓練出的模型不理想,根據這些權值分析badcase也非常方便。

這裡寫圖片描述

Hierarchical Attention Networks for Document Classification 這篇論文中提到他們的模型可以學習到詞的上下文資訊,並且分配與上下文相關的詞的權重。我覺得這並不是由於Attention這個機制的作用,而是RNN本身就具有這個能力。

二、Attention 原理

上文說到需要給BIRNN的每個輸出分配權重,如何分配就是Attention的原理,用一張結構圖加三個公式應該就可以解釋清楚了。

這裡寫圖片描述

ut=tanh(Wwht+bw)(1)
αt=exp(uTtuw)texp(uTtuw)(2)
s=tαtht(3)

公式(1)中的Wwbw為Attention的權重與bias,在實現的時候也要設定attention的size,不過也可以簡單的令它們等於BIRNN的輸出向量的size。

公式(2)中的uw也是需要設定的權重,公式(2)其實也就是對所有uTtuw結果的softmax。

公式(3)即是將計算出的αt 作為各時刻輸出的權值,對它們加權求和表示為一個向量。

三、程式碼實現

程式碼中的BIRNN使用的是LSTM(層次Attention網路那篇論文使用的是GRU)

程式碼放在github了,裡面註釋寫了很多,這裡就不重複了。程式碼是使用tensorflow 1.0.0實現的。

相關推薦

用於文字分類RNN-Attention網路

之後在文字分類的任務中也用上Attention機制,這篇部落格主要介紹Attention機制在文字分類任務上的作用,與seq2seq中使用的可能會略有不同, 主要參考的論文是Hierarchical Attention Networks for Docume

最大熵用於文字分類

1.改進的迭代尺度演算法IIS: 輸入:特徵函式f1,f2,⋯,fn;經驗分佈P~(X,Y),模型Pw(y|x) 輸出:最優引數值wi;最優模型Pw 對所有i∈{1,2,⋯,n},取初值wi=0 對每一i∈{1,2,⋯,n}: (a)令δi是方

文字分類attention理解

綜述 今天,基本上所有的NLP方面的應用,如果想取得state-of-art的結果,就必須要經過attention model的加持。比如machine translation, QA(question-answer), NLI(natural language inf

阿里AI工程師教你如何用CNN RNN Attention解決大規模文字分類問題

淘寶商品類目預測 近來做一個應用深度學習解決淘寶商品的類目預測問題的專案,趁此機會總結下文字分類領域特別是應用深度學習解決文字分類的相關的思路、做法和部分實踐的經驗。 1 業務問題描述 淘寶商品的一個典型的例子見下圖,圖中商品的標題是“夏裝雪紡條紋短袖t恤女春半袖衣

用深度學習(CNN RNN Attention)解決大規模文字分類問題

近來在同時做一個應用深度學習解決淘寶商品的類目預測問題的專案,恰好碩士畢業時論文題目便是文字分類問題,趁此機會總結下文字分類領域特別是應用深度學習解決文字分類的相關的思路、做法和部分實踐的經驗。 業務問題描述: 淘寶商品的一個典型的例子見下圖,圖中商品的標題是“夏裝雪紡條紋短袖t恤女春半袖衣服夏天中長款大碼

用深度學習(CNN RNN Attention)解決大規模文本分類問題 - 綜述和實踐

分享 最大的 卷積神經網絡 繼續 基本思想 直觀 paper int 最大 https://zhuanlan.zhihu.com/p/25928551 近來在同時做一個應用深度學習解決淘寶商品的類目預測問題的項目,恰好碩士畢業時論文題目便是文本分類問題,趁此機會總結下文本分

RNN,LSTM用於情感分類問題

1、詞袋定義和keras自帶分詞和編碼工具 詞袋定義 n-gram: 是從一個句子中提取的 N 個(或更少)連續單詞的集合 “The cat sat on the mat.”分解為2-gram: {"The", "The cat", "cat", "c

使用雙lstm隱層的RNN神經網路分類預測

整體思路 這裡為了好執行,舉了個mnist的例子,對手寫圖片進行識別,每個圖片是28*28大小的,使用雙lstm隱層的結構進行分類預測,預測出10個數字類別的概率,整體的網路結構如下: (1)輸入層 [每個時間步的向量長度為28,一次訓練時連續輸入28個時間步,所以每次輸入資料為28*28] (

幾種使用了CNN(卷積神經網路)的文字分類模型

下面就列舉了幾篇運用CNN進行文字分類的論文作為總結。 1 yoon kim 的《Convolutional Neural Networks for Sentence Classification》。(2014 Emnlp會議)   他用的結構比較簡單,就是使用長度不同的 filter 對文字矩陣進行

基於RNN文字分類模型(Tensorflow)

基於LSTM(Long-Short Term Memory,長短時記憶人工神經網路,RNN的一種)搭建一個文字意圖分類的深度學習模型(基於Python3和Tensorflow1.2),其結構圖如下: 如圖1所示,整個模型包括兩部分 第一部分:句子特徵提取 Step1 讀

基於 迴圈神經網路 (LSTM) 的情感評論文字分類

基於迴圈神經網路 (LSTM) 的情感評論文字分類 一、簡介 眾所周知,區分使用者發帖或者評論文字的情感分類問題,對商家來說是很重要的,不僅可以及時瞭解到使用者的情緒,而且可以幫助商家進行產品迭代。例如,“汽車之家” 網站上的使用者評論,進過

TensorFlow實現用於影象分類的卷積神經網路(程式碼詳細註釋)

這裡我們採用cifar10作為我們的實驗資料庫。 首先下載TensorFlow Models庫,以便使用其中提供的CIFAR-10資料的類。 git clone https://github.com/tensorflow/models.git cd mo

圖解機器學習:神經網路和 TensorFlow 的文字分類

開發人員經常說,如果你想開始機器學習,你應該首先學習演算法。但是我的經驗則不是。 我說你應該首先了解:應用程式如何工作。一旦瞭解了這一點,深入探索演算法的內部工作就會變得更加容易。 那麼,你如何 開發直覺學習,並實現理解機器學習這個目的?一個很好的方法是建立機器學習模型。 假設

RNN文字分類——從原始資料處理到預測類別標籤

這兩天做了一個小專案,是一個文因互聯文字分類的競賽題目,但已經過期了,只是使用它的資料做一下。本次使用的RNN+LSTM模型,最終訓練的正確率為87%,不過每次訓練正確率有些差別,並且還有很多可調引數沒有調整,只是當一個練手的了。由於訓練時間很長,完整的程式碼以

Keras examples-imdb_cnn[利用卷積網路文字分類]

1 任務描述 本實驗室利用卷積神經網路對imdb資料進行文字分類 2 實驗過程 (1)引入實驗中所涉及到的包 資料集包、資料預處理包、網路模型包、網路各層結構所對應的包 from __future__ import print_funct

膠囊網路(Capsule Network)在文字分類的探索

歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~ 文字建模方法大致可以分為兩類:(1) 忽略詞序、對文字進行淺層語義建模(代表模型包括LDA,Earth Mover’s distance等;(2)考慮詞序、對文字進行深層語義建模(深度學習演算法,

膠囊網路(Capsule Network)在文字分類中的探索

作者丨楊敏單位丨中國科學院深圳先進技術研究院助理研究員研究方向丨自然語言處理文字建模方法大致可

cnn、rnn實現中文文字分類(基於tensorflow)

tensorflow版本: In[33]: tf.__version__Out[33]:'1.2.1' 首先是資料獲取: curl -O "ht

大規模文字分類網路TextCNN介紹

TextCNN網路是2014年提出的用來做文字分類的卷積神經網路,由於其結構簡單、效果好,在文字分類、推薦等NLP領域應用廣泛,我自己在工作中也有探索其在實際當中的應用,今天總結一下。 TextCNN的網路結構 資料預處理 再將TextCNN網路的

利用TensorFlow實現卷積神經網路文字分類

這篇部落格是翻譯Denny Britz寫的使用卷積神經網路做文字分類並且在Tensorflow上面實現,作者已經授權翻譯,這是原文。 在這篇部落格中,我們將實現一個類似於 Kim Yoon 論文中用於句子分類的卷積神經網路模型。論文中的模型在一系列文字分類任務(如情感分類)中獲得了良好的分類效能,併成為新文字