自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

大模型到底有沒有智能?一篇文章給你講明明白白

人工智能
在 LLM 的世界里,每個 token 都有一個獨一無二的數(shù)字身份證。而 Tokenizer,就是文本和 token 之間的 “翻譯官”,將人類的語言轉(zhuǎn)化為 LLM 能理解的編碼,也將 LLM 的思維解碼為人類的文字。

生成式人工智能 (GenAI[1]) 和大語言模型 (LLM[2]),這兩個詞匯想必已在大家的耳邊縈繞多時。它們?nèi)珞@濤駭浪般席卷了整個科技界,登上了各大新聞頭條。ChatGPT,這個神奇的對話助手,也許已成為你形影不離的良師益友。

然而,在這場方興未艾的 GenAI 革命背后,有一個謎題久久縈繞在人們心頭:這些模型的智能究竟從何而來?本文將為您揭開謎底,解析生成式文本模型的奧秘。我們將拋開晦澀艱深的數(shù)學(xué),用通俗易懂的語言,帶您走進(jìn)這個神奇的算法世界。讓我們撕下 “魔法” 的面紗,看清其中的計算機科學(xué)本質(zhì)。

LLM 的真面目

首先,我們要破除一個常見的誤區(qū)。許多人誤以為,這些模型是真的能夠與人對話,回答人們的各種問題。然而,它們真正的能力遠(yuǎn)沒有想象的那么復(fù)雜——它們所做的,不過是根據(jù)輸入的文本,預(yù)測下一個詞語 (更準(zhǔn)確地說,是下一個 token)。

Token,這個看似簡單的概念,卻是揭開 LLM 神秘面紗的鑰匙。讓我們由此出發(fā),步步深入,一探究竟。

Token,這些文本的積木、語言的原子,正是 LLM 理解世界的基石。對我們而言,token 不過是單詞、標(biāo)點、空格的化身,但在 LLM 的眼中,它們是精簡而高效的信息編碼。有時,一個 token 可能代表一串字符,長短不一;有時,它可能是孤零零的一個標(biāo)點符號。

LLM 的詞匯表,就是這些 token 的集合,啥都有,樣樣全。這其中的奧秘,要追溯到 BPE 算法[3]。BPE 算法是如何煉制出這些 tokens 的?這個問題,值得我們細(xì)細(xì)探究。但在此之前,只需記住:GPT-2 模型[4],這個自然語言處理界的明星,它的詞匯表中有 50,257 個 token。

在 LLM 的世界里,每個 token 都有一個獨一無二的數(shù)字身份證。而 Tokenizer,就是文本和 token 之間的 “翻譯官”,將人類的語言轉(zhuǎn)化為 LLM 能理解的編碼,也將 LLM 的思維解碼為人類的文字。如果你熟悉 Python,不妨親自與 token 打個照面。只需安裝 OpenAI 的 tiktoken 包:

$ pip install tiktoken

然后在 Python 中嘗試以下操作:

>>> import tiktoken
>>> encoding = tiktoken.encoding_for_model("gpt-2")

>>> encoding.encode("The quick brown fox jumps over the lazy dog.")
[464, 2068, 7586, 21831, 18045, 625, 262, 16931, 3290, 13]

>>> encoding.decode([464, 2068, 7586, 21831, 18045, 625, 262, 16931, 3290, 13])
'The quick brown fox jumps over the lazy dog.'

>>> encoding.decode([464])
'The'
>>> encoding.decode([2068])
' quick'
>>> encoding.decode([13])
'.'

在這個實驗中,我們可以看到,對于 GPT-2 而言,token 464 表示單詞 “The”,token 2068 表示 “quick” (含前導(dǎo)空格),token 13 則表示句點。

由于 token 是算法生成的,有時會出現(xiàn)一些奇怪的現(xiàn)象。比如,同一個單詞 “the” 的三個變體在 GPT-2 中被編碼成了不同的 token:

>>> encoding.encode('The')
[464]
>>> encoding.encode('the')
[1169]
>>> encoding.encode(' the')
[262]

BPE 算法并不總是將完整的單詞映射為 token。事實上,不太常用的單詞可能無法成為單獨的 token,需要用多個 token 組合編碼,比如這個 “Payment”,就要化身為 “Pay” 和 “ment” 的組合:

>>> encoding.encode("Payment")
[19197, 434]

>>> encoding.decode([19197])
'Pay'
>>> encoding.decode([434])
'ment'

預(yù)測下一個 Token

語言模型就像一個 “水晶球”,給它一串文字,它就能預(yù)言下一個最可能出現(xiàn)的詞語。這是它的看家本領(lǐng)。但模型并非真的手眼通天,它的預(yù)言能力其實基于扎實的概率計算。讓我們一起掀開這層神秘的面紗,看看背后的真相。

如果你懂一點 Python,我們可以用幾行代碼來窺探語言模型的預(yù)言過程:

predictions = get_token_predictions(['The', ' quick', ' brown', ' fox'])

這個 get_token_predictions 函數(shù)就是我們的 “水晶球”。它接受一個 token 列表作為輸入,這些 token 來自用戶提供的 prompt。在這個例子中,我們假設(shè)每個單詞都是一個獨立的 token。當(dāng)然,在實際使用中,每個 token 都有一個對應(yīng)的數(shù)字 ID,但為了簡單起見,我們這里直接用單詞的文本形式。

函數(shù)的返回結(jié)果是一個龐大的數(shù)據(jù)結(jié)構(gòu),里面記錄了詞匯表中每個 token 出現(xiàn)在輸入文本之后的概率。以 GPT-2 模型為例,它的詞匯表包含 50,257 個 token,因此返回值就是一個 50,257 維的概率分布。

現(xiàn)在再來重新審視一下這個例子。如果我們的語言模型訓(xùn)練有素,面對 “The quick brown fox[5]” 這樣一個爛大街的句子片段,它很可能會預(yù)測下一個詞是 “jumps”,而不是 “potato” 之類風(fēng)馬牛不相及的詞。在這個概率分布中,“jumps” 的概率值會非常高,而 “potato” 的概率值則接近于零。

?

The quick brown fox jumps over the lazy dog (相應(yīng)中文可簡譯為 “快狐跨懶狗”,完整翻譯則是 “敏捷的棕色狐貍跨過懶狗”) 是一個著名的英語全字母句,常用于測試字體顯示效果和鍵盤是否故障。此句也常以 “quick brown fox” 做為指代簡稱。

當(dāng)然,語言模型的預(yù)測能力并非與生俱來,而是通過日積月累的訓(xùn)練得來的。在漫長的訓(xùn)練過程中,模型如饑似渴地汲取海量文本的營養(yǎng),逐漸茁壯成長。訓(xùn)練結(jié)束時,它已經(jīng)具備了應(yīng)對各種文本輸入的能力,可以利用積累的知識和經(jīng)驗,計算出任意 token 序列的下一個 token 概率。

現(xiàn)在是不是覺得語言模型的預(yù)測過程沒那么神奇了?它與其說是魔法,不如說是一個基于概率的計算過程。這個過程雖然復(fù)雜,但并非不可理解。我們只要掌握了基本原理,就可以揭開它的神秘面紗,走近它,了解它。

長文本生成的奧秘

由于語言模型每次只能預(yù)測下一個 token 會是什么,因此生成完整句子的唯一方法就是在循環(huán)中多次運行該模型。每一輪迭代都會從模型返回的概率分布中選擇一個新的 token,生成新的內(nèi)容。然后將這個新 token 附加到下一輪中輸入給模型的文本序列末尾,如此循環(huán)往復(fù),直到生成足夠長度的文本。

我們來看一個更完整的 Python 偽代碼,展示具體的實現(xiàn)邏輯:

def generate_text(prompt, num_tokens, hyperparameters):
    tokens = tokenize(prompt)
    for i in range(num_tokens):
        predictions = get_token_predictions(tokens)
        next_token = select_next_token(predictions, hyperparameters)
        tokens.append(next_token)
    return ''.join(tokens)

其中,generate_text() 函數(shù)接受一個用戶輸入的提示詞 (prompt) 文本作為參數(shù),這可以是一個問題或其他任意文本。

tokenize() 輔助函數(shù)使用類似 tiktoken 的分詞庫將提示文本轉(zhuǎn)換成一系列等效的 token(token) 序列。在 for 循環(huán)內(nèi)部,get_token_predictions() 函數(shù)調(diào)用語言模型來獲取下一個 token 的概率分布,這一步與前面的示例類似。

select_next_token() 函數(shù)根據(jù)上一步得到的下個 token 概率分布,選擇最合適的 token 來延續(xù)當(dāng)前的文本序列。最簡單的做法是選擇概率最高的 token,在機器學(xué)習(xí)中被稱為貪婪選擇 (greedy selection)。更好的做法是用符合模型給出概率分布的隨機數(shù)生成器來選詞,這樣可以讓生成的文本更豐富多樣。如果用同樣的輸入多次運行模型,這種方法還可以讓每次產(chǎn)生的回應(yīng)都略有不同。

為了讓 token 選擇過程更加靈活可控,可以用一些超參數(shù) (hyperparameter) 來調(diào)整語言模型返回的概率分布,這些超參數(shù)作為參數(shù)傳遞給文本生成函數(shù)。通過調(diào)整超參數(shù),你可以控制 token 選擇的 “貪婪程度”。如果你用過大語言模型,你可能比較熟悉名為 temperature 的超參數(shù)。提高 temperature 的值可以讓 token 的概率分布變得更加平緩,增加選中概率較低 token 的機會,從而讓生成的文本顯得更有創(chuàng)意和變化。此外,常用的還有 top_p 和 top_k 兩個超參數(shù),它們限定從概率最高的前 k 個或概率超過閾值 p 的 token 中進(jìn)行選擇,以平衡多樣性和連貫性。

選定了一個新 token 后,循環(huán)進(jìn)入下一輪迭代,將新 token 添加到原有文本序列的末尾,作為新一輪的輸入,再接著生成下一個 token。num_tokens 參數(shù)控制循環(huán)的迭代輪數(shù),決定要生成的文本長度。但需要注意的是,由于語言模型是逐詞預(yù)測,沒有句子或段落的概念,生成的文本常常會在句子中途意外結(jié)束。為了避免這種情況,我們可以把 num_tokens 參數(shù)視為生成長度的上限而非確切值,當(dāng)遇到句號、問號等標(biāo)點符號時提前結(jié)束生成過程,以保證文本在語義和語法上的完整性。

如果你已經(jīng)讀到這里且充分理解了以上內(nèi)容,那么恭喜你!現(xiàn)在你對大語言模型的基本工作原理有了一個高層次的認(rèn)識。如果你想進(jìn)一步了解更多細(xì)節(jié),我在下一節(jié)會深入探討一些更加技術(shù)性的話題,但會盡量避免過多涉及晦澀難懂的數(shù)學(xué)原理。

模型訓(xùn)練

遺憾的是,不借助數(shù)學(xué)語言來討論模型訓(xùn)練實際上是很困難的。這里先展示一種非常簡單的訓(xùn)練方法。

既然 LLM 的任務(wù)是預(yù)測某些詞后面跟隨的詞,那么一個簡單的模型訓(xùn)練方式就是從訓(xùn)練數(shù)據(jù)集中提取所有連續(xù)的詞對,并用它們來構(gòu)建一張概率表。

讓我們用一個小型詞表和數(shù)據(jù)集來演示這個過程。假設(shè)模型的詞表包含以下 5 個詞:

['I', 'you', 'like', 'apples', 'bananas']

為了保持示例簡潔,我不打算將空格和標(biāo)點符號視為獨立的詞。

我們使用由三個句子組成的訓(xùn)練數(shù)據(jù)集:

  • I like apples
  • I like bananas
  • you like bananas

我們可以構(gòu)建一個 5x5 的表格,在每個單元格中記錄 “該單元格所在行的詞” 后面跟隨 “該單元格所在列的詞” 的次數(shù)。下面是根據(jù)數(shù)據(jù)集中三個句子得到的表格:

-

I

you

like

apples

bananas

I



2



you



1



like




1

2

apples






bananas






這個表格應(yīng)該不難理解。數(shù)據(jù)集中包含兩個 “I like” 實例,一個 “you like” 實例,一個 “l(fā)ike apples” 實例和兩個 “l(fā)ike bananas” 實例。

現(xiàn)在我們知道了每對詞在訓(xùn)練集中出現(xiàn)的次數(shù),就可以計算每個詞后面跟隨其他詞的概率了。為此,我們將表中每一行的數(shù)字轉(zhuǎn)換為概率值。例如,表格中間行的 “l(fā)ike” 后面有一次跟隨 “apples”,兩次跟隨 “bananas”。這意味著在 33.3%的情況下 “l(fā)ike” 后面是 “apples”,剩下 66.7%的情況下是 “bananas”。

下面是計算出所有概率后的完整表格。空單元格代表 0%的概率。

-

I

you

like

apples

bananas

I



100%



you



100%



like




33.3%

66.7%

apples

25%

25%

25%


25%

bananas

25%

25%

25%

25%


“I”、“you” 和 “l(fā)ike” 這幾行的概率很容易計算,但 “apples” 和 “bananas” 帶來了問題。由于數(shù)據(jù)集中沒有這兩個詞后面接其他詞的例子,它們存在訓(xùn)練數(shù)據(jù)的空白。為了確保模型即使面對未見過的詞也能做出預(yù)測,我決定將 “apples” 和 “bananas” 的后續(xù)詞概率平均分配給其他四個可能的詞。這種做法雖然可能產(chǎn)生不自然的結(jié)果,但至少能防止模型在遇到這兩個詞時陷入死循環(huán)。

訓(xùn)練數(shù)據(jù)存在 “空洞” 的問題對語言模型的影響不容忽視。在真實的大語言模型中,由于訓(xùn)練語料極其龐大,這些空洞通常表現(xiàn)為局部覆蓋率偏低,而不是整體性的缺失,因而不太容易被發(fā)現(xiàn)。語言模型在這些訓(xùn)練不足的領(lǐng)域或話題上會產(chǎn)生片面、錯誤或前后不一致的預(yù)測結(jié)果,但通常會以一種難以感知的形式表現(xiàn)出來。這就是語言模型有時會產(chǎn)生 “幻覺[6]” 的原因之一,所謂幻覺,就是指生成的文本表面上讀起來通順流暢,但實際包含了事實錯誤或前后矛盾的內(nèi)容。

借助上面給出的概率表,你現(xiàn)在可以自己想象一下 get_token_predictions() 函數(shù)會如何實現(xiàn)。用 Python 偽代碼表示大致如下:

def get_token_predictions(input_tokens):
    last_token = input_tokens[-1]
    return probabilities_table[last_token]

是不是比想象的要簡單?該函數(shù)接受一個單詞序列作為輸入,也就是用戶提示。它取這個序列的最后一個單詞,然后返回概率表中與之對應(yīng)的那一行。

舉個例子,如果用 ['you', 'like'] 來調(diào)用這個函數(shù),它會返回 “l(fā)ike” 所在的行,其中 “apples” 有 33.3%的概率接在后面組成句子,而 “bananas” 占剩下的 66.7%。有了這些概率信息,之前展示的 select_next_token() 函數(shù)在三分之一的情況下應(yīng)該選擇 “apples”。

當(dāng) “apples” 被選為 “you like” 的續(xù)詞時,“you like apples” 這個句子就形成了。這是一個在訓(xùn)練數(shù)據(jù)中不存在的全新句子,但它卻非常合理。希望這個例子能幫你認(rèn)識到,語言模型其實只是在重復(fù)使用和拼湊它在訓(xùn)練過程中學(xué)到的各種模式碎片,就能組合出一些看似原創(chuàng)的想法或概念。

上下文窗口

上一節(jié)內(nèi)容我使用馬爾可夫鏈[7]的方法訓(xùn)練了一個小語言模型。這種方法存在一個問題:它的上下文窗口只有一個標(biāo)記,也就是說,模型在預(yù)測下一個詞時,只考慮了輸入序列的最后一個詞,而忽略了之前的所有內(nèi)容。這導(dǎo)致生成的文本缺乏連貫性和一致性,常常前后矛盾,邏輯跳躍。

為了提高模型的預(yù)測質(zhì)量,一種直觀的思路是擴大上下文窗口的大小,比如增加到 2 個標(biāo)記。但這樣做會導(dǎo)致概率表的規(guī)模急劇膨脹。以我之前使用的 5 個標(biāo)記的簡單詞表為例,將上下文窗口增加到 2 個標(biāo)記,就需要在原有的 5 行概率表基礎(chǔ)上,額外增加 25 行來覆蓋所有可能的雙詞組合。如果進(jìn)一步擴大到 3 個標(biāo)記,額外的行數(shù)將達(dá)到 125 行??梢灶A(yù)見,隨著上下文窗口的增大,概率表的規(guī)模將呈指數(shù)級爆炸式增長。

更重要的是,即使將上下文窗口擴大到 2 個或 3 個標(biāo)記,其改進(jìn)效果仍然非常有限。要使語言模型生成的文本真正做到前后連貫、邏輯通順,實際上需要一個遠(yuǎn)大于此的上下文窗口。只有足夠大的上下文,新生成的詞才能與之前較遠(yuǎn)處提及的概念、思想產(chǎn)生聯(lián)系,從而賦予文本連續(xù)的語義和邏輯。

舉個實際的例子,OpenAI 開源的 GPT-2 模型采用了 1024 個標(biāo)記的上下文窗口。如果仍然沿用馬爾可夫鏈的思路來實現(xiàn)這一尺度的上下文,以 5 個標(biāo)記的詞表為例,僅覆蓋 1024 個詞長度的所有可能序列,就需要高達(dá) 5^1024 行的概率表。這是一個天文數(shù)字,我在 Python 中計算了這個值的具體大小,讀者可以向右滾動來查看完整的數(shù)字:

>>> pow(5, 1024)
55626846462680034577255817933310101605480399511558295763833185422180110870347954896357078975312775514101683493275895275128810854038836502721400309634442970528269449838300058261990253686064590901798039126173562593355209381270166265416453973718012279499214790991212515897719252957621869994522193843748736289511290126272884996414561770466127838448395124802899527144151299810833802858809753719892490239782222290074816037776586657834841586939662825734294051183140794537141608771803070715941051121170285190347786926570042246331102750604036185540464179153763503857127117918822547579033069472418242684328083352174724579376695971173152319349449321466491373527284227385153411689217559966957882267024615430273115634918212890625

這段 Python 代碼示例生成了一個龐大的表格,但即便如此,它也只是整個表格的一小部分。因為除了當(dāng)前的 1024 個 token 長度的序列,我們還需要生成更短的序列,譬如 1023 個、1022 個 token 的序列,一直到只包含 1 個 token 的序列。這樣做是為了確保在輸入數(shù)據(jù) token 數(shù)量不足的情況下,模型也能妥善處理較短的序列。馬爾可夫鏈雖然是一個有趣的文本生成方法,但在可擴展性方面確實存在很大的問題。

如今,1024 個 token 的上下文窗口已經(jīng)不那么出色了。GPT-3 將其擴大到了 2048 個 token,GPT-3.5 進(jìn)一步增加到 4096 個。GPT-4 一開始支持 8192 個 token 的上下文,后來增加到 32000 個,再后來甚至達(dá)到了 128000 個 token!目前,開始出現(xiàn)支持 100 萬以上 token 的超大上下文窗口模型,使得模型在進(jìn)行 token 預(yù)測時,能夠擁有更好的一致性和更強的記憶能力。

總而言之,盡管馬爾可夫鏈為我們提供了一種正確的思路來思考文本生成問題,但其固有的可擴展性不足,使其難以成為一個可行的、能夠滿足實際需求的解決方案。面對海量文本數(shù)據(jù),我們需要尋求更加高效和可擴展的文本生成方法。

從馬爾可夫鏈到神經(jīng)網(wǎng)絡(luò)

顯然,我們必須摒棄使用概率表的想法。對于一個合理大小的上下文窗口,所需的表格大小將遠(yuǎn)超內(nèi)存限制。我們可以用一個函數(shù)來代替這個表格,該函數(shù)能夠通過算法生成近似的下一個詞出現(xiàn)概率,而無需將其存儲在一個巨大的表格中。這正是神經(jīng)網(wǎng)絡(luò)擅長的領(lǐng)域。

神經(jīng)網(wǎng)絡(luò)是一種特殊的函數(shù),它接收一些輸入,經(jīng)過計算后給出輸出。對于語言模型而言,輸入是代表提示信息的詞,輸出是下一個可能出現(xiàn)的詞及其概率列表。神經(jīng)網(wǎng)絡(luò)之所以特殊,是因為除了函數(shù)邏輯之外,它們對輸入進(jìn)行計算的方式還受到許多外部定義參數(shù)的控制。

最初,神經(jīng)網(wǎng)絡(luò)的參數(shù)是未知的,因此其輸出毫無意義。神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程就是要找到那些能讓函數(shù)在訓(xùn)練數(shù)據(jù)集上表現(xiàn)最佳的參數(shù),并假設(shè)如果函數(shù)在訓(xùn)練數(shù)據(jù)上表現(xiàn)良好,它在其他數(shù)據(jù)上的表現(xiàn)也會相當(dāng)不錯。

在訓(xùn)練過程中,參數(shù)會使用一種叫做反向傳播[8]的算法進(jìn)行迭代調(diào)整,每次調(diào)整的幅度都很小。這個算法涉及大量數(shù)學(xué)計算,我們在這里就不展開了。每次參數(shù)調(diào)整后,神經(jīng)網(wǎng)絡(luò)的預(yù)測都會變得更準(zhǔn)一些。參數(shù)更新后,網(wǎng)絡(luò)會用訓(xùn)練數(shù)據(jù)集重新評估,結(jié)果為下一輪調(diào)整提供參考。這個過程會反復(fù)進(jìn)行,直到函數(shù)能夠在訓(xùn)練數(shù)據(jù)上很好地預(yù)測下一個詞。

為了讓你對神經(jīng)網(wǎng)絡(luò)的規(guī)模有個概念,GPT-2 模型有大約 15 億個參數(shù),GPT-3 增加到了 1750 億,而 GPT-4 據(jù)說有 1.76 萬億個參數(shù)。在當(dāng)前硬件條件下,訓(xùn)練如此規(guī)模的神經(jīng)網(wǎng)絡(luò)通常需要幾周或幾個月的時間。

有趣的是,由于參數(shù)數(shù)量巨大,并且都是通過漫長的迭代過程自動計算出來的,我們很難理解模型的工作原理。訓(xùn)練完成的大語言模型就像一個難以解釋的黑箱,因為模型的大部分 “思考” 過程都隱藏在海量參數(shù)之中。即使是訓(xùn)練它的人,也很難說清其內(nèi)部的運作機制。

層、Transformer 與 Attention 機制

你可能好奇神經(jīng)網(wǎng)絡(luò)函數(shù)內(nèi)部進(jìn)行了哪些神秘的計算。在精心調(diào)校的參數(shù)幫助下,它可以接收一系列輸入標(biāo)記,并以某種方式輸出下一個標(biāo)記出現(xiàn)的合理概率。

神經(jīng)網(wǎng)絡(luò)被配置為執(zhí)行一系列操作,每個操作稱為一個 “層”。第一層接收輸入并對其進(jìn)行轉(zhuǎn)換。轉(zhuǎn)換后的輸入進(jìn)入下一層,再次被轉(zhuǎn)換。這一過程持續(xù)進(jìn)行,直到數(shù)據(jù)到達(dá)最后一層并完成最終轉(zhuǎn)換,生成輸出或預(yù)測結(jié)果。

機器學(xué)習(xí)專家設(shè)計出不同類型的層,對輸入數(shù)據(jù)進(jìn)行數(shù)學(xué)轉(zhuǎn)換。他們還探索了組織和分組層的方法,以實現(xiàn)期望的結(jié)果。有些層是通用的,而另一些則專門處理特定類型的輸入數(shù)據(jù),如圖像,或者在大語言模型中的標(biāo)記化文本。

目前在大語言模型的文本生成任務(wù)中最流行的神經(jīng)網(wǎng)絡(luò)架構(gòu)被稱為 “Transformer[9]”。使用這種架構(gòu)的模型被稱為 GPT,即 “生成式預(yù)訓(xùn)練 Transformer”,也就是 Generative Pre-Trained Transformers[10]。

Transformer 模型的獨特之處在于其執(zhí)行的 “Attention[11]” 層計算。這種計算允許模型在上下文窗口內(nèi)的標(biāo)記之間找出關(guān)系和模式,并將其反映在下一個標(biāo)記出現(xiàn)的概率中。Attention 機制最初被用于語言翻譯領(lǐng)域,作為一種找出輸入序列中對理解句子意義最重要的標(biāo)記的方法。這種機制賦予了現(xiàn)代語言模型在基本層面上 “理解” 句子的能力,它可以關(guān)注 (或集中 “注意力” 于) 重要詞匯或標(biāo)記,從而更好地把握句子的整體意義。正是這一機制,使 Transformer 模型在各種自然語言處理任務(wù)中取得了巨大成功。

大語言模型到底有沒有智能?

通過上面的分析,你心中可能已經(jīng)有了一個初步的判斷:大語言模型在生成文本時是否表現(xiàn)出了某種形式的智能?

我個人并不認(rèn)為大語言模型具備推理或提出原創(chuàng)想法的能力,但這并不意味著它們一無是處。得益于對上下文窗口中 token 進(jìn)行的精妙計算,大語言模型能夠捕捉用戶輸入中的模式,并將其與訓(xùn)練過程中學(xué)習(xí)到的相似模式匹配。它們生成的文本大部分來自訓(xùn)練數(shù)據(jù)的片段,但將詞語 (實際上是 token) 組合在一起的方式非常復(fù)雜,在許多情況下產(chǎn)生了感覺原創(chuàng)且有用的結(jié)果。

不過,考慮到大語言模型容易產(chǎn)生幻覺,我不會信任任何將其輸出直接提供給最終用戶而不經(jīng)過人工驗證的工作流程。

未來幾個月或幾年內(nèi)出現(xiàn)的更大規(guī)模語言模型是否能實現(xiàn)類似真正智能的能力?鑒于 GPT 架構(gòu)的諸多局限性,我覺得這不太可能發(fā)生,但誰又說的準(zhǔn)呢,也許將來出現(xiàn)一些創(chuàng)新手段,我們就能實現(xiàn)這一目標(biāo)。

原文鏈接:https://blog.miguelgrinberg.com/post/how-llms-work-explained-without-math

引用鏈接

[1]

GenAI: https://en.wikipedia.org/wiki/Generative_artificial_intelligence

[2]LLM: https://en.wikipedia.org/wiki/Large_language_model

[3]BPE 算法: https://en.wikipedia.org/wiki/Byte_pair_encoding

[4]GPT-2 模型: https://github.com/openai/gpt-2

[5]The quick brown fox: https://en.wikipedia.org/wiki/The_quick_brown_fox_jumps_over_the_lazy_dog

[6]幻覺: https://en.wikipedia.org/wiki/Hallucination_(artificial_intelligence)

[7]馬爾可夫鏈: https://en.wikipedia.org/wiki/Markov_chain

[8]反向傳播: https://en.wikipedia.org/wiki/Backpropagation

[9]Transformer: https://en.wikipedia.org/wiki/Transformer_(deep_learning_architecture)

[10]Generative Pre-Trained Transformers: https://en.wikipedia.org/wiki/Generative_pre-trained_transformer

[11]Attention: https://en.wikipedia.org/wiki/Attention_(machine_learning)

責(zé)任編輯:武曉燕 來源: 云原生實驗室
相關(guān)推薦

2021-05-08 07:14:38

MySQL數(shù)據(jù)庫安全性

2021-09-30 09:59:23

OSPF網(wǎng)絡(luò)協(xié)議網(wǎng)絡(luò)技術(shù)

2023-04-06 08:37:24

2010-09-06 17:35:03

PPPOE配置

2020-02-10 19:42:01

CPIP 協(xié)議,

2010-07-05 15:33:49

2010-06-29 14:38:14

Linux服務(wù)器

2023-01-03 18:32:32

2010-09-09 09:52:03

Linux服務(wù)器

2010-07-14 09:55:12

2010-08-25 09:09:58

2010-10-08 15:05:00

無線路由設(shè)置

2012-02-20 21:59:08

無線路由設(shè)置

2011-11-04 16:49:26

Action BarAndroid

2011-04-27 17:05:39

2020-06-08 11:10:53

Java回調(diào)機制代碼

2021-02-23 08:10:18

Nginx反向代理負(fù)載均衡器

2020-11-18 09:25:39

Docker

2020-12-22 10:57:36

DockerLinux程序員

2023-04-13 08:21:38

DevOpsAPI管理平臺
點贊
收藏

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