Transformer從零詳細解讀——DASOU講AI

1. 從全局角度概括Transformer

transformer的任務是什么?

進一步細化

進一步細化,注意:每個encoder結構相同,參數不同;decoder同理

原論文中的圖如下:

2.Encoder

2.1 輸入部分

(1)Embedding:

將輸入的離散符號(如單詞或字符)轉換為連續向量表示的關鍵步驟。

(2)位置編碼:

為什么需要位置編碼?

與遞歸神經網絡(RNN)和卷積神經網絡(CNN)不同,這些傳統模型天然地對輸入序列的順序敏感,因為它們通過連續處理或滑動窗口的方式處理數據。

然而,自注意力機制在計算時會同時考慮序列中所有元素之間的關系,這意味著它本身并不具備捕捉元素相對或絕對位置的能力。在原始的 Transformer 模型中,位置編碼是通過正弦和余弦函數來實現的。

2.2?注意力機制

詳細講解見下面博客

https://blog.csdn.net/WBingJ/article/details/144832299?spm=1001.2014.3001.5501

原因:傳統的序列到序列(Seq2Seq)模型使用一個固定大小的上下文向量來表示整個輸入序列,這在處理長序列時可能會導致信息丟失。注意力機制通過允許模型在每個時間步關注輸入序列的不同部分,解決了這一問題。

作用:允許模型在處理輸入序列時,能夠有選擇性地聚焦于最相關的部分,而不是對所有部分一視同仁

  • 具體來說,自注意力機制通過計算查詢(Query)、鍵(Key)和值(Value)之間的相似度來生成注意力權重。

殘差

  • 新的表示?z1z1??和?z2z2??通過殘差連接與原始輸入相加,并經過歸一化層。
  • 歸一化后的結果再次進入前饋神經網絡。

為什么使用殘差:
  • 緩解梯度消失/爆炸問題:在非常深的神經網絡中,隨著層數的增加,反向傳播過程中梯度會逐漸變小(梯度消失)或變得非常大(梯度爆炸)。這使得網絡難以收斂,甚至無法正常訓練。殘差連接通過引入直接路徑來傳遞信息,使得梯度可以更容易地從輸出層反向傳播到輸入層。
具體步驟
  1. 輸入向量 xx:

    • 輸入向量?xx?是殘差塊的初始輸入。
  2. 前饋網絡 F(x)F(x):

    • 輸入?x?通過第一個權重層和 ReLU 激活函數。
    • 輸出再通過第二個權重層和 ReLU 激活函數。
  3. 殘差連接:

    • 將原始輸入?x?與前饋網絡的輸出?z?相加

Layer Normalization

Layer Normalization 是一種用于深度學習模型中的正則化和加速訓練的技術,它通過歸一化每一層的輸入來穩定和加速神經網絡的訓練過程。與 Batch Normalization 不同,Layer Normalization 對每個樣本的所有特征進行歸一化,而不是在小批量(mini-batch)上對每個特征進行歸一化。

2.3 前饋神經網絡

3. Decoder

3.1 多頭注意力機制Mask

為什么需要mask:解碼器中的未來信息屏蔽,在解碼階段,模型不應該看到未來的詞,因為這會導致數據泄露,并且不符合實際應用情境。例如,在機器翻譯任務中,當翻譯一句話時,每個時刻只能基于之前的詞語來預測下一個詞。

3.2 交互層Cross Attention Layer

作用:交互層的核心是交叉注意力機制,它使得解碼器可以在生成每個輸出詞時參考編碼器的所有輸入。

  • 查詢(Query):來自解碼器當前時間步的隱藏狀態。
  • 鍵(Key)和值(Value):由編碼器生成的隱藏狀態提供。
  • 計算注意力分布:通過計算查詢與所有鍵之間的相似度得分,并使用 Softmax 函數將其轉換為概率分布。然后,該分布用于對值進行加權求和,得到最終的上下文向量。

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

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

相關文章

ARM發布Armv9.5架構:邁向更強性能與靈活性的新時代

2024年11月30日,ARM正式發布了其最新的Armv9.5架構,這是Arm技術發展的又一重要里程碑。從表中信息來看,Armv9.5架構的發布標志著該公司的架構系列在性能、靈活性和可擴展性方面取得了進一步突破。本次發布不僅是技術上的提升,更是…

【Python運維】使用Python與Docker進行高效的容器化應用管理

《Python OpenCV從菜鳥到高手》帶你進入圖像處理與計算機視覺的大門! 解鎖Python編程的無限可能:《奇妙的Python》帶你漫游代碼世界 隨著容器化技術的廣泛應用,Docker已成為現代軟件開發與運維中不可或缺的工具。Docker容器提供了一種輕量級、可移植的方式來部署和管理應用…

分布式系統架構6:鏈路追蹤

這是小卷對分布式系統架構學習的第6篇文章,關于鏈路追蹤,之前寫過traceId的相關內容:https://juejin.cn/post/7135611432808218661,不過之前寫的太淺了,且不成系統,只是簡單的理解,今天來捋一下…

Ubuntu 20.04安裝gcc

一、安裝GCC 1.更新包列表 user596785154:~$ sudo apt update2.安裝gcc user596785154:~$ sudo apt install gcc3.驗證安裝 user596785154:~$ gcc --version二 編譯C文件 1.新建workspace文件夾 user596785154:~$ mkdir workspace2.進入workspace文件夾 user596785154:~…

問題:Flask應用中的用戶會話(Session)管理失效

我來分享一個常見的PythonWeb開發問題: 問題:Flask應用中的用戶會話(Session)管理失效 這是一個在Flask開發中經常遇到的問題。當用戶登錄后,有時會話會意外失效,導致用戶需要重復登錄。 解決方案: 1. 首先&#x…

ansible-性能優化

一. 簡述: 搞過運維自動化工具的人,肯定會發現很多運維伙伴們經常用saltstack和ansible做比較,單從執行效率上來說,ansible確實比不上saltstack(ansible使用的是ssh,salt使用的是zeromq消息隊列[暫沒深入了解]),但其實…

.net core 線程鎖,互斥鎖,自旋鎖,混合鎖

線程鎖、互斥鎖、自旋鎖和混合鎖是多線程編程中的重要概念,它們用于控制對共享資源的訪問,避免數據競爭和不一致性。每種鎖有其特定的適用場景和特點。我們來逐一解釋它們,并進行比較。 1. 線程鎖(Thread Lock) 線程…

【ArcGISPro/GeoScenePro】檢查并處理高程數據

數據 https://arcgis.com/sharing/rest/content/items/535efce0e3a04c8790ed7cc7ea96d02d/data 數字高程模型 (DEM) 是一種柵格,可顯示地面或地形的高程。 數字表面模型 (DSM) 是另一種高程柵格,可顯示表面的高度,例如建筑物或樹冠的頂部。 您需要準備 DEM 和 DSM 以供分析…

【C++面向對象——類與對象】Computer類(頭歌實踐教學平臺習題)【合集】

目錄😋 任務描述 相關知識 一、不同訪問屬性成員的訪問方式 1. public成員 2. private成員 3. protected成員 二、觀察構造函數和析構函數的執行過程 1. 構造函數 2. 析構函數 三、學習類的組合使用方法 1. 類的組合概念 2. 實現示例 實驗步驟 測試說明 …

xilinx的高速接口構成原理和連接結構及ibert工具的使用-以k7 GTX為例

一、相關簡介 Xilinx的高速接口稱之為transceivers(高速收發器),這部分的電路是專用電路,供電等都是獨立的,根據速率可以分為GTP/GTX/GTH/GTY/GTM等。 Xilinx的高速接口是QUAD為單位的,沒一個QUAD由一個時鐘COMMON資…

創建型模式4.原型模式

創建型模式 工廠方法模式(Factory Method Pattern)抽象工廠模式(Abstract Factory Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern)單例模式(Singleto…

python學opencv|讀取圖像(二十七)使用time()繪制彈球動畫

【1】引言 前序已經學習了pythonopencv畫線段、圓形、矩形、多邊形和文字的相關操作,具體文章鏈接包括且不限于: python學opencv|讀取圖像(十八)使用cv2.line創造線段_cv2. 畫線段-CSDN博客 python學opencv|讀取圖像&#xff0…

rabbitmq——歲月云實戰筆記

1 rabbitmq設計 生產者并不是直接將消息投遞到queue,而是發送給exchange,由exchange根據type的規則來選定投遞的queue,這樣消息設計在生產者和消費者就實現解耦。 rabbitmq會給沒有type預定義一些exchage,而實際我們卻應該使用自己…

2.系統學習-邏輯回歸

邏輯回歸 前言最大似然估計概率似然函數(likelihood function)最大似然估計 邏輯回歸邏輯回歸的似然函數與梯度 分類問題常用評價指標項目案例拓展內容作業 前言 邏輯回歸與線性回歸均屬于廣義線性模型,區別在于線性回歸用于解決回歸問題,例如身高、銷量…

記錄一次電腦被入侵用來挖礦的過程(Trojan、Miner、Hack、turminoob)

文章目錄 0、總結1、背景2、端倪3、有個微軟的系統更新,就想著更新看看(能否沖掉問題)4、更新沒成功,自動重啟電腦5、風險文件(好家伙命名還挺規范,一看名字就知道出問題了)6、開機有一些注冊表…

行為樹詳解(6)——黑板模式

【動作節點數據共享】 行為樹中需要的參數可以來自游戲中的各個模塊,如果僅需從多個模塊獲取少量參數,那么可以直接在代碼中調用其他模塊的單例繼而層層調用獲取數據。 如果獲取的參數量很大,從架構上看,我們需要通過加一個中間…

阿里云 人工智能與機器學習

阿里云的 人工智能(AI)與機器學習(ML) 服務為企業提供了全面的AI解決方案,幫助用戶在多個行業實現數據智能化,提升決策效率,推動業務創新。阿里云通過先進的技術和豐富的工具,支持用…

如果Adobe 退出中國后怎么辦

最近聽說Adobe要退出中國了?那咱們的設計師們可得好好想想怎么搞到正版軟件了。別急,今天教大家一個超酷的福利——Edu郵箱! Edu郵箱是什么?有什么好處? Edu郵箱就是學校給學生和老師們發的郵箱,一般結尾是.edu。有了…

Structured-Streaming集成Kafka

一、上下文 《Structured-Streaming初識》博客中已經初步認識了Structured-Streaming,Kafka作為目前最流行的一個分布式的實時流消息系統,是眾多實時流處理框架的最優數據源之一。下面我們就跟著官方例子來看看Structured-Streaming是如何集成Kafka的&a…

Spring Boot 項目中集成 Kafka-03

在 Spring Boot 項目中集成 Kafka 有多種方式,適應不同的應用場景和需求。以下將詳細介紹幾種常用的集成方法,包括: 使用 Spring Kafka (KafkaTemplate 和 KafkaListener)使用 Spring Cloud Stream 與 Kafka Binder使用 Spring for Apache K…