【深度學習】Transformer簡介

?

近年來,Transformer模型在自然語言處理(NLP)領域中橫掃千軍,以BERT、GPT為代表的模型屢屢屠榜,目前已經成為了該領域的標準模型。同時,在計算機視覺等領域中,Transformer模型也逐漸得到了重視,越來越多的研究工作開始將這類模型引入到算法中。本文基于2017年Google發表的論文,介紹Transformer模型的原理。

?

一、為什么要引入Transformer?

最早提出的Transformer模型[1]針對的是自然語言翻譯任務。在自然語言翻譯任務中,既需要理解每個單詞的含義,也需要利用單詞的前后順序關系。常用的自然語言模型是循環神經網絡(Recurrent Neural Network,RNN)和卷積神經網絡(Convolutional Neural Network,CNN)。

其中,循環神經網絡模型每次讀入一個單詞,并基于節點當前的隱含狀態和輸入的單詞,更新節點的隱含狀態。從上述過程來看,循環神經網絡在處理一個句子的時候,只能一個單詞一個單詞按順序處理,必須要處理完前邊的單詞才能開始處理后邊的單詞,因此循環神經網絡的計算都是串行化的,模型訓練、模型推理的時間都會比較長。

另一方面,卷積神經網絡把整個句子看成一個1*D維的向量(其中D是每個單詞的特征的維度),通過一維的卷積對句子進行處理。在卷積神經網絡中,通過堆疊卷積層,逐漸增加每一層卷積層的感受野大小,從而實現對上下文的利用。由于卷積神經網絡對句子中的每一塊并不加以區分,可以并行處理句子中的每一塊,因此在計算時,可以很方便地將每一層的計算過程并行化,計算效率高于循環神經網絡。但是卷積神經網絡模型中,為了建立兩個單詞之間的關聯,所需的網絡深度與單詞在句子中的距離正相關,因此通過卷積神經網絡模型學習句子中長距離的關聯關系的難度很大。

Transformer模型的提出就是為了解決上述兩個問題:(1)可以高效計算;(2)可以準確學習到句子中長距離的關聯關系。

?

二、Transformer模型介紹

如下圖所示,Transformer模型采用經典的encoder-decoder結構。其中,待翻譯的句子作為encoder的輸入,經過encoder編碼后,再輸入到decoder中;decoder除了接收encoder的輸出外,還需要當前step之前已經得到的輸出單詞;整個模型的最終輸出是翻譯的句子中下一個單詞的概率。

【論文閱讀】Transformer簡介

現有方法中,encoder和decoder通常都是通過多層循環神經網絡或卷積實現,而Transformer中則提出了一種新的、完全基于注意力的網絡layer,用來替代現有的模塊,如下圖所示。圖中encoder、decoder的結構類似,都是由一種模塊堆疊N次構成的,但是encoder和decoder中使用的模塊有一定的區別。具體來說,encoder中的基本模塊包含多頭注意力操作(Multi-Head Attention)、多層感知機(Feed Forward)兩部分;decoder中的基本模塊包含2個不同的多頭注意力操作(Masked Multi-Head Attention和Multi-Head Attention)、多層感知機(Feed Forward)三部分。

【論文閱讀】Transformer簡介

在上述這些操作中,最核心的部分是三種不同的Multi-Head Attention操作,該操作的過程如下圖所示,可以簡單理解為對輸入feature的一種變換,通過特征之間的關系(attention),增強或減弱特征中不同維度的強度。模型中使用的三種注意力模塊如下:

  • Encoder中的Multi-Head Attention:encoder中的multi-head attention的輸入只包含編碼器中上一個基本模塊的輸出,使用上一個基本模塊的輸出計算注意力,并調整上一個基本模塊的輸出,因此是一種“自注意力”機制;
  • Decoder中的Masked Multi-Head Attention:Transformer中,decoder的輸入是完整的目標句子,為了避免模型利用還沒有處理到的單詞,因此在decoder的基礎模塊中,在“自注意力”機制中加入了mask,從而屏蔽掉不應該被模型利用的信息;
  • Decoder中的Multi-Head Attention:decoder中,除了自注意力外,還要利用encoder的輸出信息才能正確進行文本翻譯,因此decoder中相比encoder多使用了一個multi-head attention來融合輸入語句和已經翻譯出來的句子的信息。這個multi-head attention結合使用decoder中前一層“自注意力”的輸出和encoder的輸出計算注意力,然后對encoder的輸出進行變換,以變換后的encoder輸出作為輸出結果,相當于根據當前的翻譯結果和原始的句子來確定后續應該關注的單詞。

【論文閱讀】Transformer簡介

除核心的Multi-Head Attention操作外,作者還采用了位置編碼、殘差連接、層歸一化、dropout等操作將輸入、注意力、多層感知機連接起來,從而構成了完整的Transformer模型。通過修改encoder和decoder中堆疊的基本模塊數量、多層感知機節點數、Multi-Head Attention中的head數量等參數,即可得到BERT、GPT-3等不同的模型結構。

?

三、實驗效果

實驗中,作者在newstest2013和newstest2014上訓練模型,并測試了模型在英語-德語、英語-法語之間的翻譯精度。實驗結果顯示,Transformer模型達到了State-of-the-art精度,并且在訓練開銷上比已有方法低一到兩個數量級,展現出了該方法的優越性。

與已有方法的對比實驗,顯示出更高的BLEU得分和更低的計算開銷:

【論文閱讀】Transformer簡介

模塊有效性驗證,模型中每個單次的特征維度、多頭注意力中頭的數量、基本模塊堆疊數量等參數對模型的精度有明顯的影響:

【論文閱讀】Transformer簡介

參考文獻

[1] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, ?ukasz Kaiser, Illia Polosukhin. Attention Is All You Need. NIPS 2017.

?

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

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

相關文章

【PythonGIS】基于Python面矢量轉換線矢量

今天有些不一樣,發這篇文章并不是項目需要。單純的想到有這個功能沒使用Python實現,所以就去研究了一下,第一時間就和大家分享。如何使用Python的osgeo庫實現面矢量數據與線矢量數據的互相轉換。 一、導入所需庫 import os from osgeo impor…

論文速讀《DeepFusion: Lidar-Camera Deep Fusion for Multi-Modal 3D Object Detection》

概括主要內容 文章《DeepFusion: Lidar-Camera Deep Fusion for Multi-Modal 3D Object Detection》提出了兩種創新技術,以改善多模態3D檢測模型的性能,通過更有效地融合相機和激光雷達傳感器數據來提高對象檢測的準確性,尤其是在行人檢測方面…

自動化提交git

1.前要 這里只是講解如何在Windows上創建自動化腳本/程序來達到自動pull、commit、push,減少冗余的倉庫更新工作,避免在多平臺下合作造成版本沖突等。 2.原理 使用Windows下默認的cmd/bat腳本編寫代碼。 只需要在網絡上查詢一些相關的語法&#xff0…

2023亞太杯數學建模C題思路 - 我國新能源電動汽車的發展趨勢

1 賽題 問題C 我國新能源電動汽車的發展趨勢 新能源汽車是指以先進技術原理、新技術、新結構的非常規汽車燃料為動力來源( 非常規汽車燃料指汽油、柴油以外的燃料),將先進技術進行汽車動力控制和驅動相結 合的汽車。新能源汽車主要包括四種類型&#x…

【計算思維】藍橋杯STEMA 科技素養考試真題及解析 6

1、明明買了一個掃地機器人,可以通過以下指令控制機器人運動: F:向前走 10 個單位長度 L:原地左轉 90 度 R:原地右轉 90 度 機器人初始方向向右,需要按順序執行以下那條指令,才能打掃完下圖中的道路 A、F-L-F-R-F-F-R-F-L-F B、F-R-F-L-F-F…

h5如何使用navigateBack回退到微信小程序頁面并攜帶參數

前言 在h5中使用navigateBack回退到微信小程序頁面很常見,但是有一種交互需要在回退之后的頁面可以得到通知,拿到標識之后,進行某些操作,這樣的話,由于微信官方并沒有直接提供這樣的api,就需要我們開動腦筋…

視頻剪輯有妙招:批量置入封面,輕松提升視頻效果

隨著社交媒體的興起,視頻已經成為分享和交流的重要方式。無論是專業的內容創作者還是普通的社交媒體用戶,都要在視頻剪輯上下一番功夫,才能讓視頻更具吸引力。而一個吸引的封面往往能在一瞬間抓住眼球,提高點擊率。還在因如何選擇…

【SpringBoot】Redisson 分布式鎖注解和 @Transactional 注解一起使用問題

一、前言 平時使用切面去加分布式鎖,是先開啟事務還是先嘗試獲得鎖?這兩者有啥區別? 業務中怎么控制切面的順序?切面的順序對事務的影響怎么避免? 下面程序分析: OverrideTransactionalpublic ReceiveH5…

uni-app - 彈出框

目錄 1.基本介紹 2.原生uinapp 通過uni.showActionSheet實現 3.使用組件 Popup 彈出層 ③效果展示 1.基本介紹 彈出框讓我們在需要時在屏幕底部彈出一個菜單,它通常用于在各種應用程序中進行選擇操作。Uniapp為我們提供了基本的底部彈出框組件,但它也有…

OpenSearch開發環境安裝Docker和Docker-Compose兩種方式

文章目錄 簡介常用請求創建映射寫入數據查詢數據其他 安裝Docker方式安裝OpenSearch安裝OpenSearchDashboard Docker-Compose方式Docker-Compose安裝1.設置主機環境2.下載docker-compose.yml文件3.啟動docker-compose4.驗證 問題問題1:IPv4 forwarding is disabled.…

如何搭建Zblog網站并通過內網穿透將個人博客發布到公網

文章目錄 1. 前言2. Z-blog網站搭建2.1 XAMPP環境設置2.2 Z-blog安裝2.3 Z-blog網頁測試2.4 Cpolar安裝和注冊 3. 本地網頁發布3.1. Cpolar云端設置3.2 Cpolar本地設置 4. 公網訪問測試5. 結語 1. 前言 想要成為一個合格的技術宅或程序員,自己搭建網站制作網頁是繞…

Altium Designer學習筆記11

畫一個LED的封裝: 使用這個SMD5050的封裝。 我們先看下這個芯片的功能說明: 5050貼片式發光二極管: XL-5050 是單線傳輸的三通道LED驅動控制芯片,采用的是單極性歸零碼協議。 數據再生模塊的功能,自動將級聯輸出的數…

CSGO搬磚干貨,全網最詳細教學!

CSGO游戲搬磚全套操作流程及注意事項(第一課) 在電競游戲中,CSGO(Counter-Strike: Global Offensive)被廣大玩家譽為經典之作。然而,除了在游戲中展現個人實力和團隊合作外,有些玩家還將CSGO作為…

Java之API(上)

前言: 這一次內容主要是圍繞Java開發中的一些常用類,然后主要是去學習這些類里面的方法。 一、高級API: (1)介紹:API指的是應用程序編程接口,API可以讓編程變得更加方便簡單。Java也提供了大量API供程序開發者使用&…

如何使用Google My Business來提升您的內容和SEO?

如果您的企業有實體店,那么使用Google My Business(GMB)來改善您的本地SEO并增強您的在線形象至關重要。Google My Business (GMB) 是 Google 提供的補充工具,使企業能夠控制其在 Google 搜索和地圖上的數字…

大數據基礎設施搭建 - Flume

文章目錄 一、上傳壓縮包二、解壓壓縮包三、監控本地文件(file to kafka)3.1 編寫配置文件3.2 自定義攔截器3.2.1 開發攔截器jar包(1)創建maven項目(2)開發攔截器類(3)開發pom文件&a…

【數字化轉型方法論讀書筆記】-數據中臺角色解讀

一千個讀者,就有一千個哈姆雷特。同樣,數據中臺對于企業內部不同角色的價值也不同,下面分別從董事長、CEO、 CTO/CIO、IT 架構師、數據分析師這 5 個角色的視角詳細解讀數據中臺。 1、董事長視角下的數據中臺 在數字經濟時代,企業…

RTT打印在分區跳轉后無法打印問題

場景: RTT打印僅占用JLINK的帶寬,比串口傳輸更快更簡潔,同時RTT可以使用jscope對代碼里面的變量實時繪圖顯示波形,而采用串口打印波形無法實時打印。同時可以保存原始數據到本地進行分析,RTT在各方面完勝串口。 問題描…

PTA-城市間緊急救援

作為一個城市的應急救援隊伍的負責人,你有一張特殊的全國地圖。在地圖上顯示有多個分散的城市和一些連接城市的快速道路。每個城市的救援隊數量和每一條連接兩個城市的快速道路長度都標在地圖上。當其他城市有緊急求助電話給你的時候,你的任務是帶領你的…

采樣概率 假設檢驗推導數組最大值的方法與可行性

當需要尋找大量數據中的最大值的時候,比如從 2G 個 float16 中尋找其中的最大值,是一件耗時的操作。 現計劃通過小樣本來發掘數據的規律,對最大值進行預測。 方案: step1,從2G個float16 中截取64段float16&#xff…