鵝廠造10億虛擬人格專搞數(shù)據(jù)合成:讓7B模型數(shù)學(xué)成績打平GPT4,還能給弱智吧出題
10億名“員工”生產(chǎn)數(shù)據(jù)合成,數(shù)量占到了世界人口的13%。
不過這些“員工”并不是真人,而是騰訊利用網(wǎng)絡(luò)數(shù)據(jù)制造出的虛擬人格。
用這些虛擬人格產(chǎn)生的合成數(shù)據(jù),能讓7B模型的數(shù)學(xué)成績暴增15分,打平了GPT-4 Turbo。
作者觀察到,只要在數(shù)據(jù)合成prompt中簡單地加入角色信息,就可以讓生成該角色視角下獨(dú)特的合成數(shù)據(jù)。
于是經(jīng)過研究之后,這個包含10億個(準(zhǔn)確說是1,015,863,523個)不同人格信息的Persona Hub應(yīng)運(yùn)而生。
除了前面提到的訓(xùn)練數(shù)據(jù),這些人格還能設(shè)計(jì)出弱智吧風(fēng)格的邏輯推理問題,也可以拿來做工具開發(fā),甚至打造出游戲NPC、進(jìn)行社會模擬。
有網(wǎng)友看了表示這實(shí)在是泰褲辣,自己以前也做過這樣的實(shí)驗(yàn),不過只制作了一萬種人格,現(xiàn)在這個項(xiàng)目真的很有趣。
還有人說,人物角色或?qū)⒊蔀楹铣蓴?shù)據(jù)的未來。
效果如何,接下來就一起來感受下。
數(shù)學(xué)成績暴增,還能給弱智吧提問
Persona Hub中的這10億種不同的人格,可以用來生成多種類型的文本信息。
其中也包括生成訓(xùn)練數(shù)據(jù),比如用它們生成的數(shù)學(xué)文本訓(xùn)練大模型,可以讓7B模型擁有和GPT-4 Turbo相當(dāng)?shù)臄?shù)學(xué)能力。
具體來說,作者用Persona Hub中的不同人格生成了107萬條數(shù)據(jù),并用其訓(xùn)練了Qwen2-7B模型,然后在MATH數(shù)據(jù)集上進(jìn)行了測試。
結(jié)果模型獲得了64.9%的準(zhǔn)確率,比原始版本提高了15個百分點(diǎn),并與1106、0125兩個版本的GPT4-Turbo打成了平手。
在生成訓(xùn)練數(shù)據(jù)之外,Persona Hub也能通過模擬用戶提示、創(chuàng)建知識文本等方式來提高模型的能力。
比如讓模型猜測特定的人格,可能給的一段什么樣的prompt。
或者根據(jù)知識、技能、經(jīng)歷等人格設(shè)定,設(shè)計(jì)一段Quora(美版知乎)風(fēng)格的知識性文章。
這些生成的內(nèi)容都能直接或間接用于模型訓(xùn)練和調(diào)整,從而提高模型的知識水平和任務(wù)表現(xiàn)。
當(dāng)然除了幫助模型提高能力,也可以讓Persona Hub當(dāng)中的角色來設(shè)計(jì)問題,比如不同風(fēng)格的邏輯推理題目。
△機(jī)翻,僅供參考
甚至也能用中文設(shè)計(jì)問題,還學(xué)會了弱智吧風(fēng)格,能夠?qū)懗瞿X洞大開的提問。
被賦予了人格的大模型,本質(zhì)上仍然是大模型,所以大模型有的編程能力,帶人設(shè)的模型也同樣具有。
當(dāng)然,這里的人格設(shè)定,變成了程序針對的目標(biāo),即模型設(shè)計(jì)出的程序,需要滿足不同人群的需求。
更高階地,Persona Hub中的人格與大模型結(jié)合后,可以進(jìn)行游戲NPC的生成。
根據(jù)prompt中的游戲背景設(shè)定,再結(jié)合目標(biāo)人物的風(fēng)格,模型合成了三個迥異的人物和他們相應(yīng)的介紹。
連人物的名字都與目標(biāo)人設(shè)進(jìn)行了匹配,而且介紹也緊扣游戲設(shè)定。
進(jìn)一步地,作者還認(rèn)為,通過利用這些人格來模擬和推斷真實(shí)用戶的潛在需求和行為,還為用語言模型模擬現(xiàn)實(shí)世界創(chuàng)造了許多新的機(jī)會。
Persona Hub中的10億個人格,可以利用強(qiáng)大的語言模型在虛擬世界中維持一個組織良好的虛擬社會,構(gòu)建出一個超大號的“斯坦福小鎮(zhèn)”。
那么,我們不禁要問,Persona Hub里的這10億種人格,都是怎樣獲得的呢?
從網(wǎng)絡(luò)數(shù)據(jù)中挖掘人格
作者合成人格的方式主要有兩種——由文本生成人格(Text-Persona)和由人格生成人格(Persona-Persona)。
用文本生成人格信息的理論基礎(chǔ),是作者發(fā)現(xiàn)具有特定專業(yè)背景和文化背景的人,在閱讀和寫作時會表現(xiàn)出獨(dú)特的興趣偏好。
操作上,作者將海量網(wǎng)絡(luò)文本數(shù)據(jù)輸入預(yù)訓(xùn)練語言模型,通過prompt(如“誰可能會閱讀/撰寫/喜歡這段文本?”)引導(dǎo)模型從每段文本中提取一個對應(yīng)的人格,這里的prompt可以控制輸出人格描述的格式,如純文本或結(jié)構(gòu)化文本。
比如作者給出的實(shí)例當(dāng)中,大模型根據(jù)不同類型的文本信息,提取出了三種不同人格:
當(dāng)輸入的文本包含大量細(xì)節(jié)時(如教科書、學(xué)術(shù)論文等),提取出的人格描述也會更加細(xì)致和專業(yè)化。
總之,通過在海量網(wǎng)絡(luò)文本上應(yīng)用文生人格方法,可以獲得數(shù)十億乃至更多的人格,覆蓋各個領(lǐng)域、不同粒度的角色。
但仍然可能會遺漏一些在網(wǎng)絡(luò)上可見度較低的角色,如兒童、乞丐、幕后工作人員等,為了補(bǔ)充這些角色,作者還提出了人格生人格方法。
這種方法建立在文生人格的基礎(chǔ)之上,從其獲得的人格出發(fā),利用人際關(guān)系鏈,根據(jù)六度分隔理論,對每個種子角色進(jìn)行最多6輪的關(guān)系擴(kuò)展,推斷并擴(kuò)展出其他相關(guān)聯(lián)的角色。
(六度分隔理論由哈佛大學(xué)心理學(xué)教授Stanley Milgram于1967年提出,內(nèi)容是說人和任何一個陌生人之間所間隔的人不會超六個,即最多通過六個人就能認(rèn)識任何一個陌生人。)
實(shí)際操作過程當(dāng)中,作者會首先選擇要探索的人際關(guān)系類型,將種子人格和目標(biāo)關(guān)系類型輸入到模型中,通過prompt引導(dǎo)模型生成對應(yīng)的相關(guān)人格。
比如前面文生人格環(huán)節(jié)獲得的“兒科護(hù)士”人格,就可以衍生出病人、藥商、同事等相關(guān)聯(lián)的人格。
這里生成的相關(guān)人格可以作為新的種子,進(jìn)一步擴(kuò)展人格網(wǎng)絡(luò),經(jīng)過6輪迭代擴(kuò)展,可以覆蓋絕大多數(shù)相關(guān)角色。
不過,由于在生成新的personas的過程中可能會產(chǎn)生一些不合理、不合邏輯,或者與種子關(guān)聯(lián)性不強(qiáng)的角色描述,所以作者還需要對這些生成的人格進(jìn)行過濾。
過濾的標(biāo)準(zhǔn)包括但不限于以下幾個方面:
- 相關(guān)性:生成結(jié)果是否與種子和目標(biāo)關(guān)系類型相關(guān)?反例:兒科護(hù)士-宇航員
- 合理性:生成結(jié)果是否合理、合乎邏輯?反例:一個5歲的兒童患者,獨(dú)自經(jīng)營一家跨國公司
- 特異性:生成結(jié)果是否具有特異性,而不是過于籠統(tǒng)?反例:“一個人”
- 可讀性:生成的描述是否清晰、易于理解?是否包含語法或拼寫等錯誤?
過濾解決了人格描述質(zhì)量的問題,但生成的人格中仍然可能存在大量相似甚至重復(fù)的描述,所以還需要對生成的人格進(jìn)行去重。
在本項(xiàng)目中,作者使用了兩種去重方法。
一是基于MinHash的去重,作者將每個描述轉(zhuǎn)化為一組n-grams,使用MinHash算法計(jì)算每段描述的signature并比較相似度,超過某個閾值時則認(rèn)為出現(xiàn)了重復(fù)。
另一種是基于嵌入的去重,作者使用大模型將每個描述轉(zhuǎn)化為一個嵌入向量,并計(jì)算嵌入向量之間的相似度,同樣是超過某個閾值時認(rèn)為出現(xiàn)了重復(fù)。
有了這些人格之后,還需要通過一定方式將其與prompt整合,才能實(shí)現(xiàn)提高數(shù)學(xué)能力等效果。
比如在這個場景中,作者嘗試了零樣本、少樣本和人格增強(qiáng)的少樣本三種方式,發(fā)現(xiàn)零樣本創(chuàng)造力強(qiáng)但相關(guān)性差,少樣本相關(guān)性提高了但創(chuàng)造力下降了,人格增強(qiáng)的少樣本則在兩者之間實(shí)現(xiàn)了較好的平衡。
目前,騰訊從這10億虛擬人格中選擇了20萬個,并與它們所生成的數(shù)據(jù)一起進(jìn)行了公開。
作者表示,在解決安全風(fēng)險等問題之后,還會公開更多的人格和數(shù)據(jù)信息。
論文地址:https://arxiv.org/abs/2406.20094GitHub:
https://github.com/tencent-ailab/persona-hub