lstm_attention 可視化

lstm_attention 可視化

眾所周知,情感分析一直是NLP領(lǐng)域的一大熱門,深度學(xué)習(xí)爆發(fā)之前,基于機(jī)器學(xué)習(xí)的情感分析層出不窮?;谥С窒蛄繖C(jī)、隨機(jī)森林模型的,bag_of_words、tf-idf等作為特征入模,判斷句子的情感。

隨著深度學(xué)習(xí)的興起,word2vec,ELMO,fastText,bert等詞向量編碼的方式也隨之興起,較之于bag_of_words,其利用稠密矩陣可以準(zhǔn)確的表達(dá)詞與詞之間的關(guān)系,大大加快了運(yùn)算速度與分類效果。

基于深度學(xué)習(xí)的分類模型也逐漸興起:LSTM、GRU、RNN等循環(huán)神經(jīng)網(wǎng)絡(luò)及其變體在情感分析中占據(jù)一席之地,這種基于句子前后關(guān)聯(lián)關(guān)系判斷句子屬性的方式具有其他機(jī)器學(xué)習(xí)方法有著極大的優(yōu)勢。

CNN卷積神經(jīng)網(wǎng)絡(luò)在計算機(jī)視覺中發(fā)揮無與倫比的優(yōu)勢,那么卷積神經(jīng)網(wǎng)絡(luò)在自然語言處理是否有優(yōu)勢呢?TextCNN,DPCNN等卷積神經(jīng)網(wǎng)絡(luò)變體開始應(yīng)用于情感分析,人們發(fā)現(xiàn)淺層神經(jīng)網(wǎng)絡(luò)(TEXTCNN)在提取句子特征時有著較大的優(yōu)勢。

深度學(xué)習(xí)一直有著黑盒子之稱,那么如何賦予黑盒子予以可解釋性?

RNN+ATTENTION基于RNN(LSTM/GRU)返回的(seq_len)維的向量可以判斷該句話每次詞的重要性,基于ATTENTION返回的詞重要性可以進(jìn)行情感分析的可解釋性。
而在jupyter notebook 里面可以對預(yù)測的句子進(jìn)行詞重要性可視化展示,直觀展示哪些詞的重要性較高。

def highlight(word, attn):
    html_color = '#%02X%02X%02X' % (255, int(255*(1 - attn)), int(255*(1 - attn)))
    return '<span style="background-color: {}">{}</span>'.format(html_color, word)
def mk_html(seq, attns):
    html = ""
    for ix, attn in zip(seq, attns):
          html += ' ' + highlight(
              ix,attn
        )
    return html + "<br><br>\n
from IPython.display import HTML, display
import jieba
import numpy as np

sd = "基于深度學(xué)習(xí)的分類模型也逐漸興起:lstm、GRU、RNN等循環(huán)神經(jīng)網(wǎng)絡(luò)及其變體在情感分析中占據(jù)一席之地,這種基于句子前后關(guān)聯(lián)關(guān)系判斷句子屬性的方式具有其他機(jī)器學(xué)習(xí)方法有著極大的優(yōu)勢cnn卷積神經(jīng)網(wǎng)絡(luò)在計算機(jī)視覺中發(fā)揮無與倫比的優(yōu)勢,那么卷積神經(jīng)網(wǎng)絡(luò)在自然語言處理是否有優(yōu)勢呢?textcnn,dpcnn等卷積神經(jīng)網(wǎng)絡(luò)變體開始應(yīng)用于情感分析,人們發(fā)現(xiàn)淺層神經(jīng)網(wǎng)絡(luò)(textcnn)在提取句子特征時有著較大的優(yōu)勢。深度學(xué)習(xí)一直有著黑盒子之稱,那么如何賦予黑盒子予以可解釋性?rnn+atttention 基于rnn(lstm/gru)返回的(seq_len)維的向量可以判斷該句話每次詞的重要性,基于attention 返回的詞重要性可以進(jìn)行情感分析的可解釋性。而在jupyter notebook 里面可以對預(yù)測的句子進(jìn)行詞重要性可視化展示,直觀展示哪些詞的重要性較高。"

sd = jieba.lcut(sd)                 #分詞后的句子

fea_imp = torch.randn(len(sd)).abs()     #隨機(jī)數(shù)生成詞重要性

text = mk_html(sd,fea_imp)

display(HTML(text))

結(jié)果如下圖所示,由于數(shù)據(jù)和詞重要性均為隨機(jī)選取,因此無特別意義


image.png

函數(shù)代碼轉(zhuǎn)載至github,做了簡單修改,使之直觀易于理解

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容