自2018年推出以來,伯特(Bert)改變了自然語言處理。它在情感分析,問題回答和語言推論等任務中表現良好。伯特使用雙向訓練和基於變壓器的自我發揮,引入了一種新的方式來理解文本中的單詞之間的關係。但是,儘管取得了成功,但伯特還是有局限性。它在計算效率,處理更長的文本並提供可解釋性方面掙扎。這導致了Modernbert的發展,這是一個旨在應對這些挑戰的模型。 ModernBert提高了處理速度,更好地處理更長的文本,並為開發人員提供了更大的透明度。在本文中,我們將探討如何使用Modernbert進行情感分析,強調其特徵和對Bert的改進。
學習目標- 貝特簡要介紹以及為什麼現代伯特出現
- > 了解現代的特徵
- > >如何通過情感分析實施現代現代示例
- 現代伯特
- 的局限性
>本文是> > data Science Blogathon的一部分。 >目錄
>什麼是bert?問題- 什麼是bert?
-
自2018年Google介紹以來,它代表Transformers的雙向編碼器表示,它一直是遊戲規則改變的
Bert。 Bert介紹了雙向培訓的概念,該概念使該模型可以通過在各個方向上查看周圍的單詞來理解上下文。這導致了許多NLP任務的模型的表現明顯更好,包括問答,情感分析和語言推論。伯特的架構基於僅編碼變壓器,這些變壓器使用自我注意的機制來權衡句子中不同單詞的影響,並且只有編碼器。這意味著他們只能理解和編碼輸入,並且不重建或生成輸出。因此,伯特(Bert)擅長捕獲文本中的上下文關係,使其成為近年來最強大和廣泛採用的NLP模型之一。 什麼是ModernBert? - 儘管伯特取得了突破性的成功,但它仍存在一定的局限性。其中一些是:
- >計算資源:Bertis是一種計算昂貴的,內存密集型的模型,用於實時應用程序或設置的構成,該設置沒有易於訪問,功能強大的計算基礎結構。 >上下文長度:Bert具有固定長度的上下文窗口,該窗口成為處理遠距離輸入(如冗長的文檔)的限制。
- 。 >可解釋性:模型的複雜性使其不如簡單模型來解釋,從而導致對模型進行調試和執行修改的挑戰。
- 常識推理:伯特缺乏常識推理,並且努力理解給定信息以外的上下文,細微差別和邏輯推理。
- > 現代伯特的某些獨特特徵是:
- >閃爍注意力
- >序列包裝將文本的批處理重新組織為緊湊的形式,將較短的序列分組在一起以最大化硬件利用率。
- >使用Modernbert
- 培訓過程將需要WANDB API密鑰。您可以通過以下方式創建一個:>重量和偏見。 > 步驟1:安裝必要的庫 >
- 安裝與擁抱臉部變壓器一起使用的庫。 >
- > train_bsz,val_bsz :指示培訓和驗證的批次大小。批量大小確定在更新模型內部參數之前處理的樣品數量。 >
- > lr:學習率控制模型權重相對於損耗梯度的調整。
- betas :這些是Adam Optimizer的beta參數。
- > n_epochs :時代的數量,指示完整的通過整個培訓數據集。 >
- eps :在分母中添加了一個小常數,以提高亞當優化器中的數值穩定性。
- > wd :代表體重衰減,這是一種正規化技術,可以防止過度適應大量的重量。
- >培訓數據偏見:
它在英語和代碼數據上進行了訓練,因此它不能在其他語言或非代碼文本上效率地執行。 > 複雜性 - :架構增強功能和新技術(如閃光燈注意力和旋轉位置嵌入)為模型增添了複雜性,這可能會使實現和對特定任務進行微調。 >>>>> > 推理速度
- :雖然閃光注意提高了推理速度,但使用完整的8,192個令牌窗口可能仍然較慢。 > 結論
- > Modernbert非常適合情感分析和文本分類等任務。
> >它仍然有一些局限性,例如對英語和代碼數據的偏見。
- 諸如擁抱臉和wandb之類的工具使實施和使用易於實現。 >
- 參考:
- >本文所示的媒體不歸Analytics Vidhya擁有,並由作者酌情使用。
- 常見問題
> Modernbert通過結合更有效的算法(例如>> flash注意力 > > > > local-local-lobal inter-local-lobal Entercting注意)來解決這些局限性,從而優化了內存使用量並提高了處理速度。此外,ModernBert引入了增強功能,以通過集成諸如 旋轉位置嵌入(ROPE)
>
>現代伯特基鹼有22層和1.49億個參數
>現代伯特·塔爾格(Modernbert-Large)有28層和3.95億個參數
- 了解現代bert的特徵
>這是一種開發的新算法,旨在在時間和記憶使用方面加快變壓器模型的注意力機理。可以通過重新安排操作以及使用平鋪和重新計算來加強注意力的計算。平舖有助於將大數據分解為可管理的塊,並通過根據需要重新計算中間結果來減少記憶使用情況。這將二次記憶的使用量減少到線性,從而使長序列更有效。計算間接費用減少。它比傳統的注意機制快2-4倍。閃光注意用於加快變壓器模型的訓練和推斷。
局部 - 全球交替注意
> Modernbert最新穎的特徵之一是交替關注,而不是全球關注。
>僅在每三層之後才能參加完整的輸入。這是全球關注。
同時,所有其他層都有一個滑動窗口。在這個滑動窗口中,每個令牌都只能參加最接近的128個令牌。這是當地的關注。>
旋轉位置嵌入(繩索)
旋轉位置嵌入(繩索)是一種變壓器模型技術,它使用旋轉矩陣在序列中編碼令牌的位置。它包含了絕對和相對位置信息,調整了注意機制以了解令牌之間的順序和距離。繩索使用旋轉矩陣編碼令牌的絕對位置,還記下了相對位置信息或令牌之間的順序和距離。
毫無定論和測序未加工和序列包裝是旨在優化內存和計算效率的技術。
>通常用於找到最長的令牌,添加毫無意義的填充令牌以填充其餘的較短序列以等於其長度。這增加了對無意義令牌的計算。毫無用處可以從序列中刪除不必要的填充令牌,減少浪費的計算。
讓我們實際上使用Modernbert實施情感分析。我們將使用ModernBert執行情感分析任務。情感分析是一種特定類型的文本分類任務,旨在將文本(例如,評論)分類為正或負面。
我們正在使用的數據集是IMDB電影評論數據集將評論分類為正情緒或負面情感。>
>注意:
>我已經使用了A100 GPU在Google Colab上更快地處理。有關更多信息,請參閱:
>通過將情感標籤列(標籤)重命名為“標籤”並刪除不必要的列來準備數據集。 >讓我們使用f1_score作為度量來評估我們的模型。我們將定義一個函數來處理評估預測併計算其F1分數。這是我們將模型的預測與真實標籤進行比較。 >定義超參數和其他配置,用於使用擁抱臉的訓練記錄來微調模型。讓我們理解一些論點:
> Modernbert博客
MODERBERT文檔
> Q5。什麼是旋轉電位嵌入?它們與固定位置嵌入有何不同?與僅捕獲絕對位置的固定位置嵌入相反,旋轉位置嵌入(繩索)使用旋轉矩陣來編碼絕對位置和相對位置。繩索在擴展序列中的性能更好。 Q6。 Modernbert的潛在應用是什麼? Modernbert的某些應用可以在文本分類,情感分析,問答,指定性識別,法律文本分析,代碼理解等領域中進行。 wandb api需要什麼以及為什麼需要?權重和偏見(W&B)是跟踪,可視化和共享ML實驗的平台。它有助於跟踪模型指標,可視化實驗數據,共享結果等等。 它有助於監視指標,例如準確性,可視化進度,調整超參數,跟踪模型的版本等。
>步驟2:使用load_dataset函數加載IMDB數據集#install libraries
!pip install git+https://github.com/huggingface/transformers.git datasets accelerate scikit-learn -Uqq
!pip install -U transformers>=4.48.0
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification, TrainingArguments, Trainer,AutoModelForMaskedLM,AutoConfig
from datasets import load_dataset
>步驟3:tokenization
使用預先訓練的現代基準詞架令牌化數據集。此過程將文本轉換為適合模型的數值輸入。命令“ Tokenized_test_dataset [0]”將打印標記測試數據集的第一個示例,包括標記輸入,例如輸入ID和標籤。
#Load the dataset
from datasets import load_dataset
imdb = load_dataset("imdb")
#print the first test sample
imdb["test"][0]
>步驟4:初始化現代伯特基本模型的情感分類
>
#install libraries
!pip install git+https://github.com/huggingface/transformers.git datasets accelerate scikit-learn -Uqq
!pip install -U transformers>=4.48.0
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification, TrainingArguments, Trainer,AutoModelForMaskedLM,AutoConfig
from datasets import load_dataset
>步驟5:準備數據集
#Load the dataset
from datasets import load_dataset
imdb = load_dataset("imdb")
#print the first test sample
imdb["test"][0]
步驟6:定義計算指標
#initialize the tokenizer and the model
tokenizer = AutoTokenizer.from_pretrained("answerdotai/ModernBERT-base")
model = AutoModelForMaskedLM.from_pretrained("answerdotai/ModernBERT-base")
#define the tokenizer function
def tokenizer_function(example):
return tokenizer(
example["text"],
padding="max_length",
truncation=True,
max_length=512, ## max length can be modified
return_tensors="pt"
)
#tokenize training and testing data set based on above defined tokenizer function
tokenized_train_dataset = imdb["train"].map(tokenizer_function, batched=True)
tokenized_test_dataset = imdb["test"].map(tokenizer_function, batched=True)
#print the tokenized output of first test sample
print(tokenized_test_dataset[0])
>步驟7:設置培訓參數
#initialize the model
config = AutoConfig.from_pretrained("answerdotai/ModernBERT-base")
model = AutoModelForSequenceClassification.from_config(config)
步驟8:模型培訓
>使用培訓師類執行模型培訓和評估過程。
#data preparation step -
train_dataset = tokenized_train_dataset.remove_columns(['text']).rename_column('label', 'labels')
test_dataset = tokenized_test_dataset.remove_columns(['text']).rename_column('label', 'labels')
>步驟9:評估
在測試數據集上評估訓練的模型。
import numpy as np
from sklearn.metrics import f1_score
# Metric helper method
def compute_metrics(eval_pred):
predictions, labels = eval_pred
predictions = np.argmax(predictions, axis=1)
score = f1_score(
labels, predictions, labels=labels, pos_label=1, average="weighted"
)
return {"f1": float(score) if score == 1 else score}
步驟10:保存微調模型
>保存微調模型和代幣器以進行進一步的重複使用。
>
#define training arguments
train_bsz, val_bsz = 32, 32
lr = 8e-5
betas = (0.9, 0.98)
n_epochs = 2
eps = 1e-6
wd = 8e-6
training_args = TrainingArguments(
output_dir=f"fine_tuned_modern_bert",
learning_rate=lr,
per_device_train_batch_size=train_bsz,
per_device_eval_batch_size=val_bsz,
num_train_epochs=n_epochs,
lr_scheduler_type="linear",
optim="adamw_torch",
adam_beta1=betas[0],
adam_beta2=betas[1],
adam_epsilon=eps,
logging_strategy="epoch",
eval_strategy="epoch",
save_strategy="epoch",
load_best_model_at_end=True,
bf16=True,
bf16_full_eval=True,
push_to_hub=False,
)
>這裡:0表示負面審查,1表示積極的審查。在我的新示例中,輸出應為[0,1],因為無聊表示負面評論(0),而壯觀的意見則表示為1,因此將以輸出為1。
。
#Create a Trainer instance
trainer = Trainer(
model=model, # The pre-trained model
args=training_args, # Training arguments
train_dataset=train_dataset, # Tokenized training dataset
eval_dataset=test_dataset, # Tokenized test dataset
compute_metrics=compute_metrics, # Personally, I missed this step, my output won't show F1 score
)
現代伯特
雖然Modernbert對傳統Bert進行了一些改進,但它仍然存在一些局限性:
>
鑰匙要點現代伯特通過修復效率低下和有限的上下文處理等問題來改善BERT。
>它使用閃光注意力和旋轉位置嵌入速度進行更快的處理和更長的文本支持。
> Q1。什麼是僅編碼的體系結構? Ans。 僅編碼器架構過程輸入序列而不生成輸出序列,重點是理解和編碼輸入。 Bert的局限性是什麼? BERT的某些局限性包括高計算資源,固定上下文長度,效率低下,複雜性以及缺乏常識推理。什麼是注意機制?注意機制是一種允許模型專注於輸入的特定部分以確定哪些部分或多或少重要的技術。什麼是交替注意?這種機制在關注文本序列中的本地和全局環境之間交替。 當地的注意力突出了相鄰的單詞或短語,收集細粒度的信息,而全球注意力識別整個文本中的整體模式和關係。
以上是與現代伯特一起增強情感分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

介紹 恭喜!您經營一家成功的業務。通過您的網頁,社交媒體活動,網絡研討會,會議,免費資源和其他來源,您每天收集5000個電子郵件ID。下一個明顯的步驟是

介紹 在當今快節奏的軟件開發環境中,確保最佳應用程序性能至關重要。監視實時指標,例如響應時間,錯誤率和資源利用率可以幫助MAIN

“您有幾個用戶?”他扮演。 阿爾特曼回答說:“我認為我們上次說的是每週5億個活躍者,而且它正在迅速增長。” “你告訴我,就像在短短幾週內翻了一番,”安德森繼續說道。 “我說那個私人

介紹 Mistral發布了其第一個多模式模型,即Pixtral-12b-2409。該模型建立在Mistral的120億參數Nemo 12B之上。是什麼設置了該模型?現在可以拍攝圖像和Tex

想像一下,擁有一個由AI驅動的助手,不僅可以響應您的查詢,還可以自主收集信息,執行任務甚至處理多種類型的數據(TEXT,圖像和代碼)。聽起來有未來派?在這個a


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用