[RoBERTa]論文實現:RoBERTa: A Robustly Optimized BERT Pretraining Approach

文章目錄

    • 一、完整代碼
    • 二、論文解讀
      • 2.1 模型架構
      • 2.2 參數設置
      • 2.3 數據
      • 2.4 評估
    • 三、對比
    • 四、整體總結

論文:RoBERTa:A Robustly Optimized BERT Pretraining Approach
作者:Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, Veselin Stoyanov
時間:2019
地址:https://github.com/pytorch/fairseq

一、完整代碼

這里我們使用python代碼進行實現

# 完整代碼在這里
# 有時間再做

二、論文解讀

RoBERTa,這個論文名字我剛聽到的時候,我以為是加了旋轉編碼的BERT,沒想到是A Robustly Optimized BERT Pretraining Approach,其只是對BERT的一種探索和優化,其主要探索在以下幾個方面:

  1. 訓練更長的時間,使用更大的批次,處理更多的數據可以顯著提高性能;
  2. NSP任務效果并不顯著,在訓練的時候可以刪除;
  3. 訓練更長的sentence;
  4. 動態mask相較于靜態mask其提升并不是很大,但是RoBERTa還是采用了這種做法;

2.1 模型架構

BERT完全一致,是transformerencoder層構成的;

2.2 參數設置

Adam: β 1 = 0.9 , β 2 = 0.999 , ? = 1 e ? 6 \beta_1=0.9, \beta_2=0.999, \epsilon=1e-6 β1?=0.9,β2?=0.999,?=1e?6 L 2 = 0.01 L_2=0.01 L2?=0.01
dropout: d r o p o u t ? r a t e = 0.1 dropout-rate=0.1 dropout?rate=0.1
updates: 1000000 1000000 1000000
batch_size: 256 256 256
token_size: 512 512 512
attention_activation: G E L U GELU GELU

2.3 數據

為了擴大數據量,這里使用了下面這四個數據;

  • BOOKCORPUS (Zhu et al., 2015) plus English WIKIPEDIA. This is the original data used to train BERT. (16GB).
  • CC-NEWS, which we collected from the English portion of the CommonCrawl News dataset (Nagel, 2016). The data contains 63 million English news articles crawled between September 2016 and February 2019. (76GB after filtering).
  • OPENWEBTEXT (Gokaslan and Cohen, 2019), an open-source recreation of the WebText corpus described in Radford et al. (2019). The text is web content extracted from URLs shared on Reddit with at least three upvotes. (38GB).
  • STORIES, a dataset introduced in Trinh and Le(2018) containing a subset of CommonCrawl data filtered to match the story-like style of Winograd schemas. (31GB).

2.4 評估

這里介紹了三個benchmarks,分別是:GLUESQuADRACE

GLUE:通用語言理解評估(GLUE)基準測試(Wang et al.,2019b)是一個用于評估自然語言理解系統的9個數據集的集合。6個任務被定義為單個句子分類或句子對分類任務。GLUE的組織者提供了培訓和開發數據的分割,以及一個提交服務器和排行榜,允許參與者在私人保留的測試數據上評估和比較他們的系統。

SQuAD:斯坦福問題回答數據集(SQuAD)提供了一段上下文和一個問題。任務是通過從上下文中提取相關的跨度來回答這個問題。有了兩個版本的SQuAD: V1.1和V2.0(Rajpurkar等人,2016,2018)。在V1.1中,上下文總是包含一個答案,而在V2.0中的一些問題在所提供的上下文中沒有設有回答,這使得任務更具挑戰性。

RACE:從考試中獲得的閱讀理解(RACE)(Lai et al.,2017)任務是一個大規模的閱讀理解數據集,有超過28000篇文章和近10萬個問題。該數據集收集自專為中高中生設計的中國英語考試。在競賽中,每一段都與多個問題相關聯。對于每個問題,這個任務是從四個選項中選擇一個正確的答案。種族比其他流行的閱讀理解數據集的背景要長得多,需要推理的問題比例非常大

三、對比

Static Masking 和 Dynamic Masking

可以發現其實提升并不明顯,有的還降了,但是作者硬是認為也沒辦法,transformer用靜態怎么可能沒考慮動態呢,硬是水;

Model Input Format, Next Sentence Prediction 和 TrainBatch

這里先解釋一下:

SEGMENT-PAIR+NSP:這遵循了BERT(Devlin et al.,2019)中使用的原始輸入格式,有NSP丟失。每個輸入都有一對片段,每個片段可以包含多個自然句子,但總的組合長度必須小于512個標記。

SENTENCE-PAIR+NSP:每個輸入包含一對自然句子,要么從一個文檔的連續部分中采樣,要么從單獨的文檔中采樣。由于這些輸入明顯短于512個令牌,我們增加批大小,使令牌的總數保持與SEGMENT-PAIR+NSP相似。我們保留了NSP的損失。

FULL-SENTENCES:每個輸入都包含了從一個或多個文檔中連續采樣的完整句子,因此總長度最多為512個標記。輸入可以跨越文檔邊界。當我們到達一個文檔的結尾時,我們就開始從下一個文檔中采樣句子,并在文檔之間添加一個額外的分隔符標記。我們消除了NSP的損失。

DOC-SENTENCES:輸入的構造類似于FULL-SENTENCES,只是它們可能不會跨越文檔邊界。在文檔末尾附近采樣的輸入可能小于512個標記,因此我們在這些情況下動態地增加批處理大小,以實現與全句相似的總標記數量。我們消除了NSP的損失。

從這里我們可以發現:NSP影響不顯著,使用DOC要比FULL要略好;

TrainBatch

從這里我們可以發現,batch越大,能力越強;這里lr不同也許造成了一點干擾;

分詞編碼方式采取的是BPE,原來是30k,這里變大了,變成50k;

效果

這也許表示了模型越大越好;

四、整體總結

RoBERTa只是對transformer的一種探索,結果是模型越大效果越好;

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

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

相關文章

【Qt5】Q_UNUSED()

2023年12月9日,周六晚上 Q_UNUSED()是一個用于告訴編譯器不使用(或者未使用)特定變量的宏。 有時候,在函數簽名中聲明了某些參數,但是在函數體內并沒有使用它們。這可能是因為在某些情況下,函數可能需要接…

P10 Linux進程編程 fork創建子進程

目錄 前言 01 fork()創建子進程 示例 1使用 fork()創建子進程。 02 fork創建新進程時發生了什么事? 2.1 父、子進程中對應的文件描述符指向了相同的文件表 前言 🎬 個人主頁:ChenPi 🐻推薦專欄1: 《Linux C應用編程&#xf…

異步回調模式

異步回調 所謂異步回調,本質上就是多線程中線程的通信,如今很多業務系統中,某個業務或者功能調用多個外部接口,通常這種調用就是異步的調用。如何得到這些異步調用的結果自然也就很重要了。 Callable、Future、FutureTask publi…

半導體劃片機助力氧化鋁陶瓷片切割:科技與工藝的完美結合

在當今半導體制造領域,氧化鋁陶瓷片作為一種高性能、高可靠性的材料,被廣泛應用于各種電子設備中。而半導體劃片機的出現,則為氧化鋁陶瓷片的切割提供了新的解決方案,實現了科技與工藝的完美結合。 氧化鋁陶瓷片是一種以氧化鋁為基…

《巫師3》缺失vcomp110.dll如何解決,如何快速修復vcomp110.dll丟失問題

在日常使用電腦的過程中,我們可能會遇到一些錯誤提示,其中之一就是“vcomp110.dll丟失”。這個錯誤提示通常意味著vcomp110.dll文件在系統中無法找到或加載。那么,vcomp110.dll丟失的原因是什么?它對電腦有什么影響?本…

高德地圖vue實現自定義標點熱力圖效果(縮放時展示不同數據)

高德地圖插件引入省略。。。樣式和vue基礎組件省略。。。 如果每個標點沒有數值,則可以用點聚合來實現功能下面例子,每個標點會有按市統計的數值,而且縮放一定程度時,需要展示按省統計的標點,因此需要自定義標點樣式和…

leetcode刷題日志-54螺旋矩陣

思路&#xff1a; 上下左右設置四個邊界 每走完一行或者一列&#xff0c;移動相應邊界&#xff0c;當左邊界大于右邊界&#xff0c;或者上邊界大于下邊界時&#xff0c;結束 代碼如下&#xff1a; class Solution {public List<Integer> spiralOrder(int[][] matrix) {…

線程上下文切換

線程上下文切換 巧妙地利用了時間片輪轉的方式, CPU 給每個任務都服務一定的時間&#xff0c;然后把當前任務的狀態保存下來&#xff0c;在加載下一任務的狀態后&#xff0c;繼續服務下一任務&#xff0c;任務的狀態保存及再加載, 這段過程就叫做上下文切換。時間片輪轉的方式…

Determining Which Version of GDS is Installed

Determining Which Version of GDS is Installed To determine which version of GDS you have, run the following command: $ gdscheck.py -v Example output: GDS release version: 1.0.0.78 nvidia_fs version: 2.7 libcufile version: 2.4

冒泡排序和直接選擇排序(C/C++實現)

文章目錄 冒泡排序(交換排序&#xff09;基本思想特性總結代碼實現 直接選擇排序基本思想特性總結代碼實現&#xff08;優化&#xff0c;每次循環同時選擇最小和最大的數&#xff09; 冒泡排序(交換排序&#xff09; 基本思想 基本思想&#xff1a;所謂交換&#xff0c;就是根…

class065 A星、Floyd、Bellman-Ford與SPFA【算法】

class065 A星、Floyd、Bellman-Ford與SPFA【算法】 2023-12-9 19:27:02 算法講解065【必備】A星、Floyd、Bellman-Ford與SPFA code1 A*算法模版 // A*算法模版&#xff08;對數器驗證&#xff09; package class065;import java.util.PriorityQueue;// A*算法模版&#xff…

vue3+TypeScript全局事件總線mitt

在vue3中 $ on&#xff0c;$off 和 $once 實例方法已被移除&#xff0c;組件實例不再實現事件觸發接口&#xff0c;因此大家熟悉的EventBus便無法使用了。然而我們習慣了使用EventBus&#xff0c;對于這種情況我們可以使用Mitt庫 npm i mitt -S 首先要在全局掛載 mitt 在app…

兩年外包生涯做完,感覺自己廢了一半。。。。。

先說一下自己的情況&#xff0c;本科生&#xff0c;19年通過校招進入南京某軟件公司&#xff0c;干了接近2年的功能測試&#xff0c;今年年初&#xff0c;感覺自己不能夠在這樣下去了&#xff0c;長時間呆在一個舒適的環境會讓一個人墮落!而我已經在一個企業干了2年的功能測試&…

laravel的ORM 對象關系映射

Laravel 中的 ORM&#xff08;Eloquent ORM&#xff09;是 Laravel 框架內置的一種對象關系映射系統&#xff0c;用于在 PHP 應用中與數據庫進行交互。Eloquent 提供了一種優雅而直觀的語法&#xff0c;使得開發者可以使用面向對象的方式進行數據庫查詢和操作。 定義模型&…

結合ColorUI組件開發微信小程序

1.自定義組件生命周期函數&#xff1a; Component({data: {},attached() {console.log("自定義組件生命周期函數 attached--先執行");this.getPos();},ready() {console.log("ready生命周期函數---在attached之后執行")},methods: {getPos() {var that th…

數據結構:位圖、布隆過濾器以及海量數據面試題

位圖、布隆過濾器以及海量數據面試題 1.位圖1.1概念1.2實現1.3位圖應用 2.布隆過濾器2.1布隆過濾器的提出2.2布隆過濾器的概念2.3布隆過濾器的查找2.4布隆過濾器的實現2.5布隆過濾器的刪除2.6布隆過濾器的優點2.7布隆過濾器的缺點 3.海量數據面試題3.1哈希切分3.2位圖應用3.3布…

如何成為前1%的程序員

如果你想成為前1%的程序員&#xff0c;你必須遵循1%的程序員做什么&#xff0c;了解其他99%的人不做什么。在現代&#xff0c;我們有各種學習平臺&#xff0c;里面充滿了與編程相關的視頻、圖文以及其他資料。 舉例來說&#xff0c;我作為編程的初學者&#xff0c;去尋找路線圖…

IDEA2023找不到add framework support怎么解決

問題: 我的idea版本是2023.01&#xff0c;新版idea右鍵項目沒有Add Framework Support&#xff0c;help里面也找不到相關的。 從project structue的facets里面添加就行了&#xff0c;都是一樣的。 1.依舊是新建一個項目 2.file-->project structure--->facets 左上角加…

數據結構與程序的關系

在計算機科學中,數據結構和算法是兩個核心的概念。數據結構是程序的基礎,它組織和存儲數據的方式直接影響程序的設計、效率、可讀性以及程序的錯誤檢測和調試。本文將詳細討論數據結構如何影響程序,以及數據結構與算法的組合如何使程序更高效、可靠。 一、數據結構的選擇影…

Android studio如何安裝ai輔助工具

引言 在沒有翻墻的情況下&#xff0c;即單純在公司打工&#xff0c;經測試&#xff0c;大部分ai工具都是使用不了的&#xff08;比如各種gpt,codeium,copilot&#xff09;&#xff0c;根本登錄不了賬號&#xff0c;但有一個國內的codegeex是可以使用的&#xff0c;在這里不對各…