Transformer 論文通俗解讀:FFN 的作用

在經過前面3節關于 Transformer 論文的解讀之后,相信你對提出 Transformer 架構的這篇論文有了一定的了解了,你可以點擊下面的鏈接復習一下前3節的內容。

《Attention is all you need》通俗解讀,徹底理解版:part1

《Attention is all you need》通俗解讀,徹底理解版:part2

《Attention is all you need》通俗解讀,徹底理解版:注意力機制的運算

總的來說,這篇論文雖然重要且經典,但很多關于Transformer 架構的技術細節并沒有介紹的很清楚,因此讀起來有些晦澀。

之前的幾節文章在通讀這篇論文時,采用的是原文+注解的方式來進行的。這么做的目的也很簡單:幫助你了解這篇論文中每一部分的寫作意圖是什么。

至于論文中沒有詳細闡述的技術細節內容,本專欄后續會繼續完善。本節開始解讀一下論文的3.3節,主要是 FFN 層。

3.3 節:Position-wise Feed-Forward Networks (FFN)

In addition to attention sub-layers, each of the layers in our encoder and decoder contains a fully connected feed-forward network, which is applied to each position separately and identically. This consists of two linear transformations with a ReLU activation in between. FFN(x) = max(0, xW1 + b1)W2 + b2 While the linear transformations are the same across different positions, they use different parameters from layer to layer. Another way of describing this is as two convolutions with kernel size 1. The dimensionality of input and output is dmodel = 512, and the inner-layer has dimensionality df f = 2048.

關于 FFN 層,作者就在第 3.3節寫了上面一段話(真的非常簡單😓)。

每次看到這,都會觸發我感慨一下:我之前也發表過英文論文,在自己發布的論文中,尤其是自己原創的內容時,恨不得將每一處細節都介紹清楚,恨不得把文章寫的篇幅超長,以此來體現我的文章的專業和創新性(😅)。

作者這種一筆帶過的寫法真的讓人不太習慣。不過后來和其他人聊這個話題,有些人說可能是限于發表期刊的篇幅要求,導致很多細節不能寫的過多(😝)。

作者在這一段就介紹了 FFN 層的基本結構,并且默認讀者對于其中的算法是非常了解的。

在注意力層后面,無論是encoder結構還是decoder結構中,都設計了一個全連接前饋網絡層( fully connected feed-forward network),也就是 FFN 層(如下紅框所示)。

FFN 層實際上就是一個線性變換層,用來完成輸入數據到輸出數據的維度變換(細節這里不介紹,相關鏈接暫時留白)。

這個FFN層是一個順序結構:包括一個全連接層(FC) + relu激活層 + 第二個全連接層,其公式可以表示為:FFN(x) = max(0, xW1 + b1)W2 + b2。

上式中,xW1 + b1?為第一個全連接層的計算公式,max(0, xW1 + b1)?為 relu 的計算公式,max(0, xW1 + b1)W2 + b2?則為第二個全連接層的計算公式。

隨后作者提到,添加這個 FFN 層的作用,主要是通過第一個FC層將輸入詞向量的512維變換到2048維,隨后通過第二個FC層再將2048維變換回512維,從而保證 FFN 的輸入輸出維度一致。

FFN 層的結構展開可以表示如下:

為什么要加 FFN?

你可能會有疑惑?既然 FFN 的輸入和輸出的維度都一樣,那為什么還要加這個結構呢?

首先從 FFN 中添加的 Relu 激活函數看起。如果你學過《AI視覺入門專欄》的話,肯定對Relu 這一類的激活函數非常熟悉。

Relu 激活函數的重要作用是為模型施加非線性因素,從而可以使模型擬合出更加復雜的關系。

關于線性和非線性的內容,可以參考這里?和?這里。

因為 FFN 層由兩個線性變換層(FC)和一個非線性激活函數(ReLU)組成,通過在兩個 FC 中間添加非線性變換(這是非常常見的操作),可以增加模型的表達能力,使模型能夠捕捉到復雜的特征和模式

怎么理解“使模型能夠捕捉到復雜的特征和模式”呢?這就得看 Relu 前后的兩個的 FC 層了:FC層線性變換的主要作用可以理解為數據的升維和降維,這一點通過 FC 的算法就可以看出來。

設想一下,原始輸入的特征維度為512維,也就是 FFN 之前的注意力層提取了單詞(token)的512維特征。

但很多時候512維不夠用,我們希望模型可以提取出更多維度的特征,于是,通過 FFN 兩個相鄰 FC 層的運算,可以將 512 維擴展到2048維( FFN 的隱層),隨后再降維到512維作為 FFN 的輸出。

這種維度的一升一降,帶來了兩個變化:

  1. 增加了兩個可學習的權值矩陣,也就是上面表達公式中的兩個?W?矩陣。通過和權值矩陣的相乘將輸入 512 維度向量映射到隱層的 2048 維度空間中,使得輸入數據可以完成更加豐富的特征表達和運算。

  2. 雖然FFN的輸入輸出維度都是512,但是輸出的512維度特征和輸入的512為特征是不一樣的。輸出的512維度特征是在隱層空間(2048)的基礎上進一步融合得到的。可以說,輸出的512維比輸入的512維具有更加豐富和準確的特征表示。

如果把 FFN 中的隱層 2048維看做 2048 個極具智慧的頭腦,那么經過這 2048 個極具智慧的大腦的頭腦風暴后,將輸入512維特征進行了再加工,那么很明顯輸出就更具有代表性了。

所以,總結一下 FFN 的作用:

  • 增強特征提取能力:這主要就是 FC 的線性變換到 2048 的高維空間帶來的好處。

  • 提高計算效率:這一點是 FC 算法決定的。FC 層的計算是可以并行的,這就使 FFN 層可以在GPU上高效地并行計算。相對于傳統的循環神經網絡(RNN)中由于時間步長的依賴導致無法并行的情況,基于 Transformer 結構的計算便可以大幅完成并行優化,從而極大提高模型的訓練和推理效率。

  • 防止模型退化:這一點主要是在 FFN 中引入了 Relu 這種非線性激活函數帶來的。如果沒有 FFN 層的存在, Transformer 模型可能會退化為簡單的線性變換模型,從而失去捕捉復雜特征的能力。FFN 層通過引入非線性變換,保證了模型能夠保持其表達能力,有效捕捉到輸入數據中的復雜特征。



    我的技術專欄已經有幾百位朋友加入了。

    如果你也希望了解AI技術,學習AI視覺或者大語言模型,戳下面的鏈接加入吧,這可能是你學習路上非常重要的一次點擊呀

    CV視覺入門第三版(細化版)完成

    我的Transformer專欄努力更新中

    最后,送一句話給大家:生活不止眼前,還有詩和遠方,共勉~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43536.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43536.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43536.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

合合信息“大模型加速器”亮相2024世界人工智能大會

文章目錄 📑引言一、大模型發展的挑戰數據稀缺問題 二、大模型“加速器”解決方案概述文檔解析引擎的特征 三、文檔解析引擎的優勢3.1 高速處理能力3.2 智能理解文檔結構3.3 多種數據類型支持3.4 高精度數據提取3.5 應用廣泛,適應性強 四、復雜圖表解析4…

Auslogics Disk Defrag Pro v11激活版下載、安裝、使用教程 (磁盤碎片整理工具)

前言 Auslogics Disk Defrag Pro 是一款支持 FAT16 文件系統的磁盤碎片整理工具,它可以快速整理磁盤碎片,使磁盤空間更加整潔,顯著提升電腦的運行速度。該軟件無需任何分析階段,并且速度比大多數其他碎片整理軟件更快。它可以幫助…

stm32 開發板可以拿來做什么?

STM32開發板可以用來做許多不同的事情,具體取決于您的應用需求和編程能力。我收集歸類了一份嵌入式學習包,對于新手而言簡直不要太棒,里面包括了新手各個時期的學習方向編程教學、問題視頻講解、畢設800套和語言類教學,敲個22就可…

詳解太陽能控制器PWM / MPPT極簡方案其設計要點,臺灣遠翔FP7209升壓24V,30V,36V,42V,48V

文章目錄 前言 一、單節電池升壓9V、12V、24V方案 二、單節電池升壓30V,36V,42V,48V方案 三、芯片介紹 FP7209X與FP7209M的區別: 四、單節電池升壓成為市面上太陽能控制器首選的原因? 總結 前言 太陽能是一種環保…

定時器TIM配置微妙延時函數

定時器TIM配置微妙延時函數 文章目錄 定時器TIM配置微妙延時函數開胃小菜(BOOT0、BOOT1)Boot0Boot1(如果有) 三種定時器高級控制定時器(TIM1,TIM8)通用定時器(TIM2, TIM3, TIM4, TIM…

linux命令: rsync的使用

使用rsync同步本地文件夾到遠程目錄 rsync -zvrt /localdir/ -e ssh -p 30000 rootip:/remotedir/rsync -zvrt /localdir/ /remotedir/ 遠程備份 rsync -avlR --delete -e ssh -p 3231 tangboqi221.122.114.27:backup ~/backup/ R表示保留目錄結構,如果不保留…

基于Intel Chainer 和姿勢檢測的動作識別(人體、面部、手部關鍵點識別動作識別)

項目概述 目標 開發一個能夠實時或近實時識別特定動作的系統,如運動姿勢、表情變化或手勢控制。實現對人體關鍵點的精確追蹤,以便于分析和理解人的動態行為。 技術棧 Intel硬件:可能使用Intel的高性能計算平臺,如Xeon處理器或…

【國潮】國產化系統甲方問題總結

持續更新。。。。。。。。。。。。。。。 【國潮】國產化系統甲方問題總結 1. 安全性問題2. 可靠性和穩定性問題3. 性能問題4. 符合軍事標準問題5. 兼容性和集成問題6. 維護和升級問題7. 項目管理問題8. 隱私和合規性問題9. 災難恢復和備份問題10. 技術支持和培訓問題 引言&am…

zookeeper的shell操作

一:啟動拽庫的shell命令行 zkCli.sh -server localhost:2181 退出:quit 二:查詢所有的命令 help 三:查詢對應的節點 --查詢zk上的根節點 ls / ls /zookeeper 四:查詢對應節點的節點信息(節點的元數據&a…

[AI 大模型] 阿里巴巴 通義千問

文章目錄 [AI 大模型] 阿里巴巴 通義千問簡介模型架構發展新技術和優勢示例 [AI 大模型] 阿里巴巴 通義千問 簡介 阿里巴巴的 通義千問 是由阿里云開發的一款大型語言模型,旨在為用戶提供高效、智能的自然語言處理服務。 通義千問能夠處理多種語言輸入&#xff0c…

c# Bitmap

在C#中,Bitmap 類是一個表示位圖圖像的類,它屬于 System.Drawing 命名空間。Bitmap 類是從 Image 類派生的,因此它繼承了 Image 類的所有屬性和方法,并添加了一些專門用于處理位圖的功能。 以下是關于 Bitmap 類的一些基本信息和…

Supervisord控制進程舉例

當使用Supervisord來控制進程時,通常會配置一個或多個進程組(program group),每個進程組負責監控和管理一個特定的進程或應用程序。以下是一個具體的例子: 假設我們有一個簡單的 Flask 應用程序,我們希望使…

免殺筆記 ---> Session0--DLL注入

剛更新完上一篇,于是我們就馬不停蹄的去跟新下一篇!! Session0注入 :: 各位看官如果覺得還不錯的可以給博主點個贊💕💕 這次,我把這個腳本直接傳到Github上了 喜歡的師傅點個Star噢…

深入理解JS中的防抖節流

在Web開發中,防抖(Debouncing)和節流(Throttling)是兩種常用的優化技術,用于提高頁面性能和用戶體驗。它們通過限制函數執行的頻率來減少計算資源的消耗,尤其是在處理頻繁觸發的事件時,如窗口大小調整、滾動、鍵盤輸入等。 1、防抖(Debouncing) 防抖技術的核心思想是…

風景園林工程設計乙級資質業績要求案例分析

項目數量與規模 數量要求:企業需要提供一定數量的已完成風景園林設計項目案例,這個數量可能依據具體政策而有所不同,但通常需要完成多個項目以展示設計團隊的綜合能力。 規模要求:項目規模需達到乙級資質標準所規定的級別&#…

【C++報錯已解決】Dangling Pointer

🎬 鴿芷咕:個人主頁 🔥 個人專欄: 《C干貨基地》《粉絲福利》 ??生活的理想,就是為了理想的生活! 文章目錄 引言一、問題描述1.1 報錯示例1.2 報錯分析1.3 解決思路 二、解決方法2.1 方法一:使用智能指針2.2 方法二…

本地部署,GFPGAN: 實用的面部修復算法

目錄 什么是 GFPGAN? 技術原理 主要功能 應用場景 本地安裝 運行結果 結語 Tip: 在圖像處理和計算機視覺領域,面部修復是一個重要且具有挑戰性的研究方向。隨著深度學習技術的不斷進步,許多新的算法被提出,用于…

C# 根據日期對mysql數據庫數據篩選的一些操作函數

在C#中,根據日期篩選MySQL數據庫中的數據是一個常見的操作。以下是一些基于日期的數據篩選操作函數示例: 1. 篩選特定日期的數據 public List<YourDataType> GetDataBySpecificDate(DateTime specificDate) {List<YourDataType> dataList = new List<YourDa…

Python8:線程和進程

1.并發和并行 并發&#xff1a;在邏輯上具備同時處理多個任務的能力&#xff08;其實每時刻只有一個任務&#xff09; 并行&#xff1a;物理上在同一時刻執行多個并發任務 2.線程與進程 一個進程管多個線程&#xff0c;一個進程至少有一個線程 python多線程是假的&#xf…

【漏洞復現】docassemble——interview——任意文件讀取

聲明&#xff1a;本文檔或演示材料僅供教育和教學目的使用&#xff0c;任何個人或組織使用本文檔中的信息進行非法活動&#xff0c;均與本文檔的作者或發布者無關。 文章目錄 漏洞描述漏洞復現測試工具 漏洞描述 docassemble 是一款強大的開源工具&#xff0c;它讓自動化生成和…