最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

用強(qiáng)化學(xué)習(xí)神包trl輕松實(shí)現(xiàn)GPT2可控文本生成

2023-04-10 11:46 作者:深度之眼官方賬號  | 我要投稿

來源:投稿 作者:Sally can wait
編輯:學(xué)姐

模型github: lvwerra/trl: Train transformer language models with reinforcement learning. (github.com)https://github.com/lvwerra/trl

這個(gè)項(xiàng)目是復(fù)現(xiàn) ”Fine-Tuning Language Models from Human Preferences" by D. Ziegler et al一文的paper, code,因?yàn)橛X得它非常好用,所以跟著跑通這個(gè)項(xiàng)目,并加上自己的理解介紹給大家。

理論基礎(chǔ)

什么是可控文本生成?

雖然GPT2已經(jīng)能生成流暢的句子,但是在特定話題的控制和邏輯性上仍然和期望相去甚遠(yuǎn)。我們希望一個(gè)文本生成模型可以一貫地圍繞一個(gè)話題進(jìn)行續(xù)寫,而不是漫無目的地續(xù)寫下去,這就是可控文本生成的研究目標(biāo)。

在特定的運(yùn)用場景中,我們有時(shí)需要用文本生成的方式增廣數(shù)據(jù)。這時(shí)候可控文本生成可以在保證標(biāo)簽不變的前提下產(chǎn)生出大量的“偽數(shù)據(jù)”。

而大模型如GPT3、chatGPT效果較好,但是并不開源,而且由于巨大的參數(shù)量,微調(diào)起來也是浩大的工程。所以大部分的可控文本生成研究還是圍繞GPT2做文章。

強(qiáng)化學(xué)習(xí)和PPO

強(qiáng)化學(xué)習(xí)不同于監(jiān)督學(xué)習(xí)。監(jiān)督學(xué)習(xí)只是對給定的、封閉的訓(xùn)練-驗(yàn)證數(shù)據(jù)集做參數(shù)優(yōu)化,再用優(yōu)化后的參數(shù)指導(dǎo)模型做出正確的輸出。而強(qiáng)化學(xué)習(xí)的特點(diǎn)表現(xiàn)在強(qiáng)化信號上,強(qiáng)化信號是對產(chǎn)生動作的好壞作一種評價(jià) (通常為標(biāo)量),因此模型在不斷產(chǎn)出輸出的同時(shí)也在不斷獲得針對該輸出的反饋,用這個(gè)反饋來更新模型參數(shù)。只要反饋機(jī)制是合理的,那么強(qiáng)化學(xué)習(xí)就可以一直進(jìn)行下去,而不會面臨訓(xùn)練數(shù)據(jù)匱乏的問題。

PPO(近端策略優(yōu)化,Proximal Policy Optimisation)是強(qiáng)化學(xué)習(xí)目前最有效的一種算法。和先前的強(qiáng)化學(xué)習(xí)算法相比,PPO它在每一步迭代中都會嘗試計(jì)算新的策略,這樣可以讓損失函數(shù)最小化,同時(shí)還能保證與上一步迭代的策略間的偏差相對較小。

PPO 里面有兩項(xiàng):一項(xiàng)是優(yōu)化的獎勵(lì),另一項(xiàng)是一個(gè)約束。約束是為了防止模型被微調(diào)得過于離譜,失去了原有的語言模型做流暢的文字生成的能力。

How it works? 用PPO算法優(yōu)化GPT2大致分以下三個(gè)步驟:

  1. 續(xù)寫:GPT2先根據(jù)當(dāng)前權(quán)重,續(xù)寫給出的句子。

  2. 評估:GPT2續(xù)寫的結(jié)果會經(jīng)過一個(gè)分類層,或者也可以采用人工的打分,重要的是最終產(chǎn)生出一個(gè)數(shù)值型的分?jǐn)?shù)。

  3. 優(yōu)化:上一步對生成句子的打分會用于更新序列中token的對數(shù)概率。除此之外,還需要引入一個(gè)新的獎懲機(jī)制:KL散度。這需要用一個(gè)參考模型(通常是微調(diào)前的預(yù)訓(xùn)練模型,如GPT2-base)計(jì)算微調(diào)模型的輸出和參考模型的輸出之間的KL散度,把它和之前步驟的打分加在一起作為獎勵(lì)函數(shù),目的是確保生成的句子不會過多地偏離參考語言模型。然后使用PPO算法進(jìn)一步訓(xùn)練語言模型。

實(shí)戰(zhàn):強(qiáng)化學(xué)習(xí)讓GPT2產(chǎn)生正向IMDB影評

我們用強(qiáng)化學(xué)習(xí)的方法微調(diào)英文版 GPT2(small),讓它基于 IMDB 數(shù)據(jù)集生成正面電影評論。該模型先是讀取數(shù)據(jù)集中真實(shí)的影評,用GPT2續(xù)寫。為了獎勵(lì)情感傾向?yàn)檎睦m(xù)寫,我們使用BERT影評分類器來分析生成的句子的情緒,把分類器的輸出作為PPO訓(xùn)練的獎勵(lì)。如果GPT2的續(xù)寫經(jīng)過分類器判別為正向情感,那么直接將分類器在正向情感上的置信度作為獎勵(lì)加到ppo_trainer里面;反之,如果GPT2的續(xù)寫經(jīng)過分類器判別為負(fù)面情感,那么它在分類器輸出層,正向情感對應(yīng)的置信度會是負(fù)數(shù)或者很低,同樣地將這個(gè)置信度加入ppo_trainer,可以提示模型減少對此輸出的學(xué)習(xí)。

1.安裝依賴包

2.讀取包

3.設(shè)置需要用到的超參數(shù)

4.用wandb儀表盤監(jiān)控訓(xùn)練過程中的各項(xiàng)指標(biāo)、中間變量。首次使用需要注冊一下。

圖:在訓(xùn)練過程中可以觀察到訓(xùn)練過程中的中間變量?!皅uery”和“response”分別表示IMDB的原始句子prompt(經(jīng)過隨機(jī)截?cái)啵┖虶PT2生成的續(xù)寫,“reward”表示經(jīng)過情感分類器之后的正向情感分值,越大表示情感越積極

5.加載IMDB數(shù)據(jù)集

6.load一個(gè)集成在transformers pipeline里的影評分類器(此處也可以替換成別的分類器,只要有打分就行)

這里注意必須要確保transformers版本是4.15.0,不同版本的Pipeline輸出大有不同

7.加載預(yù)訓(xùn)練GPT2-small

8.長度控制+tokenize

9.正式訓(xùn)練

在訓(xùn)練過程中觀察儀表盤,發(fā)現(xiàn)reward是上升的,說明訓(xùn)練是有效的。

10.保存模型

11.模型評估

通過比較原始GPT產(chǎn)生的無限制的文本和微調(diào)后產(chǎn)生的受控的文本,我們發(fā)現(xiàn)微調(diào)過程明顯地讓模型產(chǎn)生出了正面情感傾向的影評。同樣地,在合適的位置添加負(fù)號就可以重新訓(xùn)練出一個(gè)會產(chǎn)生負(fù)面情緒文本的GPT2。針對指定label產(chǎn)生偽數(shù)據(jù),這在數(shù)據(jù)增強(qiáng)上具有很高的應(yīng)用價(jià)值。

此外,本實(shí)驗(yàn)的獎勵(lì)機(jī)制是情感傾向值,也可以把獎勵(lì)機(jī)制換成任何你喜歡的評價(jià)指標(biāo),運(yùn)用在其他話題的生成任務(wù)上,看看模型是否會按照這個(gè)方向來學(xué)習(xí)。

NLP相關(guān)論文關(guān)注【學(xué)姐帶你玩AI】公眾號

回復(fù)“500”領(lǐng)取

多模態(tài)論文正在整理中,關(guān)注一下別錯(cuò)過啦~

用強(qiáng)化學(xué)習(xí)神包trl輕松實(shí)現(xiàn)GPT2可控文本生成的評論 (共 條)

分享到微博請遵守國家法律
阳谷县| 托克逊县| 泉州市| 临漳县| 井研县| 莆田市| 阿城市| 垫江县| 宕昌县| 长宁县| 土默特右旗| 广饶县| 博客| 海口市| 方山县| 武城县| 安义县| 合川市| 剑河县| 黄平县| 资中县| 如皋市| 宁强县| 内丘县| 襄垣县| 广南县| 永丰县| 黔东| 介休市| 秦安县| 衡山县| 扬中市| 林芝县| 仙居县| 肃南| 建始县| 六盘水市| 金溪县| 上饶县| 盖州市| 普陀区|