【人工智能】第二部分:ChatGPT的架構設計和訓練過程

人不走空

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

??????🌈個人主頁:人不走空??????

💖系列專欄:算法專題

?詩詞歌賦:斯是陋室,惟吾德馨

目錄

??????🌈個人主頁:人不走空??????

💖系列專欄:算法專題

?詩詞歌賦:斯是陋室,惟吾德馨

2.1 架構設計

自注意力機制(Self-Attention Mechanism)

前饋神經網絡(Feedforward Neural Network)

殘差連接(Residual Connection)和層歸一化(Layer Normalization)

最終輸出

2.2 自注意力機制詳解

2.3 多頭注意力機制

2.4 位置編碼

2.5 訓練過程

2.5.1 預訓練

2.5.2 微調

作者其他作品:


?

2.1 架構設計

ChatGPT的核心架構是基于Transformer解碼器。Transformer解碼器主要由多個堆疊的解碼器層(Decoder Layer)組成,每個層包括以下幾個關鍵組件:

自注意力機制(Self-Attention Mechanism)

自注意力機制是解碼器的核心組件之一,用于捕捉輸入序列中各個單詞之間的關系。通過計算查詢(Query)、鍵(Key)和值(Value)向量之間的相似度,自注意力機制能夠為每個單詞分配不同的權重,反映其在當前上下文中的重要性。這一機制使得模型能夠在生成過程中考慮到整個輸入序列的各個部分,從而生成連貫且上下文相關的文本。

前饋神經網絡(Feedforward Neural Network)

前饋神經網絡由兩個線性變換和一個非線性激活函數(通常是ReLU)組成。它對每個位置的表示進行非線性變換,以增強模型的表達能力。具體步驟如下:

  1. 第一層線性變換:將輸入向量映射到一個更高維度的隱空間。
  2. 激活函數:應用ReLU激活函數,增加模型的非線性特性。
  3. 第二層線性變換:將激活后的向量映射回原始維度。

這種雙層結構能夠捕捉復雜的特征和模式,進一步提升模型的生成質量。

殘差連接(Residual Connection)和層歸一化(Layer Normalization)

為了緩解深層神經網絡中常見的梯度消失和梯度爆炸問題,Transformer解碼器引入了殘差連接和層歸一化技術。

  • 殘差連接:在每個子層的輸入和輸出之間添加一個直接連接,使得輸入能夠跳躍式地傳遞到后面的層。這種連接方式不僅有助于梯度的反向傳播,還能加快模型的收斂速度。
  • 層歸一化:對每一層的輸入進行歸一化處理,使得輸入在不同訓練階段保持穩定,有助于加速訓練過程和提高模型的穩定性。

每個解碼器層的輸入是前一層的輸出,經過自注意力機制、前饋神經網絡、殘差連接和層歸一化的處理后,傳遞給下一層。通過多層堆疊,模型能夠逐層提取和整合更加抽象和高層次的特征。

最終輸出

在所有解碼器層處理完畢后,模型的輸出被傳遞到一個線性層,該層將高維表示映射到詞匯表的維度。接著,通過Softmax函數計算每個單詞的概率分布。這一步驟將解碼器的輸出轉換為一個概率分布,用于預測下一個單詞。整個生成過程是自回歸的,即每次生成一個單詞,然后將其作為輸入,用于生成下一個單詞。

2.2 自注意力機制詳解

自注意力機制是Transformer中最關鍵的部分,它通過計算查詢、鍵和值的點積來捕捉輸入序列中的依賴關系。具體步驟如下:

  1. 查詢、鍵和值的生成:輸入序列通過線性變換生成查詢(Q)、鍵(K)和值(V)矩陣。

    Q=XWQ?,K=XWK?,V=XWV?

  2. 計算注意力權重:通過點積計算查詢和鍵的相似度,然后除以一個縮放因子(通常是鍵的維度的平方根),最后通過Softmax函數將相似度轉換為概率分布。

  3. 加權求和:用注意力權重對值進行加權求和,得到每個位置的注意力表示。

2.3 多頭注意力機制

為了捕捉輸入序列中的多種關系,Transformer引入了多頭注意力機制(Multi-Head Attention)。具體來說,將查詢、鍵和值矩陣分成多個頭,每個頭獨立地計算注意力,然后將各頭的輸出拼接起來,再通過線性變換得到最終的輸出。

多頭注意力機制的公式如下:

MultiHead(Q,K,V)=Concat(head1?,head2?,…,headh?)WO?

其中,每個頭的計算方法為:

headi?=Attention(QWQi??,KWKi??,VWVi??)

2.4 位置編碼

Transformer沒有循環結構,因此無法自然地捕捉序列中的位置信息。為了解決這個問題,Transformer引入了位置編碼(Positional Encoding)。位置編碼通過正弦和余弦函數生成,并加到輸入序列的詞嵌入中,使得模型能夠區分序列中不同位置的單詞。

位置編碼的公式如下:

其中,pospospos表示位置,iii表示維度的索引,dmodeld_{model}dmodel?表示詞嵌入的維度。

2.5 訓練過程

ChatGPT的訓練過程包括兩個主要階段:預訓練和微調。

2.5.1 預訓練

在預訓練階段,模型在大規模的無監督文本數據上進行訓練。訓練目標是最大化給定上下文條件下生成下一個單詞的概率。具體來說,模型通過計算預測單詞與真實單詞之間的交叉熵損失來進行優化。

預訓練的公式如下:

其中,xtx_txt?表示序列中的第ttt個單詞,TTT表示序列的長度。

2.5.2 微調

在微調階段,模型通過監督學習和強化學習在特定任務或領域的數據上進行進一步訓練。監督學習使用標注數據進行訓練,強化學習則通過與環境的交互,優化特定的獎勵函數。

微調過程包括以下步驟:

  1. 監督學習微調:使用人工標注的數據進行監督學習,優化模型在特定任務上的性能。
  2. 強化學習微調:使用強化學習算法(如策略梯度)進行優化,通過與環境的交互,最大化獎勵函數。

強化學習微調的公式如下:

其中,πθ?表示模型的策略,R(x)表示獎勵函數。


作者其他作品:

【Java】Spring循環依賴:原因與解決方法

OpenAI Sora來了,視頻生成領域的GPT-4時代來了

[Java·算法·簡單] LeetCode 14. 最長公共前綴 詳細解讀

【Java】深入理解Java中的static關鍵字

[Java·算法·簡單] LeetCode 28. 找出字a符串中第一個匹配項的下標 詳細解讀

了解 Java 中的 AtomicInteger 類

算法題 — 整數轉二進制,查找其中1的數量

深入理解MySQL事務特性:保證數據完整性與一致性

Java企業應用軟件系統架構演變史?

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

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

相關文章

Java | Leetcode Java題解之第126題單詞接龍II

題目&#xff1a; 題解&#xff1a; class Solution {public List<List<String>> findLadders(String beginWord, String endWord, List<String> wordList) {List<List<String>> res new ArrayList<>();// 因為需要快速判斷擴展出的單詞…

傳輸中的串擾(八)

串擾指的是有害信號從一個線網傳遞到相鄰線網上。通常把噪聲源所在的線網稱為動態線或攻擊線網&#xff0c;而把有噪聲形成的線網稱為靜態線或受害線網。 靜態線上的噪聲電壓的表現與信號電壓完全一樣。一旦在靜態線上產生噪聲電壓&#xff0c;它們就會傳播并在阻抗突變處出現反…

html解決瀏覽器記住密碼輸入框的問題

當瀏覽器記住密碼并自動填充到表單的密碼輸入框時&#xff0c;這通常是瀏覽器為了提供便利而采取的功能。然而&#xff0c;有時這可能不是用戶所期望的&#xff0c;或者你可能希望在某些情況下禁用此功能。 雖然HTML本身并沒有直接提供禁用瀏覽器自動填充密碼輸入框的標準方法…

常見算法(基本查找、二分查找、分塊查找冒泡、選擇、插入、快速排序和遞歸算法)

一、常見算法-01-基本、二分、插值和斐波那契查找 1、基本查找/順序查找 需求1&#xff1a;定義一個方法利用基本查找&#xff0c;查詢某個元素是否存在 數據如下&#xff1a;{131&#xff0c;127&#xff0c;147&#xff0c;81&#xff0c;103&#xff0c;23&#xff0c;7&am…

Leetcode 3170. Lexicographically Minimum String After Removing Stars

Leetcode 3170. Lexicographically Minimum String After Removing Stars 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;3170. Lexicographically Minimum String After Removing Stars 1. 解題思路 這一題的話只需要維護一個有序數列&#xff08;這里我們用堆排來處理&…

C++ C (1152) : 循環賽日程表

文章目錄 一、題目描述二、參考代碼 一、題目描述 二、參考代碼 #include<iostream> #include<vector> #include<cstdlib> using namespace std;void generateSchedule(vector< vector<int> >& table, int numPlayers, int rounds) {// 生…

堆排序-java

這次主要講了堆排序和堆的基本構造&#xff0c;下一期會詳細講述堆的各種基本操作。 文章目錄 前言 一、堆排序 1.題目描述 2.堆 二、算法思路 1.堆的存儲 2. 結點下移down 3.結點上移up 4.堆的基本操作 5.堆的初始化 三、代碼如下 1.代碼如下&#xff1a; 2.讀入數據&#xff…

Harmony os Next——關系型數據庫relationalStore.RdbStore的使用

Harmony os Next——關系型數據庫relationalStore.RdbStore的使用 描述數據庫的使用建表定義表信息創建數據庫表 創建數據庫操作對象增更新查詢刪數據庫的初始化 描述 本文通過存儲一個簡單的用戶信息到數據庫中為例&#xff0c;進行闡述relationalStore.RdbStore數據庫的CRUD…

小公司的軟件開發IT工具箱

目錄 工具鏈困境 難題的解決 達到的效果 資源要求低 工具箱一覽 1、代碼管理工具 2、自動化發版&#xff08;測試&#xff09;工具 3、依賴庫&#xff08;制品包&#xff09;管理 4、鏡像管理 5、授權管理&#xff08;可選&#xff09; 待討論&#xff1a;為什么不是…

LeetCode17電話號碼的字母組合

題目描述 給定一個僅包含數字 2-9 的字符串&#xff0c;返回所有它能表示的字母組合。答案可以按 任意順序 返回。 給出數字到字母的映射如下&#xff08;與電話按鍵相同&#xff09;。注意 1 不對應任何字母。 解析 廣度優先遍歷或者深度優先遍歷兩種方式&#xff0c;廣度優先…

springboot動態切換數據源

1、創建一個springboot項目&#xff0c;導入依賴&#xff08;3.3.0&#xff09; <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.6.1</version></depe…

滲透測試靶機----FirstLeads_1.3

滲透測試靶機----FirstLeads_1.3 啟動靶機&#xff0c;掃描ip&#xff0c;平平無奇 可以看出&#xff0c;這里是存在139這個主機的&#xff0c;這就是掃描出來的靶機ip繼續探測端口及其他信息 發現這里只開啟了80 端口 嘗試一些基本目錄&#xff0c;發現存在robot.txt文件目錄…

集成算法:Bagging模型、AdaBoost模型和Stacking模型

概述 目的&#xff1a;讓機器學習效果更好&#xff0c;單個不行&#xff0c;集成多個 集成算法 Bagging&#xff1a;訓練多個分類器取平均 f ( x ) 1 / M ∑ m 1 M f m ( x ) f(x)1/M\sum^M_{m1}{f_m(x)} f(x)1/M∑m1M?fm?(x) Boosting&#xff1a;從弱學習器開始加強&am…

插入排序以及希爾排序; 先學會插入,希爾會更簡單喔

1.前言 首先肯定是要學會插入排序再學習希爾排序會更簡單&#xff0c;因為代碼部分有很多相似之處&#xff1b;如果你覺得你很強&#xff0c;可以直接看希爾排序的講解。哈哈哈&#xff01;&#xff0c;每天進步一點點&#xff0c;和昨天的自己比 2.插入排序 讓我們先來看看…

鴻蒙Ability Kit(程序框架服務)【UIAbility組件與UI的數據同步】

UIAbility組件與UI的數據同步 基于當前的應用模型&#xff0c;可以通過以下幾種方式來實現UIAbility組件與UI之間的數據同步。 [使用EventHub進行數據通信]&#xff1a;在基類Context中提供了EventHub對象&#xff0c;可以通過發布訂閱方式來實現事件的傳遞。在事件傳遞前&am…

Rustdesk 自建服務器教程

一、環境 阿里云輕量服務器、debian11 系統 二、服務端搭建 2.1、開放防火墻指定端口 TCP(21115, 21116, 21117, 21118, 21119)UDP(21116) 2.2、安裝 rustdesk 服務器文件 在 github 下載頁https://github.com/rustdesk/rustdesk-server/releases/&#xff0c;下載 rustde…

【自撰寫,國際象棋入門】第1課、棋盤和棋子

第1課 棋盤和棋子 一、國際象棋的棋盤 國際象棋的棋盤為一8乘8的黑、白格相間的棋盤&#xff0c;8條豎線的編號分別為A-H&#xff0c;8條橫線的編號分別為1-8&#xff0c;在記譜時用豎線編號橫線編號的方式表示棋盤上的格子&#xff0c;例如a1格、h8格等.棋盤上有幾條重要的大…

c++程序員為什么要做自己的底層庫

五一期間&#xff0c;在家里翻到之前上學時候用的電腦和工作日志&#xff0c;粗略瀏覽一番&#xff0c;感慨10年歲月蹉跎&#xff0c;仍然沒有找到自己技術方向的“道”。遂有感而發&#xff0c;寫下此文。 算起來&#xff0c;接觸軟件開發也有10年時間了&#xff0c;最開始是…

Java——異常

1.什么是異常 將程序執行過程中發生的不正常行為稱為異常。 常見的異常有&#xff1a;算數異常&#xff0c;空指針異常&#xff0c;數組越界異常 每一種異常都有對應的類對齊描述 為了對每一種異常進行管理&#xff0c;Java內部實現了一個對異常的體系結構 1. Throwable&#x…

CS2游戲30萬掛箱賬號被封,飾品市場要變天

Steam游戲平臺上CS2的玩家在線人數常年位于第一位&#xff0c;即便偶爾會被爆款游戲擠下來&#xff0c;但一切都是暫時的。飾品交易作為CS2的重要組成部分&#xff0c;早已成為了維系游戲熱度的不二法門。可相對應的&#xff0c;各種掛箱子的工作室及個人也孕育而生。 但近來V社…