【小白學AI系列】NLP 核心知識點(五)Transformer介紹

Transformer

Transformer 是一種基于自注意力機制(Self-Attention Mechanism)的深度學習模型,首次由 Vaswani 等人于 2017 年在論文《Attention is All You Need》中提出。與 RNN 和 LSTM 不同,Transformer 不需要依靠序列順序進行遞歸,而是通過全局注意力機制一次性處理整個輸入序列,從而具備了更高的計算效率和更強的并行化能力。

Transformer 的提出徹底改變了自然語言處理(NLP)和其他領域的發展,廣泛應用于機器翻譯、文本生成、語言理解、圖像識別等任務。


Transformer 的結構

Transformer 模型由兩部分組成:

  1. 編碼器(Encoder):用于將輸入序列轉化為上下文相關的表示。
  2. 解碼器(Decoder):用于根據編碼器的輸出生成新的序列(如翻譯成另一種語言)。

Transformer 的基本結構如下:

Transformer
├── 編碼器(Encoder)
│   ├── 多頭自注意力機制(Multi-Head Attention)
│   ├── 前饋神經網絡(Feed-Forward Neural Network)
│   └── 殘差連接與層歸一化(Residual Connection + Layer Normalization)
│
└── 解碼器(Decoder)├── 多頭自注意力機制(Multi-Head Attention)├── 編碼器-解碼器注意力機制├── 前饋神經網絡└── 殘差連接與層歸一化

核心機制解析

1. 多頭自注意力機制(Multi-Head Self-Attention)

自注意力機制的核心是:每個單詞能夠根據輸入序列的上下文信息,動態地分配注意力權重,從而獲得上下文相關的表示。

計算步驟

  1. 將輸入序列 ( X ) 通過線性變換生成查詢向量(Query, Q)鍵向量(Key, K)值向量(Value, V)
  2. 計算每個查詢向量 ( Q_i ) 與所有鍵向量 ( K_j ) 之間的相似度,通過 softmax 函數獲得注意力權重。
  3. 將注意力權重與對應的值向量 ( V ) 相乘,得到加權后的輸出。

公式:
Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dk? ?QKT?)V
其中:

  • ( Q ):查詢矩陣
  • ( K ):鍵矩陣
  • ( V ):值矩陣
  • ( d_k ):向量的維度(用來進行縮放)

多頭注意力機制 是將多個自注意力機制并行計算,捕捉到輸入序列中不同層次的信息,然后將多個頭的輸出拼接成最終結果。


2. 前饋神經網絡(Feed-Forward Network, FFN)

在自注意力機制后,每個位置的輸出會通過一個前饋神經網絡(通常是兩層全連接層)進行非線性變換,提高模型的非線性表達能力。

公式:
F F N ( x ) = ReLU ( x W 1 + b 1 ) W 2 + b 2 FFN(x) = \text{ReLU}(xW_1 + b_1)W_2 + b_2 FFN(x)=ReLU(xW1?+b1?)W2?+b2?
其中 ( W1 ) 和 ( W2 ) 是權重矩陣,( b1 ) 和 ( b2 ) 是偏置項。


3. 殘差連接與層歸一化(Residual Connection + Layer Normalization)

為了避免梯度消失和梯度爆炸問題,Transformer 在每一層增加了殘差連接,并在殘差連接之后進行層歸一化(Layer Normalization),確保輸出保持穩定,提升模型訓練的穩定性。

殘差連接公式:
Output = LayerNorm ( x + SubLayer ( x ) ) \text{Output} = \text{LayerNorm}(x + \text{SubLayer}(x)) Output=LayerNorm(x+SubLayer(x))
其中 ( x ) 是輸入,( \text{SubLayer}(x) ) 是注意力機制或前饋網絡的輸出。


4. 位置編碼(Positional Encoding)

由于 Transformer 不像 RNN 那樣依靠序列的順序信息,因此需要為輸入序列加入位置編碼,幫助模型捕獲序列的時序特征。

位置編碼公式:
P E ( p o s , 2 i ) = sin ? ( p o s 1000 0 2 i / d ) PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d}}\right) PE(pos,2i)?=sin(100002i/dpos?)
P E ( p o s , 2 i + 1 ) = cos ? ( p o s 1000 0 2 i / d ) PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d}}\right) PE(pos,2i+1)?=cos(100002i/dpos?)
其中:

  • ( pos ) 是單詞在序列中的位置。
  • ( i ) 是維度索引。
  • ( d ) 是向量的維度。

位置編碼將序列的位置信息注入到輸入嵌入中,使得模型能夠區分“第一個詞”和“第二個詞”。


Transformer 的應用

1. 機器翻譯

Transformer 最初的應用就是機器翻譯任務。在機器翻譯中:

  • 編碼器將源語言的句子轉化為上下文表示。
  • 解碼器根據上下文生成目標語言句子。

2. 文本生成

GPT(生成預訓練模型)是基于 Transformer 解碼器結構的文本生成模型,能夠根據輸入文本生成合理的續寫內容。

3. 語言理解

BERT(雙向編碼器表示模型)是基于 Transformer 編碼器結構的語言理解模型,擅長回答問題、文本分類等任務。

4. 圖像識別

Vision Transformer(ViT)將圖像切分成小塊,并將它們視為序列輸入到 Transformer 中,從而實現了圖像識別任務。


Transformer 的優點和缺點

優點:

  1. 高效并行:相比 RNN 和 LSTM,Transformer 不需要逐步遞歸處理序列,可以并行處理整個序列,大大提高了訓練效率。
  2. 捕獲長距離依賴:通過自注意力機制,Transformer 能夠輕松捕獲長距離的上下文關系。
  3. 結構靈活:編碼器和解碼器模塊可以根據任務需求自由組合。

缺點:

  1. 計算量大:多頭自注意力機制和全連接層使得模型計算復雜度較高,對硬件資源要求較高。
  2. 需要大規模數據:Transformer 模型的訓練通常需要海量的數據和時間。

經典模型發展

  • 2017 年:Transformer 提出,首次應用于機器翻譯,性能超越傳統 RNN 和 LSTM。
  • 2018 年:BERT 推出,將 Transformer 編碼器用于雙向語言理解,成為 NLP 領域的里程碑。
  • 2018 年:GPT(Generative Pretrained Transformer) 推出,將 Transformer 解碼器用于文本生成。
  • 2020 年:GPT-3 震驚 NLP 領域,通過 1750 億參數的預訓練模型實現了令人驚艷的文本生成效果。

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

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

相關文章

【高級篇 / IPv6】(7.6) ? 03. 寬帶IPv6 - ADSL撥號寬帶上網配置 ? FortiGate 防火墻

【簡介】大部分ADSL撥號寬帶都支持IPv6,這里以ADSL撥號寬帶為例,演示在FortiGate防火墻上的配置方法。 準備工作 同上篇文章一樣,為了兼顧不熟悉FortiGate防火墻的朋友,我們從基礎操作進行演示,熟練的朋友可以跳過這一…

【Elasticsearch】_all 查詢

在 Elasticsearch 中,_all 查詢是一種特殊的查詢方式,用于在多個索引或數據流中執行搜索操作,而無需顯式指定每個目標索引或數據流的名稱。以下是關于 _all 查詢的詳細說明: _all 查詢概述 用途:_all 查詢允許您在多個…

Linux第104步_基于AP3216C之I2C實驗

Linux之I2C實驗是在AP3216C的基礎上實現的,進一步熟悉修改設備樹和編譯設備樹,以及學習如何編寫I2C驅動和APP測試程序。 1、AP3216C的原理圖 AP3216C集成了一個光強傳感器ALS,一個接近傳感器PS和一個紅外LED,為三合一的環境傳感…

基于單片機的盲人智能水杯系統(論文+源碼)

1 總體方案設計 本次基于單片機的盲人智能水杯設計,采用的是DS18B20實現杯中水溫的檢測,采用HX711及應力片實現杯中水里的檢測,采用DS1302實現時鐘計時功能,采用TTS語音模塊實現語音播報的功能,并結合STC89C52單片機作…

高清種子資源獲取指南 | ??@seedlinkbot

在如今的數字時代,高清影視、音樂、游戲等資源的獲取方式不斷豐富。對于追求高質量資源的用戶而言,一個高效的資源分享平臺至關重要。而 ??seedlinkbot 正是這樣一個便捷的資源獲取工具,為用戶提供高質量的種子資源索引和下載信息。 1. ??…

[paddle] 矩陣相關的指標

行列式 det 行列式定義參考 d e t ( A ) ∑ i 1 , i 2 , ? , i n ( ? 1 ) σ ( i 1 , ? , i n ) a 1 , i 1 a 2 , i 2 , ? , a n , i n det(A) \sum_{i_1,i_2,\cdots,i_n } (-1)^{\sigma(i_1,\cdots,i_n)} a_{1,i_1}a_{2,i_2},\cdots, a_{n,i_n} det(A)i1?,i2?,?,in?…

Spring Boot項目如何使用MyBatis實現分頁查詢

寫在前面:大家好!我是晴空?。如果博客中有不足或者的錯誤的地方歡迎在評論區或者私信我指正,感謝大家的不吝賜教。我的唯一博客更新地址是:https://ac-fun.blog.csdn.net/。非常感謝大家的支持。一起加油,沖鴨&#x…

【論文筆記】Fast3R:前向并行muti-view重建方法

眾所周知,DUSt3R只適合做稀疏視角重建,與sapnn3r的目的類似,這篇文章以并行的方法,擴展了DUSt3R在多視圖重建中的能力。 abstract 多視角三維重建仍然是計算機視覺領域的核心挑戰,尤其是在需要跨不同視角實現精確且可…

本地部署DeepSeek教程(Mac版本)

第一步、下載 Ollama 官網地址:Ollama 點擊 Download 下載 我這里是 macOS 環境 以 macOS 環境為主 下載完成后是一個壓縮包,雙擊解壓之后移到應用程序: 打開后會提示你到命令行中運行一下命令,附上截圖: 若遇…

deepseek本地部署會遇到哪些坑

在本地部署DeepSeek(或其他類似AI模型)時,可能會遇到以下常見問題及解決方案: 1. 硬件資源不足 問題表現: GPU不兼容(如型號過舊)、顯存不足(OOM錯誤)或CPU模式性能極低。解決方案: 確認GPU支持CUDA,檢查顯存需求(如至少16GB顯存)。使用nvidia-smi監控顯存,通過降…

微機原理與接口技術期末大作業——4位搶答器仿真

在微機原理與接口技術的學習旅程中,期末大作業成為了檢驗知識掌握程度與實踐能力的關鍵環節。本次我選擇設計并仿真一個 4 位搶答器系統,通過這個項目,深入探索 8086CPU 及其接口技術的實際應用。附完整壓縮包下載。 一、系統設計思路 &…

解決國內服務器 npm install 卡住的問題

在使用國內云服務器時,經常會遇到 npm install 命令執行卡住的情況。本文將分享一個典型案例以及常見的解決方案。 問題描述 在執行以下命令時: mkdir test-npm cd test-npm npm init -y npm install lodash --verbose安裝過程會卡在這個狀態&#xf…

【Redis】Redis 經典面試題解析:深入理解 Redis 的核心概念與應用

Redis 是一個高性能的鍵值存儲系統,廣泛應用于緩存、消息隊列、排行榜等場景。在面試中,Redis 是一個高頻話題,尤其是其核心概念、數據結構、持久化機制和高可用性方案。 1. Redis 是什么?它的主要特點是什么? 答案&a…

昆侖萬維Java開發面試題及參考答案

進程和線程的區別是什么? 進程和線程都是操作系統中非常重要的概念,它們在多個方面存在顯著的區別。 從定義上看,進程是操作系統進行資源分配和調度的基本單位。每個進程都有自己獨立的內存空間,包括代碼段、數據段、堆棧段等。例如,當你在電腦上同時打開瀏覽器和音樂播放…

Visual Studio Code應用本地部署的deepseek

1.打開Visual Studio Code,在插件中搜索continue,安裝插件。 2.添加新的大語言模型,我們選擇ollama. 3.直接點connect,會鏈接本地下載好的deepseek模型。 參看上篇文章:deepseek本地部署-CSDN博客 4.輸入需求生成可用…

DeepSeek技術深度解析:從不同技術角度的全面探討

DeepSeek技術深度解析:從不同技術角度的全面探討 引言 DeepSeek是一個集成了多種先進技術的平臺,旨在通過深度學習和其他前沿技術來解決復雜的問題。本文將從算法、架構、數據處理以及應用等不同技術角度對DeepSeek進行詳細分析。 一、算法層面 深度學…

SpringBoot 整合 Mybatis:注解版

第一章&#xff1a;注解版 導入配置&#xff1a; <groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version> </dependency> 步驟&#xff1a; 配置數據源見 Druid…

[Linux]如何將腳本(shell script)轉換到系統管理服務器(systemd service)來運行?

[InfluxDB]Monitor Tem. and Volt of RaspberryPi and Send Message by Line Notify 在Linux中&#xff0c;shell腳本(shell script)常用於運行各種自動化的流程&#xff0c;包含API串接&#xff0c;設置和啟動應用服務等等&#xff0c;腳本語法也相對易學易讀&#xff0c;因此…

2025年最新在線模型轉換工具優化模型ncnn,mnn,tengine,onnx

文章目錄 引言最新網址地點一、模型轉換1. 框架轉換全景圖2. 安全的模型轉換3. 網站全景圖 二、轉換說明三、模型轉換流程圖四、感謝 引言 在yolov5&#xff0c;yolov8&#xff0c;yolov11等等模型轉換的領域中&#xff0c;時間成本常常是開發者頭疼的問題。最近發現一個超棒的…

理解知識蒸餾中的散度損失函數(KLDivergence/kldivloss )-以DeepSeek為例

1. 知識蒸餾簡介 什么是知識蒸餾&#xff1f; 知識蒸餾&#xff08;Knowledge Distillation&#xff09;是一種模型壓縮技術&#xff0c;目標是讓一個較小的模型&#xff08;學生模型&#xff0c;Student Model&#xff09;學習一個較大、性能更優的模型&#xff08;教師模型…