偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

揭秘大模型的魔法:從Transformer架構(gòu)開(kāi)始,一步步揭開(kāi)它的神秘面紗

人工智能
這一章,我們不再浮于表面,不再喊口號(hào),不再說(shuō)“Transformer很強(qiáng)”,“注意力是核心”這種說(shuō)了等于沒(méi)說(shuō)的廢話,而是擼起袖子,從最基本的構(gòu)件開(kāi)始,一點(diǎn)點(diǎn)拼出這個(gè)神奇架構(gòu)的模樣,帶你看懂它、拆解它、理解它的工作邏輯。

大家好,我是寫(xiě)代碼的中年人,本章我們正式進(jìn)入Transformer架構(gòu)的學(xué)習(xí)。

從 ChatGPT 到文生圖,從語(yǔ)音助手到AI繪本的自動(dòng)生成,背后幾乎都躲著一個(gè)強(qiáng)大的架構(gòu),它像一臺(tái)“魔法機(jī)器”,能讀懂語(yǔ)言、生成內(nèi)容、甚至推理判斷。但這一切魔法的根基,其實(shí)都是數(shù)學(xué)和工程的藝術(shù)結(jié)晶。

這一章,我們不再浮于表面,不再喊口號(hào),不再說(shuō)“Transformer很強(qiáng)”,“注意力是核心”這種說(shuō)了等于沒(méi)說(shuō)的廢話,而是擼起袖子,從最基本的構(gòu)件開(kāi)始,一點(diǎn)點(diǎn)拼出這個(gè)神奇架構(gòu)的模樣,帶你看懂它、拆解它、理解它的工作邏輯。

什么是注意力機(jī)制

要想搞懂 Transformer,我們得從一個(gè)聽(tīng)起來(lái)就很學(xué)術(shù)、但其實(shí)非常接地氣的概念說(shuō)起--注意力機(jī)制(Attention Mechanism)。

什么是注意力機(jī)制呢?我們先看下生活中的例子:

當(dāng)你你在咖啡館里一邊聽(tīng)朋友聊天,一邊偷瞄手機(jī)上的消息,還要留意服務(wù)員端來(lái)的咖啡。這時(shí)候,你的大腦會(huì)自動(dòng)分配注意力:朋友講到關(guān)鍵劇情時(shí),你耳朵豎起來(lái);手機(jī)彈出老板的消息,你眼睛趕緊掃一眼。這就是“注意力”的本質(zhì)——在信息爆炸的場(chǎng)景里,挑出最重要的部分優(yōu)先處理。Transformer的注意力機(jī)制,干的就是這個(gè)活兒!

01、注意力機(jī)制:我為什么只看你?

好了,進(jìn)入正題。注意力機(jī)制的核心思想是:不是所有信息都同樣重要。在處理一段話或者一堆數(shù)據(jù)時(shí),模型得學(xué)會(huì)“挑重點(diǎn)”。比如,你讀“今天天氣很好,我想去爬山”這句話,注意力機(jī)制會(huì)幫模型搞清楚“很好”和“爬山”之間的關(guān)系,而不是傻乎乎地把“今天”看得跟“爬山”一樣重要。

那它怎么挑重點(diǎn)呢?我來(lái)給你拆解一下這個(gè)機(jī)制的三個(gè)步驟,用我的“第一人稱(chēng)視角”帶你體驗(yàn)一下:

1. 我先給每個(gè)詞打個(gè)分!

假設(shè)我是一個(gè)Transformer模型,正在處理“我愛(ài)吃蘋(píng)果”這句話。每個(gè)詞(“我”“愛(ài)”“吃”“蘋(píng)果”)都會(huì)被轉(zhuǎn)成一個(gè)數(shù)字向量(就像給每個(gè)詞發(fā)一個(gè)“身份證”)。然后,我會(huì)用一種叫:查詢(xún)(Query)、鍵(Key)、值(Value)的機(jī)制來(lái)算每個(gè)詞的重要性。

查詢(xún)(Query):我問(wèn)自己,“現(xiàn)在我在看哪個(gè)詞?它想跟誰(shuí)搭上關(guān)系?”

鍵(Key):每個(gè)詞都舉手說(shuō),“嘿,我在這兒!看看我有多重要!”

值(Value):如果某個(gè)詞被我選中,它會(huì)把自己的“信息”貢獻(xiàn)出來(lái)。

比如,我在看“吃”這個(gè)詞時(shí),會(huì)問(wèn):“‘吃’跟哪個(gè)詞最相關(guān)?”然后我會(huì)算一下“吃”跟“我”“愛(ài)”“蘋(píng)果”的匹配度(通過(guò)向量點(diǎn)積)。結(jié)果發(fā)現(xiàn),“吃”跟“蘋(píng)果”的關(guān)系最緊密(畢竟吃的是蘋(píng)果,不是“我”),于是我給“蘋(píng)果”打個(gè)高分!

2. 我把分?jǐn)?shù)變成權(quán)重!

得分算出來(lái)后,我會(huì)把這些分?jǐn)?shù)變成注意力權(quán)重。

這就像我在咖啡館里決定:朋友的八卦占我注意力的70%,手機(jī)消息占20%,服務(wù)員的咖啡占10%。在Transformer里,我用一個(gè)叫Softmax的函數(shù),把分?jǐn)?shù)變成0到1之間的比例,確??偤褪?00%。這樣,在“我愛(ài)吃蘋(píng)果”這句話中,“蘋(píng)果”可能得到0.6的權(quán)重,“我”和“愛(ài)”各分到0.2和0.1。

3. 我根據(jù)權(quán)重提取信息!

有了權(quán)重,我就知道該多關(guān)注誰(shuí)了。我會(huì)把每個(gè)詞的“值”(Value)按權(quán)重加起來(lái),生成一個(gè)新的向量。

這個(gè)向量就像是“吃”這個(gè)詞的“注意力總結(jié)”,里面融合了“蘋(píng)果”的信息最多,還有一點(diǎn)“我”和“愛(ài)”的影子。這樣,我就能更好地理解“吃蘋(píng)果”這件事,而不是被無(wú)關(guān)的信息干擾。

02、Transformer的基本結(jié)構(gòu)

我們知道在論文《Attention is All You Need》中首次提出了Transformer,主要有兩個(gè)部分組成了Transformer架構(gòu):

編碼器(Encoder):把輸入句子“壓縮”成一坨高維向量;

解碼器(Decoder):根據(jù)這些向量,“翻譯”成輸出。

在GPT這種大模型中,其實(shí)只用了Decoder部分;而在機(jī)器翻譯里,比如英語(yǔ)轉(zhuǎn)中文的模型,會(huì)把兩個(gè)都用上。

在這里我不做太多解釋?zhuān)敬挝恼掠袦\到深會(huì)做詳細(xì)說(shuō)明。

03、實(shí)現(xiàn)一個(gè)簡(jiǎn)單的自注意力機(jī)制

前面文章我們已經(jīng)講過(guò)把詞元變?yōu)殡S機(jī)的向量值,本次我們就實(shí)現(xiàn)計(jì)算一個(gè)詞元的上下文向量。

我們使用四維嵌入向量,并隨機(jī)初始化它們的值,我們用"年"詞元進(jìn)行求上下文向量。

import numpy as np


# 固定隨機(jī)種子,確保結(jié)果一致
np.random.seed(42)


# 句子和每個(gè)字
tokens = list("寫(xiě)代碼的中年人")
n = len(tokens)
d = 4  # 每個(gè)字的向量維度


# 生成詞向量:shape (n, d)
embeddings = np.random.randn(n, d)


# 打印初始化向量
print("=== 每個(gè)字的初始向量 ===")
for i in range(n):
    print(f"{tokens[i]}: {embeddings[i]}")


# 以“年”作為 Query
query_index = tokens.index("年")
query_vector = embeddings[query_index]  # shape: (d,)


# 點(diǎn)積計(jì)算注意力分?jǐn)?shù)(query_vector 與每個(gè)詞做點(diǎn)積)
scores = embeddings @ query_vector  # shape: (n,)


# Softmax 歸一
def softmax(x):
    e_x = np.exp(x - np.max(x))  # 減去最大值防止數(shù)值爆炸
    return e_x / e_x.sum()


attention_weights = softmax(scores)  # shape: (n,)


# 計(jì)算上下文向量(加權(quán)求和)
context_vector = attention_weights @ embeddings  # shape: (d,)


# 輸出注意力分?jǐn)?shù)
print("\n=== 注意力分?jǐn)?shù)(點(diǎn)積) ===")
for i, s in enumerate(scores):
    print(f"‘{tokens[i]}’ 的分?jǐn)?shù): {s:.4f}")


# 輸出注意力權(quán)重
print("\n=== 注意力權(quán)重(softmax歸一) ===")
for i, w in enumerate(attention_weights):
    print(f"‘{tokens[i]}’ 的權(quán)重: {w:.4f}")


# 輸出上下文向量
print(f"\n=== 上下文向量 for ‘年’ ===\n{context_vector}")
# 輸出
=== 每個(gè)字的初始向量 ===
寫(xiě): [ 0.49671415 -0.1382643   0.64768854  1.52302986]
代: [-0.23415337 -0.23413696  1.57921282  0.76743473]
碼: [-0.46947439  0.54256004 -0.46341769 -0.46572975]
的: [ 0.24196227 -1.91328024 -1.72491783 -0.56228753]
中: [-1.01283112  0.31424733 -0.90802408 -1.4123037 ]
年: [ 1.46564877 -0.2257763   0.0675282  -1.42474819]
人: [-0.54438272  0.11092259 -1.15099358  0.37569802]


=== 注意力分?jǐn)?shù)(點(diǎn)積) ===
‘寫(xiě)’ 的分?jǐn)?shù): -1.3670
‘代’ 的分?jǐn)?shù): -1.2771
‘碼’ 的分?jǐn)?shù): -0.1783
‘的’ 的分?jǐn)?shù): 1.4712
‘中’ 的分?jǐn)?shù): 0.3955
‘年’ 的分?jǐn)?shù): 4.2336
‘人’ 的分?jǐn)?shù): -1.4359


=== 注意力權(quán)重(softmax歸一) ===
‘寫(xiě)’ 的權(quán)重: 0.0033
‘代’ 的權(quán)重: 0.0036
‘碼’ 的權(quán)重: 0.0109
‘的’ 的權(quán)重: 0.0570
‘中’ 的權(quán)重: 0.0194
‘年’ 的權(quán)重: 0.9025
‘人’ 的權(quán)重: 0.0031


=== 上下文向量 for ‘年’ ===
[ 1.31085939 -0.30172873 -0.05573854 -1.34141581]

代碼詳解

整體代碼回顧:我們?cè)诟墒裁矗?/span>

我們以“寫(xiě)代碼的中年人”這7個(gè)字為輸入,給每個(gè)字隨機(jī)分配一個(gè) 4 維向量(不區(qū)分 Q/K/V,僅用于演示)。

然后: 假設(shè)我們以“年”這個(gè)詞為 query,計(jì)算它對(duì)其他每個(gè)詞的注意力強(qiáng)度,并據(jù)此得到一個(gè)上下文向量。

整個(gè)過(guò)程包含以下步驟:

  • 初始化詞向量(隨機(jī))
  • 選定 query(“年”)
  • 計(jì)算點(diǎn)積注意力分?jǐn)?shù)
  • 使用 softmax 將分?jǐn)?shù)歸一為概率
  • 利用注意力權(quán)重對(duì)所有詞向量加權(quán),得到最終的上下文表示
責(zé)任編輯:龐桂玉 來(lái)源: 寫(xiě)代碼的中年人
相關(guān)推薦

2010-07-12 17:10:23

Android應(yīng)用程序

2020-12-24 11:19:55

JavaMapHashMap

2017-01-19 21:08:33

iOS路由構(gòu)建

2018-12-24 10:04:06

Docker存儲(chǔ)驅(qū)動(dòng)

2019-03-05 14:09:27

Docker存儲(chǔ)容器

2019-07-09 15:23:22

Docker存儲(chǔ)驅(qū)動(dòng)

2024-08-30 08:30:29

CPU操作系統(tǒng)寄存器

2024-09-30 09:56:59

2017-01-06 15:13:25

LinuxVim源代碼

2016-11-02 18:54:01

javascript

2017-12-25 11:50:57

LinuxArch Linux

2010-03-04 16:28:17

Android核心代碼

2009-08-14 11:35:01

Scala Actor

2013-01-08 10:01:44

計(jì)算模式企業(yè)計(jì)算HPC

2018-06-11 15:30:12

2018-07-13 15:36:52

2024-08-06 09:29:54

程序機(jī)器指令字符串

2018-04-23 14:23:12

2019-04-01 10:15:02

2011-05-10 10:28:55

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)