大模型算法(一):從Transformer到ViT再到LLaMA

單任務/單領域模型

深度學習最早的研究集中在針對單個領域或者單個任務設計相應的模型。
對于CV計算機視覺領域,最常用的模型是CNN卷積模型。其中針對計算機視覺中的不同具體任務例如分類任務,目標檢測任務,圖像分割任務,以CNN作為骨干backbone,加上不同的前后處理以及一些輔助層,來達到針對不同任務的更好效果。
對于NLP自然語言處理領域,最常用的模型起初是RNN,后續發展有LSTM,Transformer等。這個方向了解不多,具體自行百度。
在這里插入圖片描述
在這里插入圖片描述

Transformer:統一架構

Transformer起源于NLP領域,后面人們發現在CV領域Transformer也能用,甚至效果比CNN還要好,使得CV和NLP兩個領域的模型架構得到統一,為多模態和大模型打下基礎。
Transformer最廣為人知的就是它的自注意力機制,要了解為什么創新出了這個機制,還要從RNN談起。
在NLP領域,第一代模型范式就是RNN,循環神經網絡。循環神經網絡原理比較簡單,RNN中的節點接受兩個輸入:上個節點的輸出以及本次輸入對應的詞向量:
在這里插入圖片描述
但是RNN缺點也很明顯,不斷地將輸出再次輸入,這種方法雖然可以關聯到上文所包含的信息,但是只能關聯到附近的上文信息,較遠的上文信息對當下影響較小,而且容易出現梯度消失的問題。所以RNN在90年以后就很少用了,取而代之的是它的兩個改進:LSTM長短時記憶網絡和GRU門控循環網絡。
在這里插入圖片描述
但是二者也只是緩解了RNN的問題,并沒有從根本上解決,后面又推出了seq2seq結構,依舊是縫縫補補。再后面計算機視覺中90年代提出的注意力機制,被Google mind團隊應用在RNN上來做圖像分類后,有學者把注意力機制從CV領域拿到了NLP領域來做機器翻譯,Attention-based RNN。在這之后才到transformer的興起,也就是那句“Attention is all your need”。
在這里插入圖片描述
transformer簡而言之即:將輸入向量化,然后通過encoder編碼層編碼,再經過decoder解碼層進行解碼得到結果。
encoder的作用是理解和提取輸入文本中的相關信息以及上下文的信息。解碼器的任務是解碼器則根據編碼器的輸出和先前生成的部分序列來生成輸出序列。

注意,由于解碼器需要根據先前生成部分的內容來生成輸出序列中的下一部分,所以具有自回歸的效果,這是encoder沒有的,這個特性后面要提到。
在這里插入圖片描述

這篇文章寫的非常清晰明了,通俗易懂,我就不再班門弄斧了,大家可以直接看這篇文章。

一些細節問題的講解

ViT:視覺領域的Transformer

Vit李沐大神團隊出的講解非常好:ViT講解

自注意力和transformer自從提出沒多久就有人用在了計算機視覺領域,但是因為如果直接將圖像拉長成一個數組,數據復雜度太高,所以提出了stand-alone attention和axial attention等折中方案,分別是將局部窗口輸入給transformer和將圖像劃分為兩個維度,分別進行transformer

ViT基本使用了Transformer的原結構,沒有什么大的改動。圖像數據shape一般都是 C × H × W C\times H \times W C×H×W的,Transformer接受的數據是二維的,所以需要將三維的數據reformat為二維的,原文給出的方法是將圖像分為 m × n m\times n m×n個patch,每個patch的尺寸為 H m × W n × C \frac{H}{m} \times \frac{W}{n}\times C mH?×nW?×C的,將patch拉長為長度為 H m × W n × C \frac{H}{m} \times \frac{W}{n}\times C mH?×nW?×C的一維數組,這樣圖像就變成了 [ m × n , H m × W n × C ] [m \times n,\frac{H}{m} \times \frac{W}{n}\times C] [m×n,mH?×nW?×C]的二維數組,原文是將一個224*224的圖像分為了 14 × 14 14\times 14 14×14個patch,每個patch的尺寸為 16 × 16 16\times 16 16×16,輸入數據為 196 × 768 196\times 768 196×768。從圖像到patch的這個過程,可以直接簡單分割,也可以使用768個 16 × 16 × 3 16\times 16 \times 3 16×16×3的卷積核提取,得到的結果是是 14 × 14 × 768 14\times 14\times 768 14×14×768的數據,再將其reformat一下得到 196 × 768 196\times 768 196×768
原文提到Transformer相較于CNN缺少兩個歸納偏置,locality和平移等變性

歸納偏置即:從網絡結構中就預先存在的偏置,是一種先驗知識,所以稱為歸納偏置。
locality:潛在的位置信息
平移等變性:f(g(x)) = g(f(x)),先做卷積還是先做平移效果是一樣的。

所以要么使用更大的數據集進行訓練。
在得到 196 × 768 196\times 768 196×768大小的圖像patch序列后,還需要再concat上一個 1 × 768 1\times 768 1×768大小class embedding,用于存儲分類結果,形成一個 197 × 768 197\times 768 197×768大小的tensor,再之后還需要添加上一個position embedding,position embedding是一個 197 × 768 197\times 768 197×768的表,直接add到原tensor上,得到最終輸入transformer的tensor。
至于ViT的網絡結構,跟Transformer是一樣的,只不過把Norm層提前到了multi-head attention前面
在這里插入圖片描述
decoder的作用是進行序列生成,分類的ViT不需要decoder block,只需要encoder即可。

Transformer大模型類型

Transformer的結構是encoder-decoder模式(編碼器-解碼器)模式,decoder和encoder相比,多了encoder-decoder注意力機制部分,也就是上面transformer架構圖中decoder中多的一個環節,將encoder的輸出和decoder自注意力輸出作為輸入的注意力部分。
基于transformer的大模型根據encoder,decoder的搭配不同分為三種技術路線。目前大部分大模型都是decoder-only路線的。
在這里插入圖片描述
圖片來自論文

encoder-only[基本不再使用]

只有encoder的大模型,例子是Bert。
在 Transformer 模型中,編碼器負責理解和提取輸入文本中的相關信息。這個過程通常涉及到處理文本的序列化形式,例如單詞或字符,并且用自注意力機制(Self-Attention)來理解文本中的上下文關系。
encoder-only模型使用MLM(Masked Language Modeling)方法進行訓練,即:將語料中的一部分遮住,讓模型預測出被遮住的部分,這種訓練方式使得encoder-only模型對于文本分類和情感分析這種理解類的任務效果較好。

BERT中還用到了next-sentence prediction task訓練方式,該方式主要是訓練模型理解上下文語義關系的能力

encoder-decoder[較少使用]

同時有encoder和decoder的大模型,代表作有:T5,清華的GLM(General Language Model Pretraining with Autoregressive Blank Infilling)
因為具有decoderblock部分,所以相較于encoder-only模型,這種模型的文本生成能力要更強一些,比較適合做一些生成序列和輸入序列強相關的人物,例如翻譯,生成的句子和原句強相關。

encoder-decoder的變體:Prefix-decoder架構

decoder-only[主流]

只有decoder部分的大模型,代表作有:ChatGPT,LLAMA
上文我們提到decoder中有一個部分是編碼器-解碼器注意力機制部分,那只有decoder,這個部分怎么辦呢?

又分為Causal Decoder架構(因果解碼器架構)和 Prefix Decoder架構(前綴解碼器架構)

在這里插入圖片描述

圖片來源自論文:A survey of Large Language Models
藍色是指前綴部分的mask,綠色是前綴和目標token之間的mask,黃色是指目標token之間的mask
簡而言之就是表示是否能產生關聯,能否讀取到該token的信息

不同架構,第一個區別是encoder和decoder組合不同,第二個區別是mask的設計不同。
像對于encoder-decoder架構而言,他的mask可以理解為:encoder的token之間是相互可以關聯的,decoder可以關聯所有的encoder的token,也可以關聯在自己前面的token。
對于causal decoder架構的mask,decoder的token只能關聯到前面的token,對于自己后面的token無法產生聯系,ChatGPT就是使用這這架構,
Prefix decoder架構跟上面的因果解碼器架構相比的特點是將前綴部分的注意力機制改成了雙向注意力機制,目標token間還是使用單項token,這就跟encoder很像了,實際上這種架構也是有encoder的,只不過和前綴的decoder是公用一套參數的,所以既可以說是deocder-only,也可以說成是encoder-decoder。代表作是GLM。

為什么大家都用decoder-only路線?

以下答案是依據該問題下的答案總結的

  • 對于文本生成類任務效果比較好
  • 相較于encoder-decoder路線,計算量小
  • decoder-only的泛化性能更好,依據論文原因有很多
    • 雙向attention[也就是不進行mask,當下token可以接受到所有token的影響]有可能導致低秩問題,反而削弱了模型的表達能力。
    • decoder-only模型接受到的信息更少,訓練難度更高,在數據充足時,經過訓練,可以有更好的表征信息。
    • decoder-only的架構相比encoder-decoder在In-Context的學習上會更有優勢,因為前者的prompt可以更加直接地作用于decoder每一層的參數,微調信號更強。依據

配套技術

歸一化

早期:LayerNorm
為了提高LN的訓練速度,提出了RMSNorm
為了穩定深度transformer模型訓練,提出了DeepNorm

三種歸一化位置方案:post-LN,pre-LN,sandwich-LN

優化器

常用優化器為Adam 優化器和 AdamW 優化器

微調技術

指令微調(instruction tuning)和對齊微調(alignment tuning)。前一種方法旨在增強(或解鎖) LLM 的能力,而后一種方法旨在將 LLM 的行為與人類的價 值觀或偏好對齊。

上下文學習ICL

為了使大模型能夠在不進行梯度更新的情況下完成新的任務。
在這里插入圖片描述

思維鏈CoT技術

思維鏈(Chain-of-Thought,CoT)是一種改進的提示策略,旨在提高 LLM 在復雜推理任務中的性能,例如算術推理,常識推理和符號推理。不同于 ICL 中僅使用輸入輸出對來構造提示,CoT 將可以導出最終輸出 的中間推理步驟納入提示中。通常情況下,CoT 可以在小樣本(few-shot)和零樣本(zero[1]shot)設置這兩種主要設置下與 ICL 一起使用。

參考文獻:
[1] A Survey of Large Language Models[J].
[2] Multimodal Foundation Models: From Specialists to General-Purpose Assistants[J].
[3] https://jalammar.github.io/illustrated-transformer/

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

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

相關文章

【傳知代碼】VRT: 關于視頻修復的模型(論文復現)

前言:隨著數字媒體技術的普及,制作和傳播視頻內容變得日益普遍。但是,視頻中由于多種因素,例如傳輸、存儲和錄制設備等,經常出現質量上的問題,如圖像模糊、噪聲干擾和低清晰度等。這類問題對用戶的體驗和觀…

hive動態分區

hive動態分區概念:允許插入數據到分區表時,根據插入的數據內容自動創建相應的分區 1.啟用動態分區功能 hive.exec.dynamic.partitiontrue; 2.分區字段設置 在insert語句中, 動態分區的字段必須放在select語句的末尾,hive會根據這個字段的值來創建分區目錄 示例: --創建分區表…

幾個排序器的verilog及其資源占用、延時分析

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 前言 因為課題需要,調研了幾個快速排序方法,并手寫或者改進了若干待測試對象,包括記分板型冒泡排序(這個是別人的&#xff09…

樹莓派|I2C通信

什么是I2C通信 I2C(Inter-Integrated Circuit)是一種串行通信協議,用于在集成電路(IC)之間傳輸數據。它由飛利浦公司(現在的恩智浦半導體公司)在20世紀80年代開發,并且成為了廣泛應用于各種電子設備中的通…

Spring Security 6.x 系列【73】認證篇之同端互斥登錄

有道無術,術尚可求,有術無道,止于術。 本系列Spring Boot 版本 3.1.0 本系列Spring Security 版本 6.1.0 源碼地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目錄 1. 概述2. 實現方案3. 案例演示3.1 內存會話3.1.1 并發控制流程分析3.1.2 功…

【35分鐘掌握金融風控策略28】貸中模型體系策略應用

目錄 貸中模型體系策略應用 信用模型體系和模型在策略中的應用 反欺詐模型體系和模型在策略中的應用 運營模型體系和模型在策略中的應用 貸中模型體系策略應用 在貸前模型部分已經講過,貸前開發的很多模型是可以在貸中直接使用的。貸中與貸前的不同點在于&…

ubuntu升級python

添加Python官方PPA源 sudo add-apt-repository ppa:deadsnakes/ppa 執行會顯示各個版本ubuntu可以安裝哪些python版本 更新軟件包索引 sudo apt update 安裝需要版本Python sudo apt install python3.11 檢查Python版本: which python11 /usr/bin/python3.11 設置為系統默認Pyt…

自定義一個starter

在Spring Boot中&#xff0c;創建一個自定義starter可以簡化特定功能或組件的配置過程&#xff0c;讓其他項目能夠輕松地重用這些功能。 這里我們以自定義一個xxl-job的starter為例&#xff0c;介紹下如何簡化配置。 添加依賴 <dependencies><dependency><gro…

STK中的光照計算模型

本文簡要闡述STK中光照計算的模型。 在航天任務中&#xff0c;通常需要分析地面站、飛行器在一定時間內的光照情況&#xff0c;具體包括&#xff1a; 地面站處在光照區和陰影區的具體時間范圍&#xff1b;考慮地形遮擋后&#xff0c;地面站的光照區和陰影區的變化情況&#x…

985大學電子信息專碩,考C語言+數據結構!中央民族大學25計算機考研考情分析!

中央民族大學&#xff08;Minzu University of China&#xff09;坐落于北京市學府林立的海淀區&#xff0c;南鄰國家圖書館&#xff0c;北依中關村科技園&#xff0c;校園環境典雅&#xff0c;古樸幽美&#xff0c;人文氛圍濃郁&#xff0c;具有鮮明的民族特色。由北京市、國家…

Java byte數據類型

在Java中&#xff0c;byte是一種基本的數據類型&#xff0c;用于表示整數值。它是8位帶符號的二進制補碼&#xff0c;范圍從-128到127&#xff08;包括&#xff09;。 以下是一些關于byte數據類型的重要信息&#xff1a; 大小和范圍&#xff1a;byte數據類型占用8位&#xff0…

Oracle 日志文件頭中的SCN

日志文件頭中的SCN主要分以下3類&#xff1a; 1、FIRST_CHANGE 2、NEXT_CHANGE 3、RESETLOGS_CHANGE# FIRST_CHANGE# FIRST_CHANGE#表示該在線日志文件被重用時的SCN。可以從VKaTeX parse error: Expected EOF, got # at position 25: …RY.FIRST_CHANGE#?列查詢&#xff0c;…

Cesium學習_-著色器

著色器GLSL CesiumJS PrimitiveAPI 高級著色入門 - 從參數化幾何與 Fabric 材質到著色器 - 下篇 - 知乎 明確一個定義&#xff0c;在 Primitive API 中應用著色器&#xff0c;實際上是給 Appearance 的 vertex- ShaderSource、fragmentShaderSource 或 Material 中的 fabric.…

Java 異步編程——為什么要使用多線程,以及在什么情況下使用多線程?

前言 單線程就是一個工人在搬磚&#xff0c;多線程就是多個工人在搬磚&#xff1b;在相同數量的磚要搬的情況下&#xff0c;多個工人搬磚肯定比一個人搬的快。 那多個工人做事一定比一個工人做事快嗎&#xff1f;那不一定&#xff0c;不過大多數情況下是的。多線程只是可以同…

Java并發編程——線程安全

在Java并發編程中&#xff0c;線程安全是一個非常重要的概念。當多個線程同時訪問共享數據時&#xff0c;如果沒有采取適當的同步措施&#xff0c;就可能會導致數據不一致或其他不可預期的行為&#xff0c;這就是線程不安全的情況。 為了保證線程安全&#xff0c;Java提供了一…

Google Ads谷歌廣告賬戶被封停怎么辦?

跨境出海業務少不了需要做Google Ads推廣業務&#xff1b;其中讓投手們聞風喪膽的消息就是帳戶被暫停。當 Google 檢測到任何違反其政策且可能損害用戶在線體驗的行為時&#xff0c;就會發生這種情況。那么如何在做廣告推廣的同時&#xff0c;保證賬號不被封禁呢&#xff1f;看…

【微服務最全詳解】

文章目錄 微服務微服務的介紹微服務服務架構演變 微服務網關微服務的負載均衡微服務的容災機制服務崩潰服務容災機制微服務熔斷機制微服務限流Sentinel怎么實現限流微服務限流算法1.令牌桶算法2.漏斗桶算法 服務監控日志收集 微服務 微服務的介紹 微服務是一種軟件架構風格&a…

大模型日報2024-05-15

大模型日報 2024-05-15 大模型資訊 OpenAI推出全新AI模型GPT-4o&#xff0c;具備文本、圖像和音頻處理能力 摘要: OpenAI公司繼ChatGPT后&#xff0c;最新推出了名為GPT-4o的AI模型。這一模型不僅能夠理解和生成文本&#xff0c;還新增了圖像和音頻的解釋及生成功能。GPT-4o作為…

中國開源 AI 大模型之光-InternLM2

今天給大家帶來 AI 大模型領域的國產之光 - InternLM2&#xff0c;在10B量級開源大模型領域取得了全球 Top 3 的成績&#xff0c;僅次于 Meta 發布的 Llama-3&#xff0c;在國內則是第一名的存在&#xff01; 簡介 InternLM2是由上海人工智能實驗室和商湯科技聯合研發的一款大型…

最大子序列的分數

題目鏈接 最大子序列的分數 題目描述 注意點 n nums1.length nums2.length從nums1和nums2中選一個長度為k的子序列對應的下標對nums1中下標對應元素求和&#xff0c;乘以nums2中下標對應元素的最小值得到子序列的分數0 < nums1[i], nums2[j] < 1000001 < k < …