Base-llm 1.2.2 向量表示

一、為什么需要詞向量?

以文本分類為例,jieba分詞無法理解語義, 需要使用機(jī)器學(xué)習(xí)和深度學(xué)習(xí)模型。 這些模型的輸入都是數(shù)值形式。
解決自然語言和數(shù)學(xué)模型之間的鴻溝。
詞向量表示:將一段文字,分詞得到詞元序列,轉(zhuǎn)換為一個(gè)或一組數(shù)字。
不僅要能轉(zhuǎn)換為數(shù)字,還要向量本身能夠蘊(yùn)含詞語的寓意信息。例如國王和女王的向量距離小于國王和香蕉的距離。

二、離散表示

2.1 獨(dú)熱編碼 one-hot encoding

也稱為啞編碼
(1)原理:每個(gè)詞元看做一個(gè)獨(dú)立的類別。
步驟: 構(gòu)建詞典,收集語料庫出現(xiàn)過的唯一詞語,構(gòu)建一個(gè)詞典。 每個(gè)詞是一類,并構(gòu)建索引。
創(chuàng)建向量: 用詞典大小的向量表示每個(gè)詞, 索引位置是1,其余為0.


image.png

(2) 優(yōu)缺點(diǎn)
優(yōu)點(diǎn):簡單, 清晰地將詞語分開
缺點(diǎn):

  1. 維度災(zāi)難: 太稀疏了,浪費(fèi)資源
  2. 語義鴻溝:所以詞之間都是正交的,丟失了語義信息。

2.2 詞袋模型 Bag-of-Words, BoW

one-hot編碼表示的是單個(gè)詞,實(shí)際上通常要表示整個(gè)句子或文檔。
詞袋模型,是表示文檔級別特征最常用的方法之一。

2.2.1 基本思想與實(shí)現(xiàn)

詞袋模型思想:忽略文本中的詞序和語法,將其僅僅視作一個(gè)裝滿詞的袋子,用袋子中每個(gè)詞出現(xiàn)的統(tǒng)計(jì)量來表示整個(gè)文檔。
可以理解為將每個(gè)文檔中所有詞的獨(dú)熱向量相加,得到一個(gè)最終向量。這個(gè)向量維度等于詞典大小。
實(shí)際計(jì)算的時(shí)候: 直接統(tǒng)計(jì)詞頻,然后放到對應(yīng)索引位置即可。


image.png

例如上邊兩句話的向量, 語義相近。
這樣相似的話的向量也相近,可以用余弦相似度統(tǒng)計(jì)。

2.2.2 余弦相似度計(jì)算

計(jì)算的是兩個(gè)向量夾角的余弦值。對于詞袋模型生成的是非負(fù)向量,取值范圍為【0,1】,越接近1越相似。
[圖片上傳失敗...(image-ddefdc-1773993540517)]

如果A,B兩個(gè)都做歸一化了,也就是|A|和|B| 都為1, 那么余弦相似度計(jì)算則退化為 A · B

2.2.3 不同統(tǒng)計(jì)方式

詞袋模型每一維的值可以采用不同策略。
頻數(shù)方式:使用頻數(shù),單詞在文檔中出現(xiàn)次數(shù),但是會導(dǎo)致數(shù)值偏高。
頻率方式:為了緩解文檔長度的影響,可以使用頻率, 單詞在文檔中出現(xiàn)次數(shù)除以文檔總次數(shù)。
二進(jìn)制方式: 只記錄某個(gè)單詞是否出現(xiàn)過,忽略次數(shù)。

優(yōu)點(diǎn): 實(shí)現(xiàn)簡單,只能判斷文檔中有什么詞
缺點(diǎn):忽略了詞與詞之間的關(guān)系,丟失詞序,一些停用詞會高頻。

2.3 TF-IDF

用來衡量一個(gè)詞的重要性。

提升文檔在向量空間中的區(qū)分度,解決常見詞權(quán)重過高導(dǎo)致的文檔混淆問題。

TF-IDF的理念是一個(gè)詞的重要性與其在當(dāng)前文檔中出現(xiàn)的次數(shù)成正比,而其在整個(gè)語料庫中出現(xiàn)的頻率成反比。 簡言之:一個(gè)詞在當(dāng)前文檔里越常見,但在其他文檔里越罕見,它的權(quán)重就越高。

(1)算法組成:
TF: 詞頻, 頻數(shù)除以文檔總次數(shù)
IDF: 逆文檔率, log[語料庫中總文檔數(shù)/ 包含詞t的文檔數(shù)]

TF-IDF(t,d,D)= TF(t,d)x IDF(t,d) 也就是詞頻和逆文檔率的乘積。

通俗語言:
TF-> 詞頻-> 詞的頻數(shù)/ 當(dāng)前文檔總詞數(shù)
IDF-> 逆文檔率 , 也就是 這個(gè)詞所在文檔越少說明命中概率越大,那么反比就越大。
-> log[語料庫中總文檔數(shù)/ 包含詞t的文檔數(shù)]
IDF計(jì)算依賴于外部語料庫
TF-IDF= 詞頻* 逆文檔率 (兩個(gè)值越高,代表詞所在文檔越相關(guān))

(2)實(shí)際應(yīng)用
a. 常用語關(guān)鍵詞提取, 計(jì)算文章中每個(gè)詞的TF-IDF值,降序排列,排在最前邊的便是關(guān)鍵詞。
b. 文本相似度計(jì)算, 通過構(gòu)建兩篇文檔TF-IDF向量并計(jì)算其余弦相似度來判斷內(nèi)容是否相近。

2.4 N-gram 模型

詞袋模型和TF-IDF 最大的局限是徹底丟失了詞序信息。N-gram 通過統(tǒng)計(jì)連續(xù)詞組的方式彌補(bǔ)了這個(gè)短板。是對傳統(tǒng)方法的改進(jìn),也是最早引入預(yù)測下一個(gè)詞的思想。

2.4.1 預(yù)測下一個(gè)詞

核心是基于馬爾可夫假設(shè), 認(rèn)為一個(gè)詞出現(xiàn)的概率只取決于俄它前面N-1個(gè)詞。
這種簡化降低了建模復(fù)雜度,并且是基于前文預(yù)測后續(xù)內(nèi)容,被認(rèn)為是生成式AI的雛形。

計(jì)算方法:P(當(dāng)前詞 | 前面n-1個(gè)詞) = count(完整n-gram) / count(前n-1個(gè)詞組成的(n-1)-gram)

2.4.2 N-gram挑戰(zhàn)

雖然N-gram找回了詞序,但是付出了巨大代價(jià)。

  1. 指數(shù)級爆炸,詞典越多,bigram和trigram種類越多,維度災(zāi)難。
  2. 數(shù)據(jù)稀疏問題, 巨大多數(shù)詞組合根本永遠(yuǎn)不會出現(xiàn),導(dǎo)致概率為0.
    傳統(tǒng)NLP 發(fā)展出了復(fù)雜的平滑技術(shù)以及通過將詞聚類來減少參數(shù)的基于類的N-gram模型。

為了從根本上解決這個(gè)限制,后續(xù)誕生了詞向量和神經(jīng)網(wǎng)絡(luò)語言模型。

三、序列化表示

將文本轉(zhuǎn)換為最基礎(chǔ)的整數(shù)ID序列,然后把“學(xué)習(xí)詞語的含義和重要性”這個(gè)復(fù)雜任務(wù),交給模型自己去完成。

3.1 序號化過程

序號化: 也叫整數(shù)編碼,將分詞后的詞元序列轉(zhuǎn)換為深度學(xué)習(xí)模型能夠處理的整數(shù)序列的核心步驟。

(1)構(gòu)建詞典: 從訓(xùn)練預(yù)料中構(gòu)建一個(gè)詞典。 深度學(xué)習(xí)中,詞典通常是字粒度或者子詞粒度。
(2) 增加特殊詞元:詞典中加入一下特殊token,主要包括[PAD]和[UNK].
[PAD]的ID通常為0,用于短句子填充至同一批次內(nèi)最長長度。
[UNK] 的ID通常為1, 用于表示所有詞典中未出現(xiàn)過的詞。
根據(jù)任務(wù)需求,還可能加入[CLS](分類)、[SEP](分隔)等特殊詞元
(3) ID映射:將文本序列中的每個(gè)詞元,直接映射為其在詞典中的整數(shù)ID。

實(shí)踐中,通常直接使用BERT、GPT這類預(yù)訓(xùn)練模型官方提供的詞典文件(vocab.txt)。這些詞典通常包含了數(shù)萬個(gè)字、子詞、符號等,實(shí)在海量通用預(yù)料上構(gòu)建的。

序號化實(shí)例

  1. 詞典:
{'[PAD]': 0, '[UNK]': 1, '比': 2, '方': 3, '說': 4, '我': 5, '先': 6, '掙': 7, '它': 8, '一': 9, '個(gè)': 10, '億': 11}
  1. 對下邊句子進(jìn)行分詞,同時(shí)找到分詞對應(yīng)的ID號,未出現(xiàn)過的則為[UNK] ,ID為1
句子1 (我掙一個(gè)億): 我 (5), 掙 (7), 一 (9), 個(gè) (10), 億 (11) -> [5, 7, 9, 10, 11]
句子2 (比方說我): 比 (2), 方 (3), 說 (4), 我 (5) -> [2, 3, 4, 5]
句子3 (我先掙錢): 我 (5), 先 (6), 掙 (7), 錢 (不在詞典中) -> [5, 6, 7, 1]
  1. 對上述結(jié)果進(jìn)行Padding填充。
序列1 (長度5): [5, 7, 9, 10, 11]
序列2 (長度4→5): [2, 3, 4, 5, 0]
序列3 (長度4→5): [5, 6, 7, 1, 0]

  1. 輸出3x5的矩陣
# 最終輸入模型的張量(Tensor)
[[5, 7, 9, 10, 11],
 [2, 3, 4, 5,  0],
 [5, 6, 7, 1,  0]]

注意:整數(shù)ID之間沒有語義關(guān)系,所以序號化本身沒有解決語義問題。后續(xù)嵌入層會對這些

總結(jié)

  1. 為什么需要向量:作為模型的輸入,需要將字符轉(zhuǎn)為數(shù)字,并希望數(shù)字能體現(xiàn)語義關(guān)系。

  2. 離散表示:
    2.1 獨(dú)熱向量:每個(gè)詞都是單獨(dú)向量,有維度爆炸問題, 向量稀疏。
    2.2 詞袋模型: 詞頻統(tǒng)計(jì)作為向量, 缺點(diǎn)是無法體現(xiàn)詞序信息
    2.3 TF-IDF: 詞頻*逆文檔率(詞頻越高越重要,詞相關(guān)文檔在語料庫中越少見,說明越重要), 可以衡量詞在文檔中的重要性, 同樣無法體現(xiàn)詞序信息。
    2.4 N-Gram:指計(jì)算前邊n-1個(gè)詞發(fā)生的情況下,第n個(gè)詞發(fā)生的概率,用來預(yù)測下一個(gè)詞。
    記錄了詞序信息,缺點(diǎn)是會因詞典過大而有指數(shù)爆炸問題,同時(shí)會有數(shù)據(jù)稀疏問題,多數(shù)詞語組合概率為0.

  3. 序列化表示: 過程就是為了將文本轉(zhuǎn)化為數(shù)字表示,語義關(guān)系通過模型來學(xué)習(xí)。通過構(gòu)建詞典,將文本分詞后,用詞典ID表示每個(gè)詞,經(jīng)過padding統(tǒng)一長度后輸出最終文檔。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容