QQ 瀏覽器是一個月活躍用戶超過 4 億的綜合信息平臺,旨在滿足用戶在搜,、刷,、用、看四個場景下的需求,。 其中「用」是指 QQ 瀏覽器里工具的使用,,也稱為幫小忙,QQ 瀏覽器包含了眾多實用工具,,幫助用戶提高工作和學(xué)習(xí)效率,。今天我們討論的文檔閱讀助手就是'幫小忙'中的一個工具。 長內(nèi)容消費一直是用戶非常重要的訴求,,如何幫助用戶快速了解長內(nèi)容中的關(guān)鍵信息,,也一直是各產(chǎn)品努力的方向,如網(wǎng)頁速覽,、電影速看和小說速讀等,。 但是它們普遍存在一個問題:當(dāng)用戶想要深入了解內(nèi)容時,由于缺乏交互能力和實時更新能力,,往往無法滿足需求, 所以是一種被動式的信息獲取方式,。 正因如此,QQ 瀏覽器做了一款產(chǎn)品: 文檔閱讀助手,可以讓用戶更加自由,,更加自主地獲取信息,。同時秉承騰訊“科技向善”的理念,也會推出關(guān)懷模式和無障礙模式,,讓每個人的閱讀都更簡單,。 以下是產(chǎn)品的 Demo 演示: 語言模型的發(fā)展始于 20 世紀 80 年代,最初基于統(tǒng)計方法,,主要計算詞匯在語料庫中的概率,。這一階段,由于詞匯量巨大,,尤其是對于中文,,需要處理龐大的統(tǒng)計空間,特別是多個詞連續(xù)出現(xiàn)的概率,。 第二階段起始于 2003 年,,Bingo 把神經(jīng)網(wǎng)絡(luò)引入到 NLP 領(lǐng)域,在 2013 年以 Word2Vec 模型推向高峰,。主要特點是為每個詞匯分配一個固定的向量表達(embedding),,克服了以往統(tǒng)計方法的不足。但這種方法也存在問題,,同一個詞只有一個向量表示,,對于多義詞并不能區(qū)分,如“Bank”在“河岸”和“銀行”不同的語義下,,對應(yīng)的 embedding 相同,。 第三階段以 BERT 為代表,主要做上下文相關(guān)的嵌入向量,,允許相同的詞在不同上下文中具有不同的表達,,從而顯著提高了模型的遷移性,NLP 的學(xué)習(xí)范式也由 end2end 方式變?yōu)轭A(yù)訓(xùn)練 + 業(yè)務(wù)微調(diào)的方式,。 最后,是大語言模型階段,。2017 年,,谷歌發(fā)布了具有里程碑意義的'Attention is All You Need'論文,介紹了 Transformer 模型,。此后,,幾乎所有的大語言模型都基于 Transformer 結(jié)構(gòu)。 從 2018 年到 2020 年,,大語言模型領(lǐng)域的探索期,。盡管 Transformer 架構(gòu)已成為統(tǒng)一標準,但其包含的 Encoder 和 Decoder 兩個關(guān)鍵部分被不同研究者以不同方式探索。 例如,,OpenAI 的 GPT 系列是典型的 Decoder Only 模型,,專注于自然語言生成任務(wù);而谷歌的 BERT 模型則作為雙向語言模型主要使用 Encoder 部分,,專注于自然語言理解任務(wù),。這一時期,研究者們大量對 BERT 進行改進和變體研究,。到 2019 年,,谷歌推出了 T5 架構(gòu),旨在將理解和生成統(tǒng)一到一個框架下,。 現(xiàn)在來看,,GPT 系列成為了大家普遍的模型結(jié)構(gòu)。但是當(dāng)時雖然出現(xiàn)了參數(shù)規(guī)模巨大的模型如 GPT-3,,這些模型在生成能力上非常強大,,但是對于指令的理解并不好。2021 年,,谷歌推出 FLAN 模型,,并引入了指令微調(diào)(Instruct Tuning)技術(shù),極大地增強了模型對具體指令的理解和執(zhí)行能力,。 到了 2022 年,,模型發(fā)展進一步加速, OpenAI 提出 InstructGPT,,不僅整合了指令微調(diào)技術(shù),,還引入了強化學(xué)習(xí),使模型產(chǎn)出的答案更加符合人類的預(yù)期,。直到 2022 年底,,OpenAI 推出 ChatGPT 產(chǎn)品,全世界都為之振奮,。 大語言模型主要通過提示工程和定制化模型兩種方法來支持業(yè)務(wù),。 提示工程通過調(diào)整模型的輸入指令(Prompt)以獲得期望的輸出格式和內(nèi)容。例如,,在生成問題時,,可以通過精心設(shè)計的提示來引導(dǎo)模型產(chǎn)生更為結(jié)構(gòu)化的內(nèi)容。這種方法的優(yōu)點在于不需要重新訓(xùn)練模型,,僅通過修改輸入指令即可快速適應(yīng)各種業(yè)務(wù)場景,,但它要求模型本身具有很全面的能力,模型往往比較大,,對應(yīng)的推理成本會比較高,。 另一種方式是定制化模型。通過在特定業(yè)務(wù)數(shù)據(jù)上進行微調(diào)來優(yōu)化大語言模型,使其更貼合業(yè)務(wù)場景,。比如,,針對數(shù)學(xué)場景,可以用數(shù)學(xué)數(shù)據(jù)集上進行微調(diào)以確保模型按需提供準確解答,。這樣的模型更專注于特定任務(wù),,可以允許更小的規(guī)模和降低推理成本。 QQ 瀏覽器文檔閱讀助手就是在騰訊混元模型的基礎(chǔ)上定制化得到的業(yè)務(wù)大模型,。騰訊混元大模型是全鏈路自研的通用大語言模型,,擁有超千億參數(shù)規(guī)模,預(yù)訓(xùn)練語料超 2 萬億 tokens,,具備強大的中文創(chuàng)作能力,,復(fù)雜語境下的邏輯推理能力,以及可靠的任務(wù)執(zhí)行能力,。為了更匹配應(yīng)用場景的需求,,騰訊也推出千億、百億以及十億等不同尺寸的大模型,。 目前,,騰訊內(nèi)部已有超過 300 項業(yè)務(wù)和應(yīng)用場景接入騰訊混元大模型內(nèi)測,包括 QQ 瀏覽器,、騰訊會議,、騰訊文檔、企業(yè)微信,、騰訊廣告和微信搜一搜等,。 要進行全文總結(jié),先要閱讀并理解原文,,然后提取關(guān)鍵信息并進行概括,。許多用戶上傳的 PDF 文件都很長。而現(xiàn)有的主流開源模型支持的上下文長度為 4000 Token 或更少,,這意味著它們不能一次性處理過長的文章,。 圖 1:用戶 PDF 長度分布 為了達到這一目標,有兩種主要方法可以用來擴展上下文長度:
雖然這些方法確實能在一定程度上擴展上下文長度,,但它們都有局限性,要么是成本過高,要么是擴展長度有限,。 因此,,可以用以下幾種方案,解決長文章摘要的問題:
為了解決這些問題,,我們采用了一種結(jié)合抽取式和生成式的方法。 首先,,我們在文章中識別并抽取出最重要的句子,,然后使用大語言模型對這些抽取的句子進行概括和總結(jié)。方法只調(diào)用一次大語言模型,,耗時較少,,并且不容易遺漏重要信息。在實際測試中,,這種方法用戶滿意度最高,,而且事實一致性也最低。 為了提升用戶獲取信息的效率,,產(chǎn)品會推薦一些用戶可能問的問題,,最直接的方法就是 LLM 利用原文信息生成一些問題。但是這種方法生成的問題通常都是非常簡單的,,與原文表達方式高度一致,。 以騰訊第三季度的財報為例,,原文提到“第三季度騰訊的總收入是多少元”,而生成的問題通常會直接是“第三季度騰訊的總收入是多少元,?”,。但是,實際上用戶可能會用更口語化的方式表達,,比如說“騰訊賺了多少錢,?”。 真實的用戶也會提出復(fù)雜的問題,。例如,,用戶可能會問“從騰訊的財報中,我們能看出什么樣的戰(zhàn)略布局,?”,。 2023年,微軟發(fā)布了一篇關(guān)于'進化學(xué)習(xí)'的論文 WizardLM,,主要通過廣度進化和深度進化讓 SFT 數(shù)據(jù)更加豐富,,復(fù)雜度也更高,從而提升模型效果,。圖 2 展示了隨著迭代次數(shù)增加,,問題長度的變化,可以看出問題復(fù)雜度隨著進化輪數(shù)增多而增加,。但問題的可用性卻在持續(xù)下降,,到了第五輪時,可用性已經(jīng)下降至 85% 以下,。 圖 2:WizardLM 不同輪次的進化問題長度 圖 3:WizardLM 不同輪次的訓(xùn)練樣本可用率 針對上述問題,,我們提出了一套新的進化算法——雜交進化,如圖 4 示例所示:“小明是一個愛讀書的人,,他有一定的讀書效率,;小紅則是一個愛寫作的人,她有一定的寫作速度”,。雜交進化算法中,,結(jié)合這兩個種子的特點,能夠生成一個更加復(fù)雜的問題,,使得原本兩個簡單的問題被轉(zhuǎn)化成了一個更加復(fù)雜的問題,。 圖 4:雜交進化示例圖 與 WizardLM 相比,雜交進化方法有以下幾個顯著特點,。首先是生成效率更高,。WizardLM 方法如果總的種子數(shù)量是 n,每一輪進化生成新的 n 個樣本,,經(jīng)過五輪后,,總共只能新增 5n 個樣本,。而雜交進化,,通過兩個種子樣本生成一個新的樣本,,增加效率是 n 乘以 n-1,所以當(dāng)種子樣本數(shù)量較多時,,生產(chǎn)效率遠超過微軟的方法,,并且雜交只需要進化一輪,準確率也更高,。 其次,,在樣本的主題分布上,生成的樣本(紅色部分)相較于種子樣本(藍色部分)主題更加多樣,,對于大模型的訓(xùn)練幫助更大,,更詳細的細節(jié)可以參考我們的論文。 通過對用戶真實問題的統(tǒng)計分析,,我們發(fā)現(xiàn)用戶問題主要分為四類:
最后一類問題混元模型本身可以解決很好,因此這里不需要特殊處理,。 對于原文中有答案的問題,,關(guān)鍵是通過檢索系統(tǒng)找到與該問題相關(guān)的文本。根據(jù)用戶問題檢索相關(guān)文本之前需要對問題進行改寫,。因為在多輪對話中,,用戶常常會省略一些詞匯,所以先對問題進行改寫,,然后再檢索,。 我們嘗試了三種檢索方法。首先是雙塔架構(gòu),,但在我們的場景下并不理想,,召回率大約在 80% 左右。主要是原文片段經(jīng)過 Pooling 方法進行語義壓縮,,導(dǎo)致相關(guān)文本片段的語義被稀釋,。如:一段 500 字的文本可能只有 50 字與問題直接相關(guān),pooling 后的語義會稀釋掉 50 字的語義,,導(dǎo)致召回不足,。 因此,我們嘗試了第二種架構(gòu),,保留了 500 字每一個詞的向量表示,,并計算與問題中每一個詞的相似度。通過取片段的最大相似度作為整個文本片段的相似度,,,,這樣雖然效率有所下降,,但準確率有顯著提升,在業(yè)務(wù)數(shù)據(jù)集中,,效果超過 text-embedding-ada-002,。 最后一種情況,針對答案分布在不同的文本片段的情況,,做了進一步的改進,,效果也得到了進一步的提升。 Open QA 與 Close QA 的主要區(qū)別在于原文中沒有問題答案,,但是互聯(lián)網(wǎng)上有相關(guān)信息,,可以通過 QQ 瀏覽器的搜索引擎提供相關(guān)網(wǎng)頁,然后通過大型語言模型輸出答案,。 Agent QA 系統(tǒng)是解決原文和搜索引擎都無法提供答案時,,大型語言模型將復(fù)雜任務(wù)分解成若干小步驟,然后分而治之,。如: 用戶想要了解騰訊流動利率時,,LLM 回進行如下分解:首先,搜索流動利率的計算方法,,即流動資產(chǎn)除以流動負債,;然后,找出具體的流動資產(chǎn)和流動負債的數(shù)值,;最后,,使用計算器計算出流動利率。 這種方法聽起來很好,,但是存在一個問題,,在專業(yè)領(lǐng)域,大型語言模型通常會泛泛而談,,模型往往無法規(guī)劃出具體的執(zhí)行步驟,。為了解決這個問題,我們提出了一種新的解決方案:語言模型 + 專家知識庫,。 假設(shè)有一個專業(yè)問題關(guān)于“公司是否存在非法占用現(xiàn)金的情況”,,大模型并不能做任務(wù)拆解,可以在知識庫中檢索到最相關(guān)的規(guī)劃,,然后讓大型語言模型參考這個規(guī)劃完成任務(wù),。實驗顯示,專家知識庫可以顯著提升專業(yè)領(lǐng)域問題的效果,。 LLM 回復(fù)非常靈活,,自動化評估是加速模型迭代效率的重要部分。以摘要功能為例,,一種常用的方法是將完整文章和生成的摘要輸入到大語言模型中,,讓 LLM 判斷摘要的質(zhì)量,。 然而,這個方法的挑戰(zhàn)在于,,原文常含有大量無關(guān)信息,,這可能導(dǎo)致模型錯誤地判斷摘要是否準確反映了原文的主旨,詳見參考文獻,。 第二種評估方法可以參考 TACL 的一篇論文,。這個方法通過比較每個生成的摘要句子與原文中的句子是否相似來判斷摘要是否產(chǎn)生幻覺。如果所有句子都足夠相似,,就認為摘要沒有產(chǎn)生幻覺。但是,,因為摘要通常是多個句子的匯總,,當(dāng)遇到融合性或概括性句子時,這個方法就不再有效,,詳見參考文獻,。 為了克服這一限制,我們采用了檢索增強型方法,,將精準問答的思想應(yīng)用于自動評估,。結(jié)果顯示,在公開的摘要生成數(shù)據(jù)集上,,我們的方法的問題可用率是最高的,,達到了業(yè)界領(lǐng)先水平。 在訓(xùn)練過程中提升收斂速度也是一個加速模型迭代的重要方法,。訓(xùn)練過程中,,每個批次可能包含不同長度的樣本,常規(guī)用 padding 的方法會浪費算力,。我們采用了 Packing 策略,,將多個短樣本拼接在一起,以減少無效的填充部分,,使得每個批次的計算更加高效,。 實驗表明,在達到相同訓(xùn)練效果的情況下,,Packing 訓(xùn)練時長約 Padding 方式的 64.1%,。因此,Packing 策略大大提高了訓(xùn)練的效率和模型的收斂速度,。 |
|