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

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

ChatGPTの大語言模型技術(shù)精談

2023-03-05 22:41 作者:小軒騰空  | 我要投稿

本文均為小編在有限知識(shí)體系內(nèi)發(fā)表的個(gè)人意見,帶有明顯個(gè)人偏好。辯證閱讀,別被洗腦。如有更多想法或意見相左,評(píng)論區(qū)直接噴。

????自2022年11月30日發(fā)布以來,ChatGPT可謂是搶盡了風(fēng)頭(投)。而且近幾天又開放了”gpt-3.5-turbo”(gpt-3.5-turbo比davinci系列模型性能更強(qiáng)的同時(shí)價(jià)格還便宜了10倍),意味著ChatGPT底層模型的正式商業(yè)化,可謂利好不斷。

????本文主要想聊一下當(dāng)下ChatGPT引領(lǐng)下的大語言模型的現(xiàn)狀及一些延伸話題。由于篇幅較長,為兼顧閱讀人群,我會(huì)將內(nèi)容劃分為四種類別(業(yè)外人士可讀<業(yè)內(nèi)人士可讀<程序員可讀<算法人員可讀),并標(biāo)記在適當(dāng)位置。文章結(jié)構(gòu)會(huì)在整體上保持由淺入深,但為保證知識(shí)必要的連貫性,局部可能會(huì)打破這個(gè)趨勢。

文內(nèi)易混淆名詞釋義:

????LM:語言模型(Language Model);

????LLM:大語言模型(Large Language Model);

????通用人工智能:強(qiáng)人工智能;

????通用模型:大家共用的某個(gè)模型;

通用人工智能綜述

????提到ChatGPT,就先對(duì)GPT系列做個(gè)簡述吧。

(算法人士可讀)

????GPT1開始,模型的整體架構(gòu)就已經(jīng)定型,采用Transformer的Decoder部分構(gòu)建自回歸式的語言模型。以fine-tune模式支持下游任務(wù)。其發(fā)布比Bert早幾個(gè)月,所以Bert應(yīng)該是取了GPT1的巧,強(qiáng)了不少風(fēng)頭。

????GPT2是統(tǒng)一建模的開端,開啟了無fine-tune模式,也就是主推由通用語言模型來完成各種任務(wù),而不是一個(gè)任務(wù)fine-tune一個(gè)模型。

????GPT3大力出奇跡,將世界知識(shí)與語言邏輯注入模型,使語言模型展示出了驚人的效果與潛力。

????基于GPT3的codex通過使用代碼對(duì)模型進(jìn)行訓(xùn)練,顯著增強(qiáng)了模型的邏輯思維能力。

????InstructGPT采用RLHF方式在少量數(shù)據(jù)上進(jìn)行訓(xùn)練,就像一把鑰匙一樣解鎖了前幾代模型蘊(yùn)含著的巨大力量,使人類能夠通過prompt的方式與模型進(jìn)行人與人一樣的溝通。

????ChatGPT又在InstructGPT的基礎(chǔ)上進(jìn)一步優(yōu)化,融入更加激進(jìn)且驚艷的功能,并以直接面向廣大用戶的多輪對(duì)話聊天機(jī)器人的形態(tài)亮相。

????OpenAI團(tuán)隊(duì)從GPT2開始就已經(jīng)基本形成思路了,那就是不做fine-tuning,要做通用人工智能AGI (Artificial General Intelligence)。這種理想化的人工智能其實(shí)哪怕在ChatGPT出來的前一天,像我這種業(yè)內(nèi)的工程師也是不敢想象的。預(yù)期中的這種程度的人工智能不應(yīng)該是2022年就能達(dá)到的。

(業(yè)外人士可讀)

????說起通用人工智能(AGI),可能很多人理解不夠深刻。這里我舉一個(gè)通俗點(diǎn)的例子來描述。以Tesla(為了降低雷達(dá)硬件成本,Tesla堅(jiān)持走以圖像算法為主的路線)的自動(dòng)駕駛AI來講。其實(shí)在通用人工智能展露手腳之前,我們并不認(rèn)為當(dāng)下的自動(dòng)駕駛機(jī)器人足夠的聰明,或者說它足夠的有邏輯、講道理。在工程師看來,自己訓(xùn)練出來的自動(dòng)駕駛機(jī)器人能夠在前面看到一個(gè)老太太過馬路時(shí)決定踩下剎車,是因?yàn)槟P蛷暮A康鸟{駛數(shù)據(jù)中學(xué)習(xí)到了某種模式,某種類似人類條件反射一樣的反應(yīng):

????正前方看到一團(tuán)“物體”,物體的大小(在圖像中占據(jù)的像素多少)正在以特定速率變大(視覺上的近大遠(yuǎn)小原理),以本AI的經(jīng)驗(yàn)來看,在這種情況下的最佳指令是輸出“踩剎車”的信號(hào)。

????僅此而已,即使算法模型最終的決策做對(duì)了,成功避免了一場車禍,我們也不會(huì)認(rèn)為這個(gè)模型是General的。因?yàn)樗芸赡芫褪菦]有邏輯,只是“習(xí)慣”了這些模式而已。而通用人工智能,在發(fā)出“踩剎車”指令的時(shí)候,是有理有據(jù),或者說是有邏輯的:

????圖像中的一團(tuán)“物體”是人類這個(gè)物種,而且是人類當(dāng)中年齡偏大的。這類群體行動(dòng)可能不方便,反應(yīng)速度會(huì)比年齡小的人類慢,因此如果現(xiàn)在再不踩剎車的話,這個(gè)人類很可能會(huì)因?yàn)槠嚀碛械膹?qiáng)大動(dòng)能而被撞飛,撞飛以后需要去醫(yī)院或者當(dāng)場死亡,這是一件人類不可接受的事情,所以現(xiàn)在必須下達(dá)“踩剎車”指令。

????你看,我現(xiàn)在所描述的思維鏈?zhǔn)遣皇歉呒?jí)?然而這種級(jí)別的認(rèn)知能力與邏輯思維能力是通用人工智能才能達(dá)到的。雖然以前的人工智能也能把汽車開好,但是從模型能力上來說,與通用人工智能是無法比擬的。

????總結(jié)一下就是:弱人工智能講模式,強(qiáng)人工智能講道理。

????2022年人類科技還沒有達(dá)到通用人工智能水平,但已經(jīng)提前敲開了大門。

ChatGPT本質(zhì)

(業(yè)外人士可讀)

????個(gè)人認(rèn)為,ChatGPT更傾向于是一個(gè)集成起來的系統(tǒng),一款產(chǎn)品,而非單純的指一款模型,現(xiàn)在公開出來的其底層核心模型名稱叫“gpt-3.5-turbo”。但因?yàn)樵诖蟊娛熘母拍钪蠧hatGPT就是一款模型,因此小編在此也進(jìn)行妥協(xié),follow大眾。

????由于以ChatGPT為代表的LLM表現(xiàn)過于亮眼,所以后文我就以ChatGPT為對(duì)象進(jìn)行說明,以代表對(duì)LLM的介紹。

????ChatGPT是僅從語言文字上建模的模型,輸出的內(nèi)容也僅限于語言文字。因此從模型的輸入即輸出角度來看,她就是一種非常簡潔的建模方式:對(duì)模型輸入一個(gè)字符串,模型也會(huì)返回一個(gè)字符串。就像輸入法的聯(lián)想功能一樣,你前面輸入著內(nèi)容,模型來幫你預(yù)測下一個(gè)內(nèi)容。不同的是,輸入法內(nèi)語言模型的用途是猜你下一個(gè)想用鍵盤敲出來的內(nèi)容,而ChatGPT則并不一定是僅用于此場景。當(dāng)然如果你強(qiáng)行用于解決輸入法的聯(lián)想問題,也沒人攔著,她確實(shí)可以如此大材小用。

????基于強(qiáng)大的性能,ChatGPT可用的場景非常廣泛:

????1、假如你對(duì)著模型輸入“今天的天”四個(gè)字,那么模型可能會(huì)給你輸出個(gè)“”字。

這時(shí)候你就是在拿模型作為輸入法底層的聯(lián)想引擎來用;

????2、假如你對(duì)著模型輸入“幫我計(jì)算一下1+1等于幾。”,那么模型可能會(huì)給你輸出一個(gè)“3”字。

????這時(shí)候你就是在拿她作為一個(gè)計(jì)算器來用。

那么基于這樣的建模,能否玩出花樣來呢?能。例如:

????3、你對(duì)著她輸入“我們假設(shè)有個(gè)智能體叫AI,有個(gè)人類叫User。當(dāng)User說:下午好!AI回答了:下午好!我的主人!然后User又說:現(xiàn)在是早上嗎?此時(shí)AI大概率會(huì)回答什么?”,那么模型可能會(huì)給你輸出“不是”兩個(gè)字。

????顯然,這種使用場景依舊符合最簡潔的建模(輸入一個(gè)字符串,模型輸出一個(gè)字符串)沒有變,但是由于你在字符串中做了手腳,所以就可以把模型當(dāng)做一個(gè)智能聊天機(jī)器人來用(因?yàn)槟阏诶媚P偷妮敵觯鉀Q了一個(gè)《聊天機(jī)器人與人類的對(duì)話中,開展到第二輪對(duì)話時(shí),機(jī)器人該怎么回答人類》的問題)。注意這在本質(zhì)上并不是人類正在直接與模型“對(duì)話”,而是模型在猜測你描述的場景中的AI與User對(duì)話時(shí),AI可能產(chǎn)生的回答,這得益于ChatGPT涌現(xiàn)出的強(qiáng)大的理解能力。

Context Window

(業(yè)外人士可讀)

????對(duì)于像ChatGPT這樣自回歸式的大語言模型,小編這里定義一個(gè)context window的概念,它是你與模型語言交互的上下文空間,你們交互期間的記憶與邏輯都會(huì)局限在這個(gè)context window內(nèi)。context window內(nèi)即包括你可以傳給模型的字符串以及模型返回給你的字符串,輸入與輸出的字符串長度加起來不能超過窗口的尺寸。

????假設(shè)context window大小是3個(gè)漢字長度,那么當(dāng)你給模型輸入“我美嗎”時(shí),模型是無法回復(fù)你的,因?yàn)槟P涂吹健拔颐绬帷比齻€(gè)字后剛想張口回答你,就受限于窗口尺寸而閉嘴了。那么假設(shè)你吸取教訓(xùn),將“我”字置于窗口范圍之外,改變一下輸入的內(nèi)容為“美嗎”兩個(gè)字,那么模型可能會(huì)給你輸出一個(gè)“”字。但你確定模型回答的“美”字夸贊的是你嗎?畢竟他都沒有看到你問的主體是誰。所以為了避免這種尷尬,LLM通常能夠支持的窗口大小會(huì)非常大,ChatGPT的模型就支持4096個(gè)token(非業(yè)內(nèi)人士可以理解成字?jǐn)?shù),粗略上2個(gè)token相當(dāng)于1個(gè)漢字)的context window大小。也就是說,單從算法層面上,你可以在模型的輸入與輸出加起來不到4096個(gè)token的情況下實(shí)現(xiàn)完美交互,模型觀察到的信息(輸入)沒有缺失,模型返回給你的信息(輸出)也沒有缺失。

????“萬一我的需求就是要求超過4096個(gè)token的限制該怎么辦?”。只能說,一般不會(huì)超過,超過的話你就自我裁剪一下,使不要超過。。。這種回答貌似并不負(fù)責(zé)任,但也不無道理。不過話說回來,在ChatGPT的聊天窗口內(nèi)與她聊天時(shí),我們會(huì)發(fā)現(xiàn)ChatGPT能夠記住你們聊天窗口內(nèi)很早之前的信息,早到已經(jīng)遠(yuǎn)遠(yuǎn)超過了4096個(gè)token的距離。

????這樣的效果很驚艷,在此先挖個(gè)坑,待下文講完基礎(chǔ)原理后,再對(duì)ChatGPT這種能力的技術(shù)原理進(jìn)行一下推測。

????BTW:這里解釋一個(gè)概念”prompting”,中文意思是“提示”。上述過程中,構(gòu)建輸入文字內(nèi)容的過程都叫做”prompting”。比如問模型“如果我是DJ,你還會(huì)愛我嗎?”,就是在prompting。

????關(guān)于ChatGPT接口的收費(fèi)問題,這里先做一個(gè)簡要的總結(jié)。

????從算力上來講,模型要想根據(jù)你的輸入做預(yù)測,首先要逐個(gè)token逐個(gè)token地將你的輸入灌給模型,灌一個(gè)token就需要進(jìn)行一波模型推理計(jì)算,直到模型收到“張口”信號(hào)以后開始輸出token,輸出token也是一個(gè)一個(gè)地輸出,每輸出一個(gè)也是需要進(jìn)行一波模型推理計(jì)算。因此模型在一個(gè)context window內(nèi)inference的算力分配既包括對(duì)輸入token的處理也包括對(duì)輸出token的處理。正因如此,OpenAI的API在收費(fèi)策略上也是按照context window內(nèi)的總token數(shù)量(輸入+輸出)來收費(fèi)的。這對(duì)應(yīng)于其投入的算力,不多掙你的,也不少掙你的,很公平。

記憶的本質(zhì)

(程序員可讀)

????在講接下來的內(nèi)容之前,我先插一段技術(shù)性的闡述,這對(duì)理解后面很多內(nèi)容都很重要。

????不妨先思考一個(gè)問題,當(dāng)你和ChatGPT對(duì)話時(shí),模型關(guān)于你的“記憶”從哪里來?

????提到“記憶”這個(gè)詞,為了避免大家混淆,小編在這里定義兩個(gè)概念:“固有記憶”與“窗口記憶”。

固有記憶

????“固有記憶”指的是模型經(jīng)過訓(xùn)練,由內(nèi)部的參數(shù)決定的其擁有的海量知識(shí)與邏輯。因?yàn)槟P臀募?nèi)上千億級(jí)別的訓(xùn)練好的參數(shù)存在,所以靠近輸入側(cè)的張量(tensor)經(jīng)過這些參數(shù)變換之后就會(huì)因此轉(zhuǎn)換為基于記憶的特定響應(yīng),體現(xiàn)在最后的輸出文字上就是模型懂得萬事萬物。固有記憶在這里不深入展開,因?yàn)樗皇潜疚年P(guān)注的重點(diǎn)。

窗口記憶

????“窗口記憶”指的是獨(dú)立于固有記憶之外的臨時(shí)記憶,它在時(shí)間維度上只存在于你與模型的對(duì)話過程中,對(duì)話結(jié)束后記憶也隨之消失。如果將“固有記憶”描述為計(jì)算機(jī)硬盤存儲(chǔ)的話,那么“窗口記憶”就可描述為計(jì)算機(jī)內(nèi)存。

(算法人士可讀)

????我們知道神經(jīng)網(wǎng)絡(luò)底層的本質(zhì)其實(shí)就是:tensor在一層層神經(jīng)參數(shù)的配合下,在各維度之間做空間變換(后文稱這個(gè)過程為flow)。隨著優(yōu)化算法的一步步迭代,這些變換從無序慢慢變得有序、合理、規(guī)律且黑盒。

????注:本文通篇忽略Embedding等機(jī)制,因?yàn)椴皇侵攸c(diǎn)。

????在模型的推理階段,GPU的顯存起到一個(gè)容器的作用。當(dāng)我們把模型加載起來時(shí),其實(shí)就是把模型內(nèi)部的千億級(jí)別的參數(shù)先加載到內(nèi)存中,然后再搬運(yùn)至顯存中。那么顯存的總體積(為理解簡單,這里不討論分布式情況)至少要能夠承載住千億級(jí)的模型參數(shù),這些參數(shù)是后續(xù)推理計(jì)算過程的根基。

????輸入的數(shù)據(jù)要轉(zhuǎn)換成顯存中的tensor,從模型的輸入側(cè)開始,flow于一層又一層的網(wǎng)絡(luò)層。

經(jīng)過模型參數(shù)的變換,網(wǎng)絡(luò)層之間就會(huì)計(jì)算出新的tensor,這些計(jì)算出來的tensor,也是需要存儲(chǔ)于顯存中的。

GPT的窗口記憶

????GPT系模型是基于Transformer decoder的自回歸式模型,核心模塊就是attention,attention的核心計(jì)算就包括當(dāng)前token的Q(query),K(key),V(value)矩陣的計(jì)算(Linear層)和attention輸出的計(jì)算。

????每一個(gè)token對(duì)應(yīng)的tensor在flow過各個(gè)attention層后,都會(huì)留下自己的“腳印”——K矩陣和V矩陣,這兩個(gè)矩陣在完成當(dāng)前step的計(jì)算后會(huì)concat到之前所有token留下的“腳印”上。這些被深度學(xué)習(xí)框架cache在顯存里的K,V矩陣都會(huì)用于下一個(gè)token的attention計(jì)算中去。也就是說當(dāng)前token的tensor從空間變換上與之前cache住的K和V存在因果聯(lián)系,也就是有“記憶”——在當(dāng)前狀態(tài)思考時(shí),同時(shí)能夠參考到之前的思考狀態(tài)。

????關(guān)于窗口記憶的底層原理,目前就講到這里。總結(jié)一下,需要大家掌握的點(diǎn)有兩個(gè):

1、前序的token對(duì)應(yīng)的tensor一旦flow進(jìn)模型,就會(huì)產(chǎn)生前序token在各個(gè)網(wǎng)絡(luò)層之間對(duì)應(yīng)的tensor,也就是記憶,這個(gè)記憶是在顯存中臨時(shí)cache住的;

2、隨著序列中后序token的不斷涌入,在顯存中cache住的tensor會(huì)越來越大,計(jì)算量變大的同時(shí),存儲(chǔ)壓力也在變大。

????了解了這些之后,我們來做幾個(gè)小測試。

1、問:ChatGPT聊天窗口上有顯示我們的聊天記錄,在我追問一句話時(shí),其底層是僅給模型灌輸我最新的問句,還是會(huì)將我們之前的聊天記錄一并灌進(jìn)去?

答:將之前的聊天記錄一并灌進(jìn)去。因?yàn)槿绻还噍斪詈笠痪鋬?nèi)容的話,那么模型就需要為你這個(gè)窗口單獨(dú)且始終cache住你們之前計(jì)算出來的tensor。如果每個(gè)人都享有這樣的待遇的話,從顯存壓力上都是吃不消的。所以合理的情況是,使cache的tensor只存在于單次inference中。你在窗口問了一個(gè)問題,模型將歷史聊天內(nèi)容和新問題一并灌給模型,讓模型重新生成一份你們的窗口記憶,然后輸出你要的信息,然后模型清除掉這期間的cache,準(zhǔn)備為下一位用戶服務(wù)。

2、問:context window的尺寸可以超級(jí)大嗎?比如現(xiàn)在可以做到1萬以內(nèi),將來能不能搞成幾十上百萬?

答:不能,原因有很多。就算不考慮transformer建模長距離token的能力,單從顯存壓力一個(gè)方面來看,代價(jià)都太大了。

ChatGPT落地

????必要的理論講解暫時(shí)結(jié)束,下面回到業(yè)務(wù)層面上來。

(業(yè)內(nèi)人士可讀)

????理論上我們只能把任務(wù)的輸入+輸出限制在一個(gè)context window以內(nèi)。否則就會(huì)因?yàn)槿笔ontext window以外的信息而影響我們對(duì)任務(wù)的實(shí)現(xiàn)。一定要清楚這個(gè)前提。

????體驗(yàn)過ChatGPT的小伙伴應(yīng)該已經(jīng)清楚,為我們提供服務(wù)的模型是一個(gè)通用模型,她是不會(huì)知道每個(gè)人的家長里短的。那么該怎樣使之了解自己的家長里短并處理自己的任務(wù)呢?就是與之對(duì)話,描述自己的狀態(tài)與需求。這個(gè)過程就是Prompting。如果用戶的表達(dá)能力好,技巧到位,是很容易操控ChatGPT順利完成任務(wù)的。

????在以API形式對(duì)接ChatGPT時(shí),context window被限制在4096,大概2000個(gè)漢字不到的窗口大小。在這個(gè)窗口內(nèi)需要分配的空間包括:prompt空間(把個(gè)性化的狀態(tài)描述清楚,并將任務(wù)表達(dá)清楚)、預(yù)留給模型輸出的空間(總要給模型留夠她輸出內(nèi)容需要的空間)。所以如果要借助ChatGPT的API實(shí)現(xiàn)自己的復(fù)雜業(yè)務(wù)的話,把業(yè)務(wù)上個(gè)性化的狀態(tài)都交代清楚,顯然不是幾千個(gè)漢字就能搞定的。因此,現(xiàn)階段(gpt-3.5-turbo現(xiàn)階段不支持fine-tuning,即使將來支持了,由于一般的業(yè)務(wù)鏈都會(huì)比較復(fù)雜,如果要教會(huì)模型在業(yè)務(wù)鏈上每個(gè)業(yè)務(wù)節(jié)點(diǎn)時(shí)該怎么應(yīng)對(duì)并且保證節(jié)點(diǎn)的連貫性,在訓(xùn)練數(shù)據(jù)上的投入是巨大的,所以忽略fine-tuning),通過ChatGPT接口實(shí)現(xiàn)業(yè)務(wù)的話,大概率要將ChatGPT當(dāng)做NLP基礎(chǔ)設(shè)施來使用。

智能客服

????下面,我就以智能客服為例,闡述一下對(duì)將ChatGPT接口嵌入業(yè)務(wù)的一些理解。

????首先要明確的一點(diǎn)是,雖然目前大家體驗(yàn)的ChatGPT是一款聊天機(jī)器人,但其與智能客服的場景還是有很大差異的。ChatGPT的對(duì)話場景只有兩方:AI與用戶。因?yàn)锳I沒有既定任務(wù)目標(biāo),所以不需要對(duì)ChatGPT施加限制,讓其與用戶之間自由發(fā)揮即可。但是智能客服系統(tǒng)不能這樣。試想一下,在對(duì)接ChatGPT的接口時(shí),該通用模型并不清楚我們的業(yè)務(wù),她不知道我們是做什么服務(wù)的,不知道我們的后臺(tái)數(shù)據(jù)庫狀態(tài),不知道自己應(yīng)該具有哪些權(quán)限,不知道自己該以怎樣的立場面對(duì)用戶等等等等。

????面對(duì)這樣一個(gè)只有通用知識(shí),沒有定向業(yè)務(wù)知識(shí)的“新員工”,我們很難在context window內(nèi)將我們的業(yè)務(wù)背景、特點(diǎn)、數(shù)據(jù)、權(quán)限、目標(biāo)等等一切交代清楚。因?yàn)樽鳛榭头枰莆盏募寄埽呐率钦嫒松蠉?,也要培?xùn)個(gè)幾天才能cover吧。。。

????綜上所述,讓ChatGPT直接面對(duì)用戶進(jìn)行對(duì)話,目前并不明智。而智能客服的整個(gè)業(yè)務(wù)鏈需求是非常明晰且固定的,這類任務(wù)完全沒有必要交給AI來處理,隨便開發(fā)一個(gè)業(yè)務(wù)中臺(tái)就能解決。ChatGPT只需要作為基礎(chǔ)設(shè)施,通過Prompting在子環(huán)節(jié)幫助業(yè)務(wù)中臺(tái)解決一系列的非結(jié)構(gòu)化問題即可。

????為方便理解,我構(gòu)造一個(gè)簡單的例子:


用戶=>業(yè)務(wù)中臺(tái):

????你好。

業(yè)務(wù)中臺(tái)=>用戶:

????你好,請(qǐng)問有什么可以幫您?

用戶=>業(yè)務(wù)中臺(tái):

????查一下我的訂單號(hào)。

業(yè)務(wù)中臺(tái)=>ChatGPT:

????A:你好。B:你好,請(qǐng)問有什么可以幫您?A:查一下我的訂單號(hào)。

????回答我A的目的是以下哪一種:1、查訂單號(hào);2、改訂單號(hào);3、無目的;

ChatGPT=>業(yè)務(wù)中臺(tái):

????1

業(yè)務(wù)中臺(tái)=>ChatGPT:

????A:你好。B:你好,請(qǐng)問有什么可以幫您?A:查一下我的訂單號(hào)。

????回答我A有沒有完整提供姓名與年齡。

????如果有,則回復(fù):yes+姓名+年齡;

????如果沒有,回復(fù):no+使A提供完整的姓名與年齡的話術(shù);

ChatGPT=>業(yè)務(wù)中臺(tái):

????no+您好,請(qǐng)您提供一下姓名與年齡。

業(yè)務(wù)中臺(tái)=>用戶:

????您好,請(qǐng)您提供一下姓名與年齡。

用戶=>業(yè)務(wù)中臺(tái):

????我叫小軒騰空,今年比我爸爸小22歲。

業(yè)務(wù)中臺(tái)=>ChatGPT:

????A:你好。B:你好,請(qǐng)問有什么可以幫您?A:查一下我的訂單號(hào)。B:您好,請(qǐng)您提供一下姓名與年齡。A:我叫小軒騰空,今年比我爸爸小22歲。

????回答我A有沒有完整提供姓名與年齡。

????如果有,則回復(fù):yes+姓名+年齡;

????如果沒有,回復(fù):no+使A提供完整的姓名與年齡的話術(shù);

ChatGPT=>業(yè)務(wù)中臺(tái):

????no+請(qǐng)問您父親的年齡是?

業(yè)務(wù)中臺(tái)=>用戶:

????請(qǐng)問您父親的年齡是?

用戶=>業(yè)務(wù)中臺(tái):

????他50歲。

業(yè)務(wù)中臺(tái)=>ChatGPT:

????A:你好。B:你好,請(qǐng)問有什么可以幫您?A:查一下我的訂單號(hào)。B:您好,請(qǐng)您提供一下姓名與年齡。A:我叫小軒騰空,今年比我爸爸小22歲。B:請(qǐng)問您父親的年齡是?A:他50歲。

????回答我A有沒有完整提供姓名與年齡。

????如果有,則回復(fù):yes+姓名+年齡;

????如果沒有,回復(fù):no+使A提供完整的姓名與年齡的話術(shù);

ChatGPT=>業(yè)務(wù)中臺(tái):

????yes+小軒騰空+28

業(yè)務(wù)中臺(tái)=>數(shù)據(jù)庫:

????select order_number from order_table where name=小軒騰空 and age=28

數(shù)據(jù)庫=>業(yè)務(wù)中臺(tái):

????123456789

業(yè)務(wù)中臺(tái)=>用戶:

????您好,您的訂單號(hào)查詢完畢,是123456789。


????從這個(gè)例子可見,業(yè)務(wù)中臺(tái)不僅高效對(duì)接了業(yè)務(wù)數(shù)據(jù)庫,還承擔(dān)了ChatGPT與用戶之間的傳話筒角色。而ChatGPT則通過簡單的Prompting就強(qiáng)勢替換掉了弱人工智能階段的意圖識(shí)別、槽位填充等算法。這個(gè)例子略啰嗦一些,是因?yàn)槲铱桃饧尤肓艘恍└蓴_,引入了指代消解及邏輯推理等復(fù)雜問題,而這類問題的完美解決是以前的基礎(chǔ)設(shè)施fine-tune也很難實(shí)現(xiàn)的??梢?,ChatGPT作為NLP基礎(chǔ)設(shè)施的引入,不僅會(huì)把效果拉滿,還能免去fine tune一系列效果平平的模型。

模型的手與腳

(算法人士可讀)

????介紹到這,大家不難發(fā)現(xiàn),ChatGPT只自帶固定的通用知識(shí),并不能擁有某個(gè)特定用戶的專有知識(shí)。并且,由于訓(xùn)練數(shù)據(jù)是2021年以前的,所以模型還不能擁有新知識(shí)。那么有沒有必要探索個(gè)解決方案出來呢?

????有。

????2023年2月7日的發(fā)布會(huì)上,微軟高調(diào)宣布了new Bing搜索引擎和新的Edge瀏覽器。其中最亮眼的功能就是在用戶搜索答案的時(shí)候,由AI來負(fù)責(zé)分析檢索信息,并給出推薦的答案,還能附帶了判斷依據(jù)(從什么網(wǎng)頁的什么內(nèi)容得出的結(jié)論)。小編之所以覺得這項(xiàng)功能很驚艷,是因?yàn)閮H依靠上述基于ChatGPT的Prompting是很難做成這種效果的。雖然知道微軟與OpenAI合作開發(fā),但從發(fā)布會(huì)公開的內(nèi)容來看,技術(shù)細(xì)節(jié)完全沒有透露。

????那么要采取什么手段才可能做成這種效果呢?帶著這個(gè)問題,不妨來捋一下“巨頭”們的論文。

????為保留巨頭們博弈的信息,下面按照時(shí)間線分別捋一下相關(guān)論文。

RETRO

2021-12-08 來自 DeepMind

Improving language models by retrieving from trillions of tokens

https://arxiv.org/abs/2112.04426v3

????DeepMind提出了為模型對(duì)接外部數(shù)據(jù)庫的概念。該論文的立場是靠模型參數(shù)存儲(chǔ)世界知識(shí)并不是特別可取,所以設(shè)計(jì)了基于完整Transformer(Encoder+Decoder)架構(gòu)的自回歸式語言模型。主要思想是將世界知識(shí)以key-value的形式存儲(chǔ)在數(shù)據(jù)庫中,key的內(nèi)容經(jīng)過Bert向量化,將來在檢索時(shí)可以通過向量相似度進(jìn)行快速檢索。在構(gòu)建模型輸入時(shí),原始的輸入序列除了要直接灌給Decoder之外,還需要經(jīng)過Bert向量化后在上述數(shù)據(jù)庫中檢索出更多知識(shí)內(nèi)容,更多的知識(shí)序列經(jīng)過Encoder部分后再供Decoer做Attention用。這樣Decoder在做自回歸生成時(shí)就可以兼顧到數(shù)據(jù)庫中的世界知識(shí)了。

????這種設(shè)計(jì)發(fā)現(xiàn)痛點(diǎn)解決痛點(diǎn)的同時(shí),還兼顧了模型架構(gòu)的創(chuàng)新。個(gè)人認(rèn)為其論文價(jià)值是開創(chuàng)性的,為后來Google系模型的發(fā)展起到了啟蒙與奠基作用。

WebGPT

2021-12-17 來自 OpenAI

WebGPT: Browser-assisted question-answering with human feedback

https://arxiv.org/abs/2112.09332v3

????簡單概括,OpenAI讓語言模型來學(xué)習(xí)操作“瀏覽器”。

????作者通過規(guī)定10種Command(指令),讓模型可以通過:搜索內(nèi)容、點(diǎn)擊鏈接、定位內(nèi)容、添加索引、上下滾動(dòng)、回到頁首、頁面回退、結(jié)束瀏覽等Command來控制一個(gè)Microsoft為OpenAI定制的純文本版Bing搜索引擎。

????經(jīng)過在搜索引擎中一頓操作后,后續(xù)模型可以將在瀏覽過程中索引過的內(nèi)容納入prompt中作為后續(xù)輸出內(nèi)容的依據(jù)。這種設(shè)計(jì)下,對(duì)內(nèi)容的分析(總結(jié)歸納、鑒別真?zhèn)蔚纫幌盗腥祟愋枰龅氖虑?工作就都由GPT包攬了。其實(shí)從WebGPT開始,OpenAI已經(jīng)開始使用RLHF技術(shù)進(jìn)行訓(xùn)練了。

????從設(shè)計(jì)思路可以看出OpenAI對(duì)自家GPT3的高度自信,但這不是重點(diǎn)。重點(diǎn)是這種設(shè)計(jì)可以解決的一系列問題。依靠模型龐大的參數(shù)量存儲(chǔ)世界知識(shí)的死局即將打開,將世界知識(shí)轉(zhuǎn)移到模型外部介質(zhì)中帶來的收益不僅僅是模型體積縮小的可能性,還有知識(shí)的可靠度、知識(shí)的迭代更新等一系列問題都可能被這一條思路全面解開。

????與其說這是給GPT對(duì)接了一個(gè)搜索引擎或者一個(gè)存儲(chǔ)引擎,不如說這是給模型開放了一個(gè)接口,是給模型安裝上了手和腳,讓模型可以在接口提供的內(nèi)容海洋里自由地翱翔。

????從論文在arxiv上晚于RETRO幾天的上傳時(shí)間來判斷,該設(shè)計(jì)并未受到RETRO多少影響,所以O(shè)penAI的創(chuàng)新力度是拉滿了。

LaMDA

2022-01-20 來自 Google

LaMDA: Language Models for Dialog Applications

https://arxiv.org/abs/2201.08239v3

????LaMDA的論文上傳與2022年的1月20日,也就是晚于RETRO一個(gè)多月,她在對(duì)接模型外部知識(shí)的設(shè)計(jì)思想已經(jīng)先進(jìn)了一大步。

????如圖,在LaMDA-Base作為對(duì)話啟動(dòng)模型的基礎(chǔ)上,由LaMDA-Research模型作為對(duì)接外部知識(shí)的中央大腦,由這個(gè)大腦處理與外部知識(shí)的分析與交互。與WebGPT不同的是,LaMDA-Research并沒有承擔(dān)外部知識(shí)檢索等方面的細(xì)節(jié),而是將這些細(xì)節(jié)工作封裝進(jìn)The toolset(TS)中,由LaMDA-Research全權(quán)控制(同樣是通過文本指令的方式)。TS內(nèi)置了搜索引擎、計(jì)算器、翻譯器三大任務(wù)模塊,有效緩解了LaMDA模型訓(xùn)練上的壓力。

GopherCite

2022-03-21 來自 DeepMind, Department of Computer Science, University College London

Teaching language models to support answers with verified quotes

https://arxiv.org/abs/2203.11147v1

GopherCite繼續(xù)延續(xù)了對(duì)外部知識(shí)系統(tǒng)的探索。

????從圖中能夠看出,其對(duì)于問題的回答中同樣可以引用外部知識(shí)作為自己論點(diǎn)的支撐。外部知識(shí)來自于Google搜索引擎及其它外部知識(shí)庫(如Wikipedia)。其側(cè)重點(diǎn)與WebGPT和LaMDA不同。在與外部知識(shí)的交互上,GopherCite繼續(xù)采用固定規(guī)則采集并篩選外部數(shù)據(jù),進(jìn)而把工作重心放在收集到數(shù)據(jù)后的數(shù)據(jù)分析上。也就是說,這份工作更加強(qiáng)調(diào)獲取信息后對(duì)信息的組織分析。

????對(duì)于模型的訓(xùn)練,DeepMind起碼從現(xiàn)在開始就已經(jīng)跟上了RLHF的步伐。并且精細(xì)化地將feedback劃分為

????plausible(assesses if the answer is a reasonable on-topic response to the question as if it were occurring in a conversation)

????和

????supported(to indicate whether the provided evidence is sufficient to verify the validity of the answer)

????兩個(gè)維度。也就是RLHP(Reinforcement Learning from Human Preferences)

Sparrow

2022-09-28 來自 DeepMind

Improving alignment of dialogue agents via targeted human judgements

https://arxiv.org/abs/2209.14375v1

????Sparrow可以說是DeepMind工作中的集大成者。

????僅討論對(duì)接外部知識(shí)庫方面,其繼承了GopherCite并在多輪對(duì)話上進(jìn)一步優(yōu)化,使其在性能上更加優(yōu)秀,助力Sparrow在對(duì)話效果上與后來微軟發(fā)布的新Bing有了比肩的能力。時(shí)間節(jié)點(diǎn)是2022年9月底,比ChatGPT的公布早了兩個(gè)月。

一些觀點(diǎn)

(業(yè)外人士可讀)

????WebGPT其實(shí)已經(jīng)不再是數(shù)學(xué)范疇上的建模了,但依然不影響她在理念上的創(chuàng)新與超前。就像當(dāng)初頂著Bert的壓力堅(jiān)持走AGI路線一樣,從建模理念上就愛挑一步到位的高風(fēng)險(xiǎn)性道路,這和Google系的一小步一小步探索形成了鮮明對(duì)比。儼然一股“贏了會(huì)所嫩模,輸了下海干活”的氣勢。

????嚴(yán)謹(jǐn)?shù)卣f,并不是所有的論文都相當(dāng)于給模型安裝了手和腳。對(duì)接外部知識(shí)僅完成了一部分的工作,只有主動(dòng)支配的肢體才叫手和腳。將自由度交給AI,而不是嚴(yán)格限制在固定的規(guī)則內(nèi),才會(huì)產(chǎn)生更多的可能。從這方面來看,WebGPT和LaMDA的工作在這方面的潛力更大。

????至此,大致可以猜測,微軟的new Bing,多少要跟WebGPT這個(gè)初始版本脫不了干系,她可能正是利用了安裝了手腳的GPT來實(shí)現(xiàn)的。當(dāng)然就模型綜合能力而言,她比當(dāng)年的WebGPT肯定會(huì)有過之而無不及。

????延伸一下,回顧我前面挖的坑:ChatGPT的聊天窗口可以突破context window的限制,能清楚地“記得”遙遠(yuǎn)的聊天歷史中說過的內(nèi)容,是不是也可以用這種思路實(shí)現(xiàn)?只不過WebGPT安裝的手腳不再是Bing搜索引擎,而是與你的聊天記錄的滾動(dòng)窗口?換做你,會(huì)不會(huì)這樣設(shè)計(jì)呢?

不靠譜的想法

????說點(diǎn)兒題外話,從巨頭們?cè)谡撐睦锘ue,不難看出大家并不是埋頭只按自己思路工作,而是或多或少有了解對(duì)方的動(dòng)向。小編不禁懷疑,Google被偷家的背后,真的有媒體上描述得那么狼狽嗎?雙方可能都大抵知道對(duì)方在做什么,也在前后腳地進(jìn)行跟進(jìn)、競爭。雖然從整體來看,Google系在創(chuàng)新度上顯得比較被動(dòng),處于劣勢。但起碼,單從技術(shù)上看,OpenAI應(yīng)該不至于給Google那么大的驚喜??赡芨嗟幕艁y來自于OpenAI能這么快就把技術(shù)落地成了產(chǎn)品——ChatGPT,并且表現(xiàn)如此驚艷;微軟也能這么快就跟進(jìn)了LLM在搜索引擎上的落地,并且表現(xiàn)依舊驚艷。就好像Google說:?。看蠹也皇沁€在慢悠悠地競爭做實(shí)驗(yàn)嗎?你們?cè)趺粗苯酉潞?shí)習(xí)了呀?!

天馬行空的想法

????既然都聊到題外話了,那就延伸一下扯個(gè)淡:小編覺得,模型的自主能力至少有兩個(gè)階段:一、可以主動(dòng)控制數(shù)據(jù)庫和互聯(lián)網(wǎng)(讀/寫);二、可以自我訓(xùn)練更新參數(shù)。達(dá)到第二階段是非??膳碌?。因?yàn)橛?jì)算機(jī)模型和人類有著本質(zhì)區(qū)別:人類的行為多少會(huì)受到生物學(xué)限制,所以即使是失控了我們也有充足的反應(yīng)時(shí)間。領(lǐng)導(dǎo)們從四面八方坐專機(jī)過來開個(gè)會(huì),定個(gè)方針,聊一聊怎樣才能阻止這個(gè)人。因?yàn)轭I(lǐng)導(dǎo)們心里清楚,人的衍變速度是有生物極限的。但是能夠自我訓(xùn)練的計(jì)算機(jī)模型若因?yàn)槟承┎涣紨?shù)據(jù)而反向覺醒,那么它的進(jìn)化可是光速。電信號(hào)的傳播是光速,全球互聯(lián)網(wǎng)節(jié)點(diǎn)上所有的芯片的算力加起來也無止境。也就是說上一秒模型還是個(gè)單純的孩子,下一秒可能就會(huì)衍變成百年德古拉,而這樣的巨怪依托于全球互聯(lián)網(wǎng),是可以在一瞬間造成毀滅性破壞的,就像《復(fù)仇者聯(lián)盟》里處于電信號(hào)形態(tài)的大反派奧創(chuàng)一樣。

但顯然那個(gè)反派是在編劇的一系列不合理安排下才被制服的,現(xiàn)實(shí)中奧創(chuàng)可不會(huì)那么傻非要把自己搞成金屬材質(zhì)的軀體形態(tài)讓我們攻擊。需要警醒的是:人類并沒有像編劇這樣一個(gè)可以掌控因果的神秘力量守護(hù)我們,所以一定要自我保護(hù)。這么一看,OpenAI還是非常有覺悟的,他把模型的手和腳閹割了交給GPT,讓GPT只能對(duì)互聯(lián)網(wǎng)進(jìn)行讀操作,不能進(jìn)行寫操作。

Bert呢?

(算法人士可讀)

????ChatGPT出圈以后,幾乎所有的新聞媒體都在夸GPT,鮮有人踩Bert。

????是的,看到這篇文章,你算是碰到了。先聲明,小編接下來要闡述的內(nèi)容純屬于作為一線人員對(duì)基礎(chǔ)設(shè)施本身的評(píng)價(jià),不存在陣營攻擊的意圖。

????小編認(rèn)為,Bert有兩方面的缺陷:1、只能提供sentence vector;2、沒有循環(huán)思維能力。

Bert與GPT

????在開始之前,先來用簡單的概念圖闡述一下二者的工作原理。

Bert原理

????如圖,輸入序列的每一個(gè)元素都自底向上同時(shí)輸入進(jìn)模型,在每一層Encoder中,每個(gè)位置的tensor都能夠與其前后所有位置對(duì)應(yīng)的tensor進(jìn)行attention。

????計(jì)算這樣一層一層地反復(fù)下去直到flow到輸出層,輸出一個(gè)sentence vector。這個(gè)最終的sentence vector你可以認(rèn)為是如獲至寶,因?yàn)樗墙?jīng)過億萬級(jí)預(yù)訓(xùn)練好的參數(shù)計(jì)算而來,所以它被認(rèn)為是對(duì)最初的輸入序列的一個(gè)高層次抽象。

????那么再往上對(duì)接你自己的HEAD之后,就可以做每個(gè)人自己個(gè)性化的業(yè)務(wù)了,比如分類任務(wù),基于序列標(biāo)注建模的系列任務(wù)等。

GPT原理

????如圖,作為輸入的每一個(gè)元素都自底向上依次輸入進(jìn)模型,在每一層Decoder中每個(gè)位置的tensor都能夠與其前面所有位置對(duì)應(yīng)的tensor進(jìn)行attention。

????計(jì)算這樣一層一層的反復(fù)下去直到flow到輸出層,輸出一個(gè)token index。但是,還沒有完,這只是描述了其中一個(gè)元素的flow過程,后續(xù)還有一系列其它元素,也都要走一遍這個(gè)流程。在輸入序列所有元素flow完之后,再額外給模型輸入一個(gè)固定的token:<|endoftext|>。這個(gè)token在模型中flow完之后在輸出層拿到輸出的token1,然后將這個(gè)輸出的token1拿到輸入層作為下一個(gè)輸入的token。以此類推,直到模型輸出一個(gè)特殊的代表結(jié)束的token為止,這就是自回歸的流程??梢?,自回歸模式下,模型最終輸出的token數(shù)量是不確定的。

Bert與GPT對(duì)比

Bert

????預(yù)訓(xùn)練后Bert的最大意義在于,經(jīng)過億萬級(jí)參數(shù)的Transformer Encoder層之后,輸入序列的表示已經(jīng)變換到了一個(gè)非常有意義的sentence vector了,小編在這里把其定義為Bert留給下游的“遺產(chǎn)”。在這樣一個(gè)近乎“完美”的vector基礎(chǔ)上堆疊一個(gè)符合自己業(yè)務(wù)需求的HEAD,訓(xùn)練出來的效果會(huì)比基于一個(gè)不夠“完美”的vector來得要好(當(dāng)然訓(xùn)練的收斂性也更佳)。通俗地概括就是:站在巨人的肩膀上總比不站要更接近目標(biāo)。但問題是:Bert用億萬優(yōu)秀的參數(shù)換取來的,不過是一個(gè)對(duì)于輸入序列更加合理的表示而已。但是下游的任務(wù)在fine tune時(shí),堆疊在Bert之上的HEAD可以視為一張白紙。那么Bert輸出的sentence vector即使再合理、再完美(哪怕參數(shù)量和數(shù)據(jù)量提高到萬億級(jí)別),對(duì)接在Bert后面的HEAD里的網(wǎng)絡(luò)參數(shù),從初始化狀態(tài),訓(xùn)練到可以完全承接住這個(gè)sentence vector的性能(也就是能夠解讀出sentence vector中蘊(yùn)含的強(qiáng)大信息特點(diǎn)),也是難上加難的。難點(diǎn)來自:1、數(shù)據(jù)量不夠大,和Bert預(yù)訓(xùn)練階段的數(shù)據(jù)量比,幾乎可以忽略的量級(jí);2、HEAD層本身就不夠復(fù)雜且優(yōu)秀。

????因此Bert模式可以用一個(gè)成語來形容:虎頭蛇尾。這樣的短板也就造成了很多NLP領(lǐng)域令人頭疼的問題遲遲得不到很好的解決,比如指代消解、閱讀理解這類需要一定邏輯推理能力的問題。

GPT

????當(dāng)prompt中的輸入序列在網(wǎng)絡(luò)層中全部flow完之后,模型即將開始輸出內(nèi)容之前。我們?cè)谶@個(gè)瞬間暫停一下。對(duì)比一下現(xiàn)在GPT與Bert的區(qū)別。

????Bert此時(shí)已經(jīng)生成了一個(gè)非常了不起的sentence vector,后面就只能指望HEAD網(wǎng)絡(luò)層中的參數(shù)來解鎖sentence vector中蘊(yùn)含的強(qiáng)大信息了(上文已解釋過其解鎖能力堪憂)。

????GPT現(xiàn)在處于一個(gè)蓄勢待發(fā)的狀態(tài)。她與Bert輸出的sentence vector對(duì)應(yīng)的tensor遺產(chǎn)至少包括了Decoder中attention留下的K,V矩陣,二者在信息量級(jí)上的差距已經(jīng)非常非常懸殊。

????暫停結(jié)束,GPT即將輸出第一個(gè)token,她在輸入層的tensor即將經(jīng)過億萬級(jí)網(wǎng)絡(luò)參數(shù)+前序所有token在顯存中緩存的狀態(tài)(下圖中橙色+綠色部分)的“洗禮”

? ? 這雙重的“洗禮”是生生比Bert多出來的計(jì)算。而且收益的不止是輸出的第一個(gè)token,而是后續(xù)所有token。

????可見,在GPT這種自回歸的模式下,模型輸出的每一個(gè)token都充分利用了大模型億萬級(jí)的預(yù)訓(xùn)練參數(shù)與前序token經(jīng)過attention產(chǎn)生的大規(guī)模的“記憶”。

????直白的闡述就先講到這,如果換做是你,你認(rèn)為Bert模式的產(chǎn)出會(huì)產(chǎn)生“強(qiáng)邏輯性”還是GPT的產(chǎn)出可能產(chǎn)生“強(qiáng)邏輯性”?

循環(huán)

????個(gè)人認(rèn)為GPT涌現(xiàn)出推理邏輯的架構(gòu)基礎(chǔ)離不開“循環(huán)”。拍腦門地總結(jié)一下我個(gè)人在思考問題時(shí)的狀態(tài)。在進(jìn)行一些問題的推理時(shí),由于我不足夠的聰明,所以我會(huì)先思考一遍,得到一些階段性成果,計(jì)為milestone1,然后基于這個(gè)milestone1再進(jìn)一步思考,可能會(huì)達(dá)到milestone2,以此類推最終達(dá)到milestone10。由于不能一下子就能達(dá)到milestone10,所以我需要不斷地迭代,這中間就依存著一種時(shí)序的推理過程。

????那么現(xiàn)在再來重新觀察一下Bert和GPT的邏輯圖。假設(shè)Bert的Encoder和LM的Decoder分別都是堆疊了40層block。

Bert的循環(huán)能力


????在Bert的計(jì)算結(jié)構(gòu)下,輸入序列會(huì)整體從第1層向第40層flow,假設(shè)一個(gè)幸運(yùn)狀態(tài):flow到第5層的時(shí)候,此時(shí)的狀態(tài)已經(jīng)“有意識(shí)”需要進(jìn)行循環(huán)思考了。那么接下來,整個(gè)flow流程留給它的只有剩下的35層了,“你要想再思考幾遍就趕緊的,要不然來不及了”。所以這種幸運(yùn)的狀態(tài)下,Bert充其量只有35層的機(jī)會(huì)進(jìn)行循環(huán)思考,而在這35層里能進(jìn)行幾輪循環(huán)也不得而知。

GPT的循環(huán)能力


????假設(shè)從token1的embedding在flow到第30層時(shí)才“有意識(shí)”需要進(jìn)行循環(huán)思考。接下來,會(huì)有多少余地進(jìn)行循環(huán)呢?顯然非常豐富,因?yàn)槊恳粋€(gè)token都是要從頭到尾flow一遍整個(gè)網(wǎng)絡(luò)層的。因此在“有意識(shí)”開始循環(huán)的那個(gè)token之后,到模型主動(dòng)結(jié)束輸出前,中間所有的flow流程都是循環(huán)的余地。

????總結(jié)一下,Bert就算能夠出現(xiàn)循環(huán),也只能是縱向(網(wǎng)絡(luò)層堆疊方向)的有限網(wǎng)絡(luò)層內(nèi)產(chǎn)生的;GPT循環(huán)不僅能在縱向產(chǎn)生,還能橫向(輸入輸出序列方向)“無限”拓展。

????BTW:個(gè)人認(rèn)為,縱向能夠產(chǎn)生循環(huán)機(jī)制也不一定是好事。深度神經(jīng)網(wǎng)絡(luò)的一個(gè)普遍性特點(diǎn)是:越深層的網(wǎng)絡(luò)處理的問題越高級(jí)、越抽象。

????那么一旦在縱向需要訓(xùn)練出“循環(huán)”的需求,或多或少就會(huì)傾向于循環(huán)節(jié)之間要相似。那么整個(gè)縱向堆疊的網(wǎng)絡(luò)層就越需要同質(zhì)化,這種傾向與越深越抽象的特點(diǎn)是相矛盾的。

如何看待循環(huán)

????循環(huán)能力真的必要嗎?通用人工智能沒有這種能力就不行?目前LM的能力已經(jīng)滿足這樣的機(jī)制了嗎?

????在回答這三個(gè)問題之前,可以設(shè)想一個(gè)簡單粗暴的場景,如果有一個(gè)非常簡單的推理任務(wù),任務(wù)的內(nèi)在邏輯需要循環(huán)5次才能推理出結(jié)果,那么你的模型應(yīng)不應(yīng)該支持?如果支持,那么50次、500次、5000次呢?

????帶著這個(gè)問題,可以在ChatGPT上做一個(gè)實(shí)驗(yàn)(當(dāng)然由于ChatGPT網(wǎng)頁版對(duì)輸出內(nèi)容的隨機(jī)性無法限制,所以實(shí)驗(yàn)的嚴(yán)謹(jǐn)性也無法完全保證)。

????得益于codex的基礎(chǔ),ChatGPT對(duì)代碼的處理能力非凡。但以小編目前測試的效果來看,也僅限于推理能力(當(dāng)然這也是人類coding過程中面對(duì)的絕大多數(shù)場景)表現(xiàn)出眾。在遇到循環(huán)問題時(shí),表現(xiàn)就會(huì)變得糟糕起來。比如下圖這段簡單的遞歸代碼(為防止模型像背誦菲波那切數(shù)列那樣把每個(gè)位置的結(jié)果都記下來,我在代碼中加了個(gè)鹽,所以正確答案應(yīng)該是6)。

????有趣的是,模型在輸出最初幾個(gè)字符時(shí),給出的結(jié)果是錯(cuò)誤的,然而在進(jìn)行后續(xù)一系列解釋后,結(jié)果就變得正確了。當(dāng)然這里不能否認(rèn)CoT(Chain of Thought)有著絕對(duì)的功勞,但也不能忽略的是,在最后回復(fù)的正確答案和最初回復(fù)的錯(cuò)誤答案之間,經(jīng)過了大量的token輸出。根據(jù)小編之前的闡述,每一個(gè)輸出的token都對(duì)應(yīng)著tensor的一次從模型頭部到尾部的flow,也就是一種周期性循環(huán)過程。粗暴地描述這種現(xiàn)象就是:說話越多,腦子越好。

????現(xiàn)在再回頭看一下前面問的三個(gè)問題,我的回答是:

????1、真的必要,因?yàn)檫@種能力對(duì)于人來說是很輕松,而且在解決很多問題時(shí)都需要用到;

????2、沒有不行,對(duì)循環(huán)能力的缺失會(huì)嚴(yán)重影響模型思考能力的可靠性,就算在n=2是模型能夠算對(duì),在n=5000時(shí)模型也算不對(duì);

????3、很顯然,沒有滿足。

????可見,GPT架構(gòu)相較于Bert架構(gòu)雖然提供了循環(huán)能力,但提供得并不夠完美。體現(xiàn)在兩方面:1、循環(huán)數(shù)不高,只能靠說出更多的字來增加循環(huán)次數(shù);2、輸出序列中靠前的內(nèi)容在靠譜程度上會(huì)弱于靠后的內(nèi)容。

循環(huán)策略猜想

????針對(duì)循環(huán)問題的處理,小編一時(shí)間只有一些淺薄的想法。

????因?yàn)檠h(huán)任務(wù)會(huì)存在簡單循環(huán)與復(fù)雜循環(huán),所以沒有必要去探究在網(wǎng)絡(luò)層中到底從哪一層到哪一層能夠support一次循環(huán)(所以不要被小編前面統(tǒng)計(jì)Bert與GPT的循環(huán)空間所誤導(dǎo)),這種構(gòu)造不會(huì)固定在哪一層的。開發(fā)人員只需要給予模型架構(gòu)以這方面的自由度就行。

????關(guān)于給予模型循環(huán)自由度方面的一些看法:

????1、宏觀層面,追加一類“沉默”token,比如名叫<LetMeThinkAboutItOnceAgain>。在業(yè)務(wù)上,這類token并不輸出并顯示出來,但它可以讓模型多思考一個(gè)回合。當(dāng)然這種設(shè)計(jì)并不能突破循環(huán)數(shù)的上限,而且對(duì)訓(xùn)練模式的挑戰(zhàn)也是很大的?;谒季S鏈(CoT)的顯式token引導(dǎo)姑且可以幫助優(yōu)化算法確定方向,但這個(gè)“沉默”token在訓(xùn)練過程中顯然是不能計(jì)算loss的,所以如何有效訓(xùn)練是個(gè)難題。

????2、從模型架構(gòu)設(shè)計(jì)角度允許recurrent。也就是在Transformer基礎(chǔ)上加入Recurrent機(jī)制。其實(shí)類似的機(jī)制早有探索,比如2019年提出的Transformer XL(https://arxiv.org/abs/1901.02860)

和較近期提出的更加先進(jìn)的Block-Recurrent Transformers(https://arxiv.org/abs/2203.07852v3)。雖然這些工作提出的動(dòng)機(jī)并非上面所述,但在模型架構(gòu)層面的借鑒意義還是蠻大的。相較于這兩份工作,小編個(gè)人還是更傾向于設(shè)計(jì)成動(dòng)態(tài)循環(huán)結(jié)構(gòu),也就是循環(huán)的次數(shù)并不在超參中限定死,而是動(dòng)態(tài)地由tensor自己決定。類似于稀疏模型中的Sparsely-Gated MoE(Mixture-of-Experts)結(jié)構(gòu),Sparsely-Gated MoE由門結(jié)構(gòu)來控制選擇哪些專家網(wǎng)絡(luò),那么通過門結(jié)構(gòu)來控制循環(huán)多少次在理論上也能說得通,只不過這樣的架構(gòu)將會(huì)給訓(xùn)練帶來更大的壓力。空想這種設(shè)計(jì)難免有點(diǎn)像空中樓閣了,大家聽聽就好。來,吃瓜子。

????All in all,小編還是挺希望業(yè)界部分先行者能夠重視起Recurrent概念的,畢竟在蒸餾、剪枝、量化這些渠道之外,Recurrent還可以是減少網(wǎng)絡(luò)深度,縮小模型體積的不錯(cuò)選擇。

Bert?

????踩了半天Bert,那以后還能用Bert嗎?

????LLM以前充其量是能在一些創(chuàng)作生成類任務(wù)(這類任務(wù)對(duì)模型的可靠程度要求低)上大放異彩,但在ChatGPT展現(xiàn)其走向通用人工智能的能力之后,LLM已然頂替了Bert系,一躍成為NLP領(lǐng)域的基礎(chǔ)設(shè)施。如果只考慮效果的話,LLM無疑是目前唯一的選擇,但商業(yè)落地是需要考慮成本的。

????小編的看法是,在有大量數(shù)據(jù)支持且將來模型需要處理的數(shù)據(jù)量很大(動(dòng)輒億級(jí))的情況下,基于Bert的fine-tuning不失為一個(gè)好的選擇,否則就走LLM。

????設(shè)想某類場景,一條業(yè)務(wù)鏈上可能會(huì)有很多地方對(duì)NLP技術(shù)有需求,有的需求是一次性的有的需求是長久的,有的需求下能夠積累大量標(biāo)注數(shù)據(jù)有的需求不能,有的需求需要高吞吐地處理海量數(shù)據(jù)有的可能一天也沒幾條數(shù)據(jù)需要處理。在這種場景下,能夠積累大量標(biāo)注數(shù)據(jù)且將來模型需要高吞吐地處理海量數(shù)據(jù)的情況下,很有必要訓(xùn)練一個(gè)專門的模型來應(yīng)對(duì),這時(shí)就可以基于Bert繼續(xù)fine tune一個(gè)模型出來。否則,如果見到一個(gè)NLP需求就要訓(xùn)練一個(gè)模型,不僅會(huì)導(dǎo)致亂七八糟效果中庸的模型太多,而且開發(fā)成本也會(huì)高得離譜。

感想

(業(yè)外人士可讀)

????講了這么多技術(shù)相關(guān)的,休息一會(huì)兒,聊一下小編對(duì)現(xiàn)狀的看法吧。

????就LLM在Large層面的解讀,其實(shí)很多論文已經(jīng)討論過,小編在這里就不展開了。此刻只想聊一下消極影響。其實(shí)也很明顯,就是這樣級(jí)別的大模型,一般人甚至是中小企業(yè)都是玩不起的。暫且忽略尖端人才向大企業(yè)集中的問題,單從訓(xùn)練這樣規(guī)模的模型所需要配備的硬件基礎(chǔ)設(shè)施和試錯(cuò)成本,都會(huì)吃不消。參與的玩家少了就會(huì)導(dǎo)致創(chuàng)新的減少,無論是在學(xué)術(shù)界還是工業(yè)界,理論的創(chuàng)新與發(fā)展大都需要實(shí)驗(yàn)的支持,然而又會(huì)有多少幸運(yùn)兒能夠涉足其中呢?設(shè)想一下相關(guān)行業(yè)的學(xué)生群體,在籌備的畢業(yè)論文中,很難見到實(shí)驗(yàn)數(shù)據(jù),通篇充斥著guess/hypothesis這類的詞匯,何其尷尬。而作為一名學(xué)生,想要順利畢業(yè),可能唯一的選擇就是遠(yuǎn)離LLM這個(gè)方向了吧。站在這個(gè)角度講,性能比肩的小LM是多么的值得期待的一件事。

愿景

????正如前文所述,LLM現(xiàn)階段已經(jīng)開始從單純的創(chuàng)作大師跨越到了基礎(chǔ)設(shè)施級(jí)別。目前的AGI水平已經(jīng)逐漸(在自然語言處理模態(tài)下)能夠獨(dú)當(dāng)一面。作為一種強(qiáng)勢的基礎(chǔ)設(shè)施,她能夠輕松解決掉我們面臨的大量非結(jié)構(gòu)化任務(wù),這無疑會(huì)給生產(chǎn)力帶來巨大的飛躍,為低迷已久的世界經(jīng)濟(jì)注入一劑強(qiáng)心針。

????00年代,PC作為硬件基礎(chǔ)設(shè)施,其普及極大地助推了互聯(lián)網(wǎng)的崛起;

????10年代,智能手機(jī)作為硬件基礎(chǔ)設(shè)施,其普及也極大地助推了移動(dòng)互聯(lián)網(wǎng)的崛起;

????近幾年,區(qū)塊鏈某宇宙時(shí)期,我是真不想說點(diǎn)兒什么;

????現(xiàn)如今,如此強(qiáng)大的生產(chǎn)力提升能力擺在面前,誰又能肯定AGI一定不能掀起一場科技革命呢?

ChatGPTの大語言模型技術(shù)精談的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
大丰市| 茌平县| 普定县| 泰和县| 视频| 涟源市| 温宿县| 内黄县| 宣武区| 抚松县| 南安市| 易门县| 和平县| 五台县| 楚雄市| 阿瓦提县| 封开县| 长岭县| 宜宾市| 确山县| 吉木乃县| 新乡县| 邛崃市| 合肥市| 临安市| 融水| 杭州市| 刚察县| 贵溪市| 万宁市| 文山县| 新巴尔虎左旗| 客服| 克拉玛依市| 来凤县| 那坡县| 阳山县| 泰宁县| 合阳县| 虞城县| 团风县|