做網(wǎng)站需要學(xué)那幾個(gè)軟件百度網(wǎng)址大全設(shè)為主頁
【機(jī)器學(xué)習(xí)與自然語言處理】預(yù)訓(xùn)練 Pre-Training 各種經(jīng)典方法的概念匯總
- 前言請(qǐng)看此
- 正文
- 預(yù)訓(xùn)練 Pre-Training
- 無監(jiān)督學(xué)習(xí) unsupervised learning
- 概念:標(biāo)簽
- PCA 主成分分析(Principal Component Analysis)降維算法
- LSA 潛在語義分析(Latent Semantic Analysis)降維算法
- LDA 隱含狄利克雷分布(Latent Dirichlet Allocation)降維算法
- 概念:詞袋模型(Bag of Words Model / BOW)
- 概念:n-gram 模型
- K均值(K-Means) 聚類算法
- 概念:詞嵌入(Word Embedding)
- Word2Vec 預(yù)測(cè)模型,詞嵌入算法
- GloVe (Global Vectors for Word Representation) 詞嵌入算法
- ELMo(Embeddings from Language Models) 詞嵌入模型
- BERT (Bidirectional Encoder Representations from Transformers)語言模型,詞嵌入模型
- AE 自動(dòng)編碼器(AutoEncoder)人工神經(jīng)網(wǎng)絡(luò)
- 概念:NLP中的編碼器(Encoder)和解碼器(Decoder)
- 概念:分詞器(Tokenizer),詞嵌入(Word Embedding)和編碼器(Encoder)的區(qū)別
- 概念:Transformer架構(gòu)
- 概念:Encoder 模型,Decoder 模型,Seq2Seq 模型
- 概念:預(yù)訓(xùn)練任務(wù)
- MLM 遮蔽語言模型(Masked Language Model)預(yù)訓(xùn)練任務(wù)
- NSP 下句預(yù)測(cè)(Next Sentence Prediction)預(yù)訓(xùn)練任務(wù)
- 其他一些經(jīng)典的預(yù)訓(xùn)練任務(wù)
- 概念:NLU,NLG,NLI
- 自監(jiān)督學(xué)習(xí) Self-Supervised Learning
前言請(qǐng)看此
(1)一些概念源自LLM(Chatgpt)和網(wǎng)絡(luò)(百度/知乎等),筆者進(jìn)行了初步檢查。
(2)由于其中的各種知識(shí)比較瑣碎,為了形成較為結(jié)構(gòu)化的知識(shí)體系,且使用最簡(jiǎn)單的、幾乎無公式的介紹,故作此博客。
(3)著重為機(jī)器學(xué)習(xí)ML與自然語言處理領(lǐng)域NLP的,CV領(lǐng)域的不是很詳細(xì)講述了
正文
- 在深度學(xué)習(xí)中,一般流程包括預(yù)訓(xùn)練和微調(diào)兩個(gè)主要階段:
- 預(yù)訓(xùn)練階段: 這個(gè)階段包括在大規(guī)模無標(biāo)簽數(shù)據(jù)上進(jìn)行訓(xùn)練,以學(xué)習(xí)模型的初始參數(shù),用以學(xué)習(xí)通用的語言表示。無監(jiān)督學(xué)習(xí)和自監(jiān)督學(xué)習(xí)是常用的預(yù)訓(xùn)練方法,通過讓模型在無標(biāo)簽數(shù)據(jù)上學(xué)習(xí)語言的結(jié)構(gòu)和特征。
- 微調(diào)階段: 預(yù)訓(xùn)練完成后,微調(diào)階段會(huì)改變部分參數(shù)或全部參數(shù),并在有標(biāo)簽數(shù)據(jù)上進(jìn)行微調(diào),以適應(yīng)特定的任務(wù)。微調(diào)的目標(biāo)是調(diào)整模型的參數(shù),使其在特定任務(wù)上表現(xiàn)良好。
- 下面,按照預(yù)訓(xùn)練和微調(diào)為兩個(gè)大類,其中有不同小類進(jìn)行介紹。(微調(diào)貌似只能放到下一篇了捏)
預(yù)訓(xùn)練 Pre-Training
無監(jiān)督學(xué)習(xí) unsupervised learning
- 現(xiàn)實(shí)生活中常常會(huì)有這樣的問題:缺乏足夠的先驗(yàn)知識(shí),因此難以人工標(biāo)注類別或進(jìn)行人工類別標(biāo)注的成本太高。很自然地,我們希望計(jì)算機(jī)能代我們完成這些工作,或至少提供一些幫助。根據(jù)類別未知(沒有被標(biāo)記)的訓(xùn)練樣本解決模式識(shí)別中的各種問題,稱之為無監(jiān)督學(xué)習(xí)。
【機(jī)器學(xué)習(xí)】幾種常見的無監(jiān)督學(xué)習(xí)算法
概念:標(biāo)簽
- 在機(jī)器學(xué)習(xí)中,訓(xùn)練樣本的標(biāo)簽指的是與每個(gè)輸入樣本相關(guān)聯(lián)的輸出或目標(biāo)值。訓(xùn)練樣本通常包括兩個(gè)部分:輸入特征(特征向量)和相應(yīng)的標(biāo)簽。
- 輸入特征: 描述樣本的屬性或特征,是模型用來進(jìn)行學(xué)習(xí)和預(yù)測(cè)的信息。
- 標(biāo)簽: 對(duì)于監(jiān)督學(xué)習(xí)任務(wù),標(biāo)簽是與每個(gè)輸入樣本關(guān)聯(lián)的真實(shí)輸出值或類別。在監(jiān)督學(xué)習(xí)中,模型的目標(biāo)是學(xué)習(xí)從輸入到標(biāo)簽的映射,以便在未見過的數(shù)據(jù)上進(jìn)行準(zhǔn)確的預(yù)測(cè)。
- 標(biāo)簽的形式可以是多樣化的,具體取決于任務(wù)的性質(zhì)和問題的定義。
- 分類任務(wù):
單一類別標(biāo)簽: 通常用于分類任務(wù),標(biāo)簽表示樣本屬于哪個(gè)類別。例如,圖像分類任務(wù)中,標(biāo)簽可以是“貓”、“狗”等。
多類別標(biāo)簽: 如果一個(gè)樣本可以屬于多個(gè)類別,標(biāo)簽可以是一個(gè)包含多個(gè)類別的集合。
回歸任務(wù): - 數(shù)值標(biāo)簽: 在回歸任務(wù)中,標(biāo)簽是一個(gè)實(shí)數(shù)或浮點(diǎn)數(shù)值,表示目標(biāo)變量的具體數(shù)值。例如,房?jī)r(jià)預(yù)測(cè)任務(wù)中,標(biāo)簽可以是房?jī)r(jià)的具體價(jià)格。
- 序列標(biāo)注任務(wù):
句子或文本標(biāo)簽: 用于自然語言處理中的一些任務(wù),標(biāo)簽可以是一個(gè)句子或文本序列。例如,命名實(shí)體識(shí)別任務(wù)中,標(biāo)簽是標(biāo)注每個(gè)詞語的實(shí)體類型。 - 圖像生成任務(wù):
圖像標(biāo)簽: 在圖像生成任務(wù)中,標(biāo)簽可以是一張圖像,表示模型生成的目標(biāo)圖像。 - 向量標(biāo)簽:
多維向量: 在一些任務(wù)中,標(biāo)簽可以是一個(gè)多維的向量,表示樣本的多個(gè)屬性或特征。例如,人臉識(shí)別任務(wù)中,標(biāo)簽可以是包含人臉特征的向量。
- 那么問題來了,大量的數(shù)據(jù),沒有標(biāo)簽,我們?cè)趺茨盟鼈冞M(jìn)行作為訓(xùn)練語料進(jìn)行訓(xùn)練呢?
答案是使用一些算法進(jìn)行標(biāo)注唄。
PCA 主成分分析(Principal Component Analysis)降維算法
- 降維是指在保留數(shù)據(jù)特征的前提下,以少量的變量表示有許多變量的數(shù)據(jù),這有助于降低多變量數(shù)據(jù)分析的復(fù)雜度。減少數(shù)據(jù)變量的方法有兩種:一種是只選擇重要的變量,不使用其余變量;另一種是基于原來的變量構(gòu)造新的變量。
- 通過降維算法后變成低維向量,作為標(biāo)簽。
- PCA 采用以下步驟來尋找主成分:
(1)計(jì)算協(xié)方差矩陣。
(2)對(duì)協(xié)方差矩陣求解特征值問題,求出特征向量和特征值。
(3)以數(shù)據(jù)表示各主成分方向。
LSA 潛在語義分析(Latent Semantic Analysis)降維算法
- LSA 是一種用于處理和分析文本數(shù)據(jù)的無監(jiān)督學(xué)習(xí)方法,主要用于文本挖掘和信息檢索任務(wù)。其目標(biāo)是通過降維技術(shù),將文本數(shù)據(jù)從高維的詞語空間映射到低維的語義空間,以捕捉文本數(shù)據(jù)的潛在語義結(jié)構(gòu)。
潛在語義分析(LSA)解析 | 統(tǒng)計(jì)學(xué)習(xí)方法 | 數(shù)據(jù)分析,機(jī)器學(xué)習(xí),學(xué)習(xí)歷程全記錄 - LSA 的主要步驟:
(1)構(gòu)建文檔-詞矩陣
(2)奇異值分解
(3)選擇主題數(shù)量
(4)降維
(5)文檔相速度和檢索 - LSA的優(yōu)點(diǎn)包括對(duì)大規(guī)模文本數(shù)據(jù)的有效處理、對(duì)詞語之間的語義關(guān)系進(jìn)行建模以及對(duì)噪聲和冗余信息的抵抗力。然而,它也有一些限制,如對(duì)詞語的詞序和上下文的敏感性較低。且分解變換后的矩陣難以解釋,計(jì)算代價(jià)高。
LDA 隱含狄利克雷分布(Latent Dirichlet Allocation)降維算法
- LDA 是一種用于主題建模的概率圖模型,主要用于分析大規(guī)模文本語料庫中的主題結(jié)構(gòu)。LDA 假設(shè)每個(gè)文檔是由多個(gè)主題的混合生成的,而每個(gè)主題則是由一組詞語的分布所定義的。該模型的目標(biāo)是通過觀察文檔中的詞語分布,推斷文檔和主題之間的潛在關(guān)系。
- LDA 通過以下步驟計(jì)算主題分布和單詞分布。
(1)為各文本的單詞隨機(jī)分配主題。
(2)基于為單詞分配的主題,計(jì)算每個(gè)文本的主題概率。
(3)基于為單詞分配的主題,計(jì)算每個(gè)主題的單詞概率。
(4)計(jì)算步驟 2 和步驟 3 中的概率的乘積,基于得到的概率,再次為各文本的單詞分配主題。
(5)重復(fù)步驟 2 到步驟 4 的計(jì)算,直到收斂。
概念:詞袋模型(Bag of Words Model / BOW)
- 所謂詞袋模型,是將一篇文檔,我們僅考慮一個(gè)詞匯是否出現(xiàn)(或者出現(xiàn)頻率),而不考慮其出現(xiàn)的順序。在詞袋模型中,"我喜歡你"和"你喜歡我"是等價(jià)的。
- 在詞袋模型中,文本被表示為一個(gè)向量,其中每個(gè)維度對(duì)應(yīng)一個(gè)詞語,而向量的值表示相應(yīng)詞語在文本中的出現(xiàn)次數(shù)或其他權(quán)重。
- 我們發(fā)現(xiàn),在上述LSA,LDA中通常使用的是BOW模型。但上述降維方法不單單局限于BOW。
概念:n-gram 模型
- 與BOW相反的是 n-gram模型
- N-gram 是自然語言處理中一種基于詞序列的模型表示方法,它捕捉了文本中相鄰詞語之間的關(guān)系。N-gram 模型將文本分割成連續(xù)的 n 個(gè)詞語組成的片段,并基于這些片段來建模文本的結(jié)構(gòu)。
- 以一個(gè)簡(jiǎn)單的例子說明,對(duì)于句子 “I love natural language processing.”,各個(gè) N-gram 如下:
Unigram: {“I”, “l(fā)ove”, “natural”, “l(fā)anguage”, “processing”}
Bigram: {“I love”, “l(fā)ove natural”, “natural language”, “l(fā)anguage processing”}
Trigram: {“I love natural”, “l(fā)ove natural language”, “natural language processing”}
Four-gram: {“I love natural language”, “l(fā)ove natural language processing”} - N-gram 模型的基本假設(shè)是當(dāng)前詞的出現(xiàn)只與前面的 n-1 個(gè)詞相關(guān),而與其他詞無關(guān)。這種模型可以用于語言建模、文本生成、機(jī)器翻譯等任務(wù)。一般來說,N 越大,模型捕捉的上下文信息越豐富,但也需要更多的數(shù)據(jù)來估計(jì)模型參數(shù)。
- N-gram 模型的局限性在于它無法捕捉長(zhǎng)距離的依賴關(guān)系,因?yàn)樗鼉H考慮相鄰的 n 個(gè)詞。更復(fù)雜的模型,如神經(jīng)網(wǎng)絡(luò)的語言模型,通常被用來處理更大范圍的語境依賴。
K均值(K-Means) 聚類算法
- 當(dāng)然,聚類算法也可以作為無監(jiān)督學(xué)習(xí)的一種學(xué)習(xí)算法。
- K-Means 算法是一種聚類算法。其典型計(jì)算步驟如下:
(1)從數(shù)據(jù)點(diǎn)中隨機(jī)選擇數(shù)量與簇的數(shù)量相同的數(shù)據(jù)點(diǎn),作為這些簇的重心。
(2)計(jì)算數(shù)據(jù)點(diǎn)與各重心之間的距離,并將最近的重心所在的簇作為該數(shù)據(jù)點(diǎn)所屬的簇。
(3)計(jì)算每個(gè)簇的數(shù)據(jù)點(diǎn)的平均值,并將其作為新的重心。
(4)重復(fù)步驟 2 和步驟 3,直到所有數(shù)據(jù)點(diǎn)不改變所屬的簇,或者達(dá)到最大計(jì)算步數(shù)。
概念:詞嵌入(Word Embedding)
- 詞嵌入是一種將詞語映射到實(shí)數(shù)向量空間的技術(shù),通過這種表示,詞語之間的語義關(guān)系可以在向量空間中更好地體現(xiàn)。
- 【學(xué)習(xí)詞嵌入一般都是無監(jiān)督學(xué)習(xí)的。但詞嵌入可以作為一個(gè)底層工具,為后續(xù)的比如其他預(yù)訓(xùn)練和微調(diào)學(xué)習(xí)提供幫助。】
- 獨(dú)熱編碼 One-Hot Encoding
一個(gè)單詞對(duì)應(yīng)一個(gè)n維向量,n為詞匯表大小,向量只在某個(gè)位置為1,比如 Love 可能對(duì)應(yīng) (0,0,1,0, ……,0,0) - 詞向量 Word Vector
一般來說,一個(gè)單詞對(duì)應(yīng)一個(gè)n維向量,n一般為固定超參數(shù),每個(gè)位置的值都是實(shí)數(shù),比如 Love 可能對(duì)應(yīng) (0.0384, 0.1235, ……, 0.8997)
NLP(一)Word Embeding詞嵌入 - 引申:句子嵌入(Sentence Embedding)
要為一個(gè)句子生成句子嵌入,最基本的方法是對(duì)該句子中出現(xiàn)的所有單詞進(jìn)行平均詞嵌入。
Word2Vec 預(yù)測(cè)模型,詞嵌入算法
- Word2Vec,主要包含連續(xù)詞袋模型(CBOW)和SG(SkipGram)模型。
(1)CBOW模型通過上下文中的周圍詞語來預(yù)測(cè)目標(biāo)詞語。模型的目標(biāo)是最大化給定上下文條件下目標(biāo)詞語的條件概率。
(2)SG模型與CBOW相反,它通過目標(biāo)詞語來預(yù)測(cè)上下文中的周圍詞語。Skip-Gram旨在最大化給定目標(biāo)詞語條件下周圍詞語的條件概率。 - 注意,BOW詞袋模型和CBOW連續(xù)詞袋模型不是同一個(gè)概念,一個(gè)是文本的向量表示作用,一個(gè)是詞嵌入的方法
- 但是可能有人問,這個(gè)不是預(yù)測(cè)模型嘛,但它同時(shí)也是強(qiáng)大而經(jīng)典的詞嵌入工具
- 更詳細(xì)的詞嵌入學(xué)習(xí)過程,可以查看如下知乎2.2和2.3節(jié)
Graph Embedding之從word2vec到node2vec
GloVe (Global Vectors for Word Representation) 詞嵌入算法
- GloVe 是一種基于全局詞-詞共現(xiàn)統(tǒng)計(jì)的方法,即共同利用了全局信息和局部信息。它通過對(duì)整個(gè)語料庫中詞語的共現(xiàn)信息進(jìn)行建模,使用奇異值分解(SVD)來學(xué)習(xí)詞向量。GloVe生成的詞向量在語義上捕捉了詞語之間的關(guān)系。Glove的計(jì)算效率很高、效果也很好。
- 總體來看,Glove可以被看作是更換了目標(biāo)函數(shù)和權(quán)重函數(shù)的全局Word2Vec。
ELMo(Embeddings from Language Models) 詞嵌入模型
- ELMo 使用雙向LSTM(Long Short-Term Memory)模型,通過學(xué)習(xí)上下文中的信息來生成詞向量。ELMo的獨(dú)特之處在于,它將詞語表示為多個(gè)不同層次的語境敏感表示,使其能夠更好地捕捉詞語的語義變化
- 雖然經(jīng)典,但貌似現(xiàn)在用的流行方向都轉(zhuǎn)變?yōu)镚PT系列,BERT系列去了
BERT (Bidirectional Encoder Representations from Transformers)語言模型,詞嵌入模型
- 使用 BERT 詞嵌入的優(yōu)點(diǎn):
(1)上下文敏感性: BERT 通過預(yù)訓(xùn)練階段,使用大規(guī)模的無標(biāo)簽語料庫,學(xué)習(xí)了深層次的上下文表示。這使得生成的詞嵌入能夠更好地捕捉詞語在不同上下文中的語義變化和依賴關(guān)系。
(2)雙向性: 與傳統(tǒng)的單向語言模型不同,BERT 是一個(gè)雙向模型,它考慮了輸入序列中每個(gè)位置的上下文信息。這有助于更好地理解文本中的語境和關(guān)系,使得生成的詞嵌入更加全面。
(3)適應(yīng)不同任務(wù): BERT 的預(yù)訓(xùn)練模型可以被微調(diào)用于各種下游任務(wù),如文本分類、命名實(shí)體識(shí)別、問答等。這種通用性使得 BERT 在多個(gè)自然語言處理任務(wù)中都能夠表現(xiàn)出色。
(4)Transformer 架構(gòu): BERT 基于 Transformer 模型架構(gòu),這種架構(gòu)在處理長(zhǎng)距離依賴和捕捉上下文信息方面表現(xiàn)出色。Transformer 的自注意力機(jī)制允許 BERT 考慮輸入序列中的所有位置,而不受限于固定的窗口大小。
(5)大規(guī)模預(yù)訓(xùn)練: BERT 的預(yù)訓(xùn)練模型使用了龐大的語料庫進(jìn)行訓(xùn)練,這使得模型能夠?qū)W到更豐富的語言知識(shí)和表示。預(yù)訓(xùn)練階段中的掩碼語言模型任務(wù)和下一句預(yù)測(cè)任務(wù)幫助模型學(xué)到了深層次的語言理解。
(6)開源和預(yù)訓(xùn)練模型: BERT 的預(yù)訓(xùn)練模型已經(jīng)在開源平臺(tái)上發(fā)布,研究者和從業(yè)者可以直接使用這些預(yù)訓(xùn)練模型,從而避免了從頭開始訓(xùn)練龐大的語言模型的復(fù)雜性。 - BERT 詞嵌入的方法:神經(jīng)網(wǎng)絡(luò)算法 - 一文搞懂BERT(基于Transformer的雙向編碼器)
(1)Tokenization: 輸入文本首先通過分詞器(Tokenizer)被分割成Token。這一步通常包括將文本轉(zhuǎn)換為小寫、去除標(biāo)點(diǎn)符號(hào)、分詞等。BERT使用WordPiece分詞方法,將單詞進(jìn)一步拆分成子詞(subwords),以優(yōu)化詞匯表的大小和模型的泛化能力。
(2)Token Embeddings: 分詞后的Token被映射到一個(gè)高維空間,形成Token Embeddings。這是通過查找一個(gè)預(yù)訓(xùn)練的嵌入矩陣來實(shí)現(xiàn)的,該矩陣為每個(gè)Token提供一個(gè)固定大小的向量表示。
(3)Segment Embeddings: 由于BERT能夠處理兩個(gè)句子作為輸入(例如,在句子對(duì)分類任務(wù)中),因此需要一種方法來區(qū)分兩個(gè)句子。Segment Embeddings用于此目的,為每個(gè)Token添加一個(gè)額外的嵌入,以指示它屬于哪個(gè)句子(通常是“A”或“B”)。
(4)Position Embeddings: 由于Transformer模型本身不具有處理序列中Token位置信息的能力,因此需要位置嵌入來提供這一信息。每個(gè)位置都有一個(gè)獨(dú)特的嵌入向量,這些向量在訓(xùn)練過程中學(xué)習(xí)得到。
(5)Token Embeddings、Segment Embeddings和Position Embeddings三者相加,得到每個(gè)Token的最終輸入嵌入。
AE 自動(dòng)編碼器(AutoEncoder)人工神經(jīng)網(wǎng)絡(luò)
- Autoencoder 是一種無監(jiān)督學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)模型,其目標(biāo)是學(xué)習(xí)數(shù)據(jù)的緊湊表示(編碼)以及用于重建原始數(shù)據(jù)的解碼器。
- 在NLP中,AE可以做如下任務(wù):
詞嵌入,降維和特征選取,去噪,文本生成和重建,異常檢測(cè)等 - AE 的步驟:
(1)接受一組輸入數(shù)據(jù)(即輸入);
(2)在內(nèi)部將輸入數(shù)據(jù)壓縮為潛在空間表示(即壓縮和量化輸入的單個(gè)向量);
(3)從這個(gè)潛在表示(即輸出)重建輸入數(shù)據(jù)。
自動(dòng)編碼器(AutoEncoder)簡(jiǎn)介 - 比較火的有CAE卷積自編碼,DAE降噪自編碼,VAE變分自編碼
但是大多在CV比較火
概念:NLP中的編碼器(Encoder)和解碼器(Decoder)
- 在自然語言處理(NLP)中,Encoder 和 Decoder 是神經(jīng)網(wǎng)絡(luò)中常用的兩個(gè)組件,尤其在序列到序列(seq2seq)模型中廣泛應(yīng)用。這種結(jié)構(gòu)通常用于機(jī)器翻譯、文本生成等任務(wù)。
- Encoder(編碼器)
作用: 編碼器負(fù)責(zé)將輸入序列(例如源語言句子)映射為一個(gè)中間的表示(通常是固定維度的向量),該表示捕捉了輸入序列的語義信息。
結(jié)構(gòu): 編碼器通常由循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)、長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(LSTM)、門控循環(huán)單元(GRU)或更現(xiàn)代的 Transformer 架構(gòu)組成。這些模型能夠逐步處理輸入序列并捕捉其上下文信息。 - Decoder(解碼器)
作用: 解碼器接受編碼器生成的中間表示,并將其轉(zhuǎn)換為目標(biāo)序列(例如目標(biāo)語言翻譯的句子)。
結(jié)構(gòu): 解碼器也可以使用 RNN、LSTM、GRU 或 Transformer 架構(gòu)。解碼器的設(shè)計(jì)允許它逐步生成目標(biāo)序列,考慮到上下文信息和之前生成的部分。
概念:分詞器(Tokenizer),詞嵌入(Word Embedding)和編碼器(Encoder)的區(qū)別
從詞到數(shù):Tokenizer與Embedding串講
- 【Tokenizer 】用于文本預(yù)處理,將文本轉(zhuǎn)化為離散表示的詞語序列,也就是tokens序列。
huggingface的一些模型使用中,在使用模型前,都需要過一遍tokenizer
輸入為一個(gè)句子(str)
輸出為一個(gè)id數(shù)組(List[int])
事實(shí)上,tokenizer總體上做三件事情:
(1)分詞。tokenizer將字符串分為一些sub-word token string,再將token string映射到id,并保留來回映射的mapping。從string映射到id為tokenizer encode過程,從id映射回token為tokenizer decode過程。映射方法有多種,例如BERT用的是WordPiece,GPT-2和RoBERTa用的是BPE等等,后面會(huì)詳細(xì)介紹。
(2)擴(kuò)展詞匯表。部分tokenizer會(huì)用一種統(tǒng)一的方法將訓(xùn)練語料出現(xiàn)的且詞匯表中本來沒有的token加入詞匯表。對(duì)于不支持的tokenizer,用戶也可以手動(dòng)添加。
(3)識(shí)別并處理特殊token。特殊token包括[MASK], <|im_start|>, <sos>, <s>
等
注:一般,BERT族用的為WORD-PIECE
,GPT族用的是BPE
,更詳細(xì)介紹請(qǐng)看后文知乎鏈接。
- 【Word Embedding】 用于將詞語映射為實(shí)數(shù)向量,捕捉詞語的語義信息。
通過分詞器之后得到的tokens序列作為輸入,經(jīng)過詞嵌入轉(zhuǎn)換成密度更高的詞向量,也叫embedding編碼。 - 現(xiàn)在Huggingface(后文簡(jiǎn)稱HF)的很多模型會(huì)一起把詞嵌入矩陣(Embedding Matrix)也訓(xùn)練好。
這樣,根據(jù)我們輸入的tokens序列,直接按照表格就可以查找好我們要的詞嵌入向量。
- 但這樣我們發(fā)現(xiàn),這樣只有詞的語義信息,并沒有上下文信息。所以這只是詞嵌入的一種比較基礎(chǔ)的方法,或者需要經(jīng)過后續(xù)加工。上文也提到了其他的一些方法。下文也會(huì)介紹更先進(jìn)的方法,包含上下文語義的信息。
- 【Encoder 】接收經(jīng)過 Tokenizer 處理和經(jīng)過 Word Embedding 映射的輸入序列,生成一個(gè)表示,傳遞給模型的下一層。
Encoder 或者 Decoder,是人工神經(jīng)網(wǎng)絡(luò)中的一層結(jié)構(gòu)。提到這倆,就不得不提到 Transformer 架構(gòu)了
概念:Transformer架構(gòu)
- The Illustrated Transformer
這篇以比較簡(jiǎn)單易懂的方式闡述了 Transformer 架構(gòu)的一些內(nèi)容
如何最簡(jiǎn)單、通俗地理解Transformer?
也參考了一些知乎回答 - Transformer是一種架構(gòu),它使用注意力來顯著提高深度學(xué)習(xí) NLP 翻譯模型的性能,其首次在論文《Attention is all you need》中出現(xiàn),并很快被確立為大多數(shù)文本數(shù)據(jù)應(yīng)用的領(lǐng)先架構(gòu)。
- 比如一個(gè)二層堆疊的編碼器和解碼器的 Transformer 架構(gòu)就如下圖所示
- 在編碼器堆棧和解碼器堆棧之前,都有對(duì)應(yīng)的嵌入層。而在解碼器堆棧后,有一個(gè)輸出層來生成最終的輸出。
- 編碼器一般有兩個(gè)子層:包含自注意力層 self-attention,用于計(jì)算序列中不同詞之間的關(guān)系;同時(shí)包含一個(gè)前饋層 feed-forward。
- 解碼器一般有三個(gè)子層:包含自注意力層self-attention,前饋層 feed-forward,編碼器-解碼器注意力層 Decoder-Encoder self attention。
- 每個(gè)編碼器和解碼器都有獨(dú)屬于本層的一組權(quán)重。
- 需要注意的是,編碼器的自注意力層及前饋層均有殘差連接以及正則化層。(就是圖中的 殘差鏈接Add & 正則化Normalize)
- Transformer 的突破性表現(xiàn)關(guān)鍵在于其對(duì)注意力的使用。
可以詳細(xì)去看一下里面的自注意力機(jī)制,多頭注意力機(jī)制。
概念:Encoder 模型,Decoder 模型,Seq2Seq 模型
機(jī)器學(xué)習(xí)中的encoder,decoder和embedding都有什么區(qū)別?
- 按照是否使用 Transformer 架構(gòu)中的 Encoder 和 Decoder,我們把模型分成如下三類
- Encoder 模型僅使用 Transformer 中的 encoder。在每個(gè)階段,注意力層都可以訪問原始句子中的每個(gè)單詞。這種模型通常擁有“雙向注意力”的特點(diǎn),常被稱作自編碼模型(auto-encoding models),簡(jiǎn)稱AE。
- Decoder 模型僅使用 Transformre 中的 decoder。在每個(gè)階段,注意力層僅能訪問給定單詞在句子中之前位置的單詞。這種模型常被稱作自回歸模型(auto-regressive models),簡(jiǎn)稱AR。
- Encoder-decoder 模型(也稱 Seq2seq (sequence-to-sequence) 模型)同時(shí)使用 Transformer 的兩個(gè)部分。在每個(gè)階段,encoder 的注意力層都可以訪問原始句子中的每個(gè)單詞,而 decoder 的注意力層只能注意力層僅能訪問給定單詞在輸入句子中之前位置的單詞。
概念:預(yù)訓(xùn)練任務(wù)
- 預(yù)訓(xùn)練任務(wù)是指在大規(guī)模無標(biāo)簽數(shù)據(jù)上訓(xùn)練語言模型時(shí)使用的任務(wù)。通過這些任務(wù),語言模型能夠?qū)W到文本中的深層次表示,捕捉語言的語法、語義和上下文關(guān)系。
MLM 遮蔽語言模型(Masked Language Model)預(yù)訓(xùn)練任務(wù)
- BERT預(yù)訓(xùn)練的任務(wù)MLM和NSP
詳細(xì)可以看這篇介紹MLM和NSP - MLM是很多LLM最經(jīng)典的預(yù)訓(xùn)練任務(wù)了
在一個(gè)句子中,隨機(jī)選中一定百分比(實(shí)際是15%)的token,將這些token用"[MASK]“替換。然后用分類模型預(yù)測(cè)”[MASK]"實(shí)際上是什么詞
NSP 下句預(yù)測(cè)(Next Sentence Prediction)預(yù)訓(xùn)練任務(wù)
- 對(duì)于很多重要的下游任務(wù)比如問答(Question Answering,QA)和自然語言推理(Natural Language Inference,NLI),都需要理解兩個(gè)句子之間的關(guān)系。為了訓(xùn)練一個(gè)理解句子關(guān)系的模型,作者提出了Next Sentence Prediction(NSP)任務(wù)。即每個(gè)樣本都是由A和B兩句話構(gòu)成,分為兩種情況:①、句子B確實(shí)是句子A的下一句話,樣本標(biāo)簽為IsNext;②、句子B不是句子A的下一句,句子B為語料中的其他隨機(jī)句子,樣本標(biāo)簽為NotNext。在樣本集合中,兩種情況的樣本占比均為50%。
- 在剛開始發(fā)現(xiàn)NSP對(duì)模型的提升性能不是很大。但是也有論文指出有一些作用。
其他一些經(jīng)典的預(yù)訓(xùn)練任務(wù)
- BERT的預(yù)訓(xùn)練任務(wù)為MLM和NSP,但是GPT它是自回歸模型,注意力只關(guān)注目前位置及其左邊的單詞,所以預(yù)訓(xùn)練任務(wù)不能使用MLM,而選擇 Autoregressive Language Modeling 預(yù)訓(xùn)練,即訓(xùn)練模型來預(yù)測(cè)給定上下文中的下一個(gè)詞
- 因果語言建模(Causal Language Modeling),與 Autoregressive Language Modeling 呼應(yīng),也是只關(guān)注上文的tokens,預(yù)測(cè)下一個(gè)詞。
(筆者感覺這倆個(gè)差不多是一個(gè)東西?有待存疑) - 對(duì)比學(xué)習(xí)(Contrastive Learning), 學(xué)習(xí)將正例(相似的樣本)與負(fù)例(不相似的樣本)區(qū)分開。在CV使用比較多。
概念:NLU,NLG,NLI
- NLG 自然語言生成(Natural Language Generating), NLI 自然語言推理(Natural Language Inference)和 NLU 自然語言理解(Natural Language Understanding)是自然語言處理中不同但相關(guān)的任務(wù)。
- NLG:在大規(guī)模無標(biāo)簽語料庫上預(yù)測(cè)下一個(gè)詞語或一段文本。關(guān)注的是如何將計(jì)算機(jī)生成的信息轉(zhuǎn)化為可讀的、自然的文本。NLG的任務(wù)包括文本摘要、對(duì)話系統(tǒng)的回復(fù)生成、文本創(chuàng)作等。
- NLI:預(yù)測(cè)一個(gè)文本是否蘊(yùn)含在另一個(gè)文本中,即判斷兩個(gè)文本之間的關(guān)系(蘊(yùn)含、矛盾、中立)
- NLU:關(guān)注的是理解和解釋人類語言的能力。它涉及從文本中提取有關(guān)語言結(jié)構(gòu)和語義的信息,使計(jì)算機(jī)能夠理解文本的含義。NLU的任務(wù)包括實(shí)體識(shí)別、關(guān)系抽取、情感分析等。
- 所以可以發(fā)現(xiàn),NSP是NLI的任務(wù),而MLM/CLM 則關(guān)注 NLU+NLG
自監(jiān)督學(xué)習(xí) Self-Supervised Learning
-
自監(jiān)督學(xué)習(xí)是一種機(jī)器學(xué)習(xí)的范式,其中模型從輸入數(shù)據(jù)中自動(dòng)生成標(biāo)簽或目標(biāo),而不需要人工標(biāo)注的真實(shí)標(biāo)簽。在自監(jiān)督學(xué)習(xí)中,模型通過設(shè)計(jì)一些任務(wù)來自己生成訓(xùn)練目標(biāo),然后通過最小化預(yù)測(cè)和生成目標(biāo)之間的差異來學(xué)習(xí)有用的表示。
-
然后我們發(fā)現(xiàn),在預(yù)訓(xùn)練階段,我們給定的是無標(biāo)注的文本,但是在訓(xùn)練過程中或多或少都需要該數(shù)據(jù)的標(biāo)簽呀!只不過我們是使用比如算法,或者模型,或者人工神經(jīng)網(wǎng)絡(luò)之類的進(jìn)行自動(dòng)計(jì)算了。
-
即在很多情況下,無監(jiān)督學(xué)習(xí)作為預(yù)訓(xùn)練的方式就是自監(jiān)督學(xué)習(xí)的一種形式。
-
下一篇就講講微調(diào)和監(jiān)督學(xué)習(xí)吧。