ChatGPT應用思考

張哥說技術發表於2023-02-22


OpenAI在2022年11月30日釋出了ChatGPT,它是一個基於大模型技術實現的通用聊天機器人,它可以用來寫作、翻譯、潤色句子、做事實性問答、執行文字分類/實體抽取/閱讀理解/文字摘要等各類NLP任務,甚至可以寫SQL、寫程式碼,幾乎無所不能。

ChatGPT自發布之後一直大火至今,引起行業震動,我們也持續在跟進ChatGPT,體驗其功能,瞭解其技術原理,並基於爬蟲技術封裝了ChatGPT API,在實際NLP應用場景下對比了ChatGPT和自研技術的效果。本文從應用角度出發,給出一些對ChatGPT的思考。

一、GPT 到 ChatGPT 的演進

Google於2017年在《Attention Is All You Need》一文中釋出了Transformer,此後對NLP、語音、CV等AI領域產生了深遠影響。2018年6月,OpenAI釋出了GPT(Generative Pre-Training)[1]——基於Transformer Decoder結構和無監督預訓練方法實現的生成式預訓練語言模型,也即GPT-1。
2018年10月,Google釋出了BERT(Bidirectional Encoder Representation from Transformers)[2],BERT是基於Transformer Encoder結構的預訓練語言模型,在多項NLP任務上取得SOTA效果,開啟了自然語言處理預訓練+微調的新正規化,是自然語言處理發展史上的里程碑。BERT自發布之後在學術界和工業界均產生了重大影響,大量論文和應用基於BERT實現,谷歌學術上BERT的論文引用數也遠超GPT,近幾年大模型技術火熱,國內外發布的大部分大模型也是基於BERT技術路線來實現。


ChatGPT應用思考

OpenAI持續升級最佳化GPT,於2019年2月釋出了GPT-2[3],於2020年6月釋出了擁有1750億引數的超大模型GPT-3[4],轟動一時,GPT-3不需要像BERT那樣針對特定任務做微調(Fine-tune),一個大模型即可在一系列自然語言處理任務上取得優秀的效果,結合Few-Shot少樣本學習能力,在部分任務上甚至接近或者達到當時的SOTA效果。

使用BERT執行某個具體場景下的NLP任務如文字分類時,需要人工標註該場景下的一定量資料,然後微調得到一個文字分類模型應用於分類,即重新更新了模型,對於不同的任務均要這樣做。而使用GPT-3執行NLP任務時,不需要重新更新模型,只需要向其傳送一句提示(Prompt)例如請給這段文字分類,類別標籤有A、B、C即可完成分類,或者可以使用少量標註資料作為例子告訴模型,能夠取得更優的效果,在這一點上GPT-3要比BERT更加易用。值得說明的是,自GPT-3開始,OpenAI沒有像GPT-1、GPT-2那樣釋出開原始碼,而是以API的形式提供商業化服務,具體見 


ChatGPT應用思考


BERT和ChatGPT執行任務的區別

ChatGPT是從GPT-3發展而來的,符堯等人在《拆解追溯 GPT-3.5 各項能力的起源》一文[10]中總結了GPT-3到GPT-3.5的進化樹,GPT-3在OpenAI API中的模型名稱為Davinci(達芬奇),之後經歷在程式碼上訓練、指令微調、RLHF(Reinforcement Learning from Human Feedback,基於人類反饋的強化學習)等過程,進化成ChatGPT,詳細內容可參見文章[10],這裡不再贅述。2022年11月,OpenAI除了釋出ChatGPT之外,還發布了text-davinci-003模型,兩者都是在text-davinci-002模型的基礎上使用RLHF方法訓練得到的,ChatGPT實際上不僅是一個單獨的模型,而是一個完整的Web聊天機器人產品,其內部呼叫的模型假設也稱作ChatGPT。


ChatGPT應用思考


GPT-3到GPT-3.5的進化樹. 符堯等. 2022.12.11

OpenAI當前並未公佈ChatGPT論文,只在官網釋出了一篇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模型訓練採用了RLHF方法,和2022年3月釋出的InstrutGPT[8]一致,僅是資料採集上有一些差異,當前介紹ChatGPT技術原理的文章均是介紹InstrutGPT。RLHF並非是一個全新的方法,InstrutGPT論文裡有講到該方法參考了2020年9月釋出的文章《Learning to summarize from human feedback》[7]和2017年6月釋出的文章《Deep reinforcement learning from human preferences》[12],文章[7]又參考了2019年9月釋出的文章《Fine-Tuning Language Models from Human Preferences》[6],由此可見,OpenAI在RLHF方法上有持續的沉澱積累,ChatGPT的誕生也並非一蹴而就

ChatGPT應用思考ChatGPT訓練過程. 2022.11.30

ChatGPT應用思考

InstructGPT訓練過程. 2022.3

ChatGPT應用思考

Learning to summarize from human feedback. 2020.9

ChatGPT應用思考

Fine-Tuning Language Models from Human Preferences. 2019.9


二、GPT API 說明

當前,在OpenAI釋出的GPT API中可以呼叫上文GPT-3到GPT-3.5的進化樹中除ChatGPT模型之外的所有模型,使用者可以在API Playgroud裡選擇模型版本進行體驗,也可以編寫程式呼叫API來進行批次實驗,如下圖所示。
ChatGPT應用思考


GPT API Playground



ChatGPT應用思考

GPT API 當前支援的模型

ChatGPT是以一個Web聊天機器人的形態釋出的,使用者需要登入網站進行體驗,OpenAI目前還未釋出ChatGPT API,但OpenAI API官網顯示不久後將釋出ChatGPT is coming to our API soon, sign up to stay updated。目前業界有一些聲稱基於ChatGPT的聊天機器人工具,均是以非官方API來實現的,例如可以基於爬蟲技術來訪問ChatGPT官網,封裝成ChatGPT API,並註冊大量ChatGPT賬號,以保證支援一定的訪問量。ChatGPT官網對訪問頻率有限制,且官網時不時會因為使用者請求過多無法訪問,這樣的API不是很穩定,只能在一些離線場景應用。值得一提的是,目前ChatGPT提供了付費賬號,價格為20美元/月,經測試,付費賬號和免費賬號在訪問頻率上並沒有多大差別,只是付費賬號的服務響應會相對穩定一些,若是個人使用,直接使用免費賬號即可。


ChatGPT應用思考


ChatGPT官網

GPT API按照輸入輸出的token數量收費,價格為0.02美元/1000tokens,一個token大概是0.75個英文單詞,一箇中文漢字為兩個token,這裡包括請求API的token(Prompt)和API返回的token(Completion),一個GPT賬號會免費贈送18美元的額度,有效期為3個月。未來ChatGPT API 收費方式很可能也和此相同。


ChatGPT應用思考


GPT API 收費說明

ChatGPT應用思考

平臺針對每次請求輸入和輸出token計數

從GPT-3到GPT-3.5的進化樹中可以看到text-davinci-003模型和ChatGPT模型均是在text-davinci-002模型的基礎上使用RLHF方法訓練得到,都在2022年11月釋出,兩者的差別可能是針對不同型別人工反饋資料調優上的差異,ChatGPT模型是應用於對話聊天,會基於線上對話資料調優,在上下文多輪對話、擬人化等能力上可能更強,text-davinci-003基於GPT API上使用者反饋資料(如上述Playground)調優,在相關任務上的效果和ChatGPT相比可能差異不大,如後文有實驗在評論情感分類任務上二者效果相當。因此,使用者可以直接在GPT API中使用text-davinci-003模型來搭建相關應用


三、GPT-3 訓練成本

GPT-3擁有1750億引數,模型訓練需要消耗大量資源,OpenAI並未公開過GPT系列大模型訓練和推理消耗的具體費用,我們可以從其他材料中獲得一些資訊。


2020年5月,文章[12]中講到微軟在Azure上為OpenAI搭建了獨立的超級計算機系統,包含28.5萬個CPU核和1萬張GPU卡(當時為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月釋出的GPT-3模型應該是在該系統上訓練得到。

英偉達在2021年4月發表的《Efficient Large Scale Language Model Training on GPU Clusters》[13] 文章中有預估不同引數規模的大模型訓練需要消耗的資源和時間:使用1024張80G視訊記憶體的A100卡訓練1750億引數的GPT-3模型,需要訓練34天。

這些都是2-3年前之前的費用說明,根據相關材料介紹,當前訓練GPT-3的費用更低 ,文章《ChatGPT背後的經濟賬》講到對於大公司而言,訓練LLM(即使是從頭開始)的成本並不高,如今,在公有云中訓練GPT-3僅需花費約140萬美元


四、ChatGPT的應用

ChatGPT可以用來寫作、翻譯、潤色句子、做事實性問答、寫SQL、寫程式碼、執行文字分類/實體抽取/閱讀理解/文字摘要等各類NLP任務,相關案例不一一贅述,這裡僅討論在智慧寫稿、智慧客服、智慧外呼實際產品場景下我們對ChatGPT的應用嘗試,相關實驗對比結果基於我們自主封裝的ChatGPT API完成。
智慧寫稿:


我們從2018年開始就有落地智慧寫稿,利用機器自動生成一些稿件應用於各類場景,如自動生成二手車車源介紹文章,可參見《58智慧寫稿機器人實踐》。原始生成方法是基於優質車源帖子資料,利用模板填充和文字生成技術自動生成文章,生成的文章較短且生硬,我們使用ChatGPT來潤色這些文章,向ChatGPT傳送prompt提示請潤色下面這段文字,字數在400字以內即可完成該任務,透過ChatGPT潤色的文章可讀性極佳。此外,我們也嘗試直接拿車源屬性欄位來讓ChatGPT寫作,例如向ChatGPT傳送提示請以下面這些關鍵詞寫一篇400字的文章,最終ChatGPT也能生成可讀性較好的結果。我們都知道ChatGPT在一些常識性問題上會犯錯誤,可能會生成一些錯誤內容,而我們是基於優質車源帖子資料來生成文章,車源帖子首先是真的,最終生成的內容也是真實可用的。

在本地服務(黃頁)業務下,客戶(商家)需要定期下線舊帖子,重新發布新貼子,由於商家平時工作繁忙,往往沒有時間發帖,因此平臺提供了代客發帖服務,人工來幫助其發帖。2022年我們上線了AI自動發帖功能,節省了30+人力。AI自動發帖的大概邏輯是基於舊帖子正文內容和帖子使用者評價,自動生成新帖標題和更新正文內容。在更新帖子正文內容這裡,需要篩選出使用者優質評價,並將評價提煉成一小段文字,再插入到帖子正文頭部,以"口碑亮點"模組來展示。


ChatGPT應用思考


帖子正文口碑亮點

我們的原始方案是使用微調的BERT模型來識別評論正負向情感,先挑出正向評論,然後基於抽取式方法生成最終的評論短語。我們將ChatGPT應用於該場景,首先使用ChatGPT來識別評論正負向情感,然後繼續用ChatGPT將正向評論潤色成最終的"口碑亮點",取得了很好的效果。評論正負向情感識別是一個常見的NLP任務,我們直接向ChatGPT傳送Prompt提示對下面的評論進行分類,類別有正向、其他,[商家很專業,很有耐心]屬於什麼類別?,這裡沒有給其提供任何先驗知識和例子,即Zero-Shot,它也能獲得不錯的效果,比BERT微調模型略低,我們繼續實驗Few-Shot,告訴其分類標準並給予了一些樣例,如下圖所示,識別效果明顯提升,超過BERT微調模型,可見ChatGPT十分強大。在前文GPT API章節我們有講到2022年11月同期釋出的text-davinci-003模型和ChatGPT模型在部分NLP任務上可能差異不大,這裡我們也進行了驗證,在評論情感識別任務上二者差異不大


ChatGPT應用思考
ChatGPT在評論正負向情感識別任務上的效果
ChatGPT應用思考
ChatGPT Few-Shot
此外,在SEO場景我們也進行了探索,使用ChatGPT生成一些SEO場景需要的內容,儘管ChatGPT會生成一些事實性錯誤的內容,但透過最佳化Prompt可以使得生成的結果基本可用,並結合人工稽核、人工改寫,最終能夠得到符合SEO需求的內容。
智慧客服:
當前網上很多人都說ChatGPT可以直接拿來做智慧客服,能夠讓一些客服或者銷售人員下崗,很多人都信以為真,實際並非如此。智慧客服是當下發展非常成熟的產品,各大企業都有應用,能夠提高客服人效,58同城是2017年開始打造的智慧客服。這是智慧客服的基本原理:企業維護了一套業務問答知識庫,即一些業務問題和答案的集合,若使用者在使用APP時遇到相關問題,他會在智慧客服聊天視窗裡輸入問題進行諮詢,機器會自動理解使用者輸入的問題,從問答知識庫中找到那條和使用者輸入語義相同的問題,即文字匹配或文字分類,然後把該問題的答案返回給使用者。
ChatGPT應用思考


智慧客服基本原理

智慧客服的核心是構建問答知識庫和文字匹配,問答知識庫裡的問題是線上使用者遇到的真實業務問題,答案是客服運營人員人工整理的答案,而文字匹配是一項傳統的NLP技術。很明顯,客服場景的問答知識庫是企業獨有的,ChatGPT沒有學習過這些資料,對於使用者諮詢它不可能給出正確答案。部分業務方也給我們提過使用ChatGPT代替現有智慧客服系統的想法,我們抽取了一定量線上真實使用者的輸入,並交給ChatGPT回答,最終證實了在業務問題上它會一本正經的"胡說八道"。當然,如果我們將問答知識庫資料全部提交給ChatGPT做微調(Fine-tune),它也能回答得較好,但目前ChatGPT還不提供微調功能,GPT-3 API提供了微調功能。

儘管ChatGPT不能直接拿來做智慧客服,但是我們可以用它來做智慧客服中的文字匹配任務,我們在近期接入的一個新業務場景下實驗了ChatGPT,可以類似下圖這樣向ChatGPT傳送Prompt,Zero-Shot的效果較差,若在Prompt裡給每個標準問題增加少量擴充套件問法就能有較好的效果提升,但要超過自研模型還需在Prompt上做更多最佳化工作。


ChatGPT應用思考


ChatGPT文字匹配效果


ChatGPT應用思考


用ChatGPT做文字匹配Prompt示例


智慧客服的問答知識庫是持續更新的,因為隨著產品功能的持續更新升級,線上使用者會遇到新的操作問題,這些新問題會被挖掘出來加入到問答知識庫中,並透過持續的資料標註來積累這些新問題的擴充套件問法。往往新問題上線初期擴充套件問法較少,模型對新問題識別效果較差,這裡也可以在新問題產生時直接使用ChatGPT來為每個新問題生成若干擴充套件問法(資料增強),再加入模型訓練,使得模型對新問題有較好的識別效果。我們在一個新接入的場景下也進行了實驗對比,針對新增的六條新問題,使用ChatGPT為每條新問題生成數十條擴充套件問法,然後訓練模型,這相比不做資料增強的模型效果有明顯提升。
ChatGPT應用思考


自研模型 + ChatGPT資料增強後效果


在招聘業務趕集直招「微聊反向邀約」場景,在C端使用者和B端企業微聊溝通時,我們應用了智慧客服留資機器人,具體介紹可參見《一份AI中臺產品應用手冊》,當C端使用者向B端企業發起微聊溝通時,若B端企業不線上,則由機器人和C端使用者對話,在對話結束後若識別到使用者有高求職意向,則呼叫智慧雙呼能力(可參見《智慧語音機器人四種人機協同能力介紹》)提醒B端企業,B端企業接聽後可以一鍵直連C端使用者,從而雙方可以直接電話溝通。這裡機器人需要基於微聊對話記錄識別使用者求職意向,我們也實驗了ChatGPT,透過最佳化Prompt,ChatGPT在F1-Score上超過了自研模型。但是這是一個重準確率的業務場景,因為需要保證B端企業連線的使用者儘量是實際求職者,但如何透過調整Prompt來控制ChatGPT的準確率和召回率,目前還沒找到行之有效的方法,而自研模型要做到這一點很簡單。
ChatGPT應用思考


用ChatGPT做對話意圖識別


智慧外呼:


智慧外呼是人機實時語音對話場景,電話溝通語音會被語音識別引擎實時轉寫成文字,然後交給NLP模型進行語義理解,本質上和微聊文字對話沒有差別,也會執行上述文字分類、文字匹配、對話意圖識別任務,ChatGPT應用類似。

人機語音對話相對微聊文字對話來講延時更敏感,即需要NLP模型快速返回識別結果,耗時一般要求在數十到上百毫秒之間,因為人和機器在實時對話過程中若機器反應慢,例如數秒才響應,人會明顯感覺到停頓,使用者體驗差,可能會直接結束通話電話,影響轉化效果,而在一些微聊智慧客服場景下,為了讓使用者感覺到背後不是機器人,會故意讓機器人回答慢一點,在程式中做一些延時回覆操作。當前ChatGPT和GPT API的推理延時並不低,平均耗時在數秒級別,直接應用ChatGPT來做人機語音對話中的NLP模組不可取

我們使用ChatGPT離線實驗了近期上線的一個語音對話場景下的槽位提取(實體抽取),識別對話內容中的地點和服務類別槽位,這裡直接使用Zero-Shot,向ChatGPT傳送提示請抽取這段話中的省、城市、區縣和服務類別,從實驗結果看ChatGPT表現不錯。


ChatGPT應用思考


ChatGPT槽位提取效果


五、個人思考

ChatGPT在一個大模型裡可以完成眾多工,而且效果都很不錯,前所未見,令人驚歎。毫無疑問,ChatGPT能夠在各類崗位上輔助人工,提升人效,但能否完全替代某類崗位,還需時間驗證,以NLP工程師崗位為例,企業若想使用ChatGPT代替NLP工程師,至少需要考慮以下幾點:


  • 識別效果是否可控。NLP場景一般都會有準確率、召回率的側重,需要透過調整模型來控制這兩項指標,自研模型很容易做到,若使用ChatGPT,則只能透過調整Prompt來控制,如何編寫Prompt來控制準確率、召回率,目前還沒看到行之有效的方法。

  • 推理效能是否符合應用需求。大模型的推理效能與硬體資源、模型加速手段相關,效能和投入成正比,當前ChatGPT推理較慢,無法滿足一些延時要求高的應用場景,例如智慧外呼,未來這裡可能需要和企業定製化。值得一提的是,當前NewBing體驗版的搜尋也非常緩慢,使用者體驗不佳,這也是微軟和OpenAI需要解決的痛點。

  • ROI的精確衡量。企業需要評估某個應用場景下使用ChatGPT API的花費是否比人力成本低,即將釋出的ChatGPT API可能也和GPT-3 API一樣按照token收費,它包括了輸入和輸出的token,真正接入使用時需要對Prompt和生成結果做精細化控制,編寫Prompt也是一項挑戰。


當前,ChatGPT在國內還不能直接訪問,未來就算對國內開放,但各大企業與其合作會很敏感,國內企業的大量資料若流入ChatGPT會有很大風險。中國很有必要做出自己的ChatGPT,當下國內大廠和一些創業公司正在努力,也許在不久的將來,國內ChatGPT解決上述問題後,真的不再需要那麼多NLP演算法工程師。
參考文獻:
[1] GPT1:Improving Language Understanding by Generative Pre-Training. https://openai.com/blog/language-unsupervised/ 2018.6
[2] BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding. 2018.10
[3] GPT2:Language Models are Unsupervised Multitask Learners.
https://openai.com/blog/better-language-models/ 2019.2
[4] GPT3:Language Models are Few-Shot Learners. 2020.5
[5] GPT3 API:https://openai.com/blog/openai-api/ 2020.6
[6] Fine-Tuning Language Models from Human Preferences. 2019.9
[7] Learning to summarize from human feedback.  https://openai.com/blog/learning-to-summarize-with-human-feedback/ 2020.9
[8] InstructGPT:Training language models to follow instructions with human feedback. 2022.3
[9] ChatGPT: Optimizing Language Models for Dialogue. https://openai.com/blog/chatgpt/ 2022.11.30
[10] How does GPT Obtain its Ability? Tracing Emergent Abilities of Language Models to their Sources. 符堯等. 2022.12.11. 中文版:拆解追溯 GPT-3.5 各項能力的起源. 2022.12.18.
[11] Deep reinforcement learning from human preferences. 2017.6
[12] Microsoft announces new supercomputer, lays out vision for future AI work. 2020.5.19
[13] Efficient Large Scale Language Model Training on GPU Clusters. 2021.4

[14] OpenAI API.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024923/viewspace-2936410/,如需轉載,請註明出處,否則將追究法律責任。

相關文章