0
本文作者: skura | 2019-04-15 14:25 |
雷鋒網(wǎng) AI 科技評論按,膠囊網(wǎng)絡(luò)是一種熱門的計(jì)算機(jī)網(wǎng)絡(luò)模型,倍受人工智能領(lǐng)域相關(guān)研究人員的關(guān)注。而 transformer 是谷歌在 2017 年的一篇著名論文「Attention Is All You Need」中提出的一種網(wǎng)絡(luò)結(jié)構(gòu),這種網(wǎng)絡(luò)結(jié)構(gòu)是基于注意力機(jī)制的,主要關(guān)注 NLP 領(lǐng)域的機(jī)器翻譯問題。
Amsterdam 大學(xué)的博士生 Samira 思考了膠囊網(wǎng)絡(luò)和 transformer 之間的關(guān)系,并發(fā)表了一篇博客。在博客中,她討論了 transformer 和膠囊網(wǎng)絡(luò)的主要組成部分以及它們之間的關(guān)系。雷鋒網(wǎng) AI 科技評論將她的文章編譯整理如下:
在本文中,我們將介紹 transformer 和膠囊網(wǎng)絡(luò)的主要組成部分,并嘗試在這兩個(gè)模型的不同組件之間建立連接。我們的主要目標(biāo)是研究這些模型本質(zhì)上是否是不同的,如果是不同的,它們之間的關(guān)系是什么。
transformers:
transformers,或所謂的自注意力網(wǎng)絡(luò),是一系列深度神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu),其中自注意力層相互堆疊,通過多重轉(zhuǎn)換學(xué)習(xí)輸入分詞在具體的情境中如何表示。這些模型已經(jīng)能夠在許多視覺和 NLP 任務(wù)上實(shí)現(xiàn) SOTA。關(guān)于如何實(shí)現(xiàn) transformer 有很多細(xì)節(jié),但從整體上來看,transformer 是一種編碼器-解碼器體系結(jié)構(gòu),其中每個(gè)編碼器和解碼器模塊由一組 transformer 層組成,在每個(gè)層中,我們學(xué)習(xí)(重新)計(jì)算每個(gè)輸入分詞的表示。這個(gè)表示是通過關(guān)注前一層中所有分詞的表示方式計(jì)算出來的。具體如下圖所示。
因此,為了計(jì)算層 L+1 中的表示,來自它前面的層 L 的表示通過一個(gè)自注意力模塊傳遞過來,該模塊更新每個(gè)和其它分詞有關(guān)聯(lián)的分詞的表示。后面的層的分詞在解碼器塊的自注意力中被屏蔽。另外,除了自注意力之外,解碼器中還有編碼器-解碼器注意(「encoder-decoder-attention」,上圖中沒有描述)。要了解有關(guān) transformer 的更多詳細(xì)信息,請查看這篇偉大的文章:http://jalammar.github.io/illustrated-transformer。
transformer 的關(guān)鍵組成部分是自注意力機(jī)制,它的一個(gè)重要特性是采用多頭注意力機(jī)制。在這篇文章中,我們主要關(guān)注這個(gè)部分,并在將膠囊網(wǎng)絡(luò)與 transformer 進(jìn)行比較的過程中,深入探討它的一些細(xì)節(jié)。
使用多頭注意力機(jī)制的主要動機(jī)是獲得探索多個(gè)表示子空間的機(jī)會,因?yàn)槊總€(gè)注意力頭得到的表示投影是不一樣的。在理想的情況下,每個(gè)注意力頭都會通過考慮一個(gè)不同的方面來學(xué)習(xí)處理輸入的不同部分,并且在實(shí)踐中,不同的注意力機(jī)制計(jì)算出來的注意力分布也是不同的。transformer 中的多個(gè)注意力頭和 CNN 中的多個(gè)濾波器是類似的。
在這里,我們解釋了如何使用多個(gè)頭的自注意力機(jī)制來整合來自較下層 L 中不同位置的信息,以計(jì)算較上層的 L+1 表示。
首先,我們應(yīng)該注意到,每一層的每個(gè)位置的表示都形式都是(鍵、值、查詢)三元組。因此,對于每一層,我們有三個(gè)矩陣(K,Q,V),這些矩陣中的每一行對應(yīng)一個(gè)位置。
注意力頭 i 的輸入是 K、Q 和 V 的線性變換:
然后,該注意力頭 i 輸出為:
di 表示 Ki 的長度。
直觀地說,在 L+1 層中每個(gè)位置的表示是 L 層中所有表示的加權(quán)組合。為了計(jì)算這些權(quán)重,注意力分布,每個(gè)注意力頭,計(jì)算 L+1 層中每個(gè)位置的查詢與 L 層中所有位置的鍵之間的相似性,然后通過 softmax 函數(shù)對這些相似性分?jǐn)?shù)進(jìn)行計(jì)算,得出所有位置的注意力分布。因此,對于每個(gè)自注意力層中的每個(gè)位置,我們在每個(gè)注意力頭下一層的位置上都有一個(gè)注意力權(quán)重分布。最后,對于每個(gè)注意力頭,使用頭部的注意力概率組合所有位置的值。在最后一步中,將所有注意力頭的值進(jìn)行線性連接和轉(zhuǎn)換,以計(jì)算多個(gè)注意力集中部分的輸出:
因此,根據(jù)所學(xué)的參數(shù),對于每一層,我們有一個(gè)轉(zhuǎn)換矩陣Wo,它將所有注意力頭的輸出組合起來。同時(shí),對每個(gè)注意力頭來說,我們有三個(gè)轉(zhuǎn)換矩陣,即和
。
帶 EM 路由的矩陣膠囊:
從一開始,膠囊網(wǎng)絡(luò)就被用于以更自然的方式來處理圖像。在 2000 年,Hinton 和 Gharamani 認(rèn)為,依賴于分割預(yù)處理階段的圖像識別系統(tǒng)存在這樣一個(gè)事實(shí),即分割器不知道被處理對象的一般信息,同時(shí),他們建議圖像的識別和分割都可以在同一個(gè)系統(tǒng)里面完成。其思想是,為了識別對象的某一部分,必須首先需要對對象是什么有一個(gè)大致的了解。換句話說,我們需要同時(shí)擁有自上而下和自下而上的信息流。
對于 NLP 問題來說這也同樣適用。這方面的一個(gè)例子是解析 garden path 里面的句子。膠囊網(wǎng)絡(luò)可以被看作是 CNN,在那里內(nèi)核的輸出有一些結(jié)構(gòu),池被動態(tài)路由所取代。
膠囊是一個(gè)單元,它學(xué)習(xí)如何在有限的查看條件域中檢測隱式定義的實(shí)體。它輸出實(shí)體存在的概率和一組反映實(shí)體特征(如姿態(tài)信息)的「實(shí)例化參數(shù)」。存在概率是視點(diǎn)不變的,例如,它不會隨著實(shí)體的移動或旋轉(zhuǎn)而改變,然而實(shí)例化參數(shù)是視點(diǎn)等變的,例如,如果實(shí)體移動或旋轉(zhuǎn),這些參數(shù)就會發(fā)生變化。
在具有 EM 路由的矩陣膠囊中,它們使用了一個(gè)膠囊網(wǎng)絡(luò),這個(gè)網(wǎng)絡(luò)包含標(biāo)準(zhǔn)的卷積層,以及一層初級膠囊,隨后是幾層卷積膠囊。在這個(gè)版本的膠囊網(wǎng)絡(luò)中,實(shí)例化參數(shù)被表示為一個(gè)矩陣,這個(gè)矩陣被稱為姿態(tài)矩陣。
每個(gè)膠囊層都有固定數(shù)量的膠囊類型(類似于 CNN 中的濾波器),它們被選作超參數(shù)。每個(gè)膠囊都是某種膠囊類型的實(shí)例。每個(gè)膠囊類型對應(yīng)于一個(gè)實(shí)體,并且所有相同類型的膠囊都對應(yīng)于不同位置的類型相同的實(shí)體。在較下層中,膠囊類型學(xué)習(xí)識別下層實(shí)體,例如眼睛,在較上層中,它們會呈現(xiàn)更多的上層實(shí)體,例如臉。
在卷積膠囊層中,每種膠囊類型的權(quán)矩陣在輸入上進(jìn)行卷積,類似于內(nèi)核在 CNN 中的應(yīng)用。這會導(dǎo)致每種膠囊類型具有不同的實(shí)例。
在膠囊網(wǎng)絡(luò)中,每個(gè)層中膠囊類型的數(shù)量是預(yù)先定義好的。在兩個(gè)相鄰層中的每種膠囊類型之間,都有一個(gè)變換矩陣。這樣,每一個(gè)上層膠囊看到的都是不同角度的下層膠囊中的實(shí)體。
姿態(tài)矩陣
該方程顯示了如何根據(jù)下層膠囊的姿勢矩陣計(jì)算上層膠囊的姿勢矩陣 Mj,即 Mis 是:
在這個(gè)方程中,rij 是膠囊 i 分配給膠囊 j 的概率,也就是說,膠囊 i 對膠囊 j 所捕獲概念的貢獻(xiàn)程度。WijMi 是下層膠囊 i 相對于膠囊 j 的姿態(tài)矩陣投影,也稱為「vote 矩陣」,表示為 Vij。因此,膠囊 j 的姿態(tài)矩陣基本上是下層膠囊投票矩陣的加權(quán)平均數(shù)。請注意,分配概率是作為動態(tài)路由 EM 過程的一部分計(jì)算的,與膠囊的存在概率或激活概率不同。
存在概率
現(xiàn)在,讓我們看看如何計(jì)算上層膠囊的激活概率。簡單地說,較上層膠囊的激活概率是根據(jù)激活成本與不激活成本相權(quán)衡計(jì)算出來的。
問題是:這些成本是什么,我們該如何計(jì)算它們?
如果分配給更上層膠囊的概率總和大于零,即有一些較下層膠囊分配給這個(gè)膠囊,則不激活該膠囊會產(chǎn)生成本。但膠囊的激活概率并不是僅根據(jù)分配概率的值來計(jì)算的。我們還應(yīng)該考慮分配給上層膠囊的下層膠囊的 vote 矩陣彼此之間的一致性。
換句話說,分配給上層膠囊的下層膠囊應(yīng)該是上層膠囊所代表的同一實(shí)體的一部分。因此,激活膠囊的成本也反映了下層膠囊的 vote 矩陣與上層膠囊計(jì)算出的姿態(tài)矩陣之間的不一致程度。此外,為了避免隨意激活膠囊,激活每個(gè)膠囊時(shí)都有固定的懲罰。
帶 EM 的動態(tài)路由
這里的主要挑戰(zhàn)是計(jì)算分配概率 rij。也就是如何將下層膠囊連接到上層膠囊
,或者換句話說,如何在膠囊層之間路由信息。我們希望這些聯(lián)系不僅取決于下層膠囊的存在,還取決于它們彼此之間的關(guān)系以及它們和上層膠囊之間的關(guān)系。例如,代表眼睛的膠囊(面部的一部分)可能不應(yīng)該和代表桌子的膠囊聯(lián)系在一起。這可以看作是在計(jì)算從下層膠囊到上層膠囊的注意力。但問題在于,為了能夠根據(jù)下層膠囊與上層膠囊的相似性來計(jì)算這一概率,我們事先沒有對上層膠囊的初始表示。這是因?yàn)槟z囊的表示取決于下層的哪些膠囊將會被分配給它。這正是動態(tài)路由起作用的地方,它通過使用 EM 解決了這個(gè)問題。
基于的表示和下層膠囊到上層膠囊的分配概率,我們可以使用 EM 計(jì)算出
的表示。這種迭代過程稱為帶 EM 的動態(tài)路由。請注意,帶 EM 的動態(tài)路由是膠囊網(wǎng)絡(luò)中前向傳遞的一部分,在訓(xùn)練期間,錯誤通過動態(tài)路由的展開迭代進(jìn)行反向傳播。
值得注意的是,它的計(jì)算方法和主要膠囊層的計(jì)算方法有點(diǎn)不同,因?yàn)槠湎旅娴膶硬皇悄z囊層。初級膠囊的姿態(tài)矩陣只是下層內(nèi)核輸出的線性變換。此外,每個(gè)輸出類的最終膠囊層有一個(gè)膠囊。當(dāng)將最后一個(gè)卷積膠囊層連接到最后一層時(shí),變換矩陣在不同的位置上共享,它們使用一種稱為「坐標(biāo)加成」(Coordinate Addition)的技術(shù)來保存關(guān)于卷積膠囊位置的信息。
膠囊網(wǎng)絡(luò)與 transformer:
最后,我們來到了本文最有趣的部分:比較這兩個(gè)模型。雖然從實(shí)現(xiàn)的角度來看,膠囊網(wǎng)絡(luò)和 transformers 似乎并不十分相似,但這兩個(gè)系列模型的不同組件之間存在一些功能上的相似性。
動態(tài)路由與注意力機(jī)制
在膠囊網(wǎng)絡(luò)中,我們使用動態(tài)路由來確定從下層到上層的連接,與 transformer 中的情況一樣,我們使用自注意力來決定如何處理輸入的不同部分以及來自不同部分的信息如何促進(jìn)表示的更新。我們可以將 transformer 中的注意力權(quán)重映射到膠囊網(wǎng)絡(luò)中的分配概率,但是,膠囊網(wǎng)絡(luò)中的分配概率是自下而上計(jì)算的,而 transformer 中的注意力是自上而下計(jì)算的。即 transformer 中的注意力權(quán)重分布在下層的表示上,而在膠囊網(wǎng)絡(luò)中,分配概率分布在上層膠囊上。請注意,在 transformer 中,注意力概率是基于同一層中表示的相似性計(jì)算的,但這相當(dāng)于假設(shè)上層首先用下層的表示進(jìn)行初始化,然后通過將這些初始表示與下層的表示進(jìn)行比較,計(jì)算出注意力概率來更新上層的表示。
膠囊網(wǎng)絡(luò)中的自下而上的注意力機(jī)制以及存在概率和激活膠囊會產(chǎn)生的懲罰,明確允許模型在信息傳播到更上面的層時(shí)抽象出概念。另一方面,在 transformer 中,自上而下的注意力機(jī)制允許上層節(jié)點(diǎn)不關(guān)注下層節(jié)點(diǎn),并過濾掉在這些節(jié)點(diǎn)中捕獲的信息。
現(xiàn)在的問題是,為什么在膠囊網(wǎng)絡(luò)中我們需要使用 EM 來進(jìn)行動態(tài)路由?為什么我們不能用一個(gè)和 transformer 中計(jì)算注意力的機(jī)制類似的方法來計(jì)算膠囊網(wǎng)絡(luò)中的分配概率呢?
我們的猜想是,可以使用點(diǎn)積相似度來計(jì)算下層膠囊與上層膠囊的相似度,從而計(jì)算出分配概率。
目前面臨的挑戰(zhàn)在于,在膠囊網(wǎng)絡(luò)中,我們對更上層膠囊的表示沒有任何先驗(yàn)的假設(shè),因?yàn)槲覀兪孪炔⒉恢浪鼈兯淼氖鞘裁?。另一方面,?transformer 中,所有層中的節(jié)點(diǎn)數(shù)是相同的,并且數(shù)量上和輸入的分詞數(shù)相同,因此,我們可以將每個(gè)節(jié)點(diǎn)解釋為相應(yīng)輸入分詞結(jié)合了上下文的表示。這樣,我們就可以用較下層的對應(yīng)表示來初始化每個(gè)較上層中的表示,這樣就可以使用這兩種表示之間的相似性分?jǐn)?shù)來計(jì)算注意力權(quán)重。
膠囊類型和注意力頭:
膠囊網(wǎng)絡(luò)和 transformer 體系結(jié)構(gòu)都有一種機(jī)制,允許模型從不同的角度處理較下層的表示,以此來計(jì)算較上層的表示。在膠囊網(wǎng)絡(luò)中,來自兩個(gè)相鄰層的每對膠囊類型之間有不同的轉(zhuǎn)換矩陣,因此作為不同膠囊類型實(shí)例的膠囊從不同的角度查看前一層的膠囊。與此相同,在 transformer 中,我們有多個(gè)注意力頭,其中每個(gè)注意力頭使用一組不同的轉(zhuǎn)換矩陣來計(jì)算鍵、值和查詢的投影值。因此,每個(gè)注意力頭在下層表示的不同投影上工作。這兩種機(jī)制和卷積神經(jīng)網(wǎng)絡(luò)中有不同的核是類似的。
現(xiàn)在,膠囊網(wǎng)絡(luò)和 transformer 在這方面的不同之處在于,在膠囊網(wǎng)絡(luò)中,不同類型的膠囊有不同的查看角度,最終,較下層膠囊的分配概率在較上層中的所有膠囊上進(jìn)行歸一化,而不管其類型如何。因此,在較低層中,每個(gè)膠囊有一個(gè)分配分布。而在 transformer 中,每個(gè)注意力頭獨(dú)立地處理其輸入。這意味著我們在更高層的每個(gè)位置都有一個(gè)單獨(dú)的注意力分布,注意力頭的輸出只在最后一個(gè)步驟中組合,在最后一個(gè)步驟中它們被簡單地連接和線性轉(zhuǎn)換,以計(jì)算多頭注意力塊的最終輸出。
位置嵌入和坐標(biāo)添加:
在 transformer 和膠囊網(wǎng)絡(luò)中,都有一些機(jī)制可以將特征的位置信息顯式地添加到模型計(jì)算的表示中。然而,在 transformer 中,這是在第一層之前完成的,其中位置嵌入被添加到單詞嵌入中。而在膠囊網(wǎng)絡(luò)中,它是通過坐標(biāo)添加在最后一層中完成的,其中每個(gè)膠囊的感受野中心的縮放坐標(biāo)(行、列)被添加到 vote 矩陣的右邊列的前兩個(gè)元素中。
結(jié)構(gòu)化隱藏表示:
在 transformer 和膠囊網(wǎng)絡(luò)中,隱藏的表示是以某種方式構(gòu)建的。在膠囊網(wǎng)絡(luò)中,我們用一種膠囊代替標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)中的標(biāo)量激活單元,每個(gè)這種膠囊都用姿態(tài)矩陣和激活值表示。姿態(tài)矩陣對每個(gè)膠囊的信息進(jìn)行編碼,并用于動態(tài)路由計(jì)算下層膠囊和上層膠囊之間的相似性,激活概率決定了它們是否存在。
與此相反,在 transformer 中,表示被分解成鍵、查詢和值三元組,其中鍵和查詢是用于計(jì)算輸入不同部分之間相似性的尋址向量,并計(jì)算注意力分布,以計(jì)算輸入的不同部分對彼此的表示的貢獻(xiàn)程度。
從廣義的概念來看,膠囊網(wǎng)絡(luò)中的姿態(tài)矩陣在 transformer 中扮演著鍵和查詢向量的角色。這里的要點(diǎn)是,它在不同類型信息的表示分離中似乎有一些優(yōu)勢,并且在這兩個(gè)模型中,這是基于路由或注意力處理過程中隱藏狀態(tài)的角色來完成的。
via:https://staff.fnwi.uva.nl/s.abnar/?p=108
雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。