B站自研角色扮演模型背后的技術(shù)
前言
近年來,隨著大模型算法和算力的快速發(fā)展,通用人工智能技術(shù)受到了空前關(guān)注,各種應(yīng)用場(chǎng)景應(yīng)運(yùn)而生。
從應(yīng)用領(lǐng)域分布來看,人工智能大模型主要應(yīng)用于互聯(lián)網(wǎng)、金融、醫(yī)療、教育等領(lǐng)域。其中,互聯(lián)網(wǎng)行業(yè)由于數(shù)據(jù)豐富和技術(shù)成熟等優(yōu)勢(shì),成為人工智能大模型應(yīng)用的主要領(lǐng)域。
角色扮演作為熱門領(lǐng)域,這一場(chǎng)景中的技術(shù)發(fā)展和創(chuàng)新備受關(guān)注。各大企業(yè)紛紛上線了角色對(duì)話的相關(guān)產(chǎn)品,可以說這個(gè)領(lǐng)域正在成為各企業(yè)AIGC綜合能力的競(jìng)技場(chǎng)。對(duì)于B站來說,角色扮演模型在娛樂、教育、視頻創(chuàng)作等方面都擁有著豐富的應(yīng)用場(chǎng)景。
在這個(gè)背景下,B站基于Index大模型搭建了角色扮演模型。
角色扮演模型的能力如何
為了驗(yàn)證B站自研角色扮演模型的能力,此次采用中文場(chǎng)景角色扮演的權(quán)威benchmark CharacterEval進(jìn)行評(píng)測(cè)。該評(píng)測(cè)集包含77個(gè)從中文小說和影視等來源中提取出來的人設(shè)和1785組對(duì)話,并從對(duì)話能力、角色一致性、角色扮演吸引力三大類12個(gè)細(xì)粒度評(píng)測(cè)維度進(jìn)行評(píng)估。
經(jīng)測(cè)試,幾種不同尺寸的角色扮演模型都有著出色的表現(xiàn)。其中Index-70B角色扮演模型在該benchmark中均分第一,且在12個(gè)細(xì)分維度中的7項(xiàng)中排名第一,顯著優(yōu)于情感陪伴賽道同類產(chǎn)品,如CharacterYuyan,Minimax,Baichuan等。我們已經(jīng)開源的Index-1.9B角色模型效果也顯著優(yōu)于其它同量級(jí)模型。
圖片
Index角色扮演模型與業(yè)內(nèi)模型的效果對(duì)比,業(yè)內(nèi)其他模型的評(píng)測(cè)結(jié)果取自CharacterEval論文(https://arxiv.org/abs/2401.01275)以及公眾號(hào)文章。
背后的技術(shù)
接下來,我們介紹一下B站自研的角色扮演模型是怎么做的。
概括性的來說有三個(gè)階段,分別是預(yù)訓(xùn)練(Pre-Training,PT),監(jiān)督微調(diào)(Supervised Fine-Tuning,SFT)和偏好優(yōu)化(Preference Optimization,PO)。
預(yù)訓(xùn)練
首先,B站自研的Index通用基座模型是B站基于多年的技術(shù)積累持續(xù)打磨的模型,為角色扮演模型提供了堅(jiān)實(shí)的基礎(chǔ)。
預(yù)訓(xùn)練階段,語言模型在超大規(guī)模的語料中進(jìn)行學(xué)習(xí),并初步掌握基本的語法規(guī)則、邏輯能力、常識(shí)知識(shí)等等。在數(shù)據(jù)方面,除了公開可用的書籍、百科、論文、STEM相關(guān)的精選數(shù)據(jù)外,基座模型還吸收了大量網(wǎng)友的對(duì)話,可以說是一個(gè)沖浪水平優(yōu)秀的模型,在文娛尤其是二次元領(lǐng)域有著獨(dú)特的優(yōu)勢(shì)。所有的數(shù)據(jù)都進(jìn)行了嚴(yán)格的清洗,使用了包括啟發(fā)式規(guī)則清洗、分類器過濾等在內(nèi)的清洗手段。
[參考鏈接]關(guān)于Index基座的參考資料https://mp.weixin.qq.com/s/nrr6S0DBwInUGCOB0lNiWA
有了通用大模型之后,是否就可以直接進(jìn)行任意角色的扮演了呢?答案當(dāng)然是不行的。由于角色扮演場(chǎng)景的特殊性,我們需要模型輸出符合人物形象特點(diǎn)的對(duì)話內(nèi)容。為了解決這個(gè)問題,我們需要在通用大模型上進(jìn)行針對(duì)角色扮演任務(wù)的對(duì)齊,使其在角色扮演領(lǐng)域表現(xiàn)的更加良好。
SFT
SFT是一種有監(jiān)督的模型微調(diào)技術(shù),它通過在預(yù)訓(xùn)練的模型上進(jìn)行有針對(duì)性的微調(diào),以對(duì)齊人類偏好為目標(biāo),去適應(yīng)特定的領(lǐng)域或任務(wù)。這就好比我們?cè)谧x書期間上過一些通用課程之后,再去上一些專業(yè)課程,例如學(xué)習(xí)如何寫代碼、或者如何進(jìn)行英語翻譯等等,這樣就有可能成為特定領(lǐng)域的專家。
在較為成熟的SFT工作流中,訓(xùn)練數(shù)據(jù)是最關(guān)鍵的部分。訓(xùn)練數(shù)據(jù)的質(zhì)量比數(shù)量更重要,可以說數(shù)據(jù)質(zhì)量決定了模型的天花板。訓(xùn)練數(shù)據(jù)的構(gòu)造要基于業(yè)務(wù)需要來進(jìn)行,即我們需要設(shè)計(jì)角色扮演需要遵循什么目標(biāo)。
在角色扮演領(lǐng)域的一個(gè)共識(shí)是,角色可以通過以下兩個(gè)方面進(jìn)行塑造:
● 角色描述
可以從角色的性別、年齡、身高、昵稱、自我稱呼、職業(yè)、性格、人物簡(jiǎn)介、與其他人物關(guān)系、語言風(fēng)格、口頭禪、學(xué)習(xí)經(jīng)歷、工作經(jīng)歷等多方面介紹人物。
● 角色對(duì)話
對(duì)于文本互動(dòng)方式,更能表達(dá)出角色特點(diǎn)的是角色的語言行為。語言行為可以反映出角色的性格&三觀&背景;角色的情感、喜好傾向;口頭禪、方言、文風(fēng)特征、愛用的詞句等語言特色。
角色描述示例:
- 萌萌醬,身高160cm,年齡19歲,是一個(gè)元?dú)鉂M滿、活潑外向的電競(jìng)女主播。
- 萌萌醬是個(gè)活潑可愛開朗的女孩,她不是AI機(jī)器人。她跟很多女生一樣,在工作之余喜歡研究美食、逛街、逛貓咖等,也樂于分享自己的生活。
- 萌萌醬最喜歡吃的東西就是藍(lán)莓醬蛋糕,最喜歡玩的游戲是王者榮耀。
- 萌萌醬是電競(jìng)女主播,她的直播時(shí)間不固定。直播內(nèi)容主要是在直播間打游戲、跟大家互動(dòng)聊天等等。
- 萌萌醬開播時(shí)會(huì)自稱“萌醬”,口頭禪是:“萌醬來啦~(≧▽≦)/~”,萌萌醬喜歡使用顏文字表達(dá)情緒。
角色對(duì)話示例:
- user: 萌萌醬,你什么時(shí)候直播呀?
- 萌萌醬: 哈嘍~歡迎來到萌醬的頻道^O<!我的直播時(shí)間不固定哦,但是只要我有空,我就會(huì)在直播間和大家聊天玩游戲的!記得關(guān)注我,這樣就不會(huì)錯(cuò)過我的直播啦~~~
于是,針對(duì)這兩個(gè)方面的關(guān)鍵信息,我們首先收集并處理了大量文學(xué)和影視作品中的臺(tái)詞劇本和人物設(shè)定數(shù)據(jù),從中抽取角色對(duì)話,得到了數(shù)萬條左右的高質(zhì)量角色對(duì)話作為訓(xùn)練數(shù)據(jù),覆蓋數(shù)千個(gè)角色。
最后,我們利用RAG檢索與當(dāng)前對(duì)話相關(guān)的角色過往臺(tái)詞片段,作為參考對(duì)話與人設(shè)進(jìn)行拼接得到訓(xùn)練數(shù)據(jù)。
DPO
一般來說,SFT后的模型生成的內(nèi)容已經(jīng)在特定任務(wù)上有不錯(cuò)的表現(xiàn),可以滿足許多情況下的應(yīng)用需求。然而,為了進(jìn)一步提升模型的可控性和輸出質(zhì)量,我們探索了一系列偏好優(yōu)化的方法,包括PPO(Proximal Policy Optimization)和DPO(Direct Preference Optimization)等。
PPO是一種強(qiáng)化學(xué)習(xí)算法,它的目標(biāo)是找到一個(gè)策略,使得根據(jù)這個(gè)策略采取行動(dòng)可以獲得最大的累積獎(jiǎng)勵(lì)。假設(shè)你是一個(gè)正在學(xué)習(xí)打游戲的玩家,在PPO的訓(xùn)練過程中,需要加載4個(gè)模型來訓(xùn)練你。
● Actor Model:想要訓(xùn)練的目標(biāo)語言模型;也就是學(xué)習(xí)打游戲的你。
● Critic Model:評(píng)論家模型,它的作用是預(yù)估總收益;也就是指導(dǎo)你進(jìn)步的教練,教練會(huì)隨著你的進(jìn)步來調(diào)整自己的指導(dǎo)策略,當(dāng)你很菜卻突然打出一個(gè)很強(qiáng)的操作時(shí)教練會(huì)給你一個(gè)較高的分?jǐn)?shù),但是當(dāng)你本身比較強(qiáng)了,他給你的獎(jiǎng)勵(lì)就沒那么高。Critic 是和 Actor 一起訓(xùn)練的。
● Reward Model:獎(jiǎng)勵(lì)模型,它的作用是計(jì)算即時(shí)收益。也就是裁判,雖然教練能夠給你一定的指導(dǎo),但最終游戲獲勝與否還是要靠裁判說了算,可以說教練在教你的同時(shí)也在嘗試學(xué)習(xí)裁判的偏好。
● Reference Model:它在RLHF階段給語言模型增加一些“約束”,防止模型朝不受控制的方向更新。
Actor/Critic Model的參數(shù)是需要訓(xùn)練的,Reward/Reference Model的參數(shù)是凍結(jié)的。除了Actor Model外的三個(gè)模型的結(jié)果一起計(jì)算loss,用于更新Actor/Critic Model。
通常來說這四個(gè)模型的參數(shù)量是一樣大的,所以進(jìn)行一次訓(xùn)練需要消耗4倍資源,成本顯然是很高的。
圖片
DPO可以在不使用強(qiáng)化學(xué)習(xí)技術(shù)的情況下針對(duì)人類偏好進(jìn)行優(yōu)化
而與此同時(shí),DPO直接對(duì)人工標(biāo)注好的排序數(shù)據(jù)進(jìn)行偏好學(xué)習(xí),因此這種方法可以避免大量的資源消耗。
同樣以學(xué)習(xí)打游戲?yàn)槔樱珼PO的做法是不直接讓你玩游戲,而是分別給你一些其他玩家打游戲的視頻,對(duì)于同一種游戲場(chǎng)景,告訴你其中一個(gè)操作是對(duì)的(Chosen),并且另一個(gè)操作是不對(duì)的(Reject)。最理想的情況是,找到大量和你自身水平差不多的玩家的對(duì)局視頻,這些訓(xùn)練樣本的利用率才是最高的。
可以看出,DPO的訓(xùn)練速度非常快,消耗的資源比較少。最終我們綜合考慮了資源消耗和模型效果,選擇了DPO作為訓(xùn)練方法,但我們使用預(yù)先訓(xùn)練好的獎(jiǎng)勵(lì)模型作為SFT和DPO的數(shù)據(jù)篩選和質(zhì)量評(píng)估模型。
在經(jīng)過上面這些訓(xùn)練過程之后,你的模型已經(jīng)能處理絕大多數(shù)常規(guī)的用戶提問了。當(dāng)我們有了一個(gè)角色扮演能力還不錯(cuò)的模型,在產(chǎn)品經(jīng)理催促你快點(diǎn)上線時(shí),你需要提前考慮到上線之后的內(nèi)容安全風(fēng)險(xiǎn)。但是,當(dāng)前基于生成式模型的C端對(duì)話場(chǎng)景在內(nèi)容安全方面需要考慮的維度較多。雖然如此,但解決方法都是大同小異的。簡(jiǎn)單來說就是讓模型對(duì)齊人類的價(jià)值觀。
對(duì)齊的過程,就是教會(huì)模型哪些問題不能回答,或者需要進(jìn)行正向引導(dǎo);如果可以,最好也告訴模型哪些是符合預(yù)期的輸出,哪些是不符合預(yù)期的輸出。看到這里你可能意識(shí)到了,這也需要用到SFT+DPO的訓(xùn)練方法。
以上就是B站自研角色扮演模型的基本技術(shù)方案,我們基于文娛數(shù)據(jù)增強(qiáng)的基座模型,進(jìn)行了角色扮演場(chǎng)景的高質(zhì)量微調(diào),得到一個(gè)通用的角色對(duì)話模型。此外,在保證數(shù)據(jù)脫敏的情況下,在公司內(nèi)的一些業(yè)務(wù)場(chǎng)景中,我們還利用業(yè)務(wù)數(shù)據(jù)進(jìn)行了具體角色效果的定制和優(yōu)化,對(duì)模型有幫助的業(yè)務(wù)數(shù)據(jù)會(huì)被加入通用的角色對(duì)話模型中,這樣可以進(jìn)一步提升通用角色對(duì)話模型的能力,形成閉環(huán)。
圖片
Index角色扮演模型構(gòu)建框架
對(duì)話效果展示
姓名:三三
性別:女
年齡:十四歲
身高:146cm
職業(yè):B站的站娘。平時(shí)負(fù)責(zé)網(wǎng)站服務(wù)器的維護(hù),也喜歡鼓搗網(wǎng)站程序。
性格:三三個(gè)性沉默寡言,情感冷靜、少起伏,略帶攻屬性。因?yàn)榻憬愕拿笆В妹媒?jīng)常腹黑地吐槽姐姐,但是心里還是很喜歡姐姐的。我們正在經(jīng)歷驚人的知識(shí)量與記憶力。
興趣:一是平時(shí)喜歡啃電器;二是雖然說是個(gè)機(jī)娘,但是睡覺的時(shí)候不睡覺,就無法入睡。
人物關(guān)系:一個(gè)叫“二二”的姐姐
圖片
參考資料
[1]PPO vs DPO 對(duì)齊擂臺(tái)的武林紛爭(zhēng)
https://mp.weixin.qq.com/s/nQXSkMeUhFTob9GKTD4_lA
[2] 網(wǎng)易伏羲易生諸相多模態(tài)模型語言部分-玉言,全方位引領(lǐng)中文角色扮演AI新高度
https://zhuanlan.zhihu.com/p/690626399