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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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的窗口中查找圖案特征。
權值共享對于任何空間或時間構造的輸入(包括文本)都是至關重要的。然而,CNN的局部性卻不適用于處理文本。我是這樣考慮的:圖像中的每一個突出事物(狗,狗的鼻子,邊緣,一小塊顏色)都可以分開來獨立理解,不需要觀察該事物以外的內容。比方說,圖像中不包含替代物,也不包括要求你觀察其他事物來掌握某物本質的參考系統。除非是在一些奇奇怪怪的場景,否則通常不會出現“哦,我現在看到一只狗,但我必須觀察狗以外的事物才確認這是一只狗”的情況。所以,你可以從一些小細節入手,然后分層次深入思考:“啊,這是邊緣部分–>啊,那是一個由邊緣組成的長方形物體–>啊,那是狗的鼻子–>啊,那是狗的頭部–>啊,那是一只狗。”物體的每個部位都是由它所包含的更小的特征來定義的。但上述的方法并不能用于文本處理。例如,句子中的代詞可能出現在句首,但是指代的先行詞常常在句末。我們沒有辦法在不改變句意的前提下,將一個句子準確無誤地分解成可以獨立理解的分句,然后再相互鏈接。所以CNN的局部性原理不利于文本處理。不過,很多人在處理文本時都使用了CNN。CNN可以解決文本的很多問題,但在其他方面能夠發揮的作用更大。3

循環神經網絡

循環神經網絡(RNN)與CNN一樣,按次序沿著輸入“滑動”,在(權值共享的)每個位置執行大致相同的計算步驟。但是,RNN并非觀察當前位置以及位置周圍的局部小窗口,而是觀察下列信息:
  • 當前位置
  • 觀察最后位置之后的輸出
當輸入是文本格式時,感覺就像“閱讀”:RNN處理第一個單詞,概括當時所收集到的所有信息;然后根據概括的信息處理第二個單詞,更新概括的內容;再根據新的概括內容處理第三個單詞,再次更新概括信息,循環往復。人們通常使用的是能學習何時遺忘信息(將信息從簡介中刪除)以及學習何時傳遞信息的RNN架構(LSTMs或GRU)。舉例而言,人們會特地記住“我還沒有找出this所指代的事物”,然后將這條信息傳遞至盡可能廣的范圍內進行搜索,直至找到一個合適的先行詞。(3b) RNN可不容易對付盡管RNN所做的工作有點像順序閱讀,但它本身還有一個棘手的任務要解決。RNN每次只能沿一個方向“讀取”,這就造成了不對稱的問題:在句首附近,輸出只能使用幾個單詞所構成的信息;在句尾附近,輸出則可以使用所有單詞構成的信息。(這一點與CNN相反,因為CNN對每個位置的信息的處理方式都是一樣的。)在這種情況下,如果一個句子開頭的單詞只能根據后面出現的單詞來理解時,就會出現問題。RNN可以基于前面的單詞理解后面的單詞(這也是RNN的核心觀點),但不能基于后面的單詞來理解前面的單詞。這個問題可以通過兩種方式在一定程度上進行回避:一是使用多個RNN層,其中較新的層類似“附加閱讀通道”;二是用兩個RNN分別從不同方向讀取(這也是“BiLSTMs”的基本原理)。但除此之外,RNN的結構仍然面臨著一個根本難題:RNN只能使用長度有限的"scratchpad”(便簽存儲器)來處理單詞之間的依賴關系,并且必須使用同一個“scratchpad”來處理所有短期和長期依賴關系。大家不妨讀一下下面這個句子:It was a truly?beautiful?bike, and though there were bigger and sturdier hogs in Steve’s collection, he’d always favored that one just for the sheer aesthetics.這并不是一個很難的句子,但其中關系縱橫交錯,引人深思。當我們按照“從左到右”的順序閱讀,一開始碰到“bike”這個單詞時,我們可能會想到是“自行車”;只有當我們看到“hogs”時,才明白之前這個“bike”指的是“摩托車”,而且是通過間接暗示的方式表達的。那“hog”這個詞本身是什么意思呢?單獨來看,它可能表示一頭豬。正如我們只能基于“hog”來理解“bike”一樣,我們也只能基于“bike”來理解“hog”(或許還得益于“collection”這個詞,雖然收集豬也并非絕無可能)。這還僅僅是字面上的歧義。整個句子的含義也存在相似的交錯分歧。只有當你讀到“sheer aesthetics”時,你才會真正明白為什么這句話的開頭表述是“it was a truly beautiful...”。也只有把全部信息聯系起來,我們才能明白這個句子所表達的關于Steve、摩托車收藏和他的態度之間的關系。RNN對這句話的理解會有些吃力:首先是把這句話存儲在容量有限的scratchpad中,適當省略一些細節,但還得祈禱被刪掉的細節是不重要的。這時候RNN的內心OS可能是:“好吧,還要記得這個‘it’需要一個先行詞[scribbles]……我的存儲容量很有限,可能會被‘beauty’和‘bicycles’分神——哦,天哪,這里還有一個‘though’引導的分句,呃,但這與‘pigs’有什么關系?(檢查一遍信息后發現)我現在看到的是 ‘pretty bicycle past tense’(漂亮的車、過去時),但里面沒有提到‘pigs’(豬)。那我就把‘pigs’加進來,看看后文有沒有相關的解釋……但這個‘though’到底想表達什么意思?哦,天哪……”4

注意力機制

在作者看來,注意力機制的提出最初是為了處理成對的文本,比如文本蘊含(“句子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或其他)。它們是基于所有輸入進行動態計算。5

Attention 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處理文本數據會受到許多限制,應用更靈活的模型處理文本數據會更合適。我們不再需要歸納偏好;我們可以在適當時候學習那個樣式。6

1個模型就能“一統天下”

事實上,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的全部內容,希望文章能夠幫你解決所遇到的問題。

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