AIGC的浪潮下,文本生成發(fā)展得怎么樣了?
1 月 12 日,在機(jī)器之心 AI 科技年會(huì) AIGC 技術(shù)應(yīng)用論壇上,瀾舟科技創(chuàng)始人兼 CEO、中國計(jì)算機(jī)學(xué)會(huì) CCF 副理事長、創(chuàng)新工場首席科學(xué)家周明發(fā)表了主題演講《文本生成研究進(jìn)展》。

以下為演講的詳細(xì)內(nèi)容,機(jī)器之心進(jìn)行了不改變原意的編輯、整理:
我今天主要介紹一下文本生成,尤其是可控文本生成目前的幾個(gè)重要研究進(jìn)展,包括文本生成基本方法與應(yīng)用、文本生成中的可控方法研究、文本生成中如何融入知識和常識,長文本生成方法以及文本生成中的解碼方法。在此之后,我會(huì)介紹一下瀾舟科技在文本生成方面的最新項(xiàng)目。

首先我來介紹一下文本生成的任務(wù)和主流的框架。文本生成的任務(wù)定義是輸入結(jié)構(gòu)化的數(shù)據(jù)、圖片或者文本來生成一段新的文本。例如輸入結(jié)構(gòu)化的數(shù)據(jù)、輸入一張圖片,或者輸入若干關(guān)鍵詞來生成文本。目前的主流生成模型都是基于 Transformer 架構(gòu)的編碼器 - 解碼器框架,如下圖所示。

Transformer 是谷歌在 2017 年提出的一個(gè)架構(gòu)體系,可以利用多頭注意力模型來擴(kuò)展不同的信息抽取能力,并且利用多層的神經(jīng)網(wǎng)絡(luò)架構(gòu)來實(shí)現(xiàn)更加精準(zhǔn)的編碼和解碼過程。
可控文本生成是指我們希望生成文本不是隨意生成的,而是能夠把一些要素添加進(jìn)去,比如情感的要素,關(guān)鍵詞的要素,主題的要素和事實(shí)的要素,如下圖所示。

面向文本生成的預(yù)訓(xùn)練模型,有像 GPT 這樣的自回歸解碼器模型,例如最新的 ChatGPT,它主要的模型架構(gòu)是 GPT-3.5 的 InstructGPT。當(dāng)然也有一些其他類型的模型,例如 BART 是自編碼解碼器模型,還有 T5 是多任務(wù)編碼器 - 解碼器模型。

文本生成面臨的問題很多,我這里總結(jié)了 4 點(diǎn):
常識錯(cuò)誤;
內(nèi)容邏輯錯(cuò)誤;
內(nèi)容發(fā)散;
語句重復(fù)。

解決當(dāng)下文本生成問題的關(guān)鍵技術(shù)有如下幾點(diǎn):第一是如何來改進(jìn)文本生成的可控性;第二是如何改進(jìn)事實(shí)的正確性;第三是如何改進(jìn)文本生成的前后一致性和連貫性。第四是如何克服重復(fù)生成,如何增加多樣性等等。下面我就逐一快速介紹一下。

首先我介紹一下文本生成中的可控方法??煽胤椒壳坝袔追N:
第一種是調(diào)整解碼策略,使得生成的結(jié)果盡可能地包含目標(biāo)的內(nèi)容,也就是我們所指定的主題關(guān)鍵詞;
第二種是調(diào)整訓(xùn)練的目標(biāo)函數(shù),構(gòu)建面向特定任務(wù)的可控訓(xùn)練目標(biāo)函數(shù);
第三種是調(diào)整模型輸入,通過輸入控制元素來影響生成的結(jié)果。

下面我對這幾種方法逐一展開介紹。第一個(gè)是基于加權(quán)解碼的可控文本生成。當(dāng)我們想生成一句 positive 的話,就會(huì)希望下一個(gè)生成的詞接近 positive,所以這就需要添加一個(gè)控制器。原始模型是基于前面的詞預(yù)測下一個(gè)詞的 GPT 模型。加一個(gè)控制器就意味著如果下面的詞是 positive 的,我們就更加傾向于選擇它,因此加了一個(gè)這樣的控制器來控制解碼的過程。其中,控制器中的參數(shù) λ 是固定的。

我們有時(shí)需要根據(jù)上下文信息,增加或減少某些詞的輸出概率,做一個(gè)動(dòng)態(tài)的調(diào)整,所以我們可以加入一個(gè)動(dòng)態(tài)的解碼權(quán)重。

可控文本生成也可以用 prompt 的方式。我們已經(jīng)有一個(gè)預(yù)訓(xùn)練模型,可以用一些提示詞的方式來生成可控結(jié)果,比如我們要生成正面情感的一句話,可以輸入「這首歌充滿感情」這句話,輸出的結(jié)果可能就傾向于正面。但是這種方法需要人工地針對不同場景找到相應(yīng)的提示詞。這是很花工夫的一種方法。

另一種方法,我們針對可控要素生成一個(gè)連續(xù)向量(prefix)來代替具體的 prompt,與傳統(tǒng)的經(jīng)典預(yù)訓(xùn)練模型(例如 GPT)組合在一起來體現(xiàn)某些可控要素。

有一種特別簡單的方法是我每生成一種情感或者要素,就構(gòu)建一個(gè)網(wǎng)絡(luò),每次都從頭開始訓(xùn)練網(wǎng)絡(luò)。還有一種改進(jìn)的方法是基礎(chǔ)的網(wǎng)絡(luò)不變,只是每次針對具體的生成目標(biāo)來調(diào)整 prompt。這方面已經(jīng)出現(xiàn)了一些具體的進(jìn)展,比如基于對比學(xué)習(xí)的可控文本生成方法:要生成一個(gè) positive 的要素,在做 positive 要素的模型時(shí),就試圖讓生成結(jié)果盡可能逼近 positive,遠(yuǎn)離 negative。這就是將對比學(xué)習(xí)的機(jī)制引入到模型訓(xùn)練中。

還要特別關(guān)注一個(gè)叫可持續(xù)學(xué)習(xí)的方法。通常在訓(xùn)練一個(gè)文本生成模型時(shí),每添加一個(gè)要素,都可能重新訓(xùn)練或者調(diào)整網(wǎng)絡(luò)。我們考慮在增加一個(gè)新要素時(shí),能否復(fù)用(reuse)已有的網(wǎng)絡(luò)。這里有一種研究方法是在層間加入一個(gè)自適應(yīng)的組合模塊,來進(jìn)行輕量化的微調(diào),提高訓(xùn)練效率。

當(dāng)我們加入一些自適應(yīng)的組合模塊,只需調(diào)整需要調(diào)整的模塊。并且在加入新任務(wù)時(shí),最大限度地 reuse 已有的一些模塊,來提高訓(xùn)練效率。這種具體的學(xué)習(xí)方法是當(dāng)面對一個(gè)有新要素的文本生成任務(wù),我們通過計(jì)算的方法來選擇網(wǎng)絡(luò)之間已有的自適應(yīng)模塊,選擇跟訓(xùn)練目標(biāo)最接近的模塊,這樣就從每一層到最后一層形成一個(gè)選擇路徑。如果沒有一個(gè)特別合適的已有自適應(yīng)模塊,那么就添加一個(gè)新的自適應(yīng)模塊。然后再利用大規(guī)模的微調(diào)(fine-tune) 數(shù)據(jù)調(diào)整整個(gè)網(wǎng)絡(luò),就可以得到一個(gè)針對新要素的文本生成網(wǎng)絡(luò)。

下面我解釋一下文本生成中如何融入常識和知識。在真實(shí)世界中,無論是不同的場景,不同的領(lǐng)域,都有自己的一些特定知識體系,包括常識知識和事實(shí)知識。我們希望在文本生成中融合這些常識和知識。一種通用的方法是根據(jù)文本生成的輸入和關(guān)鍵詞或要素,來觸發(fā)相應(yīng)的知識庫條目,并融入到生成模塊中,以產(chǎn)生一個(gè)更好地體現(xiàn)知識和常識的輸出。

另一種方法是隱含地融合常識和知識,就是我們把常識 - 結(jié)構(gòu)化的三元組轉(zhuǎn)換成常識的自然語言描述形式,并把這些自然語言的描述形式加入到訓(xùn)練數(shù)據(jù)中繼續(xù)訓(xùn)練,GPT 就是這種文本生成模型。

我們也可以顯式地融合常識和知識,具體流程如下:首先根據(jù)上文來預(yù)測未來的關(guān)鍵詞,從常識和知識庫中檢索相應(yīng)的常識和知識條目,把檢索結(jié)果加入到原有的上文中,并依此得到一個(gè)新的輸出結(jié)果。

還有一種方法是根據(jù)輸入得到一個(gè)結(jié)果,動(dòng)態(tài)地生成一些參考知識條目,把這些知識條目再融入原輸入來得到一個(gè)輸出。這個(gè)任務(wù)就變成根據(jù)一個(gè)輸入的句子,如何來觸發(fā)(trigger)或者生成相應(yīng)的知識條目。假設(shè)我們有大規(guī)模的對話 Q&A 和一個(gè)知識庫,首先我們根據(jù) Q&A 尋找出匹配的知識條目,得到訓(xùn)練文本,根據(jù)訓(xùn)練文本,輸入一個(gè)句子,就可以觸發(fā)或者生成一些新的知識條目,我們選擇概率最大者加入到生成過程中。

下面我再介紹一下長文本生成的方法。由于建模能力的問題,非常長的文本就沒辦法生成很好的結(jié)果了。一種簡單的方法就是兩階段生成方法。
首先我們做一個(gè) planning 的階段,生成一些關(guān)鍵詞來代表 storyline。把輸入和 storyline 都加入到文本生成模塊中,作為輸入來產(chǎn)生一個(gè)更長的句子。這樣的過程可以迭代分層,每次產(chǎn)生更多的 storyline,直到產(chǎn)生足夠的 storyline,然后再去得到一個(gè)文本生成的結(jié)果。

還有一種方法是基于隱變量的長文本生成方法。這種方法的思路是:一篇自然的文本可以分割為多個(gè)連續(xù)的語義片段,每個(gè)片段圍繞一個(gè)主話題展開;提出片段級詞袋重構(gòu)目標(biāo),使離散隱變量建模每個(gè)語義片段中的話題信息;利用話題感知的隱變量序列指導(dǎo)文本生成,使生成的內(nèi)容與輸入更相關(guān)且語義片段之間具有語義關(guān)聯(lián)。

我們也可以基于動(dòng)態(tài)規(guī)劃來做長文本生成?,F(xiàn)在的兩階段長文本生成,規(guī)劃和生成二者是分離的,存在錯(cuò)誤累積問題?;趧?dòng)態(tài)規(guī)劃的方法就是將規(guī)劃和生成聯(lián)合在一個(gè)模型中,并給定一個(gè)文本生成的輸入來動(dòng)態(tài)產(chǎn)生一個(gè)隱變量(SN),再生成組成下一個(gè)句子的單詞序列,同時(shí)生成代表下一個(gè)句子的隱變量,然后持續(xù)生成。

上圖右是具體的流程示意圖,給定輸入,編碼器的輸出結(jié)果作為解碼器的輸入,解碼器先輸出代表一個(gè)句子的隱變量 SN_1,然后隱變量生成 Bag-of-words,用于詞序列信息的學(xué)習(xí),然后基于生成的前文和 SN_1 再生成下一個(gè)句子的隱變量,持續(xù)地進(jìn)行輸出。
這樣就相當(dāng)于先生成了一個(gè)句子的架構(gòu),再根據(jù)句子架構(gòu)生成具體的詞序列。這樣就對整體句子結(jié)構(gòu)有很好的控制能力。也可以利用記憶網(wǎng)絡(luò)的長文本生成方式來做,每一層都加入一個(gè)記憶網(wǎng)絡(luò)。在輸出的時(shí)候,記憶網(wǎng)絡(luò)跟當(dāng)前 encoder 的結(jié)果一起決定輸出的結(jié)果。我這里就不一一介紹記憶網(wǎng)絡(luò)的訓(xùn)練公式了。

下面我介紹一下文本生成中解碼方法的研究。文本生成一般是依靠一個(gè)編碼器和一個(gè)解碼器,解碼器是逐詞進(jìn)行解碼。

神經(jīng)文本生成模型常用的解碼策略是 Greedy search 和 Beam search。它們都存在一個(gè)問題,就是輸出的時(shí)候可能出現(xiàn)重復(fù)的詞或者片段,這個(gè)不容易控制。

當(dāng)前針對這個(gè)問題的兩種已有方法,一個(gè)叫 Top-K k sampling,一個(gè)叫 Top-p sampling,都是從概率最高的 n 個(gè)詞中采樣,或在概率最高的空間內(nèi)選擇,隨機(jī)選擇輸出的結(jié)果,再持續(xù)往下輸出,這樣就改進(jìn)了多樣性。

為了解決重復(fù)生成的問題,這類方法還引入了一種叫對比訓(xùn)練的方法。如果輸出的結(jié)果跟前面已經(jīng)生成的結(jié)果有很大的重復(fù)性,則對它進(jìn)行一定程度的懲罰,以減少重復(fù)生成的情況,生成多樣化的文本。

這里我簡單總結(jié)一下,剛才我介紹了可控文本生成的關(guān)鍵技術(shù)、可控生成融入常識和知識、文本生成解碼方法等等。

未來還有很多需要探索的方向,例如現(xiàn)在的可控主要集中在情感關(guān)鍵詞方面,而篇章的可控,多樣性的可控,細(xì)粒度的可控目前都做得不夠。在融入常識和知識方面,當(dāng)前的方法都是利用知識圖譜中的三元組,這種方法知識獲取難度比較高,還需要進(jìn)行有效改進(jìn)。
長文本生成則需要對主題一致性、事實(shí)一致性、文章層次結(jié)構(gòu)和前后邏輯進(jìn)行學(xué)習(xí)。還有記憶網(wǎng)絡(luò)的能力如何進(jìn)一步提升?這些都需要我們進(jìn)行更多的探索。
最后,在多樣化解碼能力方面,從詞匯到短語到單句到跨句,都有一些改進(jìn)空間。
我沒有提到文本生成的評價(jià)體系、評測集和自動(dòng)評測方法,也沒有提到 AI 倫理,比如如何防止生成有安全隱患甚至有害的文本,但是這些都非常非常重要。這里由于時(shí)間關(guān)系我沒有展開討論。
下面我介紹一下瀾舟科技部分的文本生成項(xiàng)目。我們首先搭建了瀾舟文本生成的平臺?;诘讓拥拇笠?guī)模數(shù)據(jù)(包括通用的數(shù)據(jù),垂直的數(shù)據(jù)和特定任務(wù)的數(shù)據(jù)),我們建立了一個(gè)輕量級神經(jīng)網(wǎng)絡(luò)生成模型,它是 encoder-decoder 架構(gòu)。我們根據(jù)垂直領(lǐng)域做了一些適配,包括數(shù)據(jù)的獲取、對垂直領(lǐng)域弱標(biāo)注學(xué)習(xí)數(shù)據(jù)的構(gòu)建、細(xì)粒度可控文本生成方法和篇章建模等等?;谶@樣的技術(shù)體系,我們就可以做一些具體任務(wù)或構(gòu)建垂直領(lǐng)域的生成引擎。目前我們已經(jīng)做了營銷文案引擎、文章摘要、故事生成、散文小說、文本復(fù)述、研報(bào)生成等各個(gè)方面。

我們的技術(shù)特點(diǎn)如下圖所示,包括多屬性的可控文本生成、多樣化的生成、基于知識圖譜嵌入進(jìn)行文本生成。

在長文本生成方面,我們也做了很多研究,輕量化微調(diào)使模型效率更高,并做了很多的多任務(wù)聯(lián)合建模來支持多種場景。我們也做了一些內(nèi)容和風(fēng)格的定制化,以及文本自動(dòng)評測,支持多行業(yè)多領(lǐng)域。下面我就簡單介紹幾個(gè)典型的項(xiàng)目。第一個(gè)就是網(wǎng)文生成,比如用戶輸入下圖所示的一些關(guān)鍵詞,電腦會(huì)自動(dòng)生成一個(gè)非常豐富的句子,供網(wǎng)文寫手來參考。

有些網(wǎng)文寫手有自己的寫作模板,我們接受他的模板,就可以生成更加豐富的句子。

有的網(wǎng)文寫手需要對某些實(shí)體進(jìn)行渲染,比如武士、美女等,這就需要網(wǎng)文寫手寫入一些關(guān)鍵詞,然后平臺會(huì)根據(jù)他的思路,把句子生成得更漂亮,供他參考。

我們也提供了續(xù)寫功能,用戶可以輸入自己寫的一句話或一段話,電腦自動(dòng)往下續(xù)寫,生成 n 個(gè)可供選擇的輸出結(jié)果供寫手挑選。

我們的平臺也可以做風(fēng)格遷移(style transfer),例如從現(xiàn)代文 transfer 到文言文,也可以續(xù)寫文言文。

我們也將文本生成的技術(shù)用于營銷文案生成。營銷文案原來都是請寫手去寫的,成本比較高,也比較費(fèi)時(shí)。利用自動(dòng)寫作營銷文案的方式,就可以快速生成多樣化的營銷文案。

例如對于化妝品領(lǐng)域的用戶,可以輸入標(biāo)題「讓你的肌膚重返 18 歲」,也可以輸入一些關(guān)鍵詞,比如姜汁、美白,或者輸入一些知識圖譜,我們的文本生成系統(tǒng)(孟子模型)就可以生成一篇豐富多彩、前后連貫的營銷文案。
我們也做了一些可控文本生成的評測,探究只輸入標(biāo)題、關(guān)鍵詞,或者加上三元組,模型生成文本的可控能力是否有所改進(jìn)。

2021 年,我們與合作伙伴數(shù)說故事一起合作,打造了一款自動(dòng)化寫作產(chǎn)品 contentnote。

使用這款產(chǎn)品,用戶可以選擇協(xié)作的模板,提供產(chǎn)品的名字和若干關(guān)鍵詞,就可以得到一篇營銷文案。

由于我們利用了一些多語言技術(shù),因此也可以生成多語言的營銷文案,包括中文、英文、日文和葡萄牙語等等。
基于我們的技術(shù),我們也在做智能研報(bào)生成的應(yīng)用。所謂智能研報(bào),就是指用戶想寫某一個(gè)主題的研報(bào),我們的系統(tǒng)會(huì)自動(dòng)從互聯(lián)網(wǎng)和用戶提交的數(shù)據(jù)中,抽取重要的材料,基于這些材料,生成問答對、事件摘要、輿情分析,基于這些要素就可以得到一個(gè)研報(bào)的生成結(jié)果 —— 是由標(biāo)題到大綱到段落生成,并填充上一步生成的要素。

我們還嘗試了 ESG 報(bào)告生成,根據(jù)用戶的輸入生成該公司的 ESG 報(bào)告。ESG 報(bào)告是現(xiàn)在很多企業(yè)都需要提交的一個(gè)綜合報(bào)告,它體現(xiàn)了一個(gè)企業(yè)的治理能力。ESC 報(bào)告基本包含幾大要素,每大要素又有一些要點(diǎn)。我們根據(jù)文本生成技術(shù)和信息抽取技術(shù),就可以抽取重要信息并最終生成一個(gè)完整的報(bào)告。

我們基于瀾舟的文本生成技術(shù),也做了一些 ToC 的應(yīng)用,目前做了熊貓小說家微信小程序的應(yīng)用。用戶注冊使用并與朋友分享,就可以寫成一系列的小說接龍。如下圖所示,用戶設(shè)置人設(shè)、故事梗概、主題,添加一些關(guān)鍵詞,就可以創(chuàng)造一段小說。分享給朋友之后就可以用接龍的方式生成下一段小說。

基于這樣的技術(shù),我們也做了專業(yè)論文生成寫作的嘗試 —— 用戶提交若干關(guān)鍵詞,系統(tǒng)可以進(jìn)行擴(kuò)寫,生成包含用戶期望信息的推薦例句。瀾舟論文助寫(Langboat Paper Assistant 簡稱 LPA)提供了組句和續(xù)寫功能。

此外,我們也做了一些文圖生成,因?yàn)榻裉煳业难葜v主題是文本生成,所以我就簡單說一下我們關(guān)于文圖生成的工作。當(dāng)前,Stable Diffusion 模型是針對英文信息、在英文大數(shù)據(jù)上學(xué)習(xí)的,對中文的一些要素(比如雷鋒、長城、黃山),Stable Diffusion 模型的生成效果并不好。所以我們對數(shù)據(jù)進(jìn)行了新的整理,另外加入了一些中文的界面,加入了一些中國人常見的風(fēng)格選擇。用戶輸入一些中文信息,就可以得到一個(gè)有中文色彩的畫面。

我今天的演講主要介紹了文本生成的一些關(guān)鍵技術(shù),又介紹了瀾舟科技在文本生成領(lǐng)域的一些實(shí)踐。由于時(shí)間關(guān)系,我的演講就到這里,請大家多多指正,謝謝大家。
更多產(chǎn)品體驗(yàn)可到官網(wǎng):https://www.langboat.com/
關(guān)注「瀾舟科技」公眾號,回復(fù)關(guān)鍵詞【0112】獲取完整版PPT