自己做網(wǎng)站跟域名怎樣做房地產(chǎn)估價(jià)師考試
1. 什么是token?
人們經(jīng)常在談?wù)摯竽P蜁r(shí)候,經(jīng)常會(huì)談到模型很大,我們也常常會(huì)看到一種說法:
參數(shù)會(huì)讓我們了解神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)有多復(fù)雜,而token的大小會(huì)讓我們知道有多少數(shù)據(jù)用于訓(xùn)練參數(shù)。
什么是token?比較官方的token解釋:
Token是對輸入文本進(jìn)行分割和編碼時(shí)的最小單位。它可以是單詞、子詞、字符或其他形式的文本片段。
看完是不是一臉懵逼?為此我們先補(bǔ)充點(diǎn)知識(shí)。
2. 大模型工作原理
本質(zhì)上就是神經(jīng)網(wǎng)絡(luò)。但是訓(xùn)練這么大的神經(jīng)網(wǎng)絡(luò),肯定不能是監(jiān)督學(xué)習(xí),如果使用監(jiān)督學(xué)習(xí),必然需要大量的人類標(biāo)記數(shù)據(jù),這幾乎是不可能的。那么,如何學(xué)習(xí)?
當(dāng)然,可以不用標(biāo)記數(shù)據(jù),直接訓(xùn)練,這種學(xué)習(xí)方法稱為自監(jiān)督學(xué)習(xí)。引用學(xué)術(shù)點(diǎn)的描述:
自監(jiān)督學(xué)習(xí)主要是利用輔助任務(wù)(pretext)從大規(guī)模的無監(jiān)督數(shù)據(jù)中挖掘自身的監(jiān)督信息,通過這種構(gòu)造的監(jiān)督信息訓(xùn)練模型,從而學(xué)習(xí)到對下游任務(wù)有價(jià)值的表征。
自監(jiān)督學(xué)習(xí)無標(biāo)簽數(shù)據(jù)和輔助信息,這是定義自監(jiān)督學(xué)習(xí)的兩個(gè)關(guān)鍵依據(jù)。它會(huì)通過構(gòu)造輔助任務(wù)來獲取監(jiān)督信息,這個(gè)過程中有學(xué)習(xí)到新的知識(shí);而無監(jiān)督學(xué)習(xí)不會(huì)從數(shù)據(jù)中挖掘新任務(wù)的標(biāo)簽信息。
例如,在英語考試中,通過刷題可以提高自己的能力,其中的選項(xiàng)就相當(dāng)于標(biāo)簽。當(dāng)然,也可以通過聽英文音頻、閱讀英文文章、進(jìn)行英文對話交流等方式來間接提高英語水平,這些都可以視為輔助性任務(wù)(pretext),而這些數(shù)據(jù)本身并不包含標(biāo)簽信息。
那么,GPT是如何在人類的文本數(shù)據(jù)上實(shí)現(xiàn)自監(jiān)督學(xué)習(xí)的呢?那就是用文本的前文來預(yù)測后文
。
此處引用知乎大佬的案例,例如在下面這段文本中:
我買了一臺(tái)蘋果,然后坐地鐵回家。
GPT 模型會(huì)將回家兩個(gè)字掩蓋住。將我買了一臺(tái)蘋果,然后坐地鐵視為數(shù)據(jù),將回家。視為待預(yù)測的內(nèi)容。 GPT 要做的就是根據(jù)前文我買了一臺(tái)蘋果,然后坐地鐵來預(yù)測后文回家。
這個(gè)過程依靠神經(jīng)網(wǎng)絡(luò)進(jìn)行,簡單操作過程如圖:
3. 談?wù)務(wù)Z言模型中的token
GPT 不是適用于某一門語言的大型語言模型,它適用于幾乎所有流行的自然語言。所以這告訴我們 GPT 實(shí)際的輸入和輸出并不是像上面那個(gè)圖中那個(gè)樣子。計(jì)算機(jī)要有通用適配或者理解能力,因此,我們需要引入 token 的概念。token 是自然語言處理的最細(xì)粒度。簡單點(diǎn)說就是,GPT 的輸入是一個(gè)個(gè)的 token,輸出也是一個(gè)個(gè)的 token。
GPT 不是適用于某一門語言的大型語言模型,它適用于幾乎所有流行的自然語言。所以 GPT 的 token 需要兼容幾乎人類的所有自然語言,那意味著 GPT 有一個(gè)非常全的 token 詞匯表,它能表達(dá)出所有人類的自然語言。如何實(shí)現(xiàn)這個(gè)目的呢?
答案是通過 unicode 編碼。
Unicode(統(tǒng)一碼、萬國碼、單一碼)是一種在計(jì)算機(jī)上使用的字符編碼。Unicode 是為了解決傳統(tǒng)的字符編碼方案的局限而產(chǎn)生的,它為每種語言中的每個(gè)字符設(shè)定了統(tǒng)一并且唯一的二進(jìn)制編碼,以滿足跨語言、跨平臺(tái)進(jìn)行文本轉(zhuǎn)換、處理的要求。
例如,我們在輸入你,對應(yīng)的unicode 編碼為:\u4f60,轉(zhuǎn)換成16進(jìn)制為0100 1111 0110 0000,轉(zhuǎn)換成10進(jìn)制對應(yīng)20320。直接將 unicode 的編碼作為 GPT 中 token 的詞表,會(huì)存在一些問題。 一方面直接使用 unicode 作為詞匯表太大了,另一方面 unicode 自身的粒度有時(shí)候太細(xì)了,例如 unicode 中的英文編碼是以字母粒度進(jìn)行的。
于是我們會(huì)將 unicode 的2進(jìn)制結(jié)果以8個(gè)二進(jìn)制位為單位進(jìn)行拆分。用0100 1111和0110 0000表示你8個(gè)二進(jìn)制位只有256種可能,換句話說,只需要256個(gè) token 的詞匯表就能表示所有 unicode。
然而這種方法的詞匯表又太小了,編碼方法太粗糙了。實(shí)際上 GPT 是使用一種稱為 BPE (Byte Pair Encoding)的算法,在上面的基礎(chǔ)上進(jìn)一步生成更大的詞匯表。
它的基本思想如下,將上述的基礎(chǔ) token (256種可能)做組合,然后統(tǒng)計(jì)文本數(shù)據(jù)中這些組合出現(xiàn)的頻率,將頻率最大的那些保留下來,形成新的 token 詞匯表。因此,通過此方法得到的 token 和文字的映射不一定是一對一的關(guān)系。
節(jié)參考OpenAI的GPT在線測試token劃分的地址:https://platform.openai.com/tokenizer,最下面部分有token劃分思路,感興趣可以深入研究。
總而言之,GPT 實(shí)際上是把我們輸入的文本轉(zhuǎn)換成一個(gè)個(gè)的token作為輸入,通過 GPT 模型預(yù)測這些 token,然后再把這些 token 轉(zhuǎn)換回文本,最終輸出給我們。 如圖:
4.再深入理解一下什么是token
Token是LLM處理文本數(shù)據(jù)的基石,它們是將自然語言轉(zhuǎn)換成機(jī)器可理解格式的關(guān)鍵步驟。幾個(gè)基本概念:
- 標(biāo)記化過程(Tokenization):這是將自然語言文本分解成token的過程。在這個(gè)過程中,文本被分割成小片段,每個(gè)片段是一個(gè)token,它可以代表一個(gè)詞、一個(gè)字符或一個(gè)詞組等。
- 變體形式:根據(jù)不同的標(biāo)記化方案,一個(gè)token可以是一個(gè)單詞,單詞的一部分(如子詞),甚至是一個(gè)字符。例如,單詞"transformer"可能被分成"trans-", “form-”, "er"等幾個(gè)子詞token。
- 模型模型限制:大型語言模型通常有輸入輸出token數(shù)量的限制,比如2K、4K或最多32K token。這是因?yàn)榛赥ransformer的模型其計(jì)算復(fù)雜度和空間復(fù)雜度隨序列長度的增長而呈二次方增長,這限制了模型能夠有效處理的文本長度。
- token可以作為數(shù)值標(biāo)識(shí)符:Token在LLM內(nèi)部被賦予數(shù)值或標(biāo)識(shí)符,并以序列的形式輸入或從模型輸出。這些數(shù)值標(biāo)識(shí)符是模型處理和生成文本時(shí)實(shí)際使用的表示形式,說白了可以理解成一種索引,索引本身又是一種標(biāo)識(shí)符。
5. 為什么token會(huì)有長度限制?
有以下3方面的相互制約:文本長短、注意力、算力,這3方面不可能同時(shí)滿足。也就是說:上下文文本越長,越難聚焦充分注意力,難以完整理解;注意力限制下,短文本無法完整解讀復(fù)雜信息;處理長文本需要大量算力,從而提高了成本。(這是因?yàn)镚PT底層基于Transformer的模型,Transformer模型的Attention機(jī)制會(huì)導(dǎo)致計(jì)算量會(huì)隨著上下文長度的增加呈平方級增長)
參考
- 自監(jiān)督學(xué)習(xí)(Self-supervised Learning)
- ChatGPT實(shí)用指南(一)
- 大型語言模型(LLM)中的token
- LLM 大模型為什么會(huì)有上下文 tokens 的限制?