【AI】NLP

不定期更新,建議關注收藏點贊。


目錄

  • transformer
  • 大語言模型
  • Google Gemma
  • 疫情網民情緒識別

  • 整體框架
    baseline構建
    模型調參、模型優化、其他模型
    數據trick、指標優化、magic feature
    數據增強、偽標簽、遷移學習
    模型融合
  • sklearn中TFIDF參數詳解
    在這里插入圖片描述
    頻率閾值可以去掉高于max和低于min的特征
    l2正則化
  • 如何fine-tune微調BERT用于文本分類
    有一片論文可以找一下 how to fine-tune BERT for text classification?以下只是幾個點,詳見paper
    在這里插入圖片描述
    fine-tuning strategies
    further pre-training 要求機器好、用時長
    multi-task fine-tuning
    長文本階段處理(長文本截斷對BERT不友好)
    不同層的特質 不同層表征意義不一樣 哪一層是效果最好的
    學習率(小的學習率)

transformer

幾乎所有NLP都是基于這個基礎上。
BERT

大語言模型

Google Gemma

30:00

疫情網民情緒識別

  • 思路分析

linux系統需要把數據轉換成utf-8讀取

  1. 多模態情感分析->轉化成 文本情感分析->文本分類
    機器學習方法:詞袋模型TFIDF(baseline,基于字還是詞)Ngram范圍、分類模型LR、SVM、XGBoost、等

深度學習方法:CNN,RNN,Transformer,早停、學習率衰減、Embedding向量dropout,雙層雙向RNN即Bi-LSTM Bi-GRU,Text CNN、Text RNN、Text Capsule等

遷移學習方法:BERT、XLNET、ALBERT等

預訓練模型 bert albert xlnet robert,BERT-WWM
不同層級相加、平均、concat
batch,epoch
對抗訓練 環境包的版本要注意
BERT+Word2Vec/Glove

  1. 標簽分布不平衡,1和-1占比較小
  2. 發布時間關于樣本數量和樣本標簽的分布、正文長度分布

文本長度也要注意設置多少能覆蓋90%的文本、北大開源分詞包pkuseg

  1. 數據集中有圖片和視頻信息的分布,圖片張數的分布、視頻分布及語義信息
  • 代碼
    把訓練集和測試集的文本編碼成bert的三條序列,填充成固定的文本長度,并保存起來,標簽類型編碼改成0-2,利用transformer包構建bert模型導入,五折交叉驗證訓練模型,有兩種結果,一種是概率相加取平均,另一種是每一折結果取出來做投票

batch_size=32還是64要與顯卡的內存32g 還是64g對應上
改進思路:模型優化、修改損失函數、對抗訓練

  • 數據增強
    • 為什么要進行文本增強?常見的場景是少樣本、分類任務中樣本分布不均衡、半監督訓練場景、提高模型魯棒性。
      解決方法:半監督學習算法UDA用在無標簽樣本上、回譯back translation、隨機詞替換、非核心詞替換、基于上下文信息的文本增強
      方法的原理:1)保持語義不變,變換文本表達。2)按照某種策略對原文局部調整EDA easy data augmentation,如同義詞替換SR 、隨機刪除RD、隨機插入RI、隨機交換RS、非核心詞替換

URA原理
在這里插入圖片描述
不足之處:只進行了詞替換,沒提到刪除、交換等。

基于上下文信息的文本增強,首先需要一個訓練好的語言模型LM,對于需要增強的原始文本,隨機去掉文中的一個詞或字,取決于語言模型支持字還是詞(取決于語言模型支持字還是詞),將文本剩余部分輸入語言模型,選擇語言模型所預測的top k個詞去替換掉原文對應的詞,以形成新的k條文本。
在這里插入圖片描述

利用語言生成模型進行文本生成 如GPT

工業界或比賽界用得最多的方式:回譯,測試時也可以增強,對一條測試樣本可以進行構造多條增強樣本,得到預測結果,和原來的結果進行加權融合 TTA、embedding技術,FastText+Glove pre-trained、偽標簽(將測試集得到的結果和訓練集合到一起再喂進去)、

    • 回譯:利用翻譯模型不停翻譯成其他語種最后再翻譯回來
  • 遷移學習
    通過減少源域到目標域的分布差異進行知識遷移,從而實現數據標注工作。
    傳統機器學習和深度學習,訓練集和測試集同分布。
    遷移學習中的“域”:某個時刻某個特定的領域,比如書本評論和電視劇評論,本身分為source domain & target domain,并不要求二者數據分布一致。
    遷移學習中的“任務”:比如情感分析和實體識別就是兩個不同的任務,source domain & target domain任務也不一定一致。
    分為幾種,歸納式遷移學習inductive transfer learning(目標任務不同但相關,無論源域和目標域的數據域是否相同)、直推式遷移學習transductive(目標任務相同,但目標數據域中沒有或少量可獲得帶標記的數據,然而在源數據域中有許多可獲得帶標記的數據) 、無監督遷移學習(源域目標域都沒有帶標簽的數據,關注與目標任務上的聚類、降維和密度估計)。
    在這里插入圖片描述
    單步遷移學習和多步遷移學習。比如源域圖片、目標域文字,需要做多步遷移,找一個中間域,劃分為單步遷移。單步又分為同構DA、異構DA,它們區別在于數據空間是否一致。
    domain adaptation,其中feature adaptation很重要:源域和目標域共享同樣的特征,提取到共同空間。

  • 特征工程
    在這里插入圖片描述
    在這里插入圖片描述

  • 模型調參
    參數初始化很重要,很多時候是這里的問題。
    Glorot條件:優秀的初始化應該使各層激活值和狀態梯度的方差在傳播過程中的方差保持一致。
    初始化方法下面推薦3種。

  1. Xavier
  2. He
  3. normal
    根據3σ原則,概率得到幾乎只會出現在(μ-3σ,μ+3σ)之間
    在這里插入圖片描述

技巧:
shuffle,
batch normalization BN用于圖像處理, layer normalization LN用于文本處理 ,
梯度裁剪:限制最大梯度,對超過閾值的梯度進行規約,使優化算法更加穩定,
dropout 防止過擬合 一般設置為0.5,adam優化器:小數據集嘗試sgd(慢但是效果好),大數據集先用adam,快收斂的時候換sgd,
學習率用sgd的化考慮從1或0.1開始
激活函數 tanh或relu比sigmoid更優
sigmoid在-4到4的區間才會有較大的梯度,之外梯度接近0,很容易造成梯度消失問題,輸入0均值,sigmoid輸出后非0均值
其他超參數 如focal loss參數,這個不是在所有場景下都有效
全連接層,如果輸入和輸出大小一致,建議用highway network替換

highway network
在這里插入圖片描述

  • 模型融合
    哪些模型可以拿來融合?同樣參數但模型訓練的不同階段即不同迭代次數的模型、同樣參數不同的初始化方式、半監督加入的數據量、不同的模型(如bert系列 bert albert xlnet bert-wwm roberta 都是基于transformer結構的預訓練語言模型 統稱為bert家族)、融合特征工程

文本輸入的截斷方式:三種,pre-truncate,post-truncate,middle-truncate(head+tail)

bert 是一種基于transformer encoder構建的預訓練語言模型,通過masked language model MLM +Next sentence prediction NSP兩個任務在大規模語料上訓練得到的;開源的bert分為base 和large,模型大小不同。
bert-wwm 模型結構和bert完全一樣,只是在MLM訓練任務上做了小的改進,bert在做MLM采用的是token級別的mask,而bert-wwm采用詞級別的mask。

roberta是bert優化版,只是在數據量和訓練方式上做改進,更大的數據量更好的訓練方式訓練的更久,去除了NSP任務有損模型性能,MLM換成dynamic masking LM, 更大的batchsize及其他超參數的調優。

XLNet對bert做了較大的改動,二者在模型結構和訓練方式上都有不小的差異。
Bert的MLM在預訓練時有mask標簽,但使用時沒有,導致訓練和使用出現不一致;MLM不屬于autoregressive LM不能做生成類任務,XLNet采用PML permutation language model避免mask標簽的使用,且可以做生成任務。Bert使用的transformer結構對文本長度有限制,XLNet使用升級版的transformer-XL

Albert是bert的瘦身版本,更簡單的模型,更少的數據,得到更好的結果。通過兩個方面減少模型參數量,對vocabulary embedding進行矩陣分解,將原來的矩陣VxE分解成兩個矩陣VxH和HxE(H<<E),跨層參數共享可以避免參數量隨網絡深度增加而增加。

這些模型在不同數據集上有差異,需要試一下才知道哪個好。總體而言,XLNet,roberta,Bert-wwm會比bert效果略好,large比base好,albert也有多個版本,tiny版本好很多。更多情況下會被一起使用,最后做ensemble.

NLP:BERT, TextRNN, TextCapsule
分類問題采用投票方法,回歸問題采用平均、加權平均,權值按模型效果進行排名。交叉驗證也是一個方式,把每一折數據固定下來,看效果,也是按加權平均。
stacking的方式
在這里插入圖片描述

  • 面試題

這個項目有什么難點?針對這個怎么優化的
預訓練模型BERT和word2vex+textRNN based encoder哪個效果好
BERT在per train 時候和word2vec有什么異同點
bert的token怎么分詞的
bert如何獲得詞意和句意
為什么bert有3個嵌入層,它們如何實現的
bert在Per train階段的損失函數
為什么fine-tune有效?學習到針對特定任務的特征,學到了深層次的語義信息。

1.word2vec與Elmo模型在語義學習上差異是什么?
2.Batch Normalization與Layer Normalization區別?bert中為什么用后者?
3.熟悉GELU激活函數,與RELU差異。
4.實際操作,Semi-Supervised DA方法;
5.對比實施模型融合的相關方法。

1.有哪些文本增強方法?你用過哪些文本增強方法
2.BERT有哪些調參方法?你是如何調參的?Transformer的原理?
3. 嘗試模型調參(比如BERT和word2vec構建詞向量)
4. 了解一種文本增強方法
5. 代碼實現文本增強(比如回譯技術)

涉及論文:
Understanding the diffificulty of training deep feedforward neural networks
Delving Deep into Rectififiers:
Surpassing Human-Level Performance on ImageNet Classifification
Highway Networks
論文下載地址:
https://arxiv.org/abs/1502.01852
http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf
https://arxiv.org/abs/1505.00387
作業名稱(詳解):面試問題及比賽實戰。
1.跑通其它的預訓練模型
2.嘗試多模型的融合,實現stacking方式
3.嘗試加入特征進行模型學習
4.熟悉幾種常用的參數初始化方法及其原理(看paper)
5.熟悉adam原理(看paper)

  • Bert
    有兩個預訓練任務,MLM masked language model(在每一輪迭代中隨機選擇15%的詞隱藏,目標是通過它們的上下文來預測這個單詞,操作是取這些詞對應的最后一個隱單元向量后接一個softmax來預測這個詞,80%采用masked,10%隨機選擇其他詞填充,10%使用原詞,這個平衡了masked和fine-tune)、Next Sentence Prediction(預測第二個句子是否可以自然的接在第一個句子后面,是一個二分類問題,用于理解句子間的關系)
    在這里插入圖片描述
    是一個12層的網絡,學到位置信息,多頭attention公式見上圖右邊,I是原始輸入,輸出key,value,query。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/75952.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/75952.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/75952.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何為 Debian 和 Kali 系統更換軟件源并更新系統

在 Linux 系統中&#xff0c;軟件源&#xff08;Software Repository&#xff09;是獲取軟件包和更新的核心途徑。然而&#xff0c;默認的軟件源可能會因為地理位置、網絡狀況等原因導致下載速度緩慢&#xff0c;甚至無法訪問。為了提升系統的軟件獲取效率&#xff0c;許多用戶…

android 一步完成 aab 安裝到手機

家人們誰懂&#xff01;在 Android 系統安裝 aab 應用超麻煩。滿心期待快速體驗&#xff0c;卻發現 aab 無法直裝&#xff0c;得先轉為 apks 格式&#xff0c;這過程復雜易錯。好不容易轉好&#xff0c;還得安裝 apks&#xff0c;一番折騰&#xff0c;時間與耐心全耗盡。別愁&a…

mac部署CAT監控服務

在 Mac 上部署美團點評開源的 CAT 監控服務端&#xff0c;可以按照以下步驟操作&#xff1a; 1. 環境準備 1.1 安裝依賴 確保已安裝以下工具&#xff1a; JDK 8&#xff08;建議 OpenJDK 11&#xff09; MySQL 5.7&#xff08;存儲監控數據&#xff09;&#xff08;8.0不支持…

C語言基礎:第10天筆記

內容提要 函數 函數的概述 函數的分類 函數的定義 形參和實參 函數的返回值 函數 函數的概述 函數&#xff1a;實現一定功能的&#xff0c;獨立的代碼模塊&#xff0c;函數是c程序的核心構成模塊&#xff0c;可以說c程序就是由眾多的函數組成&#xff0c;對于函數的使用…

集成開發環境革新:IntelliJ IDEA與Cursor AI的智能演進

集成開發環境革新&#xff1a;IntelliJ IDEA 與 Cursor AI 的智能演進 集成開發環境&#xff08;IDE&#xff09; 是軟件開發者必不可少的工具。一個優秀的 IDE 不僅能夠幫助編寫和調試代碼&#xff0c;還能集成版本控制和代碼優化等多種功能。如今&#xff0c;隨著人工智能&a…

【Django】教程-1-安裝+創建項目+目錄結構介紹

歡迎關注我&#xff01;后續會更新django教程。一周2-3更&#xff0c;歡迎跟進&#xff0c;本周會更新第一個Demo的單獨一個模塊的增刪改查【Django】教程-4-一個增刪改查的Demo【Django】教程-2-前端-目錄結構介紹【Django】教程-3-數據庫相關介紹 1.項目創建 1.1 安裝 Djan…

智能儀表板DevExpress Dashboard v24.2新版亮點:支持.NET 9

使用DevExpress BI Dashboard&#xff0c;再選擇合適的UI元素&#xff08;圖表、數據透視表、數據卡、計量器、地圖和網格&#xff09;&#xff0c;刪除相應參數、值和序列的數據字段&#xff0c;就可以輕松地為執行主管和商業用戶創建有洞察力、信息豐富的、跨平臺和設備的決策…

北斗導航 | 改進最小二乘殘差法的接收機自主完好性監測算法原理,公式,應用,研究綜述,matlab代碼

改進最小二乘殘差法的接收機自主完好性監測算法研究 摘要 本文針對傳統最小二乘殘差RAIM算法在復雜環境下檢測性能不足的問題,提出了一種基于加權抗差估計的改進算法。通過引入IGGⅢ權函數構建抗差最小二乘模型,結合滑動窗口方差估計和自適應閾值調整機制,顯著提升了算法對…

24、web前端開發之CSS3(一)

CSS3詳細講義 目錄 CSS3簡介CSS3核心特性選擇器盒模型背景與邊框文本樣式顏色與透明度過渡與動畫變換彈性盒布局網格布局媒體查詢多列布局字體與排版裝飾與效果性能優化新特性與兼容性CSS3實踐示例總結 一、CSS3簡介 CSS3&#xff08;Cascading Style Sheets, Level 3&#…

【Git “reset“ 命令詳解】

以下是關于 git reset 命令的完整博客文章內容&#xff1a; 本章目錄: 1. 命令簡介主要用途&#xff1a; 2. 命令的基本語法和用法語法格式&#xff1a;使用場景&#xff1a; 3. 命令的常用選項及參數選項示例&#xff1a;1. 使用 --soft 進行軟重置2. 使用 --mixed 進行混合重…

STM32 IIC通信

目錄 IIC簡介硬件電路連接I2C時序基本單元IIC完整數據幀MPU6050封裝硬件IIC內部電路 IIC簡介 IIC&#xff08;Inter-Integrated Circuit&#xff09;是 IIC Bus 簡稱&#xff0c;中文叫集成電路總線。它是一種串行通信總線&#xff0c;使用多主從架構&#xff0c;由飛利浦公司…

深入解析 TypeScript 核心配置文件 tsconfig.json

什么是 tsconfig.json&#xff1f; tsconfig.json 是 TypeScript 項目的中樞神經系統&#xff0c;它是 TypeScript 編譯器的配置文件&#xff0c;決定了整個項目的編譯規則、模塊解析方式和類型檢查策略。這個 JSON 文件通常位于項目根目錄&#xff0c;是 TypeScript 工程化開…

debug 筆記:llama 3.2 部署bug 之cutlassF: no kernel found to launch!

1 問題描述 按照官方的寫法 import torch from transformers import pipeline import os os.environ["HF_TOKEN"] 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 model_id "meta-llama/Llama-3.2-3B"pipe pipeline("text-generation", modelmode…

使用ZYNQ芯片和LVGL框架實現用戶高刷新UI設計系列教程(第五講)

在上一講我們講解了按鍵回調函數的自定義函數的用法&#xff0c;這一講繼續講解回調函數的另一種用法。 首先我們將上一講做好的按鍵名稱以及自定義回調事件中的按鍵名稱修改&#xff0c;改為默認模式為“open”當點擊按鍵時進入回調函數將按鍵名稱改為“close”&#xff0c;具…

Hyperliquid 遇襲「拔網線」、Polymarket 遭治理攻擊「不作為」,從雙平臺危機看去中心化治理的進化陣痛

作者&#xff1a;Techub 熱點速遞 撰文&#xff1a;Glendon&#xff0c;Techub News 繼 3 月 12 日「Hyperliquid 50 倍杠桿巨鯨」引發的 Hyperliquid 清算事件之后&#xff0c;3 月 26 日 晚間&#xff0c;Hyperliquid 再次遭遇了一場針對其流動性和治理模式的「閃電狙擊」。…

交換機與路由器的區別:深入解析

在構建和維護現代計算機網絡的過程中&#xff0c;交換機和路由器無疑是兩種不可或缺的設備。盡管它們都在數據的傳輸和轉發中扮演著重要角色&#xff0c;但各自的工作原理、應用場景和功能特性卻大相徑庭。本文將從多個角度&#xff0c;結合最新的技術發展和實際應用&#xff0…

自頂向下學習K8S--部署Agones

本文在本人博客&#xff0c;原文地址&#xff1a;http://viogami.tech/index.php/blog/346/ 我是gopher&#xff0c;離不開云原生&#xff0c;自然也逃不了理解docker和K8S這倆。今天抽空想玩下agones&#xff0c;進而對K8S有實踐性的理解。 學一個新事物從底層理論學肯定是最…

藍橋杯省模擬賽 階乘求值

問題描述 給定 n&#xff0c;求 n! 除以 1000000007的余數。 其中 n! 表示 n 的階乘&#xff0c;值為從 1 連乘到 n 的積&#xff0c;即 n!123…n。 輸入格式 輸入一行包含一個整數 n。 輸出格式 輸出一行&#xff0c;包含一個整數&#xff0c;表示答案。 樣例輸入 3樣…

如何在Webpack中配置別名路徑?

如何在Webpack中配置別名路徑&#xff1f; 文章目錄 如何在Webpack中配置別名路徑&#xff1f;1. 引言2. 配置別名路徑的基本原理3. 如何配置別名路徑3.1 基本配置3.2 結合Babel與TypeScript3.2.1 Babel配置3.2.2 TypeScript配置 3.3 適用場景與最佳實踐 4. 調試與常見問題4.1 …

協作機械臂需要加安全墻嗎? 安全墻 光柵 干涉區

安全墻是什么 文章目錄 安全墻是什么簡介1. 物理安全墻1.1 定義&#xff1a;1.2 作用機制&#xff1a;1.3 應用場景&#xff1a; 2. 虛擬安全墻2.2 定義&#xff1a;2.3 作用機制&#xff1a;2.3 應用場景&#xff1a; 3. 安全毛毯3.1 工作原理&#xff1a;3.2 特點3.3 應用場景…