transformer模型結構|李宏毅機器學習21年

來源:https://www.bilibili.com/video/BV1Bb4y1L7FT?p=4&vd_source=f66cebc7ed6819c67fca9b4fa3785d39

文章目錄

  • 概述
  • seq2seq
  • transformer
    • Encoder
    • Decoder
      • Autoregressive(AT)
        • self-attention與masked-self attention
        • model如何決定輸出的長度
        • Cross-attention——連接encoder和decoder的橋梁
        • Training
        • 評估指標的優化
      • Non-autoregressive(NAT)

概述

transformer就是一個seq2seq的model。
Input一個sequence,output的長度由機器自己決定。

seq2seq

在這里插入圖片描述

transformer

在這里插入圖片描述

Encoder

輸入一排向量,輸出同樣長度的另一排向量。
每一個Block做的事情是好幾個layer做的事情。
每個block做的事(簡化版):
在這里插入圖片描述
完整版:
在這里插入圖片描述
位置的資訊
Bert里會用到同樣的架構:
在這里插入圖片描述

Decoder

Autoregressive(AT)

在這里插入圖片描述
在這里插入圖片描述
decoder看到的輸入是前一個階段自己的輸出。
那么這樣會不會導致error propagation(一步錯步步錯)?
不會。
exposure bias:test時decoder可能會看到錯誤的輸入,而train時decoder看到的是完全正確的,即它在訓練時完全沒有看過錯誤的東西。
解決方法:scheduled sampling:訓練時給decoder的輸入加一些錯誤的東西。

decoder與encoder的差別

self-attention與masked-self attention

self-attention
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
為什么要masked?
因為在encoder里面,input是同時輸進去的;而decoder里面,input是一個一個輸進去的。

model如何決定輸出的長度

加上一個Stop Token
除了所有的中文字、< begin >之外,還需要準備一個< end >,不過通常< begin >和< end >會用同一個符號,因為他們分別只會在開頭和結尾出現。

Cross-attention——連接encoder和decoder的橋梁

在這里插入圖片描述
在這里插入圖片描述
k、v、q如何得出:self-attention|李宏毅機器學習21年

各式各樣的連接方式都可以:
在這里插入圖片描述

Training

前面的部分都是,假設model訓練好以后,它是怎么做inference的。
訓練資料:輸入-輸出對
在這里插入圖片描述
Teacher Forcing:在decoder訓練的時候輸入的是正確答案
在這里插入圖片描述

交叉熵(Cross Entropy)是衡量兩個概率分布之間差異的一種度量方式,在機器學習中常用作分類問題的損失函數。假設我們有兩個概率分布的向量,一個是真實的概率分布 P P P,一個是預測的概率分布 Q Q Q,那么交叉熵可以表示為:
H ( P , Q ) = ? ∑ i P ( i ) log ? Q ( i ) H(P, Q) = -\sum_{i} P(i) \log Q(i) H(P,Q)=?i?P(i)logQ(i)

舉例:

  • 真實概率分布 P = [ 0.6 , 0.4 ] P = [0.6, 0.4] P=[0.6,0.4]
  • 預測概率分布 Q = [ 0.8 , 0.2 ] Q = [0.8, 0.2] Q=[0.8,0.2]
    計算這兩個向量的交叉熵如下:
    H ( P , Q ) = ? ( 0.6 × log ? ( 0.8 ) + 0.4 × log ? ( 0.2 ) ) = 0.7777 H(P, Q) = - (0.6 \times \log(0.8) + 0.4 \times \log(0.2)) = 0.7777 H(P,Q)=?(0.6×log(0.8)+0.4×log(0.2))=0.7777
    所以這兩個向量的交叉熵大約是 0.7777 0.7777 0.7777
    注意,由于交叉熵是衡量兩個分布之間的差異,因此 P P P Q Q Q必須是有效的概率分布,即 P P P Q Q Q中的所有元素都必須是非負的,并且它們的和為 1。在實際應用中,為了防止對數函數中出現對零取對數的情況,通常會給 Q Q Q 中的元素加上一個很小的正數,比如 1 e ? 9 1e-9 1e?9
評估指標的優化

訓練時是min cross entropy(字與字之間),測試時是max BLEU score(句子與句子之間),這兩個指標可以等價嗎?
不見得。
訓練的時候都是一個字一個字出來的,怎么在訓練的時候就用BLEU score:
遇到無法optimize的loss fuction,用RL硬train一發就可以。
把fuction當做是RL的reward,把decoder當做agent。(比較難)
在這里插入圖片描述

BLEU(Bilingual Evaluation Understudy)分數是一種常用于評估機器翻譯質量的指標,它通過比較機器翻譯的文本和一個或多個參考翻譯來計算分數。BLEU分數考慮了準確性(通過n-gram匹配)和流暢性(通過句子長度的懲罰)。

BLEU分數的計算包括以下幾個步驟:

  1. n-gram精確度:對于每個n-gram(n可以是1, 2, 3, …),計算機器翻譯中n-gram出現的次數,并與參考翻譯中的n-gram出現次數進行比較。對于每個n-gram,計算其精確度(precision)。

  2. 修剪(Clipping):如果機器翻譯中的n-gram出現次數超過參考翻譯中的最大出現次數,將其修剪至該最大值。

  3. 加權平均:對于不同的n-gram精確度,計算它們的幾何平均值,并對結果取自然對數。

  4. 句子長度懲罰(Brevity Penalty, BP):如果機器翻譯的長度小于參考翻譯的長度,將施加一個懲罰以避免過短的翻譯。

計算公式:

BLEU = BP ? exp ? ( ∑ n = 1 N w n log ? p n ) \text{BLEU} = \text{BP} \cdot \exp\left(\sum_{n=1}^{N} w_n \log p_n\right) BLEU=BP?exp(n=1N?wn?logpn?)

其中:

  • p n p_n pn? 是第n個n-gram的精確度。
  • w n w_n wn? 是第n個n-gram的權重,通常取為 1 / N 1/N 1/N,使得所有n-gram權重之和為1。
  • BP \text{BP} BP 是句子長度懲罰,計算方式為:

BP = { 1 如果機器翻譯的長度 > 參考翻譯的長度 exp ? ( 1 ? 參考翻譯的長度 機器翻譯的長度 ) 其他情況 \text{BP} = \begin{cases} 1 & \text{如果機器翻譯的長度} > \text{參考翻譯的長度} \\ \exp\left(1 - \frac{\text{參考翻譯的長度}}{\text{機器翻譯的長度}}\right) & \text{其他情況} \end{cases} BP={1exp(1?機器翻譯的長度參考翻譯的長度?)?如果機器翻譯的長度>參考翻譯的長度其他情況?

舉例:

本例中機器翻譯(MT)與參考翻譯(Ref)不完全匹配,并且將計算最多包括2-gram的BLEU分數。

假設機器翻譯(MT)為:“the black cat sat on the mat”,參考翻譯(Ref)為:“the cat sat on the mat”。我們計算1-gram和2-gram的BLEU分數(即N=2)。

  1. 對于1-gram:

    • MT中的詞:“the”, “black”, “cat”, “sat”, “on”, “the”, “mat”
    • Ref中的詞:“the”, “cat”, “sat”, “on”, “the”, “mat”
    • MT中每個詞的出現次數與Ref中相同或更多的詞有:“the” (2次), “cat” (1次), “sat” (1次), “on” (1次), “mat” (1次)
    • 因此,1-gram精確度 p 1 = 6 7 p_1 = \frac{6}{7} p1?=76?(因為MT中有7個詞,其中6個詞匹配到了Ref)
  2. 對于2-gram:

    • MT中的2-gram:“the black”, “black cat”, “cat sat”, “sat on”, “on the”, “the mat”
    • Ref中的2-gram:“the cat”, “cat sat”, “sat on”, “on the mat”
    • MT中每個2-gram的出現次數與Ref中相同或更多的2-gram有:“cat sat” (1次), “sat on” (1次), “on the” (1次)
    • 因此,2-gram精確度 p 2 = 3 6 p_2 = \frac{3}{6} p2?=63?(因為MT中有6個2-gram,其中3個匹配到了Ref)
  3. 長度懲罰(BP):

    • MT的長度為7,Ref的長度為6。
    • 因為MT的長度大于Ref的長度,所以沒有長度懲罰, BP = 1 \text{BP} = 1 BP=1
  4. 加權平均:

    • 假設我們給1-gram和2-gram相同的權重,即 w 1 = w 2 = 0.5 w_1 = w_2 = 0.5 w1?=w2?=0.5
    • 加權平均為 exp ? ( 0.5 ? log ? p 1 + 0.5 ? log ? p 2 ) \exp(0.5 \cdot \log p_1 + 0.5 \cdot \log p_2) exp(0.5?logp1?+0.5?logp2?)

現在我們可以計算BLEU分數:

BLEU = BP ? exp ? ( 0.5 ? log ? 6 7 + 0.5 ? log ? 3 6 ) \text{BLEU} = \text{BP} \cdot \exp\left(0.5 \cdot \log \frac{6}{7} + 0.5 \cdot \log \frac{3}{6}\right) BLEU=BP?exp(0.5?log76?+0.5?log63?)

計算具體數值:

BLEU = 1 ? exp ? ( 0.5 ? log ? 6 7 + 0.5 ? log ? 1 2 ) \text{BLEU} = 1 \cdot \exp\left(0.5 \cdot \log \frac{6}{7} + 0.5 \cdot \log \frac{1}{2}\right) BLEU=1?exp(0.5?log76?+0.5?log21?)
BLEU ≈ exp ? ( ? 0.42365 ) ≈ 0.65468 \text{BLEU} \approx \exp\left(-0.42365\right) \approx 0.65468 BLEUexp(?0.42365)0.65468
因此,BLEU分數大約為0.65468。這個分數反映了機器翻譯與參考翻譯在1-gram和2-gram層面上的部分匹配程度。在實際應用中,BLEU分數通常會乘以100,因此這個分數可能會表示為65.468。

Non-autoregressive(NAT)

常用于語音合成領域,因為可以:輸出長度 * 2 -> 語速 * 2
在這里插入圖片描述

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

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

相關文章

【親測有效】支持橫豎屏 微信小程序video禁止進度條拖動,微信小程序遮罩進度條,

背景&#xff1a;部分課程禁止客戶拖動視頻進度條直至播放結束 紅色是遮罩區域遮罩區域 實際遮罩效果&#xff08;有一個很淺的陰影區域&#xff09; 實現代碼 .wxml文件 <video enable-progress-gesture"false" ><cover-view class"cover">…

基于深度學習的yolov7植物病蟲害識別及防治系統

歡迎大家點贊、收藏、關注、評論啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代碼。 文章目錄 一項目簡介簡介YOLOv7 系統特性工作流程 二、功能三、系統四. 總結 一項目簡介 # YOLOv7植物病蟲害識別及防治系統介紹 簡介 該系統基于深度學習技術&#xff0c;采…

Seata配置

參考教程 seata 分布式事務的環境搭建與使用 Seata 1.4.0 nacos配置和使用&#xff0c;超詳細 Seata 1.4.2 的安裝 Nacos的配置和使用 官網下載地址 本文以v1.4.1為例 1.數據庫及表的創建 創建seata數據庫&#xff0c;創建以下表&#xff08;右鍵連接-》新建數據庫seata-》…

kubeadm搭建1.20.7版本k8s

資源 服務器名稱ip地址服務master1&#xff08;2C/4G&#xff0c;cpu核心數要求大于2&#xff09;192.168.100.10docker、kubeadm、kubelet、kubectl、flannelnode01&#xff08;2C/2G&#xff09;192.168.100.30docker、kubeadm、kubelet、kubectl、flannelnode02&#xff08…

windows系統proteus中Ardunio Mega 2560和虛擬機上Ubuntu系統CuteCom進行串口通信

在文章利用proteus實現串口助手和arduino Mega 2560的串口通信-CSDN博客 中&#xff0c;實現了windows系統的proteus中Ardunio Mega 2560和SSCOM通過虛擬串口進行通信。虛擬串口的連接示意圖如下圖所示。 在文章windows系統和虛擬機上ubuntu系統通過虛擬串口進行通信-CSDN博客…

3DMAX關于顯示驅動問題的解決方法大全

3DMAX與顯卡驅動有關的問題主要有以下幾種情況&#xff1a; 1.3DMAX啟動彈出這樣的界面&#xff1a; 2.主工具欄按鈕不顯示&#xff0c;或者鼠標移上去才顯示&#xff08;刷新問題&#xff09;。 3&#xff0e;視口菜單不顯示或顯示不全。 問題分析&#xff1a; 首先&#x…

安全基礎從0開始

文章目錄 常見名詞小實戰 網站搭建小實戰抓包模擬器狀態碼返回值網站搭建WEB應用安全漏洞 數據包&封包&信息收集**參考點** 常見名詞 前后端&#xff0c;POC/EXP&#xff0c;Payload/Shellcode&#xff0c;后門/Webshell&#xff0c;木馬/病毒&#xff0c; 反彈&…

ReactNative0.73發布,架構升級與更好的調試體驗

這次更新包含了多種提升開發體驗的改進&#xff0c;包括&#xff1a; 更流暢的調試體驗: 通過 Hermes 引擎調試支持、控制臺日志歷史記錄和實驗性調試器&#xff0c;讓調試過程更加高效順暢。穩定的符號鏈接支持: 簡化您的開發工作流程&#xff0c;輕松將文件或目錄鏈接到其他…

react表單-受控

react - 表單組件 受控組件 表單項中的值&#xff08;value/checked&#xff09;受到類組件state中數據來控制&#xff0c;同時還需要綁定一個onChange事件來完成對state中數據的修改 import React, { Component } from react;class AppInput extends Component {// 設置受控組…

基于ssm應急資源管理系統論文

摘 要 現代經濟快節奏發展以及不斷完善升級的信息化技術&#xff0c;讓傳統數據信息的管理升級為軟件存儲&#xff0c;歸納&#xff0c;集中處理數據信息的管理方式。本應急資源管理系統就是在這樣的大環境下誕生&#xff0c;其可以幫助管理者在短時間內處理完畢龐大的數據信息…

排序算法之七:歸并排序(遞歸)

基本思想 基本思想&#xff1a; 歸并排序&#xff08;MERGE-SORT&#xff09;是建立在歸并操作上的一種有效的排序算法,該算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一個非常典型的應用。將已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1…

C++:this指針

目錄 前言 成員函數返回this指向的對象本身時&#xff0c;為什是返回引用類型&#xff1f; 成員函數返回this對象本身時&#xff0c;內部通常會通過拷貝構造函數來創建一個臨時對象&#xff1f; 總結 前言 c通過提供特殊的對象指針&#xff0c;this指針 指向被調用的成員函…

openssl 常用命令 pkcs12

openssl pkcs12 openssl pkcs12 官方文檔 1. 描述 The pkcs12 command allows PKCS#12 files (sometimes referred to as PFX files) to be created and parsed. PKCS#12 files are used by several programs including Netscape, MSIE and MS Outlook. pkcs12 命令是用來創…

Nodejs 第二十二章(腳手架)

編寫自己的腳手架 那什么是腳手架&#xff1f; 例如:vue-cli Angular CLI Create React App 編寫自己的腳手架是指創建一個定制化的工具&#xff0c;用于快速生成項目的基礎結構和代碼文件&#xff0c;以及提供一些常用的命令和功能。通過編寫自己的腳手架&#xff0c;你可以…

Linux和Windows環境下如何使用gitee?

1. Linux 1.1 創建遠程倉庫 1.2 安裝git sudo yum install -y git 1.3 克隆遠程倉庫到本地 git clone 地址 1.4 將文件添加到git的暫存區&#xff08;git三板斧之add&#xff09; git add 文件名 # 將指定文件添加到git的暫存區 git add . # 添加新文件和修改過的…

深入理解HTTP狀態碼及其在Web開發中的應用

在Web開發中&#xff0c;我們經常需要與服務器進行交互&#xff0c;以獲取或發送數據。為了實現這一目標&#xff0c;我們使用HTTP協議。HTTP協議是一種無狀態的、應用層的協議&#xff0c;它定義了客戶端和服務器之間的通信方式。在HTTP協議中&#xff0c;有五種常用的HTTP狀態…

Python高級算法——動態規劃

Python中的動態規劃&#xff1a;高級算法解析 動態規劃是一種解決多階段決策問題的數學方法&#xff0c;常用于優化問題。它通過將問題分解為子問題&#xff0c;并在解決這些子問題的基礎上構建全局最優解。在本文中&#xff0c;我們將深入講解Python中的動態規劃&#xff0c;…

vs2017+qt5.14.2遇到的問題

1、在安裝qt插件后&#xff0c;導入pro文件時&#xff0c;報 msvc-version.conf loaded but QMAKE_MSC_VER isn’t set 修改E:\Qt\Qt5.14.2\5.14.2\msvc2017_64\mkspecs\common\msvc-version.conf文件中添加

RabbitMQ學習筆記10 綜合實戰 實現新商家規定時間內上架商品檢查

配置文件&#xff1a; 記住添加這個。 加上這段代碼&#xff0c;可以自動創建隊列和交換機以及綁定關系。 我們看到了我們創建的死信交換機和普通隊列。 我們可以看到我們隊列下面綁定的交換機。 我們創建一個controller包進行測試: 啟動&#xff1a; 過一段時間會變成死信隊列…

elasticsearch|大數據|elasticsearch的api部分實戰操作以及用戶和密碼的管理

一&#xff0c; 前言 本文主要內容是通過elasticsearch的api來進行一些集群的管理和信息查詢工作&#xff0c;以及elasticsearch用戶的增刪改查和密碼的重設以及重置如何操作 接上文&#xff1a;elasticsearch|大數據|elasticsearch低版本集群的部署安裝和安全增強---密碼設…