當前位置:
首頁 >
keras cnn注意力机制_从发展历史视角解析Transformer:从全连接CNN到Transformer
發布時間:2025/3/20
20
豆豆
生活随笔
收集整理的這篇文章主要介紹了
keras cnn注意力机制_从发展历史视角解析Transformer:从全连接CNN到Transformer
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
編譯 | bluemin校對?| 陳彩嫻Transformer架構在機器學習領域(尤其是NLP里)是一項熱門研究,為我們帶來了許多重要成果,比如:GPT-2、GPT-3等寫稿機器人;第一代GPT及其性能更優越的“繼任者”BERT模型,在眾多語言理解任務中以前所未有的數據利用效率獲得了最準確的結果,而且幾乎不需要調整任何參數,也就是在過去花費一個月做的事情、現在只需要花費30分鐘,還達到了更好的效果;以及AlphaStar等。由此可見,Transformer的威力真是不同凡響!2017年,谷歌團隊首先提出Transformer模型。該團隊將Transformer概括為一句話:“Attention is All You Need.”但單單看這句話,人們并不能對Transformer模型建立直觀的理解與認知。為此,作者希望從發展歷史的角度對Transformer模型作一個直白的解釋。1
經典的全連接神經網絡
在經典的全連接神經網絡中,每個不同的輸入變量都是獨一無二的雪花算法(snowflake)。當全連接神經網絡學會識別涉及某個特定變量或其集合時,它們不會對其他變量或其集合進行任何自動泛化。當你在社科研究或醫學研究項目中進行回歸分析,輸入可能是人口統計學變量(比如“年齡”或“每周飲酒量”)時,上述原理也講得通。但如果輸入變量包含某種已知的、結構化的關系,比如空間或時間布局,全連接神經網絡的表現就會很差。如果輸入是圖片中的像素,那么全連接網絡就無法學習類似“左側的像素較亮,右側的像素較暗”的模式,而是必須分別學習“(0, 0) 比 (1, 0) 亮”,“(1, 0) 比 (2, 0) 亮”以及“ (0, 1) 比 (1, 1) 亮”等等。2卷積神經網絡
卷積神經網絡(CNN)了解輸入的空間布局,并用相對的術語處理輸入:CNN不學習“在位置(572,35)處的像素”,而是學習“我正看著的中心的像素”、“左邊的像素”等等。然后,它們一邊“看”向圖像的不同部分一邊滑動,在每個區域中尋找相對中心的相同圖案。CNN與全連接網絡有兩個不同點:權值共享(weight sharing)和局部性(locality)。- 權值共享:在中心位置有一些固定的計算方法,將這些計算應用到每個位置。
- 局部性:每一次計算都只能看向距離中心位置相當近的事物。例如,你可能會在一個3x3或5x5的窗口中查找圖案特征。
循環神經網絡
循環神經網絡(RNN)與CNN一樣,按次序沿著輸入“滑動”,在(權值共享的)每個位置執行大致相同的計算步驟。但是,RNN并非觀察當前位置以及位置周圍的局部小窗口,而是觀察下列信息:- 當前位置
- 觀察最后位置之后的輸出
注意力機制
在作者看來,注意力機制的提出最初是為了處理成對的文本,比如文本蘊含(“句子1和句子2語義相近、語義相反,或既不相近也不相反?”)在這種情況下,人們需要一個模型,將句子1與句子2中的每個詞/短語進行比較,以找出哪些詞/短語可能是指同一個主題或其他。注意力機制如上所述。你有兩個單詞序列(或通常是“positions”),橫軸和縱軸上各有一個序列,形成一個大網格,每個單元格包含一組可能的單詞。然后,你可以采用某種方式來確定這些單詞幾時“匹配”,然后針對每個單詞進行計算,將其與和它“匹配”的單詞相結合。如前所述,注意力機制是為了比較兩種不同的文本而提出的。但注意力機制也可以用來比較同一個文本。(這被稱為“自注意力機制”,但因為這個方法太常見了,所以人們逐漸就把“自”字去掉,將其統稱為“注意力機制”了。)注意力機制可以幫助解決代詞或單詞的歧義。有了注意力機制,你不用將有歧義的文段存儲在容量有限的scratchpad內、然后坐等哪天有足夠的存儲空間,而是可以馬上將單詞A與其他可能會幫助詮釋A的定義的單詞聯系起來。這時,代詞和名詞短語可以一步連接,例如將 “Bike”和“hog”一步連接。(4b)介紹一個注意力運行方式注意力機制運行的方式有很多。本文僅對在Transformer模型中使用的一種方式進行粗略概括。想象一下:一個約會網站上的兩個單詞要配對。對于每個單詞,你要計算:關鍵信息:這個單詞是“約會簡介”(例如“bike”的簡介可能包含“我是中性名詞”)查詢信息:這個單詞在查閱約會簡介時,搜尋的是什么信息?(像“it”這類代詞可能是:“我匹配的是中性名詞”。)價值信息:有關該詞含義的其他信息,可能與匹配過程無關(例如,有關“bike”含義的其他信息)對于每個單詞,你可以利用關鍵信息和查詢信息來確定該單詞與自己本身的匹配度,以及與其他單詞的匹配度。然后,你可以匯總價值信息,用“匹配分數”(match scores)進行加權。最后,你可能會得到一個既包含原單詞的大多數價值、又包含其他單詞的些許價值的結果,比如“我仍然是一個代詞,但同時我還指代了這個名詞,且表達的就是該名詞的含義。”由于單詞可以有多種不同的關聯方式,所以很難讓每個單詞只包含一條關鍵信息/查詢信息/價值信息。其實大可不必!你想要在一個單詞內包含多少條關鍵信息/查詢信息/價值信息都可以!這被稱為“多頭注意力機制”(“multi-headed” attention),其中每個單詞的關鍵信息/查詢信息/價值信息的數量是注意力機制的“頭”的數量。(4c)注意力機制與CNN注意力機制在某些方面與CNN相似。注意力機制在每個位置都會進行一次計算,把這個位置的信息和其他位置的信息結合起來,同時還能忽略周圍大多數不相關的信息。但與CNN不同的是,“其他信息”不需要在附近。(注意力機制不是“局部的”。)而且注意力機制的當前位置不是預定義的,也不是固定的(不像CNN具有固定的“windows”,尺寸規定為3x3或其他)。它們是基于所有輸入進行動態計算。5Attention is all you need
首先,人們在使用“自注意力機制”時,通常只會用一次。可能是應用在一些RNN上,也可能是應用在其他地方。注意力機制被視為一種“調味劑”,可以“撒”在現有的模型上進一步改善模型的性能。“自注意力機制”通常不會作為核心功能單元。這與CNN或RNN的層數不同,前者疊加在一起就可以構成一個模型。Transformer模型就是一種以attention為核心功能單元的架構。你可以將注意力的層堆疊,就像疊CNN或RNN的層一樣。更詳細來說,Transformer模型的單個“塊”或“層”會執行以下操作:一個注意力步驟這個步驟是對每個單詞/位置進行局部計算,不使用其他區域的信息然后,你只需要將這些塊堆疊起來。第一個注意力步驟是給每個單詞添加一些其他含義,這些含義是從其他可能與之相關的單詞那得來的。第一個局部計算步驟會進行相關處理,可能就像是“好吧,我們似乎找到了兩個可以匹配這個代詞的不同名詞;讓我們來看看查詢信息,看看要選那個名詞吧。”然后,下一個注意力步驟是采用每個單詞更易理解的新含義,并通過對上下文的深入理解重新賦予其他單詞新的含義。這些步驟反復進行。有趣的是,每一層的序列大小是一樣的。每個單詞(或“字塊”、“字節”等并非根據單詞來劃分文本的模型)都會有一個位置。但是,每個位置存儲的價值信息(最初只是以“單詞”展開)開始變得更容易“理解”或更好“處理”信息,根據上下文中越來越復雜的理解需求表示單詞含義。(5b)位置編碼;Transformer模型與CNNTransformer模型的輸入不僅包括每個位置的單詞,還包括一個顯示“這是單詞#1”、“這是單詞#2”等信息的運行計數器。如果沒有計數器,Transformer模型就無法辨別單詞的順序。Attention qua attention并不關注單詞位置,而只想弄清楚單詞的含義與單詞“想要”什么。但是,由于Transformer模型的注意力可以看到運行計數器的內容,因此它可以執行諸如“此單詞正在尋找附近的單詞”之類的任務。原則上,運行計數器能幫助Transformer模型學習CNN所用的同一個固定的局部過濾器。但這些行為會存在一定限制,比如注意力步驟會忽略單詞而僅使用位置計數器。(另一個限制是注意力不包含單詞被應用的位置計數器。)我跳過了一些技術細節的講解,但這就意味著,Transformer模型類是CNN模型類的超集。任何一組局部CNN濾波器都可以用特定的注意力計算過程表示,因此Transformer模型的空間包含CNN這個特例。這表明我們的文本數據豐富,至少對于預訓練而言,用CNN處理文本數據會受到許多限制,應用更靈活的模型處理文本數據會更合適。我們不再需要歸納偏好;我們可以在適當時候學習那個樣式。61個模型就能“一統天下”
事實上,GPT、GPT-2和BERT,包括最新出來的GPT-3都屬于同一種Transformer模型。(編者注:GPT的全稱是“Generative Pre-trained Transformer”~)在設計Transformer模型時,你的選擇是有限的。你可以堆疊一些上文描述的“字塊”。你可以選擇堆疊塊的數目。你可以選擇在每個位置表征中存儲多少數據(“隱藏尺寸”)。還有許多細節,這里不再贅述。如果你堆疊了12塊,隱藏層節點數(hidden size)為768,就會得到“GPT”、“GPT-2 small”或“BERT_BASE”。如果你堆疊了24塊,隱藏層節點數為1024,則構成“GPT-2 medium”或“BERT_LARGE”。(BERT_LARGE有16個注意力頭,但據筆者所知,其他模型通常只有12個注意力頭。)還有“GPT-2 large”是有36個塊,隱藏層節點數為1280。而完整的GPT-2模型堆疊塊數達到48,隱藏層節點數為1600。(編者注:GPT-3的隱藏層節點數為2048)以上這些模型的設計都沒有超出原始的Transformer模型,只是把堆疊塊和隱藏層節點數的數值調高了!具有挑戰性的部分是如何獲得大量良好的訓練數據以及如何實現良好的訓練目標。OpenAI將GPT-2的成功歸因于它的規模和基于Reddit的特殊訓練語料庫。BERT沒有使用Reddit語料庫進行訓練,規模也只有GPT-2的一半大。但是BERT的訓練目標與GPT-2不同,它不是通過分句預測下一個單詞,而是從上下文中揭開單詞的“面紗”。這樣可以提高原始GPT進行單詞預測時的準確度。(預測下一個單詞的本質就是猜謎游戲:如果我們的單詞完全是可預測的,那就沒有再開口說話的理由了。但如果你是根據上下文填充缺失的單詞,那么“猜測作者意圖”的成分就少了。)有人將BERT的訓練目標與GPT-2的語料庫有機結合,我很期待這會擦出什么樣的火花。【注:BERT具有編碼注意力機制掩蔽結構,GPT-n具有解碼注意力機制掩蔽結構。在粗略的框架介紹中,編碼與解碼的差異很小,可能不足為道,但也有所區別。】6.1 進一步說明BERT最令人興奮的是:一個已經在語料庫中訓練過、并已具備豐富的語言知識的BERT模型,可以給你解決手上所有特殊的NLP任務。Attention is all you need.你所要做的就是,把BERT模型中的一個輸出,連接到你感興趣的目標上,然后進行反向傳播。反向傳播不需要太多,因為Transformer模型中的權重已經掌握它們需要掌握的大部分知識。你需要對數據集進行2到4次調整,學習率在2e-5和5e-5之間,批處理大小為16或32。有了大小合理的數據集之后,你就可以在一天之內利用普通GPU來嘗試所有的組合情況。這居然是一個可行的方法,真神奇。更神奇的是,完全相似的模型以其出色的寫作能力鎮住了我們所有人。三年前,我們還需要對許多復雜架構的超參數進行調整。現在我們有了Transformer模型,它只是形狀相同的注意力塊的堆疊。這就好比你從架子上取下一個Transformer模型,將其輸出與目標連接起來,按下按鈕,然后去吃午飯。當你吃完午飯回來的時候,你會發現,與2016屆研究生精心制作的、復雜艱深的、針對特定任務的模型相比,你的模型是占據絕大優勢的。原文鏈接:https://nostalgebraist.tumblr.com/post/185326092369/the-transformer-explained[博文視點贈書福利]在10月1日頭條留言區留言,談一談你對這兩本書的看法或有關的學習、競賽等經歷。
AI 科技評論將會在留言區選出15名讀者,送出《阿里云天池大賽賽題解析——機器學習篇》10本,《集成學習:基礎與算法》5本,每人最多獲得其中一本。
活動規則:
1. 在留言區留言,留言點贊最高的前 15 位讀者將獲得贈書,活動結束后,中獎讀者將按照點贊排名由高到低的順序優先挑選兩本書中的其中一本,獲得贈書的讀者請添加AI科技評論官方微信(aitechreview)。
2. 留言內容會有篩選,例如“選我上去”等內容將不會被篩選,亦不會中獎。
3. 本活動時間為2020年10月1日 - 2020年10月8日(23:00),活動推送內僅允許中獎一次。
AI科技評論現建立摸魚劃水群,供大家閑聊一些學術以及非學術問題(禁廣告、禁敏感話題,群滿請加微信aitechreview)
總結
以上是生活随笔為你收集整理的keras cnn注意力机制_从发展历史视角解析Transformer:从全连接CNN到Transformer的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安装程序未能打开日志文件_工地开工,安全
- 下一篇: java中int和integer的区别_