国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

做網(wǎng)站必須得ipc百度熱搜榜今日頭條排名

做網(wǎng)站必須得ipc,百度熱搜榜今日頭條排名,商務網(wǎng)站建設需要多少錢,網(wǎng)站集群建設要求預訓練模型 1. 預訓練模型介紹 1.1. ELMo1.2. GPT1.3. BERT 2. Seq2Seq 2.1. T52.2. BART 3. Tokenization 1. 預訓練模型介紹 在預訓練語言模型出現(xiàn)之前,統(tǒng)計語言模型(如N-gram模型)是主流方法。這些模型利用統(tǒng)計方法來預測文本中的下一個…

預訓練模型

  • 1. 預訓練模型介紹
    • 1.1. ELMo
    • 1.2. GPT
    • 1.3. BERT
  • 2. Seq2Seq
    • 2.1. T5
    • 2.2. BART
  • 3. Tokenization

1. 預訓練模型介紹

在預訓練語言模型出現(xiàn)之前,統(tǒng)計語言模型(如N-gram模型)是主流方法。這些模型利用統(tǒng)計方法來預測文本中的下一個詞,但它們對長距離依賴和上下文理解能力有限。

2013年,Google提出的Word2Vec模型利用神經(jīng)網(wǎng)絡來學習詞的分布式表示(詞向量),使得相似詞在向量空間中彼此接近。這是預訓練詞嵌入技術的開端。斯坦福大學提出的GloVe(Global Vectors for Word Representation)模型通過結合全局詞共現(xiàn)統(tǒng)計信息來生成詞向量,進一步提升了詞表示的質量。

2018年,ELMo(Embeddings from Language Models)由AllenNLP團隊提出,它通過雙向LSTM來生成上下文感知的詞表示。這標志著從靜態(tài)詞向量到動態(tài)上下文詞向量的轉變。2017年,Google提出的Transformer模型引入了自注意力機制,極大地提升了處理長距離依賴和并行計算的能力,為后續(xù)的大規(guī)模預訓練模型奠定了基礎。2018年,Google提出BERT(Bidirectional Encoder Representations from Transformers),它是首個雙向Transformer模型,能夠利用句子中所有詞的上下文信息進行預訓練。BERT在多項NLP任務中取得了顯著的效果。2018年,OpenAI提出的GPT(Generative Pre-trained Transformer)采用了單向Transformer結構,通過生成式任務進行預訓練。GPT-2(2019)和GPT-3(2020)進一步擴大了模型規(guī)模,展示了預訓練模型在生成任務中的強大能力。2019,Google提出的T5(Text-To-Text Transfer Transformer)將各種NLP任務統(tǒng)一為文本到文本的格式,展示了預訓練模型在多任務學習中的潛力。

1.1. ELMo

  • 相關論文

Deep contextualized word representations

ELMo(Embeddings from Language Models)是由AllenNLP團隊在2018年提出的一種預訓練語言模型。它是首個通過上下文感知的詞嵌入來顯著提升自然語言處理任務性能的模型之一。

ELMo的核心思想是生成上下文感知的詞表示,這意味著同一個詞在不同的上下文中會有不同的表示。傳統(tǒng)的詞嵌入方法(如Word2Vec和GloVe)生成的是固定的詞向量,而ELMo則通過考慮句子的上下文,使得詞表示更加動態(tài)和靈活。

在這里插入圖片描述

ELMo的訓練過程包括以下步驟:

  1. 預訓練:ELMo在大規(guī)模語料庫上預訓練雙向語言模型,通過最大化前向和后向語言模型的對數(shù)似然估計來學習參數(shù)。ELMo使用雙向LSTM(Long Short-Term Memory)作為基礎結構,分別從前向和后向兩個方向處理句子。前向LSTM從句子的開頭到結尾逐詞處理,后向LSTM則從句子的結尾到開頭逐詞處理。通過雙向LSTM,ELMo生成了每個詞在不同上下文中的表示。每個詞的最終表示是由不同層的表示加權和得到的。
  2. 特征提取和微調:在特定任務中,預訓練的ELMo模型可以作為特征提取器使用,生成上下文感知的詞嵌入??梢赃M一步對特定任務的訓練數(shù)據(jù)進行微調,以提升性能。

雙向語言模型:

p ( t 1 , t 2 , ? , t N ) = ∑ k = 1 N p ( t k ∣ t 1 , t 2 , ? , t k ? 1 ) p ( t 1 , t 2 , ? , t N ) = ∑ k = 1 N p ( t k ∣ t k + 1 , t t + 2 , ? , t N ) \begin{aligned} p(t_1, t_2, \cdots, t_N) &= \sum_{k=1}^N p(t_k | t_1, t_2, \cdots, t_{k-1}) \\ p(t_1, t_2, \cdots, t_N) &= \sum_{k=1}^N p(t_k | t_{k+1}, t_{t+2}, \cdots, t_N) \\ \end{aligned} p(t1?,t2?,?,tN?)p(t1?,t2?,?,tN?)?=k=1N?p(tk?t1?,t2?,?,tk?1?)=k=1N?p(tk?tk+1?,tt+2?,?,tN?)?

目標函數(shù):

∑ k = 1 N ( log ? p ( t k ∣ t 1 , ? , t k ? 1 ; Θ x , Θ → L S T M , Θ s ) + log ? p ( t k ∣ t k + 1 , ? , t N ; Θ x , Θ ← L S T M , Θ s ) ) \begin{aligned} \sum_{k=1}^N \left( \log p(t_k | t_1, \cdots, t_{k-1}; \Theta_x, \overrightarrow{\Theta}_{LSTM}, \Theta_s) + \log p(t_k | t_{k+1}, \cdots, t_{N}; \Theta_x, \overleftarrow{\Theta}_{LSTM}, \Theta_s)\right) \end{aligned} k=1N?(logp(tk?t1?,?,tk?1?;Θx?,Θ LSTM?,Θs?)+logp(tk?tk+1?,?,tN?;Θx?,Θ LSTM?,Θs?))?

ELMo 的計算流程:

R k = { x k L M , h → k j L M , h ← k j L M ∣ j = 1 , ? , L } = { h k , j L M ∣ j = 1 , ? , L } \begin{aligned} R_k &= \{ x_k^{LM}, \overrightarrow{h}_{kj}^{LM}, \overleftarrow{h}_{kj}^{LM} | j=1, \cdots, L \} \\ &= \{ h_{k,j}^{LM} | j=1, \cdots, L \} \\ \end{aligned} Rk??={xkLM?,h kjLM?,h kjLM?j=1,?,L}={hk,jLM?j=1,?,L}?

ELMo k t a s k = E ( R k ; Θ t a s k ) = γ t a s k ∑ j = 0 L s j t a s k h k , j L M \begin{aligned} \text{ELMo}_k^{task} &= E(R_k; \Theta^{task}) = \gamma^{task} \sum_{j=0}^L s_j^{task} h_{k,j}^{LM} \end{aligned} ELMoktask??=E(Rk?;Θtask)=γtaskj=0L?sjtask?hk,jLM??

ELMo的優(yōu)勢:

  1. 上下文感知:ELMo生成的詞表示能夠捕捉詞在不同上下文中的意義變化,提高了對多義詞和同義詞的處理能力。
  2. 動態(tài)表示:相比于靜態(tài)詞嵌入,ELMo的詞表示是動態(tài)的,能夠更好地適應復雜的語言現(xiàn)象。

1.2. GPT

  • 相關論文

Improving Language Understanding by Generative Pre-Training

GPT(Generative Pre-trained Transformer)是由OpenAI提出的一系列預訓練語言模型,這些模型在自然語言生成和理解任務中表現(xiàn)出了卓越的能力。GPT系列包括GPT、GPT-2、GPT-3和GPT-4,每一代都在規(guī)模和性能上有顯著提升。

GPT模型的核心架構基于Transformer的解碼器部分,專注于生成式任務。與BERT不同,GPT采用單向的自回歸方法,即在生成當前詞時僅依賴于左側的上下文。GPT的預訓練任務是語言建模,即通過預測序列中的下一個詞來訓練模型。這種自回歸的方法使得GPT能夠生成連貫和上下文相關的文本。

在這里插入圖片描述

GPT的架構特點如下:

  1. 單向自回歸:GPT是單向的,即在生成每個詞時,僅考慮它之前的詞。這使得GPT特別適合生成任務,如文本生成、對話生成等。
  2. Transformer解碼器:GPT使用多層的Transformer解碼器,每層包括多頭自注意力機制和前饋神經(jīng)網(wǎng)絡。

GPT的訓練分為兩個階段:

  1. 預訓練:GPT使用了BooksCorpus數(shù)據(jù)集進行預訓練。BooksCorpus包含了約7000本未標注的英語書籍,總共約8億詞。預訓練任務是語言建模,即通過預測序列中的下一個詞來訓練模型。這種自回歸方法使得模型能夠生成連貫的文本。損失函數(shù)是標準的最大似然估計(Maximum Likelihood Estimation, MLE),即最大化訓練數(shù)據(jù)的對數(shù)似然。
  2. 微調:在微調階段,使用特定任務的數(shù)據(jù)集。例如,對于文本分類任務,使用標注了類別標簽的數(shù)據(jù)集。將任務數(shù)據(jù)轉換為適合模型輸入的格式。例如,對于分類任務,輸入格式可能是“[CLS] 文本 [SEP]”,其中[CLS]表示分類標記,[SEP]表示分隔符。在預訓練模型的頂部添加一個任務特定的輸出層。例如,對于分類任務,添加一個全連接層用于預測類別標簽。

預訓練階段損失函數(shù):

L 1 ( U ) = ∑ i log ? P ( u i ∣ u i ? k , ? , u i ? 1 ; Θ ) L_1(\mathcal{U}) = \sum_i \log P(u_i | u_{i-k}, \cdots, u_{i-1}; \Theta) L1?(U)=i?logP(ui?ui?k?,?,ui?1?;Θ)

GPT的前向計算過程:

h 0 = U W e + W p h l = transformer_block ( h i ? 1 ) , ? i ∈ [ 1 , n ] P ( u ) = softmax ( h n W e T ) \begin{aligned} h_0 &= U W_e + W_p \\ h_l &= \text{transformer\_block}(h_{i-1}), \forall i \in [1,n] \\ P(u) &= \text{softmax}(h_n W_e^T) \end{aligned} h0?hl?P(u)?=UWe?+Wp?=transformer_block(hi?1?),?i[1,n]=softmax(hn?WeT?)?

GPT微調的前向計算,需要在最后一層隱藏層再額外增加一層線性層:

P ( y ∣ x 1 , ? , x m ) = softmax ( h l m W y ) P(y|x^1, \cdots, x^m) = \text{softmax}(h_l^m W_y) P(yx1,?,xm)=softmax(hlm?Wy?)

微調階段損失函數(shù):

L 2 ( C ) = ∑ ( x , y ) log ? P ( y ∣ x 1 , ? , x m ) L_2(\mathcal{C}) = \sum_{(x,y)} \log P(y|x^1, \cdots, x^m) L2?(C)=(x,y)?logP(yx1,?,xm)

實驗發(fā)現(xiàn)將語言建模作為模型微調的輔助目標,可以改善監(jiān)督模型的泛化能力,即在未見過的數(shù)據(jù)上表現(xiàn)更好,并且可以加快模型的收斂速度。即新的目標函數(shù)集合了預訓練和微調兩個階段的損失函數(shù):

L 3 ( C ) = L 2 ( C ) + λ L 1 ( C ) L_3(\mathcal{C}) = L_2(\mathcal{C}) + \lambda L_1(\mathcal{C}) L3?(C)=L2?(C)+λL1?(C)

在這里插入圖片描述

GPT的優(yōu)勢:

  1. 生成能力強:GPT在生成連貫、上下文相關的文本方面表現(xiàn)出色。
  2. 適應性強:通過微調,GPT可以適應多種NLP任務。
  3. 大規(guī)模預訓練:利用大規(guī)模預訓練數(shù)據(jù),GPT能夠捕捉豐富的語言特征和模式。

GPT的限制:

  1. 單向性:GPT的單向自回歸方法限制了其上下文理解能力,無法像雙向模型(如BERT)那樣同時考慮詞匯的前后文。
  2. 規(guī)模限制:相較于后續(xù)的GPT-2和GPT-3,GPT的模型參數(shù)量和預訓練數(shù)據(jù)規(guī)模較小,性能和生成能力有限。

1.3. BERT

  • 相關論文

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

BERT(Bidirectional Encoder Representations from Transformers)是由Google在2018年提出的一種預訓練語言模型,它在自然語言處理任務中引入了革命性的進步。BERT的設計使得它能夠在多種NLP任務上實現(xiàn)顯著的性能提升。

BERT的核心創(chuàng)新是其雙向Transformer架構,這使得模型可以同時考慮上下文中的前后信息,從而生成更加準確和豐富的詞表示。BERT的架構基于Transformer的編碼器部分,具體特點如下:

  1. 雙向性:與之前的單向語言模型(如GPT)不同,BERT是雙向的,即它在預訓練過程中同時從左到右和從右到左讀取文本。這種雙向性使得BERT能夠更好地理解單詞的上下文。
  2. Transformer編碼器:BERT使用多層的Transformer編碼器(通常有BERT-Base和BERT-Large兩種配置,分別有12層和24層編碼器)。每層包含多頭自注意力機制和前饋神經(jīng)網(wǎng)絡。

在這里插入圖片描述

BERT通過兩個主要任務進行預訓練:

  1. Masked Language Model (MLM):在輸入文本中隨機掩蓋(mask)一些詞,模型的任務是預測這些被掩蓋的詞。這種方法允許模型在訓練過程中利用雙向上下文信息。
  2. Next Sentence Prediction (NSP):給定兩個句子A和B,模型需要判斷B是否是A的下一個句子。這種任務幫助模型理解句子間的關系,有利于問答和自然語言推理等任務。
    在這里插入圖片描述

BERT的訓練分為兩個階段:

  1. 預訓練:在大規(guī)模無標注語料庫(如Wikipedia和BooksCorpus)上進行預訓練,通過MLM和NSP任務學習通用的語言表示。
  2. 微調:在特定任務的數(shù)據(jù)集上進行微調,只需在預訓練模型的基礎上添加一個簡單的分類層,并在該任務的數(shù)據(jù)上進行進一步訓練即可。

在這里插入圖片描述

BERT的優(yōu)勢:

  1. 雙向上下文理解:BERT能夠同時考慮詞匯的前后文信息,生成更準確的詞表示。
  2. 通用性強:預訓練后,BERT可以通過微調,適用于各種NLP任務,包括文本分類、命名實體識別、問答系統(tǒng)等。
  3. 性能優(yōu)秀:在多個基準測試(如GLUE、SQuAD等)中,BERT都取得了領先的性能。

BERT的影響:

  1. 推動了預訓練模型的發(fā)展:BERT的成功激勵了大量后續(xù)工作,如RoBERTa、ALBERT、DistilBERT等,它們在BERT的基礎上進行了改進和優(yōu)化。
  2. 標準化微調方法:BERT展示了預訓練-微調范式的有效性,這一方法已成為NLP模型開發(fā)的標準流程。

2. Seq2Seq

  • 相關論文

Sequence to Sequence Learning with Neural Networks

Seq2Seq(Sequence to Sequence,序列到序列)模型是一類用于處理序列數(shù)據(jù)的模型,特別適用于需要將一個序列轉換為另一個序列的任務。該模型最初由Ilya Sutskever等人在2014年提出,廣泛應用于機器翻譯、文本摘要、對話系統(tǒng)等領域。

Seq2Seq模型主要由兩個部分組成:編碼器(Encoder)和解碼器(Decoder)。

編碼器的作用是將輸入序列編碼成一個固定長度的上下文向量(context vector)。編碼器通常采用RNN如LSTM或GRU。其過程如下:

  1. 輸入序列依次輸入到編碼器的RNN單元中。
  2. 每個時間步都會更新隱藏狀態(tài)。
  3. 最終的隱藏狀態(tài)被視為整個輸入序列的上下文向量。

解碼器的任務是根據(jù)上下文向量生成目標序列。解碼器同樣采用RNN結構,其過程如下:

  1. 初始化解碼器的隱藏狀態(tài)為上下文向量。
  2. 解碼器在每個時間步生成一個輸出,并將該輸出作為下一個時間步的輸入。
  3. 直到生成結束標志或達到預定義的序列長度。

在這里插入圖片描述

早期的Seq2Seq模型存在一個問題,即只能依賴固定長度的上下文向量,這在處理長序列時效果不佳。為了解決這個問題,Bahdanau等人在2015年引入了注意力機制。注意力機制允許解碼器在生成每個輸出時,動態(tài)地關注輸入序列的不同部分。具體來說:對于解碼器的每個時間步,計算一組注意力權重,這些權重表示當前時間步應關注編碼器輸出的哪些部分。使用這些權重計算一個加權和,作為當前時間步的上下文向量。

  • seq2seq模型的 pytorch 實現(xiàn)
import torch
import torch.nn as nn
import torch.optim as optim
import numpy as npclass Seq2Seq(nn.Module):def __init__(self, input_dim, output_dim, hidden_dim, n_layers):super(Seq2Seq, self).__init__()self.encoder = nn.LSTM(input_dim, hidden_dim, n_layers, batch_first=True)self.decoder = nn.LSTM(output_dim, hidden_dim, n_layers, batch_first=True)self.fc = nn.Linear(hidden_dim, output_dim)def forward(self, src, tgt):# 編碼器_, (hidden, cell) = self.encoder(src)# 解碼器outputs, _ = self.decoder(tgt, (hidden, cell))# 全連接層predictions = self.fc(outputs)return predictions# 超參數(shù)
input_dim = 10   # 輸入的特征維度
output_dim = 10  # 輸出的特征維度
hidden_dim = 16  # 隱藏層維度
n_layers = 2     # LSTM層數(shù)
seq_len = 5      # 序列長度
batch_size = 2   # 批次大小# 創(chuàng)建示例數(shù)據(jù)(隨機生成)
np.random.seed(0)
torch.manual_seed(0)src_data = torch.randn(batch_size, seq_len, input_dim)  # 輸入序列
tgt_data = torch.randn(batch_size, seq_len, output_dim)  # 目標序列# 打印數(shù)據(jù)形狀
print("Source data shape:", src_data.shape)
print("Target data shape:", tgt_data.shape)# 初始化模型、損失函數(shù)和優(yōu)化器
model = Seq2Seq(input_dim, output_dim, hidden_dim, n_layers)
criterion = nn.MSELoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)# 訓練模型
n_epochs = 100
for epoch in range(n_epochs):model.train()optimizer.zero_grad()output = model(src_data, tgt_data)loss = criterion(output, tgt_data)loss.backward()optimizer.step()if (epoch + 1) % 10 == 0:print(f'Epoch [{epoch + 1}/{n_epochs}], Loss: {loss.item():.4f}')

2.1. T5

  • 相關論文

Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer

T5(Text-To-Text Transfer Transformer)是由Google Research提出的一種基于Transformer架構的預訓練模型,旨在統(tǒng)一處理各種自然語言處理(NLP)任務。T5的核心理念是將所有的NLP任務都視為一個文本到文本的轉換問題,這樣可以使用同一個模型框架處理不同的任務,比如機器翻譯、文本摘要、問答系統(tǒng)等。

T5模型的一個重要特點是將所有任務都轉換為文本到文本的形式。例如:

  1. 機器翻譯:輸入為“translate English to German: The house is wonderful.”,輸出為“Das Haus ist wunderbar.”
  2. 文本摘要:輸入為“summarize: The quick brown fox jumps over the lazy dog.”,輸出為“quick fox jumps over lazy dog.”
  3. 問答系統(tǒng):輸入為“question: What is the capital of France? context: France’s capital is Paris.”,輸出為“Paris.”

在這里插入圖片描述

T5基于標準的Transformer模型,采用了全連接的自注意力機制,可以高效地處理序列數(shù)據(jù)。Transformer模型包括編碼器和解碼器兩個部分,T5使用的是完整的編碼器-解碼器架構。T5在一個名為C4(Colossal Clean Crawled Corpus)的數(shù)據(jù)集上進行了大規(guī)模的預訓練。C4數(shù)據(jù)集包含了從互聯(lián)網(wǎng)收集的大量文本,經(jīng)過清洗和過濾后用于模型訓練。T5的預訓練任務是“填空”(fill-in-the-blank),即在輸入文本中隨機遮蔽部分單詞,并讓模型預測這些被遮蔽的單詞。在預訓練之后,T5通過多任務學習對多個下游任務進行微調。每個任務都被轉換為文本到文本的形式,并通過統(tǒng)一的損失函數(shù)進行優(yōu)化。

  • 基于 transformers 的 t5 使用
from transformers import T5Tokenizer, T5ForConditionalGeneration# 加載T5模型和分詞器
model_name = 't5-small'
tokenizer = T5Tokenizer.from_pretrained(model_name)
model = T5ForConditionalGeneration.from_pretrained(model_name)# 輸入文本
text = "It is reported that a major fire broke out in Victoria Harbor in Hong Kong on December 12, which injured 100 people and caused 10 billion yuan in damage"# 將任務和輸入文本結合
input_text = "summarize: " + text# 編碼輸入文本
input_ids = tokenizer.encode(input_text, return_tensors='pt')# 生成摘要
summary_ids = model.generate(input_ids, max_length=50, num_beams=2, early_stopping=True)# 解碼生成的摘要
summary = tokenizer.decode(summary_ids[0], skip_special_tokens=True)print("Summary:", summary)

2.2. BART

  • 相關論文

BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension

BART(Bidirectional and Auto-Regressive Transformers)是由Facebook AI Research(FAIR)提出的一種序列到序列(Seq2Seq)模型。BART結合了BERT(Bidirectional Encoder Representations from Transformers)和GPT(Generative Pre-trained Transformer)的優(yōu)點,通過雙向編碼器和自回歸解碼器進行預訓練和微調。BART在文本生成任務(如文本摘要、機器翻譯和文本生成)以及其他NLP任務上表現(xiàn)出色。

BART的架構基于標準的Transformer編碼器-解碼器架構,但它在設計上具有一些獨特之處:

  1. 編碼器(Encoder):BART的編碼器類似于BERT,使用雙向注意力機制來編碼輸入序列。這意味著編碼器可以同時考慮輸入序列中每個位置的上下文信息。
  2. 解碼器(Decoder):BART的解碼器類似于GPT,使用自回歸的方式生成輸出序列。這意味著解碼器在生成每個標記時,只能訪問之前生成的標記。

在這里插入圖片描述

BART的預訓練任務旨在讓模型學習如何恢復被破壞的輸入序列。具體來說,BART采用了一種“去噪自編碼器”(Denoising Autoencoder)的預訓練方法,模型需要從損壞的輸入中恢復原始文本。預訓練任務包括:

  1. 文本填空(Token Masking):隨機遮蔽輸入序列中的部分標記,模型需要預測這些被遮蔽的標記。
  2. 文本刪除(Token Deletion):隨機刪除輸入序列中的部分標記,模型需要恢復這些被刪除的標記。
  3. 句子重排序(Sentence Permutation):隨機打亂輸入序列中的句子順序,模型需要恢復正確的句子順序。
  4. 文本旋轉(Document Rotation):將輸入序列隨機旋轉一個位置,模型需要恢復原始順序。
  5. 文本替換(Text Infilling):隨機選擇若干連續(xù)的標記并將其替換為一個特殊標記,模型需要恢復這些被替換的標記。

在這里插入圖片描述

3. Tokenization

  • 相關論文

Neural Machine Translation of Rare Words with Subword Units

Byte Pair Encoding is Suboptimal for Language Model Pretraining

Tokenization(分詞)是將輸入文本轉換為模型可以處理的格式的關鍵步驟。Tokenization的好壞直接影響模型的性能和效果。

Tokenization是將輸入的自然語言文本拆分為更小的單位(token),這些單位可以是單詞、子詞或字符等。對于大多數(shù)現(xiàn)代大模型而言,tokenization過程包括以下步驟:

  1. 文本規(guī)范化:將輸入文本轉換為統(tǒng)一的格式,例如將所有字符轉換為小寫、去除多余的空格等。
  2. 分詞:將規(guī)范化的文本切分為一個個token。
  3. 編碼:將token轉換為整數(shù)索引,以便模型能夠處理。

常見的Tokenization方法:

  1. Word-level Tokenization:這種方法將文本直接分成單詞。雖然簡單,但對于處理未見過的單詞或罕見單詞時效果較差。
text = "The quick brown fox jumps over the lazy dog."
tokens = text.split()
# ['The', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog']
  1. Character-level Tokenization:這種方法將文本分成單個字符。這種方法可以處理所有可能的輸入,但生成的序列可能會非常長。
text = "hello"
tokens = list(text)
# ['h', 'e', 'l', 'l', 'o']
  1. Subword Tokenization:這種方法結合了word-level和character-level tokenization的優(yōu)點,通過將單詞拆分為更小的子詞單元來處理未見過的單詞。常見的子詞分詞方法包括:Byte Pair Encoding,WordPiece,Unigram。

BPE(Byte Pair Encoding)是一種基于頻率的子詞分詞算法。BPE通過逐步合并出現(xiàn)頻率最高的字符對來創(chuàng)建子詞單元,從而生成子詞詞典。BPE將文本拆分為子詞單元,這些子詞單元可以是字符、部分單詞或整個單詞。這種方法可以有效地處理未見過的詞匯,提高模型的泛化能力。BPE通過逐步合并出現(xiàn)頻率最高的字符對來生成子詞單元。每次合并后,頻率最高的字符對變成一個新的子詞單元,直到達到預定的詞匯表大小。

BPE算法步驟:

  1. 準備包含大量文本的語料庫。將每個單詞初始化為其字符序列。例如,單詞 hello 會被表示為 h e l l o。
  2. 統(tǒng)計頻率:統(tǒng)計所有字符對的出現(xiàn)頻率。
  3. 選擇最高頻:選擇頻率最高的字符對進行合并。
  4. 更新詞典:將合并后的新子詞加入詞典,并更新文本中的出現(xiàn)。
  5. 重復步驟:重復上述過程,直到達到預定的詞匯表大小或不再有頻率高的字符對。

WordPiece和BPE的流程幾乎一致,主要的區(qū)別在于,BPE每次按照出現(xiàn)頻數(shù)最高這一原則來選取pair,而WordPiece則是按照能夠最大
限度提升語言模型概率這一原則來選取pair。

BPE和WordPiece都是從一個小的基礎詞表開始不斷去擴充這個詞表表,而Unigram則與之相反,Unigram會先初始化一個大的詞表,然后
不斷從中刪去子詞直至詞表達到指定的大小。Unigram初始化詞表的方式有很多種,例如我們可以在預分詞的結果上應用BPE算法并設置較大的merges以獲得初始詞表,或者計算預分詞結果的所有嚴格子串并從中選取一些出現(xiàn)頻率最高的子串作為初始詞表。

SentencePiece是一個通用的文本分詞和子詞化庫,它結合了BPE和WordPiece的優(yōu)點,并支持多種分詞算法。SentencePiece可以根據(jù)任務需求選擇合適的分詞方法,包括BPE、Unigram等。它提供了一個統(tǒng)一的接口,使得使用不同的分詞方法變得更加方便和靈活。SentencePiece還支持自定義的標記化規(guī)則和訓練參數(shù),可以適應各種語言和文本類型的需求。

模型的tokenization過程通常包括一些特殊token,用于處理特定任務和文本邊界:

  1. [CLS]:用于表示整個序列的特殊標記(例如在BERT中用于分類任務)。
  2. [SEP]:用于分隔兩個句子的特殊標記(例如在BERT的下一句預測任務中)。
  3. [PAD]:用于填充短于最大長度的序列,以保持批處理的一致性。
  4. [MASK]:用于掩蓋某些tokens以進行掩碼語言模型訓練(例如在BERT中)。
  • 基于 transformers 實現(xiàn) BERT 的 tokenization 過程
from transformers import BertTokenizer# 加載BERT分詞器
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')# 輸入文本
text = "The quick brown fox jumps over the lazy dog."# 分詞
tokens = tokenizer.tokenize(text)
print(tokens)
# ['the', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog', '.']# 編碼
input_ids = tokenizer.encode(text, add_special_tokens=True)
print(input_ids)
# [101, 1996, 4248, 2829, 4419, 2169, 2058, 1996, 13971, 3899, 1012, 102]
http://aloenet.com.cn/news/40474.html

相關文章:

  • 日照建網(wǎng)站廣告公司收費價格表
  • 網(wǎng)站怎么弄二維碼服務營銷理論
  • 官網(wǎng)網(wǎng)站建設收費公司網(wǎng)站設計模板
  • 海南做網(wǎng)站請輸入搜索關鍵詞
  • 網(wǎng)頁版夢幻西游火眼金睛seo人才招聘
  • 南京seo排名收費廣州網(wǎng)站優(yōu)化軟件
  • 做網(wǎng)站的任務書淄博seo培訓
  • 湖州做網(wǎng)站建設的公司女教師遭網(wǎng)課入侵直播錄屏曝光se
  • java做網(wǎng)站用什么軟件新聞報道最新消息今天
  • 庫車建設工程信息網(wǎng)站seo查詢愛站網(wǎng)
  • 自動做任務賺錢的網(wǎng)站在百度怎么發(fā)布作品
  • 舟山市建設局網(wǎng)站網(wǎng)站設計優(yōu)化
  • 寧夏城鄉(xiāng)和住房建設廳網(wǎng)站網(wǎng)頁設計制作教程
  • 做網(wǎng)站的叫什么思耐什么網(wǎng)站都能進的瀏覽器
  • 做網(wǎng)站頁面對PS切圖搜索引擎優(yōu)化工具
  • Ngnix打開wordpressseo實訓報告
  • 龍港網(wǎng)站建設網(wǎng)站營銷
  • wordpress slides book南寧哪里有seo推廣廠家
  • 網(wǎng)站備案很麻煩嗎數(shù)據(jù)網(wǎng)站
  • wordpress 本地 搭建整站優(yōu)化深圳
  • 91色做爰免費網(wǎng)站企業(yè)培訓機構排名
  • 鄭州哪些公司做網(wǎng)站比較好網(wǎng)站seo站群軟件
  • 淘寶聯(lián)盟怎么做自已的網(wǎng)站四川游戲seo整站優(yōu)化
  • 網(wǎng)上購物網(wǎng)站開發(fā)報價長沙網(wǎng)站推廣排名優(yōu)化
  • java 做的網(wǎng)站搜狗收錄提交
  • 應聘網(wǎng)站開發(fā)題目競價托管外包服務
  • 網(wǎng)站下拉菜單seo公司北京
  • div css制作個人網(wǎng)站營銷策劃方案怎么寫
  • 網(wǎng)站注冊免費永久中國做網(wǎng)站的公司排名
  • 可以兼職做設計的網(wǎng)站深圳做網(wǎng)站的