工程師轉型算法工程師 深入淺出理解transformer-手搓板

編碼器

以下部分引用臺灣大學李宏毅教授的ppt 自己理解解釋一遍(在youtobe 上可以搜索李宏毅即可)

首先先來看transformer的架構圖

Embedding

我們先從Imput Embedding 跟 OutPutEmbedding 開始,讓我們用 bert 模型來做一個解釋

從huggingface上下載的bert-base-chinese模型中 有一個vocab.txt 放的是這個模型所有能認識的字;

在config.json 中可以看到這個模型最大做事的vocab 是21128?

讓我們來寫個py測試類來驗證編碼的過程

from transformers import AutoTokenizer, BertTokenizer#加載字典和分詞器
token = BertTokenizer.from_pretrained("bert-base-chinese")
# print(token)sents = ["價格在這個地段屬于適中, 附近有早餐店,小飯店, 比較方便,無早也無所"]#批量編碼句子
out = token.batch_encode_plus(batch_text_or_text_pairs=[sents[0]],add_special_tokens=True,#當句子長度大于max_length時,截斷truncation=True,max_length=50,#一律補0到max_length長度padding="max_length",#可取值為tf,pt,np,默認為listreturn_tensors=None,#返回attention_maskreturn_attention_mask=True,return_token_type_ids=True,return_special_tokens_mask=True,#返回length長度return_length=True
)
#input_ids 就是編碼后的詞
#token_type_ids第一個句子和特殊符號的位置是0,第二個句子的位置1()只針對于上下文編碼
#special_tokens_mask 特殊符號的位置是1,其他位置是0
print(out)
for k,v in out.items():print(k,";",v)#解碼文本數據
# print(token.decode(out["input_ids"][0]),token.decode(out["input_ids"][1]))

我們可以看到第一字價是字典的817的位置,第一張圖已經展示了;整個流程簡單的說明了transfomer的Embedding 過程,就是把文字變成?Token的過程

當然后面的GPT3 這些其他的transfomer 都把這個詞典vocab.txt 給隱藏起來了;

多頭注意力機制

第一步 embding完后把相近的token 放到一個多維矩陣里面了;這樣相近的詞就靠的更近了

需要加入位置編碼,這樣矩陣才能感知句子的詞的前后順序

自注意力計算過程:

  • 對每個輸入token,GPT計算三個向量:查詢(Q)、鍵(K)和值(V)
  • 這些向量通過輸入與學習到的權重矩陣相乘得到
  • 然后計算Q與K的點積來確定注意力分數
  • 最后將注意力分數用于對V進行加權求和

?這塊其實理解的不是很好

Feed Forward

前向傳播是模型預測/推理的過程,如圖右側所示。它的步驟非常直觀:

  1. 將數據輸入到神經網絡
  2. 數據在網絡內部經過一系列數學計算
  3. 網絡輸出預測結果

這就像人類的思考過程:接收信息 → 思考處理 → 得出結論。

輸出線性層與Softmax

? ? ? ? 將解碼器輸出轉換為概率分布

完整流程:

在完整的處理流程中:

  1. 輸入經過嵌入層、位置編碼和多層?Transformer 塊處理
  2. 最終的隱藏狀態通過一個線性層(通常是與輸入嵌入共享權重的)
  3. 線性層輸出經過?softmax 函數轉換為概率分布
  4. 這個概率分布就是最終的輸出,表示下一個 token 可能是詞表中每個詞的概率

對于像 GPT 這樣的自回歸模型,在每個位置上模型輸出的是詞表中所有可能 token 的概率分布,最高概率的?token 通常被選為該位置的預測結果。

這些概率是模型對"下一個 token 應該是什么"的預測,是用于實際生成文本或計算損失函數的關鍵輸出。 注意GPT 只使用transformer 中的解碼器部分

更多神經網絡相關的學習筆記見我的github:?https://github.com/caicongyang/ML2LLM/blob/main/LLM/neural_network_fundamentals_simplified.md

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

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

相關文章

軟件工程學概述

一、軟件危機 (一)軟件危機的介紹 1. 基本思想與定義 軟件危機(Software Crisis)是指在計算機軟件的開發和維護過程中所遇到的一系列嚴重問題,這些問題既包括技術層面的挑戰,也涉及管理層面的困境。其核心…

【ArcGIS Pro微課1000例】0068:Pro原來可以制作演示文稿(PPT)

文章目錄 一、新建演示文稿二、插入頁面1. 插入地圖2. 插入空白文檔3. 插入圖像4. 插入視頻三、播放與保存一、新建演示文稿 打開軟件,新建一個地圖文檔,再點擊【新建演示文稿】: 創建的演示文檔會默認保存在目錄中的演示文稿文件夾下。 然后可以對文檔進行簡單的設計,例如…

[吾愛出品][Windows] 產品銷售管理系統2.0

[Windows] 產品銷售管理系統 鏈接:https://pan.xunlei.com/s/VOPej1bHMRCHy2np9w3TBOyKA1?pwdgjy7# 使用方法:1、先設置一下圖片保存路徑 2、維護產品。客戶等基礎信息。例如:銷售類型:一次性 銷售編碼:RCX。 3、銷…

MySQL數據庫高可用(MHA)詳細方案與部署教程

一:MHA簡介 核心功能 二:MHA工作原理 三:MHA組件 四:MHA 架構與工具 MHA架構 Manager關鍵工具 Node工具 五:工作原理與流程 1: 故障檢測 2: 故障切換(Failover) 3 : 切換模式 六&a…

華為設備鏈路聚合實驗:網絡工程實戰指南

鏈路聚合就像為網絡搭建 “并行高速路”,既能擴容帶寬,又能保障鏈路冗余,超實用! 一、實驗拓撲速覽 圖中兩臺交換機 LSW1 和 LSW2,PC1、PC2 歸屬 VLAN 10,PC3 歸屬 VLAN 30。LSW1 與 LSW2 通過 GE0/0/1、…

數組和集合

數組和集合的區別: 1、數組是固定長度的數據結構,一旦創建長度就無法改變,集合是動態長度數據結構,可根據需求動態增加或減少元素。 2、數組包含基本數據類型和對象,而集合只能包含對象。 3、數組可以直接訪問元素&…

WPF MVVM進階系列教程(一、對話框)

🍠 WPF MVVM進階系列教程 一、對話框 在前面的文章中,我們介紹了MVVM開發的一些基礎知識。 對于日常開發來說,基本已經足夠應付大部分場景。 從這里開始,介紹的都是在MVVM模式開發中,提升程序可維護性、靈活性、健壯…

【AI News | 20250507】每日AI進展

AI Repos 1、CFWorkerACME SSL證書助手是一個免費開源的平臺,基于Cloudflare Worker運行,旨在自動化SSL證書的申請和下發,尤其適用于多服務器或內網環境。它通過自動化的CNAME和DNS操作完成域名驗證,支持Let’s Encrypt、ZeroSSL…

5 分鐘用滿血 DeepSeek R1 搭建個人 AI 知識庫(含本地部署)

最近很多朋友都在問:怎么本地部署 DeepSeek 搭建個人知識庫。 老實說,如果你不是為了研究技術,或者確實需要保護涉密數據,我真不建議去折騰本地部署。 為什么呢? 目前 Ollama 從 1.5B 到 70B 都只是把 R1 的推理能力提煉到 Qwen 和 Llama 的蒸餾版本上。 雖說性能是提升…

極狐GitLab 分支管理功能介紹

極狐GitLab 是 GitLab 在中國的發行版,關于中文參考文檔和資料有: 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 分支 (BASIC ALL) 分支是項目工作樹的一個版本。分支是項目開發的基礎。當你創建一個新的項目時,極狐GitLab 會為…

基于ASP.NET+MySQL實現待辦任務清單系統

基于ASP.NET的ToDoList的設計與實現 一、前言 1.1 實驗目的 使學生綜合使用所學過的ASP.NET網絡編程知識,掌握網絡環境程序設計的基本概念;結合實際的操作和設計,鞏固課堂學習內容,掌握網絡環境編程的特點、原理和技術&#xf…

普通 html 項目引入 tailwindcss

項目根目錄安裝依賴 npm install -D tailwindcss3 postcss autoprefixer 初始化生成tailwind.config.js npx tailwindcss init 修改tailwind.config.js /** type {import(tailwindcss).Config} */ module.exports {content: ["./index.html"], //根據自己的項目…

汽車免拆診斷案例 | 2015款奔馳C200L車發動機起動延遲

故障現象  一輛2015款奔馳C200L車,搭載274發動機,累計行駛里程約為15.6萬km。該車發動機起動延遲,且發動機故障燈異常點亮。 故障診斷  用故障檢測儀檢測,發動機控制單元中存儲有故障代碼“P001685 進氣凸輪軸(氣缸…

[藍橋杯 2025 省 B] 水質檢測(暴力 )

暴力暴力 菜鳥第一次寫題解,多多包涵!!! 這個題目的數據量很小,所以沒必要去使用bfs,直接分情況討論即可 一共兩排數據,我們使用貪心的思想,只需要實現從左往右的過程中每個檢測器相互連接即…

網絡接口返回類ResponseEntity

網絡接口返回類ResponseEntity 簡介方法獲取工廠方法ResponseEntity.ok()返回BodyBuilder返回文字信息返回類對象(Spring自動轉換為json格式)返回空內容? ResponseEntity.notFound()返回HeadersBuilder返回文字信息 status(HttpStatus)返回BodyBuildern…

Redis:現代服務端開發的緩存基石與電商實踐-優雅草卓伊凡

Redis:現代服務端開發的緩存基石與電商實踐-優雅草卓伊凡 一、Redis的本質與核心價值 1.1 Redis的技術定位 Redis(Remote Dictionary Server)是一個開源的內存數據結構存儲系統,由Salvatore Sanfilippo于2009年創建。它不同于傳…

macOS上管理多個Node.js版本

管理工具 fnm 和 nvm nvm:作為最廣泛使用的 Node.js 版本管理器,使用 Bash 編寫,適用于類 UNIX 環境(如 macOS 和 Linux),也可以通過兼容的 shell(如 WSL)在 Windows 上使用。fnm:(Fast Node Manager)一種較新的、快速…

uDistil-Whisper:低數據場景下基于無標簽數據過濾的知識蒸餾方法

uDistil-Whisper: Label-Free Data Filtering for Knowledge Distillation in Low-Data Regimes 會議:2025年NAACL 機構:卡內基梅降大學 Abstract 近期研究通過偽標簽(pseudo-labels)將Whisper的知識蒸餾到小模型中&#xff0…

【MySQL】-- 數據庫約束

文章目錄 1. 什么是數據庫約束2. 約束類型3. NOT NULL 非空約束4. DEFALUT 默認值約束5. UNIQUE 唯一約束6. PRIMARY KEY 主鍵約束6.1 自增主鍵6.1 一個自增主鍵包含多個列 7. FOREIGN KEY 外鍵約束8. CHECK 約束 1. 什么是數據庫約束 數據庫約束是指對數據庫表中的數據所施加…

鴻蒙NEXT開發動畫案例2

1.創建空白項目 2.Page文件夾下面新建Spin.ets文件,代碼如下: // 接口定義(必須放在使用前) /*** 關鍵幀動畫整體配置參數*/ interface KeyframeAnimationConfig {iterations: number;delay: number; }/*** 單個關鍵幀動畫項*/…