日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【NLP】图解 Attention完整版

發布時間:2025/3/8 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【NLP】图解 Attention完整版 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

譯者:張賢,哈爾濱工程大學,Datawhale原創作者

本文約4000字,建議閱讀11分鐘
審稿人:Jepson,Datawhale成員,畢業于中國科學院,目前在騰訊從事推薦算法工作。

序列到序列(seq2seq)模型是一種深度學習模型,在很多任務上都取得了成功,如:機器翻譯、文本摘要、圖像描述生成。谷歌翻譯在 2016 年年末開始使用這種模型。有2篇開創性的論文:

Sutskever等2014年發布的:https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf

Cho等2014年發布的:http://emnlp2014.org/papers/pdf/EMNLP2014179.pdf

都對這些模型進行了解釋。

然而,我發現,想要充分理解模型并實現它,需要拆解一系列概念,而這些概念是層層遞進的。我認為,如果能夠把這些概念進行可視化,會更加容易理解。這就是這篇文章的目標。你需要先了解一些深度學習的知識,才能讀完這篇文章。我希望這篇文章,可以對你閱讀上面提到的 2 篇論文有幫助。

一個序列到序列(seq2seq)模型,接收的輸入是一個輸入的(單詞、字母、圖像特征)序列,輸出是另外一個序列。一個訓練好的模型如下圖所示:


在神經機器翻譯中,一個序列是指一連串的單詞。類似地,輸出也是一連串單詞。


進一步理解細節

模型是由編碼器(Encoder)和解碼器(Decoder)組成的。其中,編碼器會處理輸入序列中的每個元素,把這些信息轉換為一個向量(稱為上下文(context))。當我們處理完整個輸入序列后,編碼器把上下文(context)發送給解碼器,解碼器開始逐項生成輸出序列中的元素。

這種機制,同樣適用于機器翻譯。

在機器翻譯任務中,上下文(context)是一個向量(基本上是一個數字數組)。編碼器和解碼器一般都是循環神經網絡,一定要看看 Luis Serrano寫的一篇關于循環神經網絡(https://www.youtube.com/watch?v=UNmqTiOnRfg)的精彩介紹

上下文是一個浮點數向量。在下文中,我們會可視化這些向量,使用更明亮的色彩來表示更高的值

你可以在設置模型的時候設置上下文向量的長度。這個長度是基于編碼器 RNN 的隱藏層神經元的數量。上圖展示了長度為 4 的向量,但在實際應用中,上下文向量的長度可能是 256,512 或者 1024。

根據設計,RNN 在每個時間步接受 2 個輸入:

  • 輸入序列中的一個元素(在解碼器的例子中,輸入是指句子中的一個單詞)

  • 一個 ?hidden state(隱藏層狀態)

然而每個單詞都需要表示為一個向量。為了把一個詞轉換為一個向量,我們使用一類稱為 "word embedding" 的方法。這類方法把單詞轉換到一個向量空間,這種表示能夠捕捉大量的單詞的語義信息(例如,king - man + woman = queen (http://p.migdal.pl/2017/01/06/king-man-woman-queen-why.html))。

我們在處理單詞之前,需要把他們轉換為向量。這個轉換是使用 word embedding 算法來完成的。我們可以使用預訓練好的 embeddings,或者在我們的數據集上訓練自己的 embedding。通常 embedding 向量大小是 200 或者 300,為了簡單起見,我們這里展示的向量長度是4

現在,我們已經介紹完了向量/張量的基礎知識,讓我們回顧一下 RNN 的機制,并可視化這些 RNN 模型:

RNN 在第 2 個時間步,采用第 1 個時間步的 hidden state(隱藏層狀態) 和第 2 個時間步的輸入向量,來得到輸出。在下文,我們會使用類似這種動畫,來描述神經機器翻譯模型里的所有向量。

在下面的可視化圖形中,編碼器和解碼器在每個時間步處理輸入,并得到輸出。由于編碼器和解碼器都是 RNN,RNN 會根據當前時間步的輸入,和前一個時間步的 hidden state(隱藏層狀態),更新當前時間步的 hidden state(隱藏層狀態)。

讓我們看下編碼器的 hidden state(隱藏層狀態)。注意,最后一個 hidden state(隱藏層狀態)實際上是我們傳給解碼器的上下文(context)。

解碼器也持有 hidden state(隱藏層狀態),而且也需要把 hidden state(隱藏層狀態)從一個時間步傳遞到下一個時間步。我們沒有在上圖中可視化解碼器的 hidden state,是因為這個過程和解碼器是類似的,我們現在關注的是 RNN 的主要處理過程。

現在讓我們用另一種方式來可視化序列到序列(seq2seq)模型。下面的動畫會讓我們更加容易理解模型。這種方法稱為展開視圖。其中,我們不只是顯示一個解碼器,而是在時間上展開,每個時間步都顯示一個解碼器。通過這種方式,我們可以看到每個時間步的輸入和輸出。

Attention 講解

事實證明,上下文向量是這類模型的瓶頸。這使得模型在處理長文本時面臨非常大的挑戰。

在 Bahdanau等2014發布的(https://arxiv.org/abs/1409.0473) 和 Luong等2015年發布的(https://arxiv.org/abs/1508.04025) 兩篇論文中,提出了一種解決方法。這 2 篇論文提出并改進了一種叫做注意力(Attention)的技術,它極大地提高了機器翻譯的質量。注意力使得模型可以根據需要,關注到輸入序列的相關部分。

在第 7 個時間步,注意力機制使得解碼器在產生英語翻譯之前,可以將注意力集中在 "étudiant" 這個詞(在發育里,是 "student" 的意思)。這種從輸入序列放大相關信號的能力,使得注意力模型,比沒有注意力的模型,產生更好的結果。

讓我們繼續從高層次來理解注意力模型。一個注意力模型不同于經典的序列到序列(seq2seq)模型,主要體現在 2 個方面:

首先,編碼器會把更多的數據傳遞給解碼器。編碼器把所有時間步的 hidden state(隱藏層狀態)傳遞給解碼器,而不是只傳遞最后一個 hidden state(隱藏層狀態)。

第二,注意力模型的解碼器在產生輸出之前,做了一個額外的處理。為了把注意力集中在與該時間步相關的輸入部分。解碼器做了如下的處理:

  • 查看所有接收到的編碼器的 hidden state(隱藏層狀態)。其中,編碼器中每個 hidden state(隱藏層狀態)都對應到輸入句子中一個單詞。

  • 給每個 hidden state(隱藏層狀態)一個分數(我們先忽略這個分數的計算過程)。

  • 將每個 hidden state(隱藏層狀態)乘以經過 softmax 的對應的分數,從而,高分對應的 ?hidden state(隱藏層狀態)會被放大,而低分對應的 ?hidden state(隱藏層狀態)會被縮小。


  • 這個加權平均的步驟是在解碼器的每個時間步做的。

    現在,讓我們把所有內容都融合到下面的圖中,來看看注意力模型的整個過程:

  • 注意力模型的解碼器 RNN 的輸入包括:一個embedding 向量,和一個初始化好的解碼器 hidden state(隱藏層狀態)。

  • RNN 處理上述的 2 個輸入,產生一個輸出和一個新的 hidden state(隱藏層狀態 h4 向量),其中輸出會被忽略。

  • 注意力的步驟:我們使用編碼器的 hidden state(隱藏層狀態)和 h4 向量來計算這個時間步的上下文向量(C4)。

  • 我們把 h4 和 C4 拼接起來,得到一個向量。

  • 我們把這個向量輸入一個前饋神經網絡(這個網絡是和整個模型一起訓練的)。

  • 前饋神經網絡的輸出的輸出表示這個時間步輸出的單詞。

  • 在下一個時間步重復這個步驟。


  • 下圖,我們使用另一種方式來可視化注意力,看看在每個解碼的時間步中關注輸入句子的哪些部分:請注意,注意力模型不是無意識地把輸出的第一個單詞對應到輸入的第一個單詞。實際上,它從訓練階段學習到了如何在兩種語言中對應單詞的關系(在我們的例子中,是法語和英語)。下圖展示了注意力機制的準確程度(圖片來自于上面提到的論文):你可以看到模型在輸出 "European Economic Area" 時,注意力分布情況。在法語中,這些單詞的順序,相對于英語,是顛倒的("européenne économique zone")。而其他詞的順序是類似的。

    如果你覺得你準備好了學習注意力機制的代碼實現,一定要看看基于 TensorFlow 的 神經機器翻譯 (seq2seq) 指南(https://github.com/tensorflow/nmt)

    本文經原作者?@JayAlammmar(https://twitter.com/JayAlammar) 授權翻譯,期望你的反饋。

    往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯 獲取一折本站知識星球優惠券,復制鏈接直接打開: https://t.zsxq.com/y7uvZF6 本站qq群704220115。加入微信群請掃碼:

    總結

    以上是生活随笔為你收集整理的【NLP】图解 Attention完整版的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产综合自拍 | 国产99久久久 | 欧美性猛片aaaaaaa做受 | 亚洲五月婷婷 | 午夜在线观看免费视频 | 正在播放老肥熟妇露脸 | 亚洲精品久久久中文字幕 | av中文字幕观看 | 日韩一级片网址 | 91精品国产aⅴ一区 黄色a网 | 日本四级电影 | 日本涩涩网| 日本免费一区二区在线 | 九色91| 又黄又爽一区二区三区 | 亚洲精品99999 | 天天综合网天天综合色 | 日本精品区 | 男女操操操 | 国语av在线| 四虎免费在线观看 | 亚洲永久免费精品 | www.日日夜夜| 黄色av网站免费 | 黄色a在线观看 | 怡红院成人在线 | www.香蕉视频在线观看 | 精品亚洲中文字幕 | 欧美激情图 | 亚洲欧洲视频在线观看 | 91看片成人| 色盈盈影院| 欧美电影一区二区三区 | 久久大胆人体 | av网站在线免费播放 | 成人一区二区精品 | 大尺度激情吻胸视频 | 18p在线观看 | 国产乱子视频 | 免费在线视频一区 | 精品人妻一区二区三区日产 | 天堂在线91 | 福利一二三区 | 国产精品xxxxxx | 一级黄色片在线看 | 欧美不卡高清 | 日一日射一射 | 亚洲精品久久久久久久久 | 在线色亚洲 | 自拍亚洲欧美 | 蜜桃香蕉视频 | 黄色网址视频 | 亚洲av少妇一区二区在线观看 | 免费一级欧美片在线播放 | 小俊大肉大捧一进一出好爽 | 亚洲AV无码精品色毛片浪潮 | 精品国产青草久久久久96 | 国产精品黑人一区二区三区 | 天天撸天天射 | 在线三区 | 国产性精品 | 欧美性生活免费视频 | 久久精品99久久久久久久久 | 深夜福利在线播放 | 影音先锋制服 | 精品人伦一区二区三区蜜桃网站 | 色婷婷av国产精品 | av操操 | 国产精品久久久久电影 | 噼里啪啦国语版在线观看 | 自拍视频啪 | 国产精品最新 | 咪咪av| 成人福利视频在线观看 | 国产又爽又黄免费软件 | 男女透逼视频 | 一级黄色a | 亚洲天堂av一区 | 国产aⅴ无码片毛片一级一区2 | 国产成年妇视频 | 伊人三级 | 97影院| 欧美精品aaa| www午夜| 亚洲av片不卡无码久久 | 欧美成人图区 | 日日射天天操 | 黄色二级毛片 | 98久久久 | 免费看污片的网站 | 97伊人网| 久久噜噜噜 | 欧美性啪啪 | 欧美日日| 狂野欧美性猛交xxxx777 | 四虎5151久久欧美毛片 | www.com污| 三级艳丽杨钰莹三级 | 香蕉视频在线网址 |