<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          獨(dú)家 | 感悟注意力機(jī)制

          共 6686字,需瀏覽 14分鐘

           ·

          2022-03-02 02:39

          作者:Greg?Mehdiyev, Ray Hong, Jinghan Yu, Brendan Artley
          翻譯:陳之炎
          校對:ZRX

          本文約2800字,建議閱讀12分鐘

          本文由Simon Fraser大學(xué)計(jì)算機(jī)科學(xué)專業(yè)碩士生撰寫并維護(hù),同時(shí)這也是他們課程學(xué)分的一部分。



          本博由Simon Fraser大學(xué)計(jì)算機(jī)科學(xué)專業(yè)碩士生撰寫并維護(hù),同時(shí)這也是他們課程學(xué)分的一部分。


          想了解更多關(guān)于該項(xiàng)目的信息,請?jiān)L問:

          sfu.ca/computing/mpcs


          簡介


          看到這張照片時(shí),首先映入眼簾的是什么?相信大多數(shù)人的眼神會(huì)被藍(lán)色小鴨子吸引。對人類而言,顯然這只藍(lán)色小鴨子在圖片中異常突出。不知何故,人類總是具備發(fā)現(xiàn)特定模式的能力,并會(huì)將注意力轉(zhuǎn)移到那些與眾不同的特征之上。


          為什么會(huì)是這樣子的?究竟是什么讓我們注意到“藍(lán)色鴨子“呢?


          如果仔細(xì)觀察這張照片,還會(huì)看到有其他不同特征的鴨子。例如,其中有三只鴨子面朝側(cè)面而非正面向前。



          是什么讓藍(lán)色鴨子比側(cè)向鴨子更突出?是否能教會(huì)電腦學(xué)習(xí)這一特征呢?


          這正是注意力機(jī)制解決的目標(biāo)問題?!白⒁饬C(jī)制是一種嘗試行為,旨在有選擇性地聚焦某些相關(guān)的事物,同時(shí)忽略深度神經(jīng)網(wǎng)絡(luò)中的其他事物?!?


          從一般意義上說,注意力機(jī)制是對編碼-解碼器結(jié)構(gòu)的改進(jìn)。編碼器-解碼器模型利用神經(jīng)網(wǎng)絡(luò)將輸入的編碼特征轉(zhuǎn)換成另一種編碼特征。注意機(jī)力制組件賦予了神經(jīng)網(wǎng)絡(luò)在編碼數(shù)據(jù)時(shí)對特定特征賦予 “注意力”的能力,它有助于解決神經(jīng)網(wǎng)絡(luò)中經(jīng)常發(fā)生的梯度消失/爆炸問題。


          編碼器-解碼器GIF 結(jié)構(gòu)圖


          對注意力機(jī)制的實(shí)現(xiàn)可概述如下:


          1. 為編碼器中的每個(gè)狀態(tài)分配一個(gè)分值:?對輸入序列進(jìn)行編碼之后,稱這部分編碼為內(nèi)部狀態(tài),可以為包含“注意力”的狀態(tài)分配高的分值,為不包含任何相關(guān)信息的狀態(tài)分配低分值,從而達(dá)到識別相關(guān)編碼器狀態(tài)的目的。


          2.?計(jì)算注意力的權(quán)重:?在第一步得出的分值基礎(chǔ)上計(jì)算出注意力權(quán)重。


          3.?計(jì)算語境向量:?語境向量為包含第1步和第2步中信息的聚合向量。


          4. 前饋:?將從語境向量中收集到的信息輸入到編碼器/解碼器層中。


          5. 解碼:?解碼器利用注意力機(jī)制解碼信息。


          這便是注意力機(jī)制的工作原理,接下來深入研究一些真實(shí)的應(yīng)用程序!


          常見用例


          1. 自然語言處理(NLP)


          自然語言處理是機(jī)器學(xué)習(xí)的一個(gè)子集,它賦予了計(jì)算機(jī)解釋人類語言的能力,諸如翻譯軟件、聊天機(jī)器人和虛擬助手等工具均來自于這一研究領(lǐng)域。與自然語言處理相關(guān)的主要挑戰(zhàn)之一是將句子中每個(gè)單詞的上下文翻譯為計(jì)算機(jī)所能理解的格式。



          通常,使用編碼器和解碼器形式的兩個(gè)RNNs/LSTMs來完成語境信息的翻譯。編碼器利用特征表示提煉出句子信息,解碼器再將特征表示轉(zhuǎn)換為摘要。


          這種方法對短句子很有效,但是,由于存在梯度消失/爆炸的問題,對長句子來說就變得不那么準(zhǔn)確了。如果沒有注意力機(jī)制,對于復(fù)雜的人類語言來說,該方法的有效性便不太可靠了。例如,來看下面的句子。

          ?

          例句


          可以比較未包含注意力機(jī)制的模型與包含有注意力機(jī)制的模型來驗(yàn)證它的有效性。通過可視化文本,為更加 “重要”的單詞賦予一個(gè)更深顏色的文本??梢钥吹?,如果沒有注意力機(jī)制組件,模型會(huì)受到梯度爆炸/消失的影響,無法在早期找到單詞,從而遺漏了句子中那些對整體意義提供重要信息的那部分文本。


          未包含注意力機(jī)制


          這便是注意力機(jī)制的價(jià)值所在。在創(chuàng)建語境向量時(shí),無論句子有多長,它均能夠考慮到整個(gè)句子,為句子中的每個(gè)單詞賦予重要程度,并將模型的“注意力”集中在句子中最重要的單詞上。該模型的注意力可表示如下。

          ?

          包含注意力機(jī)制

          ?

          2. 計(jì)算機(jī)視覺


          機(jī)器學(xué)習(xí)中受益于注意力機(jī)制的另一個(gè)領(lǐng)域是計(jì)算機(jī)視覺,該領(lǐng)域?qū)W⒂趯?shí)現(xiàn)人類視覺系統(tǒng)的自動(dòng)化。目前,計(jì)算機(jī)視覺的應(yīng)用包括目標(biāo)檢測、圖像分類和圖像字幕。


          計(jì)算機(jī)視覺圖像


          圖像字幕可自動(dòng)生成圖像的文本描述,該描述以清晰的格式準(zhǔn)確地表達(dá)出圖像中的內(nèi)容。下面,來深入了解一下在模型架構(gòu)中加入注意力機(jī)制的好處。


          首先,在沒有注意力機(jī)制的情況下實(shí)現(xiàn)圖像字幕,模型生成一個(gè)文本表示,如“一群黃色橡膠鴨”。由于模型是基于整個(gè)圖像進(jìn)行的概括,這已經(jīng)相當(dāng)準(zhǔn)確了。話雖如此,即便是圖像中的一個(gè)明顯的焦點(diǎn),但結(jié)果中并沒有提及藍(lán)色鴨子。由于圖像的每個(gè)區(qū)域都賦予同等的重要性,并沒有將藍(lán)鴨子描述出來。


          未包含注意力機(jī)制

          ?

          再來考慮一下使用了注意力機(jī)制的情況,這時(shí),模型賦予了包含藍(lán)鴨子圖像區(qū)域更高的重要性,在生成圖像描述時(shí),將這些信息的描述考慮進(jìn)來。


          包含注意力機(jī)制

          ?

          生成的描述將類似于“一群黃色橡皮鴨中的一只藍(lán)色橡皮鴨”。注意,描述中的主題是“藍(lán)色鴨子”。隨著注意力機(jī)制對這一區(qū)域圖像的重視,得出了更為準(zhǔn)確的文本描述。


          在討論了注意力機(jī)制的常見用例之后,再來看看底層的數(shù)學(xué)。


          數(shù)學(xué)


          多年來,注意力機(jī)制出現(xiàn)了很多變種。其中最著名的三個(gè)版本是Vaswani 3注意力機(jī)制,Bahdanau 2注意力機(jī)制和Luong 11注意力機(jī)制。在本文中,將重點(diǎn)關(guān)注Vaswani注意力機(jī)制和Bahdanau注意力機(jī)制。

          ?

          注意力層


          注意力機(jī)制背后的思想是將一個(gè)query值和一組 key-value對映射到一個(gè)輸出當(dāng)中。


          1. Key / Value / Query


          “key/value/query的概念類似于檢索系統(tǒng)。例如,當(dāng)在Youtube上搜索視頻時(shí),搜索引擎會(huì)將 query (搜索欄中的文本)映射到一組keys (視頻標(biāo)題、描述等)上,與數(shù)據(jù)庫中的候選視頻相關(guān)聯(lián),然后展示最匹配的視頻(values)?!?

          Key向量、Query向量和Value向量是嵌入向量在不同子空間中的抽象,因此可以通過將嵌入E乘以一個(gè)權(quán)矩陣來得到向量,“嵌入(向量)是一個(gè)相對低維的空間,可以將其轉(zhuǎn)換為高維向量“?


          2. 輸出


          輸出是權(quán)重和values的組合,其中權(quán)重是在query和key的點(diǎn)積的基礎(chǔ)上,應(yīng)用softmax函數(shù)獲得的。


          Vaswani注意力機(jī)制


          Vaswani注意力機(jī)制中,key向量、query向量和value向量是編碼器-解碼器層的輸入,key向量和query向量的長度可以用變量d來表示,當(dāng)輸入由長度為d的key向量和query向量組成時(shí),則計(jì)算出所有key向量和query向量的點(diǎn)積。


          然后將每個(gè)結(jié)果除以d的平方根。最后,應(yīng)用softmax函數(shù)得出其值的權(quán)重。


          假設(shè)有一個(gè)有四字單詞的句子(s1,s2, s3,s4),要想計(jì)算s4的注意力,s4依賴于s3,s3依賴于s2等等。首先,將s3的query向量命名為q3,將s1, s2, s3的key向量命名為k1, k2, k3。為了計(jì)算出權(quán)值,需要計(jì)算query向量q3與所有key向量的點(diǎn)積,將其除以d的平方根。然后,應(yīng)用softmax函數(shù)。結(jié)果得出以下三個(gè)權(quán)重,稱之為(w1,w2,w3)。



          假設(shè)s1、s2、s3的值是(v1、v2、v3),那么s4的語境向量則是(w1、w2、w3)和(v1、v2、v3)的點(diǎn)積。


          點(diǎn)積圖


          接下來,需要計(jì)算一組query向量的注意力,將key向量、query向量和value向量打包成矩陣Q、K、V。通過將嵌入向量的組合矩陣乘以權(quán)重矩陣Wq、Wk、Wv來得到key、query和value矩陣。這里給出了以下形式的注意力矩陣,可以將這一注意力矩陣應(yīng)用到機(jī)器學(xué)習(xí)模型(如:Seq2Seq、圖像字幕、BERT等等)中去。


          注意力矩陣公式


          Bahdanau注意力機(jī)制


          Bahdanau注意力機(jī)制又可稱為加性注意力機(jī)制。Bahdanau注意力機(jī)制和Vaswani注意力機(jī)制之間的主要區(qū)別是:Bahdanau注意力機(jī)制使用了一種加法策略,而Vaswani注意力機(jī)制使用的是一種乘法策略,二者的實(shí)現(xiàn)方式采用了各自不同的縮放因子。


          Bahdanau 注意力機(jī)制


          可以將Bahdanau注意力機(jī)制劃分為以下步驟:首先,將上一個(gè)時(shí)間步長中的解碼器隱含態(tài)與編碼器隱含態(tài)(輸入句子中的每個(gè)元素對應(yīng)一個(gè)隱含態(tài))相組合,生成對齊分值。類似于Vaswani注意力機(jī)制中的sqrt(d),Bahdanau注意力機(jī)制采用Tanh作為縮放因子,可以用下面的公式來表示:


          Bahdanau 分值公式


          然后,使用softmax函數(shù)將分值歸一化成權(quán)重值,將權(quán)重值乘以隱含的編碼器狀態(tài),得到語境向量。最后,將語境向量和前一個(gè)解碼器的輸出連接起來,生成一個(gè)新的輸出。每個(gè)時(shí)間步長均重復(fù)上述過程。


          該注意力機(jī)制的詳細(xì)實(shí)現(xiàn)過程將在“代碼”小節(jié)中做詳細(xì)描述。


          附加信息


          1. 什么是Seq2Seq?


          序列到序列的學(xué)習(xí)模型將句子從一個(gè)維度轉(zhuǎn)換成另一維度,在語言翻譯時(shí),便是將句子從一種語言翻譯成另一種語言。


          2. 為什么要softmax?


          softmax函數(shù)取n個(gè)實(shí)數(shù)的輸入向量v1,并將其歸一化為包含n個(gè)分量的概率分布。每個(gè)輸出分量在(0,1)范圍內(nèi),各向量分量的和加起來為1。利用softmax函數(shù),可以為每個(gè)分量生成概率分布函數(shù),從而影響解碼器輸出的概率。最后,將語境向量與之前的解碼器輸出連接,輸入到解碼器RNN單元中去,以生成新的隱含態(tài)。


          3. 為什么要縮放?


          如果d的維數(shù)很大,點(diǎn)積的大小就會(huì)很大,Softmax函數(shù)會(huì)使得梯度變得很小,通過對點(diǎn)積進(jìn)行縮放來減少這種影響。Bahdanau 注意力機(jī)制用Tanh實(shí)現(xiàn)縮放,Vaswani 注意力機(jī)制用1/sqrt(d)實(shí)現(xiàn)縮放。


          代碼


          在下一節(jié)中,將Bahdanau注意力機(jī)制應(yīng)用于序列任務(wù),利用Keras實(shí)現(xiàn)一個(gè)編碼器-解碼器架構(gòu),可以從Google Colab Notebook.上下載該例子的完整代碼。

          文中的代碼對“注意力機(jī)制文章?”中的第三方實(shí)現(xiàn)代碼進(jìn)行了修改和優(yōu)化。與“注意力機(jī)制文章?”不同,這里利用注意力機(jī)制來設(shè)計(jì)一個(gè)系統(tǒng),將給定的英語句子翻譯成法語。


          下面是模型的輸入示例和預(yù)測輸出序列示例。


          預(yù)測示例


          導(dǎo)入包


          1. 首先使用下面的代碼導(dǎo)入所需的python包。



          LanguageIndex類


          2. 接下來,創(chuàng)建一個(gè)執(zhí)行索引映射的語言索引類(LanguageIndex類)。目的是存儲(chǔ)字典中的所有單詞,并能夠引用它們的索引。這個(gè)類還存儲(chǔ)了每種語言的最長句的長度。



          文本清洗


          3. 接下來,創(chuàng)建一些輔助函數(shù)來生成編解碼的數(shù)據(jù)序列,輔助函數(shù)為執(zhí)行特征工程而設(shè)。輔助函數(shù)刪除所有的標(biāo)點(diǎn)符號、空格和不常見的字符,實(shí)現(xiàn)句子清洗,它把每個(gè)句子轉(zhuǎn)換成一個(gè)向量列表,每個(gè)向量表示一個(gè)句子中的各單詞的索引。



          加載數(shù)據(jù)集+損失函數(shù)


          4. 接下來,定義數(shù)據(jù)轉(zhuǎn)換函數(shù),并將其加載到數(shù)據(jù)集中。該部分代碼段中還包括了損失函數(shù)。



          創(chuàng)建數(shù)據(jù)集


          5. 把上述內(nèi)容歸集起來。清理輸入數(shù)據(jù)、向量化輸入和輸出語言的張量、計(jì)算輸入和輸出句子的最大長度,并添加必要的填充。這些操作通過下述代碼來實(shí)現(xiàn)。


          ????

          編碼器+解碼器


          1. 編碼器


          編碼器負(fù)責(zé)步進(jìn)輸入序列的時(shí)間步長,并將整個(gè)序列編碼成一個(gè)固定長度的向量,即語境向量。


          2. 解碼器


          解碼器負(fù)責(zé)讀取語境向量,步進(jìn)輸出時(shí)間步長。


          在下個(gè)單元中,將定義編碼器和解碼器架構(gòu)。默認(rèn)情況下,編碼器和解碼器配置在CPU上運(yùn)行。然而,模型在基于CUDA的GPU上運(yùn)行要快得多。如果在GPU上進(jìn)行訓(xùn)練,應(yīng)將第 7行至 27行代碼替換為:



          3. 創(chuàng)建模型、數(shù)據(jù)并進(jìn)行訓(xùn)練!


          最后,序列到序列翻譯模型的所有片段均準(zhǔn)備好之后,只需運(yùn)行以下代碼段,實(shí)例化數(shù)據(jù)集并開始訓(xùn)練模型。

          ?


          結(jié)語


          引入注意力機(jī)之后制,離使用機(jī)器學(xué)習(xí)模仿人類觀察又進(jìn)了一步。


          可以免費(fèi)從 Google Colab Notebook上下載源代碼。如果想了解更多關(guān)于注意力機(jī)制的信息,請查看下述資源。


          參考文獻(xiàn)

          [1] 利用BERT語言模型從文本中獲取語義(2020年9月1日)

          ?https://www.youtube.com/watch?v=-9vVhYEXeyQ&t=145s

          [2] 利用聯(lián)合學(xué)習(xí)對齊和翻譯實(shí)現(xiàn)神經(jīng)機(jī)器翻譯(2016年5月19日) https://arxiv.org/abs/1409.0473

          [3] 你需要的就是注意力(2017年12月6日)?https://arxiv.org/abs/1706.03762

          [4] 展示、出席和講述:帶有視覺注意力的神經(jīng)圖像標(biāo)題生成(2016年4月19日)https://arxiv.org/abs/1502.03044

          [5]注意力機(jī)制中的keys、queries和values到底是什么?(2019年8月1日)

          https://stats.stackexchange.com/questions/421935/what-exactly-are-keys-queries-and-values-in-attention-mechanisms

          [6] 機(jī)器學(xué)習(xí)速成課程:嵌入式課程(2020年10月2日)

          ?https://developers.google.com/machine-learning/crash-course/embeddings/video-lecture

          [7]注意力機(jī)制綜合指南(2019年11月20日)

          ?https://www.analyticsvidhya.com/blog/2019/11/comprehensive-guide-attention-mechanism-deep-learning/

          [8]深度學(xué)習(xí):注意力機(jī)制(2019年9月15日)

          ?https://blog.floydhub.com/attention-mechanism/

          [9] 注意力機(jī)制的直觀理解(2019年3月20日)

          ?https://towardsdatascience.com/intuitive-understanding-of-attention-mechanism-in-deep-learning-6c9482aecf4f

          [10] 博客發(fā)布代碼(2022年2月11日)

          https://colab.research.google.com/drive/1HRuVWssDYPdq1eDQSYL54OjLKXQlmW0_?usp=sharing

          [11]基于注意力的神經(jīng)機(jī)器翻譯的有效方法(2015年9月15日)?https://arxiv.org/abs/1508.04025

          ?

          原文標(biāo)題:What You Never Knew About Attention Mechanisms

          原文鏈接:https://medium.com/sfu-cspmp/what-you-never-knew-about-attention-mechanisms-caa2a2fb0b94


          編輯:黃繼彥
          校對:林亦霖




          譯者簡介



          陳之炎,北京交通大學(xué)通信與控制工程專業(yè)畢業(yè),獲得工學(xué)碩士學(xué)位,歷任長城計(jì)算機(jī)軟件與系統(tǒng)公司工程師,大唐微電子公司工程師,現(xiàn)任北京吾譯超群科技有限公司技術(shù)支持。目前從事智能化翻譯教學(xué)系統(tǒng)的運(yùn)營和維護(hù),在人工智能深度學(xué)習(xí)和自然語言處理(NLP)方面積累有一定的經(jīng)驗(yàn)。業(yè)余時(shí)間喜愛翻譯創(chuàng)作,翻譯作品主要有:IEC-ISO 7816、伊拉克石油工程項(xiàng)目、新財(cái)稅主義宣言等等,其中中譯英作品“新財(cái)稅主義宣言”在GLOBAL TIMES正式發(fā)表。能夠利用業(yè)余時(shí)間加入到THU 數(shù)據(jù)派平臺的翻譯志愿者小組,希望能和大家一起交流分享,共同進(jìn)步

          翻譯組招募信息

          工作內(nèi)容:需要一顆細(xì)致的心,將選取好的外文文章翻譯成流暢的中文。如果你是數(shù)據(jù)科學(xué)/統(tǒng)計(jì)學(xué)/計(jì)算機(jī)類的留學(xué)生,或在海外從事相關(guān)工作,或?qū)ψ约和庹Z水平有信心的朋友歡迎加入翻譯小組。

          你能得到:定期的翻譯培訓(xùn)提高志愿者的翻譯水平,提高對于數(shù)據(jù)科學(xué)前沿的認(rèn)知,海外的朋友可以和國內(nèi)技術(shù)應(yīng)用發(fā)展保持聯(lián)系,THU數(shù)據(jù)派產(chǎn)學(xué)研的背景為志愿者帶來好的發(fā)展機(jī)遇。

          其他福利:來自于名企的數(shù)據(jù)科學(xué)工作者,北大清華以及海外等名校學(xué)生他們都將成為你在翻譯小組的伙伴。


          點(diǎn)擊文末“閱讀原文”加入數(shù)據(jù)派團(tuán)隊(duì)~



          轉(zhuǎn)載須知

          如需轉(zhuǎn)載,請?jiān)陂_篇顯著位置注明作者和出處(轉(zhuǎn)自:數(shù)據(jù)派ID:DatapiTHU),并在文章結(jié)尾放置數(shù)據(jù)派醒目二維碼。有原創(chuàng)標(biāo)識文章,請發(fā)送【文章名稱-待授權(quán)公眾號名稱及ID】至聯(lián)系郵箱,申請白名單授權(quán)并按要求編輯。

          發(fā)布后請將鏈接反饋至聯(lián)系郵箱(見下方)。未經(jīng)許可的轉(zhuǎn)載以及改編者,我們將依法追究其法律責(zé)任。



          點(diǎn)擊“閱讀原文”擁抱組織



          瀏覽 124
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国内免费自拍视频 | 播放日本A片 | 欧美三级电影中文字幕 | 五月丁香好婷婷网站入口 | 国产日韩亚洲欧美精品在线播放 |