GPT基礎知識學習以及總結

ChatGPT 自學和解釋

(全名:Chat Generative Pre-trained Transformer)

自從ChatGPT出現后, 雖然大致上有個初步的認知,但是并沒有詳細學習這個詞到底代表的是什么

生成式預訓練變換器(Generative Pre-trained Transformer,GPT)

是一種先進的人工智能語言模型,它通過深度學習技術,特別是Transformer架構理解和生成自然語言文本。GPT通過在大量文本數據上的預訓練 ,學習語言的模式和結構,使其能夠預測和生成連貫、有意義的文本內容。GPT模型可以廣泛應用于文本生成、對話系統、自動摘要等多種自然語言處理任務。

  1. 其實在2012年就接觸過神經網絡相關的應用,但是這種應用落地到每個人都能接觸的情況,還是在2022年

  2. 這里就涉及到了Transformer架構了

Transformer 架構的由來

2017 年,Google 在論文 Attentions is All you need 中提出了Transformer模型架構。

Transformer模型架構使用 Self-Attention 結構取代了在 NLP 任務中常用的 RNN 網絡結構。相比 RNN 網絡結構,其最大的優點是可以并行計算。

    Self-Attention(自注意力機制)

在了解Transformer前 必須先了解RNN

1.RNN(Recurrent Neural Network)

    循環神經網絡(Recurrent Neural Network, RNN)是一類以[序列](sequence)數據為輸入,在序列的演進方向進行[遞歸](recursion)且所有節點(循環單元)按鏈式連接的[遞歸神經網絡](recursive neural network)

翻譯成人話就是:

  1. 登山地圖
    • 想象你正在繪制一張復雜的登山地圖,地圖上有很多山峰和谷地,代表了不同的狀態和信息。
  2. 從a到b的最優路徑
    • 在這個比喻中,從任意地方 a 到任意地方 b的最優路徑可以代表RNN在處理序列數據時,從一個時間步到下一個時間步的狀態轉移。
    • RNN的目標是找到一種方式來有效地從一個輸入(比如一個單詞或一個數值)轉移到下一個輸入,同時保持對之前輸入的記憶(上下文)。
  3. 上下文信息
    • 就像在攀登過程中,你需要記住之前的路徑和環境來找到最優路徑,RNN也會在每個時間步更新其隱藏狀態,以保留對之前輸入的記憶。這使得模型能夠理解序列數據的上下文。

1. 輸入和隱藏狀態更新

在 RNN 中,每個時間步 ( t ) 的計算過程可以用以下公式表示:

h_t = f(W_h h_{t-1} + W_x x_t + b)

  • 輸入 ( x_t ):這是當前時間步的輸入,例如一句話中的一個單詞。
  • 隱藏狀態 ( h_t ):這是當前時間步的“記憶”,它包含了之前所有時間步的信息。
  • ( W_h ):這是隱藏狀態的權重矩陣,用于將前一個隱藏狀態 ( h_{t-1} ) 轉換為當前時間步的狀態?!罢{節器”,它們幫助決定之前的記憶和當前輸入對當前狀態的影響有多大
  • ( W_x ):這是輸入的權重矩陣,將當前輸入 ( x_t ) 轉換為對當前狀態的影響?!罢{節器”,它們幫助決定之前的記憶和當前輸入對當前狀態的影響有多大
  • ( b ):這是偏置項,幫助調整模型的輸出。
  • ( f ):這是激活函數,通常使用 tanh 或 ReLU,它讓模型能夠處理復雜的情況,而不僅僅是簡單的加法

解釋:這個公式的意思是,當前的隱藏狀態 ( h_t ) 是通過結合前一個隱藏狀態 ( h_{t-1} ) 和當前輸入 ( x_t ) 計算得出的。這樣,RNN 就能夠“記住”之前的信息,并將其與當前輸入結合。

2. 輸出計算

接下來,RNN 會生成當前時間步的輸出 ( y_t ):

y_t = W_y h_t + b_y

  • 輸出 ( y_t ):這是模型對當前輸入的預測,比如預測下一個單詞。
  • ( W_y ):這是從隱藏狀態到輸出的權重矩陣。
  • ( b_y ):這是輸出的偏置項。

解釋:這個公式表示,輸出 ( y_t ) 是通過當前的隱藏狀態 ( h_t ) 計算得出的。它將隱藏狀態的信息轉化為具體的預測結果。

3. 損失計算和學習

在訓練過程中,RNN 會計算損失函數 ( L ) 來評估模型的預測與實際結果之間的差異。通過反向傳播算法,RNN 會根據損失來調整權重 ( W_h )、( W_x ) 和 ( W_y ),以提高模型的性能。

梯度

  1. 梯度的定義
    • 在登山地圖上,梯度可以被視為你在某個位置上坡的陡峭程度。它指示了你需要向哪個方向移動才能最快地到達山頂(最優解)。
  2. 梯度的作用
    • 當你在攀登時,梯度告訴你當前的位置(損失函數的值)和最佳的移動方向(更新參數的方向)。在機器學習中,梯度是損失函數對模型參數的導數,指示了如何調整參數以減少誤差。

梯度消失

  1. 梯度消失的比喻
    • 想象你在一條非常平緩的山坡上攀爬,坡度幾乎為零。這就像在訓練深層神經網絡時,隨著層數的增加,梯度變得越來越小,幾乎無法推動你向上移動。
  2. 影響
    • 當梯度消失時,模型在更新參數時幾乎沒有變化,導致訓練過程變得緩慢,甚至停滯。就像你在平緩的山坡上努力攀爬,卻幾乎沒有上升的感覺。

梯度爆炸

  1. 梯度爆炸的比喻
    • 現在想象你在一段非常陡峭的坡道上攀爬,坡度非常大,導致你每一步都向上跳得太高。這就像在訓練過程中,梯度突然變得非常大,導致參數更新過度。
  2. 影響
    • 當梯度爆炸時,模型的參數更新會變得極其不穩定,可能導致損失函數的值變得非常大,甚至導致訓練失敗。就像在陡峭的坡道上,你可能會失去平衡,跌回山下。

解決梯度消失

  1. 使用合適的激活函數

    • ReLU(Rectified Linear Unit):ReLU及其變種(如Leaky ReLU、Parametric ReLU)在正區間內具有線性特性,能有效減少梯度消失的問題。
    • Swish:另一種激活函數,通常在深層網絡中表現良好。

    選擇一條更陡的登山路徑(ReLU等激活函數),使得你在攀登時能獲得更多的動力,不再在平緩的地方停滯。

  2. 權重初始化

    • 使用適當的權重初始化方法,如He初始化(適用于ReLU)或Xavier初始化(適用于Sigmoid和Tanh),可以幫助緩解梯度消失。

    在登山前準備好合適的裝備(如登山鞋、登山杖),確保你在開始時就能以最佳狀態出發,避免在一開始就陷入困難。

  3. 使用殘差連接(Residual Connections)

    • 在深層網絡中引入殘差連接(如ResNet),使得信息可以更容易地通過網絡傳播,從而減少梯度消失的風險。

    在山中設置一些休息站(殘差連接),讓你在攀登過程中可以回到之前的高度,避免因為疲憊而停滯不前。

  4. Batch Normalization

    • 在每一層使用Batch Normalization可以使得網絡在訓練過程中保持更穩定的分布,從而減輕梯度消失的問題。

    在攀登過程中定期補充水分和食物(Batch Normalization),保持體力和狀態的穩定,確保你能持續前進而不至于疲憊。

  5. 使用LSTM或GRU

    • 這些特殊的RNN結構設計用于保留長期記憶,能有效處理梯度消失問題。

    使用更高級的登山技巧(LSTM、GRU),使得你在攀登時能更好地應對復雜的地形,保持對路徑的記憶

解決梯度爆炸

  1. 梯度裁剪(Gradient Clipping)

    • 在訓練過程中監控梯度的大小,當梯度超過某個閾值時進行裁剪,確保更新的幅度不會過大。這是解決梯度爆炸的常用方法。

    在登山時設定一個安全高度(梯度閾值),當你攀登過快時,及時停下來調整步伐,避免跌落。

  2. 調整學習率

    • 使用自適應學習率優化算法,如Adam、RMSprop等,可以根據梯度的歷史信息動態調整學習率,從而減少爆炸的可能性。

    根據山勢的變化(自適應學習率),靈活調整你的攀登速度,確保在陡峭的地方不至于摔倒。

  3. 權重正則化

    • 使用L2正則化等方法可以防止權重過大,從而間接降低梯度爆炸的風險。

    在登山時,不要背負過多的裝備(權重正則化),以免影響你的平衡和穩定性。

  4. 使用合適的初始化方法

    • 同樣,合理的權重初始化可以減少梯度爆炸的可能性。

    選擇合適的登山路線(權重初始化),讓你在開始時就能走在更穩妥的路徑上。

  5. 監控訓練過程

    • 定期檢查損失值和梯度的變化,及時調整訓練參數或策略。

    在攀登過程中定期查看地圖和指南針,確保你不會偏離路線,及時調整策略。

2.LSTM(Long Short-Term Memory)

是一種改進的循環神經網絡(RNN)架構,旨在解決傳統 RNN 中的梯度消失和梯度爆炸問題,以及增強對長期依賴關系的建模能力。

  1. 記憶單元(Cell State)
    • 類比:想象你在攀登一座山,登山地圖上有一條清晰的路線,這條路線就是你的記憶單元。它記錄了你在攀登過程中所經歷的關鍵點和高度變化。你可以隨時查看這條路線,以便決定下一步的行動。
  2. 輸入門(Input Gate)
    • 類比:在每到一個重要的岔路口,你需要決定是否要在地圖上添加新的信息(新的高度或標記)。輸入門就像這個決定的過程,幫助你選擇哪些新信息需要加入到記憶單元中。
  3. 遺忘門(Forget Gate)
    • 類比:在攀登過程中,有時你會發現某些信息不再重要,比如之前的路線或標記。遺忘門就像是一個過濾器,幫助你決定哪些信息需要被刪除,確保你的地圖保持簡潔和相關。
  4. 輸出門(Output Gate)
    • 類比:當你到達一個新的高點,準備繼續攀登時,你需要決定要將哪些當前的狀態信息(比如當前的高度或環境)發送到下一個岔路口。輸出門就像這個決定,讓你選擇哪些信息是你下一步行動所需的。
  • 攀登過程
    • 當你沿著山路攀登時(時間步的迭代),你會不斷更新你的地圖(記憶單元)。在每個岔路口,你會使用輸入門來添加新信息,使用遺忘門來刪除不再需要的信息,最后使用輸出門來決定下一步該如何行動。
  • 長短期記憶
    • LSTM的設計使得它能夠有效地保留長期記憶(重要的高度和路徑信息)而不被短期的信息(如臨時的障礙或天氣變化)所干擾。這就像在登山時,你能記住整個旅程的關鍵點,而不是僅僅關注眼前的細節。

3.GRU(Gated Recurrent Unit)

GRU(Gated Recurrent Unit)是一種對 LSTM 稍微改進的循環神經網絡,由 Cho 等人(2014年)提出。它將遺忘門和輸入門合并成一個單一的“更新門”,同時將 cell state 和隱藏狀態合并,并進行了其他一些改動。GRU模型相對于標準的 LSTM 模型來說更加簡單,并且越來越受到廣泛關注和應用。

  1. 隱藏狀態(Hidden State)
    • 類比:在攀登過程中,你的登山地圖上會記錄你當前的位置和狀態,這就是隱藏狀態。它反映了你在攀登過程中所積累的所有信息,幫助你決定下一步的行動。
  2. 重置門(Reset Gate)
    • 類比:當你到達一個新的岔路口時,你需要決定是否要忘記之前的一些信息,以便更好地適應新的環境。重置門就像這個決定,讓你選擇是否要“重置”部分之前的狀態,以便更好地處理當前的情況。
  3. 更新門(Update Gate)
    • 類比:在每個岔路口,你還需要決定是否要將新的信息添加到你的地圖上。更新門就像這個決定,幫助你選擇哪些新的信息需要被整合到當前的狀態中。
  4. 攀登過程
    • 當你沿著山路攀登時(時間步的迭代),你會不斷更新你的地圖(隱藏狀態)。在每個岔路口,你使用重置門來決定是否需要忘記某些信息,而使用更新門來決定如何將新信息與現有信息結合。
  5. 簡化的門控機制
    • GRU的設計使得它在處理序列數據時更為高效,因為它只使用兩個門(重置門和更新門),而不是LSTM的三個門(輸入門、遺忘門和輸出門)。這就像在攀登時,你只需關注兩個關鍵決策,而不必分心于更多的選擇
  • 有效的記憶管理
    • GRU能夠有效地管理長期和短期的記憶,類似于在攀登過程中,你能夠記住整個旅程的重要信息,同時又能靈活應對當前環境的變化。

4.Transformer

Transformer 是一種基于[注意力機制]的神經網絡架構,用于處理序列數據。它引入了[自注意力機制],允許模型在不同位置對輸入序列的各個元素進行加權關注。由于 Transformer 需要計算全連接的注意力矩陣,它的計算量較大。

在用登山地圖類比Transformer的工作原理時,可以將Transformer視為一種高級的、動態的地圖繪制工具,它能夠實時更新和優化路徑,以應對復雜的地形和變化的環境。以下是一些關鍵點,幫助理解Transformer是如何“繪制”這張登山地圖的:

Transformer 機制

1. 自注意力機制 (Self-Attention)

類比:想象你在一座山上,想要找到最佳的路徑到達另一座山。你需要查看周圍的每個點(其他山峰),判斷它們與目標山峰的距離和方向。

  • 查詢(Query):你的位置,表示你當前的需求。
  • 鍵(Key):其他山峰的位置,表示它們的特征。
  • 值(Value):每個山峰的高度,表示它們的“價值”。

公式
Q = XW^Q,
K = XW^K,
V = XW^V

在這里,X 就像是你在地圖上的所有山峰的位置,W^Q, W^K, W^V 是你用來轉換位置的工具(權重矩陣)。

權重矩陣就像是一種特殊的導航工具,它幫助你在地圖上識別哪些山峰(輸入元素)是最重要的

權重矩陣的不同組合(不同的 W 矩陣)就像是從不同的角度觀察地圖。每個矩陣提供了一個新的視角,幫助你更全面地理解地形

計算注意力權重
Attention(Q, K, V) = softmax(QK^T / sqrt(d_k))V

你計算查詢與鍵之間的距離(點積),然后通過softmax函數決定哪些山峰最重要(注意力權重),最后選擇的路徑(輸出)是基于你所關注的山峰的高度(值)。

2. 多頭注意力 (Multi-Head Attention)

類比:想象你有多個視角(頭),每個視角都能從不同的角度觀察周圍的山峰。

公式
MultiHead(Q, K, V) = Concat(head_1, ..., head_h)W^O

每個頭的計算為:
head_i = Attention(QW_i^Q, KW_i^K, VW_i^V)

在這里,每個視角(頭)獨立計算與周圍山峰的關系,可能關注不同的特征(如高度、坡度等)。最后,你將所有視角的觀察結果結合在一起,形成一個全面的路徑選擇。

3. 前饋神經網絡 (Feed-Forward Neural Network)

類比:在你選擇了路徑后,你需要進行進一步的調整和優化。

公式
FFN(x) = ReLU(xW_1 + b_1)W_2 + b_2

這個過程就像是在地圖上進行細致的規劃,考慮不同的因素(如天氣、地形等),并根據這些因素重新調整你的路線。你通過前饋神經網絡對選擇的路徑進行優化。

4. 位置編碼 (Positional Encoding)

類比:在這座山地地圖上,不同的位置有不同的特征和重要性。

公式
PE_{(pos, 2i)} = sin(pos / 10000^{2i/d}),
PE_{(pos, 2i+1)} = cos(pos / 10000^{2i/d})

位置編碼就像是在地圖上標記每個山峰的坐標,幫助你記住每個點的具體位置和相對關系。通過這些公式,你為每個山峰賦予了獨特的坐標信息,使得在選擇路徑時能夠考慮到它們的相對位置。

5. 最終輸出

類比:在你經過多個視角的觀察、細致的規劃和位置標記后,最終你決定了最佳的行進路線。

公式
Output = LayerNorm(x + MultiHead(Q, K, V))

這個過程就像是經過層歸一化和殘差連接的處理,確保你的最終路徑是最優的,能夠有效地到達目標。

總結

Transformer的工作原理。自注意力機制幫助我們在復雜的環境中尋找最相關的信息,多頭注意力提供了多樣化的視角,前饋神經網絡則幫助我們優化選擇,而位置編碼確保我們記住每個點的重要性和相對位置。整個過程形成了一條最佳的行進路線,幫助我們在序列數據中找到最有效的信息處理方式。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,428評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,024評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,285評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,548評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,328評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,878評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,971評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,098評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,616評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,554評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,725評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,243評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,971評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,361評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,613評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,339評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,695評論 2 370

推薦閱讀更多精彩內容

  • 1 為什么要對特征做歸一化 特征歸一化是將所有特征都統一到一個大致相同的數值區間內,通常為[0,1]。常用的特征歸...
    顧子豪閱讀 6,447評論 2 22
  • 1 為什么要對特征做歸一化 特征歸一化是將所有特征都統一到一個大致相同的數值區間內,通常為[0,1]。常用的特征歸...
    顧子豪閱讀 1,397評論 0 1
  • 1. 最小化代價函數優化方法:BGD、SGD、MBGD、動量、NAG、Adagrad、AdaDelta、Adam、...
    小鋒學長閱讀 2,491評論 0 1
  • NLP基礎知識 1、數據結構和算法 一種流行的自然語言處理庫、自帶語料庫、具有分類,分詞等很多功能,國外使用者居多...
    AI信仰者閱讀 1,358評論 0 0
  • 卷積神經網絡 信號的局部連接 共享權重3.降采樣4.多層網絡結構 卷積神經網絡的主要層次結構 1 卷積層: 卷積的...
    小鄭的學習筆記閱讀 298評論 0 0