OpenAI在2022年11月30日發(fā)布了ChatGPT,它是一個(gè)基于大模型技術(shù)實(shí)現(xiàn)的通用聊天機(jī)器人,它可以用來(lái)寫作、翻譯、潤(rùn)色句子、做事實(shí)性問(wèn)答、執(zhí)行文本分類/實(shí)體抽取/閱讀理解/文本摘要等各類NLP任務(wù),甚至可以寫SQL、寫代碼,幾乎無(wú)所不能。
一、GPT 到 ChatGPT 的演進(jìn)
OpenAI持續(xù)升級(jí)優(yōu)化GPT,于2019年2月發(fā)布了GPT-2[3],于2020年6月發(fā)布了擁有1750億參數(shù)的超大模型GPT-3[4],轟動(dòng)一時(shí),GPT-3不需要像BERT那樣針對(duì)特定任務(wù)做微調(diào)(Fine-tune),一個(gè)大模型即可在一系列自然語(yǔ)言處理任務(wù)上取得優(yōu)秀的效果,結(jié)合Few-Shot少樣本學(xué)習(xí)能力,在部分任務(wù)上甚至接近或者達(dá)到當(dāng)時(shí)的SOTA效果。
使用BERT執(zhí)行某個(gè)具體場(chǎng)景下的NLP任務(wù)如文本分類時(shí),需要人工標(biāo)注該場(chǎng)景下的一定量數(shù)據(jù),然后微調(diào)得到一個(gè)文本分類模型應(yīng)用于分類,即重新更新了模型,對(duì)于不同的任務(wù)均要這樣做。而使用GPT-3執(zhí)行NLP任務(wù)時(shí),不需要重新更新模型,只需要向其發(fā)送一句提示(Prompt)例如「請(qǐng)給這段文字分類,類別標(biāo)簽有A、B、C」即可完成分類,或者可以使用少量標(biāo)注數(shù)據(jù)作為例子告訴模型,能夠取得更優(yōu)的效果,在這一點(diǎn)上GPT-3要比BERT更加易用。值得說(shuō)明的是,自GPT-3開(kāi)始,OpenAI沒(méi)有像GPT-1、GPT-2那樣發(fā)布開(kāi)源代碼,而是以API的形式提供商業(yè)化服務(wù),具體見(jiàn) https://openai.com/api。
BERT和ChatGPT執(zhí)行任務(wù)的區(qū)別
ChatGPT是從GPT-3發(fā)展而來(lái)的,符堯等人在《拆解追溯 GPT-3.5 各項(xiàng)能力的起源》一文[10]中總結(jié)了GPT-3到GPT-3.5的進(jìn)化樹(shù),GPT-3在OpenAI API中的模型名稱為Davinci(達(dá)芬奇),之后經(jīng)歷在代碼上訓(xùn)練、指令微調(diào)、RLHF(Reinforcement Learning from Human Feedback,基于人類反饋的強(qiáng)化學(xué)習(xí))等過(guò)程,進(jìn)化成ChatGPT,詳細(xì)內(nèi)容可參見(jiàn)文章[10],這里不再贅述。2022年11月,OpenAI除了發(fā)布ChatGPT之外,還發(fā)布了text-davinci-003模型,兩者都是在text-davinci-002模型的基礎(chǔ)上使用RLHF方法訓(xùn)練得到的,ChatGPT實(shí)際上不僅是一個(gè)單獨(dú)的模型,而是一個(gè)完整的Web聊天機(jī)器人產(chǎn)品,其內(nèi)部調(diào)用的模型假設(shè)也稱作ChatGPT。
GPT-3到GPT-3.5的進(jìn)化樹(shù). 符堯等. 2022.12.11
OpenAI當(dāng)前并未公布ChatGPT論文,只在官網(wǎng)發(fā)布了一篇BLOG[9],BLOG中講到「We trained this model using Reinforcement Learning from Human Feedback (RLHF), using the same methods as InstructGPT, but with slight differences in the data collection setup」,ChatGPT模型訓(xùn)練采用了RLHF方法,和2022年3月發(fā)布的InstrutGPT[8]一致,僅是數(shù)據(jù)采集上有一些差異,當(dāng)前介紹ChatGPT技術(shù)原理的文章均是介紹InstrutGPT。RLHF并非是一個(gè)全新的方法,InstrutGPT論文里有講到該方法參考了2020年9月發(fā)布的文章《Learning to summarize from human feedback》[7]和2017年6月發(fā)布的文章《Deep reinforcement learning from human preferences》[12],文章[7]又參考了2019年9月發(fā)布的文章《Fine-Tuning Language Models from Human Preferences》[6],由此可見(jiàn),OpenAI在RLHF方法上有持續(xù)的沉淀積累,ChatGPT的誕生也并非一蹴而就。
ChatGPT訓(xùn)練過(guò)程. 2022.11.30InstructGPT訓(xùn)練過(guò)程. 2022.3
Learning to summarize from human feedback. 2020.9
Fine-Tuning Language Models from Human Preferences. 2019.9
二、GPT API 說(shuō)明
GPT API Playground
GPT API 當(dāng)前支持的模型
ChatGPT是以一個(gè)Web聊天機(jī)器人的形態(tài)發(fā)布的,用戶需要登錄網(wǎng)站進(jìn)行體驗(yàn),OpenAI目前還未發(fā)布ChatGPT API,但OpenAI API官網(wǎng)顯示不久后將發(fā)布「ChatGPT is coming to our API soon, sign up to stay updated」。目前業(yè)界有一些聲稱基于ChatGPT的聊天機(jī)器人工具,均是以非官方API來(lái)實(shí)現(xiàn)的,例如可以基于爬蟲技術(shù)來(lái)訪問(wèn)ChatGPT官網(wǎng),封裝成ChatGPT API,并注冊(cè)大量ChatGPT賬號(hào),以保證支持一定的訪問(wèn)量。ChatGPT官網(wǎng)對(duì)訪問(wèn)頻率有限制,且官網(wǎng)時(shí)不時(shí)會(huì)因?yàn)橛脩粽?qǐng)求過(guò)多無(wú)法訪問(wèn),這樣的API不是很穩(wěn)定,只能在一些離線場(chǎng)景應(yīng)用。值得一提的是,目前ChatGPT提供了付費(fèi)賬號(hào),價(jià)格為20美元/月,經(jīng)測(cè)試,付費(fèi)賬號(hào)和免費(fèi)賬號(hào)在訪問(wèn)頻率上并沒(méi)有多大差別,只是付費(fèi)賬號(hào)的服務(wù)響應(yīng)會(huì)相對(duì)穩(wěn)定一些,若是個(gè)人使用,直接使用免費(fèi)賬號(hào)即可。
ChatGPT官網(wǎng)
GPT API按照輸入輸出的token數(shù)量收費(fèi),價(jià)格為0.02美元/1000tokens,一個(gè)token大概是0.75個(gè)英文單詞,一個(gè)中文漢字為兩個(gè)token,這里包括請(qǐng)求API的token(Prompt)和API返回的token(Completion),一個(gè)GPT賬號(hào)會(huì)免費(fèi)贈(zèng)送18美元的額度,有效期為3個(gè)月。未來(lái)ChatGPT API 收費(fèi)方式很可能也和此相同。
GPT API 收費(fèi)說(shuō)明
平臺(tái)針對(duì)每次請(qǐng)求輸入和輸出token計(jì)數(shù)
從GPT-3到GPT-3.5的進(jìn)化樹(shù)中可以看到text-davinci-003模型和ChatGPT模型均是在text-davinci-002模型的基礎(chǔ)上使用RLHF方法訓(xùn)練得到,都在2022年11月發(fā)布,兩者的差別可能是針對(duì)不同類型人工反饋數(shù)據(jù)調(diào)優(yōu)上的差異,ChatGPT模型是應(yīng)用于對(duì)話聊天,會(huì)基于線上對(duì)話數(shù)據(jù)調(diào)優(yōu),在上下文多輪對(duì)話、擬人化等能力上可能更強(qiáng),text-davinci-003基于GPT API上用戶反饋數(shù)據(jù)(如上述Playground)調(diào)優(yōu),在相關(guān)任務(wù)上的效果和ChatGPT相比可能差異不大,如后文有實(shí)驗(yàn)在評(píng)論情感分類任務(wù)上二者效果相當(dāng)。因此,用戶可以直接在GPT API中使用text-davinci-003模型來(lái)搭建相關(guān)應(yīng)用。
三、GPT-3 訓(xùn)練成本
2020年5月,文章[12]中講到微軟在Azure上為OpenAI搭建了獨(dú)立的超級(jí)計(jì)算機(jī)系統(tǒng),包含28.5萬(wàn)個(gè)CPU核和1萬(wàn)張GPU卡(當(dāng)時(shí)為V100):The supercomputer developed for OpenAI is a single system with more than 285,000 CPU cores, 10,000 GPUs and 400 gigabits per second of network connectivity for each GPU server。2020年6月發(fā)布的GPT-3模型應(yīng)該是在該系統(tǒng)上訓(xùn)練得到。
英偉達(dá)在2021年4月發(fā)表的《Efficient Large Scale Language Model Training on GPU Clusters》[13] 文章中有預(yù)估不同參數(shù)規(guī)模的大模型訓(xùn)練需要消耗的資源和時(shí)間:使用1024張80G顯存的A100卡訓(xùn)練1750億參數(shù)的GPT-3模型,需要訓(xùn)練34天。
這些都是2-3年前之前的費(fèi)用說(shuō)明,根據(jù)相關(guān)材料介紹,當(dāng)前訓(xùn)練GPT-3的費(fèi)用更低 ,文章《ChatGPT背后的經(jīng)濟(jì)賬》講到「對(duì)于大公司而言,訓(xùn)練LLM(即使是從頭開(kāi)始)的成本并不高,如今,在公有云中訓(xùn)練GPT-3僅需花費(fèi)約140萬(wàn)美元」。
四、ChatGPT的應(yīng)用
我們從2018年開(kāi)始就有落地智能寫稿,利用機(jī)器自動(dòng)生成一些稿件應(yīng)用于各類場(chǎng)景,如自動(dòng)生成二手車車源介紹文章,可參見(jiàn)《58智能寫稿機(jī)器人實(shí)踐》。原始生成方法是基于優(yōu)質(zhì)車源帖子數(shù)據(jù),利用模板填充和文本生成技術(shù)自動(dòng)生成文章,生成的文章較短且生硬,我們使用ChatGPT來(lái)潤(rùn)色這些文章,向ChatGPT發(fā)送prompt提示「請(qǐng)潤(rùn)色下面這段文字,字?jǐn)?shù)在400字以內(nèi)」即可完成該任務(wù),通過(guò)ChatGPT潤(rùn)色的文章可讀性極佳。此外,我們也嘗試直接拿車源屬性字段來(lái)讓ChatGPT寫作,例如向ChatGPT發(fā)送提示「請(qǐng)以下面這些關(guān)鍵詞寫一篇400字的文章」,最終ChatGPT也能生成可讀性較好的結(jié)果。我們都知道ChatGPT在一些常識(shí)性問(wèn)題上會(huì)犯錯(cuò)誤,可能會(huì)生成一些錯(cuò)誤內(nèi)容,而我們是基于優(yōu)質(zhì)車源帖子數(shù)據(jù)來(lái)生成文章,車源帖子首先是真的,最終生成的內(nèi)容也是真實(shí)可用的。
在本地服務(wù)(黃頁(yè))業(yè)務(wù)下,客戶(商家)需要定期下線舊帖子,重新發(fā)布新貼子,由于商家平時(shí)工作繁忙,往往沒(méi)有時(shí)間發(fā)帖,因此平臺(tái)提供了代客發(fā)帖服務(wù),人工來(lái)幫助其發(fā)帖。2022年我們上線了AI自動(dòng)發(fā)帖功能,節(jié)省了30+人力。AI自動(dòng)發(fā)帖的大概邏輯是基于舊帖子正文內(nèi)容和帖子用戶評(píng)價(jià),自動(dòng)生成新帖標(biāo)題和更新正文內(nèi)容。在更新帖子正文內(nèi)容這里,需要篩選出用戶優(yōu)質(zhì)評(píng)價(jià),并將評(píng)價(jià)提煉成一小段文字,再插入到帖子正文頭部,以'口碑亮點(diǎn)'模塊來(lái)展示。
帖子正文口碑亮點(diǎn)
我們的原始方案是使用微調(diào)的BERT模型來(lái)識(shí)別評(píng)論正負(fù)向情感,先挑出正向評(píng)論,然后基于抽取式方法生成最終的評(píng)論短語(yǔ)。我們將ChatGPT應(yīng)用于該場(chǎng)景,首先使用ChatGPT來(lái)識(shí)別評(píng)論正負(fù)向情感,然后繼續(xù)用ChatGPT將正向評(píng)論潤(rùn)色成最終的'口碑亮點(diǎn)',取得了很好的效果。評(píng)論正負(fù)向情感識(shí)別是一個(gè)常見(jiàn)的NLP任務(wù),我們直接向ChatGPT發(fā)送Prompt提示「對(duì)下面的評(píng)論進(jìn)行分類,類別有正向、其他,[商家很專業(yè),很有耐心]屬于什么類別?」,這里沒(méi)有給其提供任何先驗(yàn)知識(shí)和例子,即Zero-Shot,它也能獲得不錯(cuò)的效果,比BERT微調(diào)模型略低,我們繼續(xù)實(shí)驗(yàn)Few-Shot,告訴其分類標(biāo)準(zhǔn)并給予了一些樣例,如下圖所示,識(shí)別效果明顯提升,超過(guò)BERT微調(diào)模型,可見(jiàn)ChatGPT十分強(qiáng)大。在前文GPT API章節(jié)我們有講到2022年11月同期發(fā)布的text-davinci-003模型和ChatGPT模型在部分NLP任務(wù)上可能差異不大,這里我們也進(jìn)行了驗(yàn)證,在評(píng)論情感識(shí)別任務(wù)上二者差異不大。
智能客服基本原理
智能客服的核心是構(gòu)建問(wèn)答知識(shí)庫(kù)和文本匹配,問(wèn)答知識(shí)庫(kù)里的問(wèn)題是線上用戶遇到的真實(shí)業(yè)務(wù)問(wèn)題,答案是客服運(yùn)營(yíng)人員人工整理的答案,而文本匹配是一項(xiàng)傳統(tǒng)的NLP技術(shù)。很明顯,客服場(chǎng)景的問(wèn)答知識(shí)庫(kù)是企業(yè)獨(dú)有的,ChatGPT沒(méi)有學(xué)習(xí)過(guò)這些數(shù)據(jù),對(duì)于用戶咨詢它不可能給出正確答案。部分業(yè)務(wù)方也給我們提過(guò)使用ChatGPT代替現(xiàn)有智能客服系統(tǒng)的想法,我們抽取了一定量線上真實(shí)用戶的輸入,并交給ChatGPT回答,最終證實(shí)了在業(yè)務(wù)問(wèn)題上它會(huì)一本正經(jīng)的'胡說(shuō)八道'。當(dāng)然,如果我們將問(wèn)答知識(shí)庫(kù)數(shù)據(jù)全部提交給ChatGPT做微調(diào)(Fine-tune),它也能回答得較好,但目前ChatGPT還不提供微調(diào)功能,GPT-3 API提供了微調(diào)功能。
盡管ChatGPT不能直接拿來(lái)做智能客服,但是我們可以用它來(lái)做智能客服中的文本匹配任務(wù),我們?cè)诮诮尤氲囊粋€(gè)新業(yè)務(wù)場(chǎng)景下實(shí)驗(yàn)了ChatGPT,可以類似下圖這樣向ChatGPT發(fā)送Prompt,Zero-Shot的效果較差,若在Prompt里給每個(gè)標(biāo)準(zhǔn)問(wèn)題增加少量擴(kuò)展問(wèn)法就能有較好的效果提升,但要超過(guò)自研模型還需在Prompt上做更多優(yōu)化工作。
ChatGPT文本匹配效果
用ChatGPT做文本匹配Prompt示例
自研模型 + ChatGPT數(shù)據(jù)增強(qiáng)后效果
用ChatGPT做對(duì)話意圖識(shí)別
智能外呼是人機(jī)實(shí)時(shí)語(yǔ)音對(duì)話場(chǎng)景,電話溝通語(yǔ)音會(huì)被語(yǔ)音識(shí)別引擎實(shí)時(shí)轉(zhuǎn)寫成文本,然后交給NLP模型進(jìn)行語(yǔ)義理解,本質(zhì)上和微聊文本對(duì)話沒(méi)有差別,也會(huì)執(zhí)行上述文本分類、文本匹配、對(duì)話意圖識(shí)別任務(wù),ChatGPT應(yīng)用類似。
人機(jī)語(yǔ)音對(duì)話相對(duì)微聊文本對(duì)話來(lái)講延時(shí)更敏感,即需要NLP模型快速返回識(shí)別結(jié)果,耗時(shí)一般要求在數(shù)十到上百毫秒之間,因?yàn)槿撕蜋C(jī)器在實(shí)時(shí)對(duì)話過(guò)程中若機(jī)器反應(yīng)慢,例如數(shù)秒才響應(yīng),人會(huì)明顯感覺(jué)到停頓,用戶體驗(yàn)差,可能會(huì)直接掛斷電話,影響轉(zhuǎn)化效果,而在一些微聊智能客服場(chǎng)景下,為了讓用戶感覺(jué)到背后不是機(jī)器人,會(huì)故意讓機(jī)器人回答慢一點(diǎn),在程序中做一些延時(shí)回復(fù)操作。當(dāng)前ChatGPT和GPT API的推理延時(shí)并不低,平均耗時(shí)在數(shù)秒級(jí)別,直接應(yīng)用ChatGPT來(lái)做人機(jī)語(yǔ)音對(duì)話中的NLP模塊不可取。
我們使用ChatGPT離線實(shí)驗(yàn)了近期上線的一個(gè)語(yǔ)音對(duì)話場(chǎng)景下的槽位提?。▽?shí)體抽?。R(shí)別對(duì)話內(nèi)容中的地點(diǎn)和服務(wù)類別槽位,這里直接使用Zero-Shot,向ChatGPT發(fā)送提示「請(qǐng)抽取這段話中的省、城市、區(qū)縣和服務(wù)類別」,從實(shí)驗(yàn)結(jié)果看ChatGPT表現(xiàn)不錯(cuò)。
ChatGPT槽位提取效果
五、個(gè)人思考
識(shí)別效果是否可控。NLP場(chǎng)景一般都會(huì)有準(zhǔn)確率、召回率的側(cè)重,需要通過(guò)調(diào)整模型來(lái)控制這兩項(xiàng)指標(biāo),自研模型很容易做到,若使用ChatGPT,則只能通過(guò)調(diào)整Prompt來(lái)控制,如何編寫Prompt來(lái)控制準(zhǔn)確率、召回率,目前還沒(méi)看到行之有效的方法。
推理性能是否符合應(yīng)用需求。大模型的推理性能與硬件資源、模型加速手段相關(guān),性能和投入成正比,當(dāng)前ChatGPT推理較慢,無(wú)法滿足一些延時(shí)要求高的應(yīng)用場(chǎng)景,例如智能外呼,未來(lái)這里可能需要和企業(yè)定制化。值得一提的是,當(dāng)前NewBing體驗(yàn)版的搜索也非常緩慢,用戶體驗(yàn)不佳,這也是微軟和OpenAI需要解決的痛點(diǎn)。
ROI的精確衡量。企業(yè)需要評(píng)估某個(gè)應(yīng)用場(chǎng)景下使用ChatGPT API的花費(fèi)是否比人力成本低,即將發(fā)布的ChatGPT API可能也和GPT-3 API一樣按照token收費(fèi),它包括了輸入和輸出的token,真正接入使用時(shí)需要對(duì)Prompt和生成結(jié)果做精細(xì)化控制,編寫Prompt也是一項(xiàng)挑戰(zhàn)。
[14] OpenAI API. https://openai.com/api
詹坤林
2023.2.21
本文內(nèi)容為2023年2月14在58技術(shù)委員會(huì)AI分會(huì)AI技術(shù)沙龍《ChatGPT科普和應(yīng)用初探》上的分享總結(jié)。
聯(lián)系客服