








摘要: 基于國產主流大語言模型, 設計一個Linux課程知識問答系統. 該系統結合檢索增強技術, 能根據人類反饋持續學習, 有助于解決Linux課程教學中如何更有效輔助學生學習的問題. 實驗結果表明, 該系統提高了大語言模型回答的事實性, 能有效回答學生提問. 此外, 該系統以較低成本積累了以自然語言形式呈現的專業領域知識庫, 降低了教師教學資料搜集整理的工作量.
關鍵詞: Linux課程; 大語言模型; 持續學習; 問答系統
中圖分類號: "TP391""文獻標志碼: A""文章編號: 1671-5489(2024)06-1370-07
Linux Course Question Answering SystemBased on Large Language Models
GUO Dong1, HUANG Guangqiang1, LIU Ying2
(1. College of Computer Science and Technology, Jilin University, Changchun 130012, China;
2. Public Computer Education and Research Center, Jilin University, Changchun 130012, China)
Abstract: Based on a domestic mainstream large language model, we designed a question answering system for the Linux course. This system,
combined with "retrieval enhancement technology, could continuously learn from human feedback, which helped to solve the problem of how to more effectively assi
st students’ learning in the Linux course teaching. Experimental results show that the system improves the factuality of answers provided by the large language model and can effectively answer "students’ questions. In addition, the system accumulates a professional domain knowledge base presented in the form of natural
language at a "lower cost, reducing the workload of teachers in collecting and organizing teaching materials.
Keywords: "Linux course; large language model; continuous learning; question answering system
近年來, 以ChatGPT為代表的大語言模型(large language model, LLM), 因其出色的語言生成和問答能力, 在為學生提供個性化教學和答疑輔助方面具有巨大潛力. 基于LLM的
問答系統可以為學生提供實時、 個性化的答疑服務, 上下文學習、 思維鏈等新技術的發展可極大提升問答系統效果[1]. 目前, 在語言和基礎數學等領域大語言模型的研究已取得很多成果. Gayed等[2]基于GPT-2構建了AI-KAKU系統, 幫助學生降低英語寫作難度. 面向閱讀理解教學場景, Abdelghani等[3]構建了基于GPT-3的人機對話系統KidsAsk, 輔助學生提出問題, 加深對文章的理解程度. Pardos等[4]構建了代數問題智能提示系統, 通過ChatGPT生成代數問題的解答提示, 引導學生解決問題.
盡管LLM在教育領域應用前景較好, 但其也存在一些不足.
1) GPT模型易產生幻覺. 在人工智能(AI)領域, 幻覺是指AI自信地給出不符合訓練數據的響應, 生成錯誤或具有誤導性的回答. 由于缺乏特定領域的專業數據, 在專業課程教學領域中該問題尤為突出[5].
2) 專業領域優質數據獲取困難. 如Linux操作系統課程教學領域, 存在普通教學材料的結構和內容不適合機器學習模型訓練、 數據來源分散且格式不統一、 人工數據標注成本較高等問題.
3) 大語言模型訓練困難. 在特定領域數據上對預訓練的模型進行微調時, 雖然模型在特定任務的性能得到提高, 但在其他任務的性能會急劇下降, 即發生“災難性遺忘”[6]. 另一方面, 微調大語言模型仍需大量的計算資源和時間[7].
為增強大語言模型的事實性, 減少產生幻覺, 以檢索外部數據增強語言模型能力的方法已廣泛應用. Emily等[8]提出了以維基百科作為外部知識庫增強語言模型在開放領域問答的能力. He等[9]提出了Rethinking with Retrieval方法提高語言模型的事實性. Peng等[10]提出了基于維基百科等網絡資料庫和自主反饋的LLM-Augmenter框架, 并在任務型對話和開放領域問答中驗證了其有效性. Nakano等[11]設計了一個基于文本的瀏覽器環境, 并通過人類反饋等方式訓練模型經由網絡訪問獲取答案. 張鶴譯等[12]提出了融合知識圖譜的大語言模型問答系統, 該系統能將自然語言轉換為結構化數據, 并匹配專業知識庫內容. 總之, 目前的研究工作一般關注于開放領域的問答系統, 注重增強檢索的準確性. 本文也應用了檢索增強技術, 但實驗結果表明, 對于Linux課程教學, 有效數據的缺乏對語言模型正確率影響更大, 因此本文更關注如何利用大語言模型豐富專業領域數據.
如何有針對性地修正大語言模型的錯誤認知, 提供持續學習能力是目前該領域的研究熱點之一. 部分研究[13-15]通過對模型參數進行直接修改, 以增強模型的特定領域知識儲備, 糾正錯誤認知. 但該類方法的適用范圍目前還相對有限. Kassner等[16]在BeliefBank項目中提出了一個將檢索系統先前的回答作為上下文的反饋機制. Tandon等[17]從用戶的自然語言反饋入手, 探索了通過后處理方式修正模型錯誤認知、 提升對用戶指令理解的新方法. Dalvi等[18]提出了TeachMe系統, 該系統的記憶功能與文獻[17]的工作類似, 但采用了不同的方法修正模型認知.
這些研究集中于開放領域的問答系統, 通過記憶用戶的反饋降低模型邏輯推理的錯誤率. 而本文研究更注重于通過自動構建專業課程教學知識庫, 以增強模型的事實性.
本文研究以減少幻覺現象為核心目標, 使用LLM自動化數據集處理, 降低專業領域數據收集難度, 并利用大語言模型的上下文學習(in-context learning)能力規避模型訓練與微調的困難, 提高跨領域泛化能力.
1"系統設計
本文系統由知識庫和問答器兩部分構成, 系統整體架構如圖1所示. 其中, 知識庫和問答器的核心基于百川智能推出的Baichuan系列大模型[19], 該系列模型在開源社區中受到廣泛關注, 并在多個基準測試中均性能優異, 特別是在對話、 邏輯推理和語義理解等方面. 在知識庫部分, 本文采用參數規模更大的Baichuan 53B模型, 因其預訓練更充分, 幻覺現象更少.
在問答器部分, 考慮到實時響應、 算力和用戶規模的要求, 本文選擇參數規模相對較小的Baichuan 7B模型. 問答器的主要功能是根據用戶的提問, 查詢知識庫獲取相關的事實性資料, 生成答案, 并進一步引導學生主動思考.
1.1"知識庫
提供與問題相關的事實性信息, 有助于降低大語言模型的幻覺.
但傳統的教學材料數據格式混亂, 不利于機器檢索, 而完全手動構建和標注知識庫成本較高. 本文利用大語言模型, 將作業題庫、 教輔資料等專業領域知識整合并轉化為問答對格式. 該格式的一個樣例如圖2所示. 采用問答對的形式有利于提高檢索準確性. 通過利用大語言模型的隱含知識和能力, 能實現專業領域知識庫的自動化生成. 此外, 為確保知識庫內容的準確性, 該方法以人類反饋為核心, 不斷進行迭代.
1.1.1"內容生成
本文知識庫內容的來源有如下兩方面:
1) 模型的內隱知識. 參數量更大的LLM通常具有更大的預訓練集和較少的幻覺現象, 因此能準確回答部分題目和Linux相關概念. 對該特性的利用分兩個階段進行, 均采用基于思維鏈技術的提示詞以引導模型產生更詳細的回復. 第一階段, 對數據集中具有明確答案的Linux習題, 進行多次采樣, 只有當模型多次產生正確答案時才納入知識庫中. 第二階段, 為提高知識庫的泛化性和系統在其他試題上回答的準確率, 通過模型對納入知識庫中的試題提取出關鍵概念, 并讓模型進行詳細解釋, 組成新的問答對.
2) 教輔資料. 為進一步提升知識庫的泛用性和內容的多樣性, 從Linux相關教輔資料中截取片段, 設計一個提示詞引導模型提煉關鍵概念并生成問題. 對每個生成的問題, 將其與教輔資料重新組合, 再次使用模型獲得該問題的答案. 生成內容將被用于計算Knowledge F1指標, 以刪除與原文相關性不足的回答.
1.1.2"迭代修正
為緩解自動生成的知識庫重復度較高、 質量較差的問題, 采用如下方法對知識庫進行迭代修正, 并引入人類反饋以確保生成問答對的質量. 該方法分為如下兩部分:
1) 去重. 對每個新加入的問答對, 在知識庫中根據余弦距離檢索知識點并計算相似度, 若相似度高于閾值, 則被標記為待合并. 對所有待合并的知識點, 拼接后提交給Baichuan 53B模型進行合并操作. 提示詞將指示Baichuan 53B模型不失泛化性和信息性地合并知識點.
2) 優化. 對在人工審核中發現有誤的問答對, 采用一種融合人工反饋與模型自我修正的策略進行優化. 審核員在標記錯誤的同時, 提供自然語言描述, 明確錯誤原因或改進建議. 結合原始提示詞與相關反饋, 模型重新生成答案. 新答案經再次審核后, 如滿足質量標準, 則替代原始答案, 否則重新進行優化. 該策略旨在保障知識庫內容質量, 以提高問答對的事實準確性.
1.2"問答器
問答器是系統的核心部分, 負責與用戶進行交互并提供答案. 為確保答案的準確性并提供與用戶的有效交互, 問答器由3個主要模塊組成: 檢索模塊、 回答模塊和互動模塊.
1.2.1"檢索模塊
檢索模塊的主要任務是從知識庫中找到與用戶問題最相關的問答對. 該過程由兩個子模塊完成: FlagEmbedding[20]和Baichuan 7B. 首先, FlagEmbedding模塊將用
戶的問題轉化為語義向量, 并在知識庫中檢索與之相似的問答對. 檢索到的問答對將與原始問題進行拼接, 使用Baichuan 7B模塊進行評估, 以確定其與原始問題的相關性和有益性.
得分較高的問答對將作為參考信息提供給回答模塊, 否則繼續判斷下一個相關的問答對.
1.2.2"回答模塊
回答模塊的目標是生成用戶問題的直接答案. 該模塊主要由Baichuan 7B模型實現. 通過大模型思維鏈(CoT)技術[21], 本文設計了特定的提示詞, 引導Baichuan 7B模型
利用檢索模塊獲得的相關事實性材料對用戶的問題進行回答. 在Temperature=0.8的條件下, 本文進行5次答案采樣, 選擇出現次數最多的答案作為最終答案, 并將該答案出現的次數作為置信度.
1.2.3"互動模塊
互動模塊旨在與用戶進行深入交互, 幫助用戶更好地理解答案或相關概念,
而不是直接給出解答. 該模塊也由Baichuan 7B模型實現. 根據回答模塊產生答案置信度的不同, 互動模塊將采用兩種回答策略: 1) 若置信度較低, 則模塊會選擇解釋與問題相關的概念, 并拒絕對問題進行解答, 避免產生誤導; 2) 若置信度較高, 則模塊采用蘇格拉底式提問法, 通過一系列的問題引導學生主動思考. 采用蘇格拉底式提問法引導學生主動思考的問答實例如圖3所示. 如果交互輪次超過預設的限制, 則模塊會直接給出回答模塊得到的答案, 并結束對話, 以確保不會超出模型上下文限制.
2"數據收集
為構建一個高效的Linux課程知識問答系統, 首先需建立一個全面且具有代表性的題庫. 題庫數據不僅可以作為系統的基礎知識庫, 還可用于后續的模型評估和驗證.
2.1"數據來源
單一的數據來源可能會導致偏見或遺漏某些關鍵知識點. 因此, 本文綜合考慮兩個主要的數據來源: 校內超星課程的教學題庫和公開的網絡資料. 超星課程題庫經過教師的篩選和
審核, 有較高的權威性和準確性. 公開網絡資料涉及知識領域更廣, 確保了題庫內容的多樣性和規模.
2.2"數據集特性
本文收集的題目廣泛涵蓋了Linux的基本概念(5.3%)、 命令(39.2%)、 Git與Vim(27.6%)、 系統管理與配置(19.6%)以及Shell及其程序設計(8.3%)等主要方面, 題目組成對體現Linux的教學知識點具有代表性.
3"實"驗
下面在收集到的Linux題目數據集基礎上進行一系列實驗, 以驗證本文系統的有效性, 并通過消融實驗檢測系統中各模塊的效果. 實驗在配置24核3.0 GHz Intel
Core i9-13900K處理器和Nvidia GeForce RTX 4090顯卡的服務器上運行Baichuan 7B模型. 其他大語言模型, 如Baichuan 57B模型等, 使用官方API提供的接口訪問. 算法部分基于深度學習框架Pytorch和微軟大語言模型提示詞工程庫Guidance實現. 為保證穩定性, 除特別標明的部分, 均采用Temperature=0的參數進行貪心解碼. 數據集隨機劃分為90%的訓練集和10%的測試集. 訓練集將被用于生成知識庫內容.
3.1"知識庫內容生成質量
為檢驗知識庫模塊的生成質量和人工介入的作用, 本文設計兩個階段的生成策略. 第一階段完全依賴大語言模型自動化地生成知識庫并進行去重處理. 第二階段在第一階段基礎上進行人工反饋. 人工反饋包括對模型未能成功生成或生成不夠詳細的內容, 補充事實性材料重新生成, 并對模型生成的事實性錯誤進行修正. 實驗以GPT-4[22]作為基線標準, 從兩個階段得到的知識庫中隨機抽取問答對, 生成對應內容. 從事實性與信息性兩方面與GPT-4生成內容進行人工對比, 實驗結果如圖4所示. 由圖4可見, 知識庫模塊有效利用了人類反饋, 在專業領域確保了內容的準確性和完整性.
3.2"問答器性能評估
為深入評估問答器的性能, 本文選取幾種主流的大語言模型, 并在多個數據集上進行系統性的測試. 為確保測試的一致性和公正性, 所有測試題目均采用選擇題格式, 并對每個大語言模型使用統一的思維鏈提示詞進行提問. 在評分標準上, 對于多項選擇題, 少選不被視為錯誤, 但錯選計入錯誤.
3.2.1"使用訓練集進行評估
由于本文研究的應用場景在于輔助課堂Linux教學, 學生用戶大部分問題可能已存在訓練集中. 為驗證該模塊是否能識別同一問題的不同表達方式,
從訓練集中隨機選取題目, 并對其進行語義上的微調, 以模擬實際教學場景中學生可能采用的多樣化提問方式.
圖5為不同模型在訓練集上的正確率. 由圖5可見, 盡管問題的表述發生了細微的變化, 模塊仍能正確識別, 正確率相比原始的Baichuan 7B模型取得了顯著提升.
3.2.2"使用測試集進行評估
在知識庫中不存在與測試集相同的題目. 圖6為不同模型在測試集上的正確率. 由圖6可見, 使用測試集進行測試時, 模塊的準確率仍有上升, 表明知識庫內容具有一定通用性, 能泛化到不同題目.
為確保系統在實際應用場景中的實用性, 本文對其校準能力進行測試. 在大語言模型中, 校準能力代表模型對答案的信心在多大程度上與其實際的準確率匹配, 實驗結果如圖7所
示. 由圖7可見, 對于該系統, 高度確信的答案(置信度gt;4)正確率顯著上升. 因此, 通過規避對置信度較低的問題進行回答, 能有效減少該系統在實際應用場景中的幻覺現象.
3.3"消融實驗
為進一步驗證本文系統中關鍵模塊的有效性, 下面進行消融實驗.
3.3.1"知識庫內容來源與系統泛化能力
第一組實驗僅使用數據集中具有明確答案的Linux習題作為知識庫, 即知識庫內容生成中只利用模型內隱知識進行問答, 稱為PQ.
第二組實驗問答則是在習題基礎上, 補充基本概念的解釋, 并加入教輔資料, 即采用本文所描述的完整方式生成知識庫內容, 稱為Q+SMG.
實驗在測試集上進行, 結果如圖8所示. 由圖8可見, 第二組問答實現了更全面的知識覆蓋, 提升了系統在未知題目中的正確率.
3.3.2"檢索模塊的效果
為進一步驗證檢索模塊的性能, 下面在測試集上進行實驗, 采用3種不同的檢索策略.
1) 直接相似度排序(DSR): 直接根據向量化后的余弦相似度進行排序, 選取高于閾值的問題.
2) 模型自我評估(ME): 在相似度排序的基礎上, 引入模型自我評估機制, 即對問答對的有用性進行評分, 選取高于閾值的問題.
3) 人工查找(Human): 人工手動從知識庫中選擇最相關、 最有幫助的問答對, 作為基線標準.
圖9為不同檢索方式下問答器的正確率. 由圖9可見, 3種檢索方式對問答器的正確率影響較小. 但在模型自我評估策略中, 有近56%的相似問答對被檢索模塊拒絕采用, 減少了回答模塊的提示詞長度, 總體正確率卻略有提升. 考慮到問答器在此過程中僅進行了5次采樣, 提示詞長度的減少有效節省了計算資源.
綜上所述, 基于國內主流大語言模型, 本文設計了一個基于檢索增強技術的Linux課程知識問答系統. 首先, 基于國產大語言模型提出了一種自動生成專業領域知識庫, 并
根據人類反饋進行知識迭代、 持續學習的方法; 其次, 設計了一個針對專業課程教學領域的智能問答系統, 該系統基于思維鏈與檢索增強技術, 能根據知識庫中的事實進行回答, 從而減少產生幻覺現象, 并采用蘇格拉底式提問引導學生得出答案. 實驗結果表明, 通過結合檢索增強技術和人類反饋, 可以提高系統的回答正確率, 降低算力需求, 使系統能有效應用于Linux課程的輔助教學中.
參考文獻
[1]"車萬翔, 竇志成, 馮巖松, 等. 大模型時代的自然語言處理: 挑戰、 機遇與發展 [J]. "中國科學: 信息科學, 2023, 53(9): 1645-1687. (CHE W X, DOU Z C, FENG Y S, et a
l. Towards a Comprehensive Understanding of the Impact of Large Language Models on Natural
Language Processing: Challenges, Opportunities and Future Directions [J]. Scientia "Sinica: Informationis, 2023, 53(9): 1645-1687.)
[2]"GAYED J M, CARLON M K J, ORIOLA A M, et al. Exploring an AI-Based Writing Ass
istant’s Impact on English Language Learners [J]. Computers and Education: Artificial Intelligence, 2022, 3: 100055-1-100055-7.
[3]"ABDELGHANI R, WANG Y H, YUAN X D, et al. GPT-3-Driven Pedagogical Agents to Train Children’s Curio
us Question-Asking Skills [J]. International Journal of Artificial Intelligence in Education, 2023, 34: 483-518.
[4]"PARDOS Z A, BHANDARI S. Learning Gain Differences between ChatGPT and Human Tutor Generated Algebra Hints [EB/OL]. (2023-02-14)[2023-03-10]. https://arxiv.org/abs/2302.06871.
[5]"JI Z W, LEE N, FRIESKE R, et al. Survey of Hallucination in Natural Language Generation [J]. ACM Computing Surveys, 2023, 55(12): 1-38.
[6]"PARISI I G, KEMKER R, PART L J, et al. Continual Lifel
ong Learning with Neural Networks: A Review [J]. Neural Networks, 2019, 113: 54-71.
[7]"LIU H K, TAM D, MUQEETH M, et al. Few-Shot Parameter-Efficient Fine-Tuning
Is Better and Cheaper than In-Context Learning [J]. Advances in Neural Information Processing Systems, 2022, 35: 1950-1965.
[8]"EMILY D, STEPHEN R, KURT S, et al. Wizard of Wikipedia: Knowledge-Powered Con
versational Agents [C]//Proceedings of the International Conference on Learning Representations. Piscataway, NJ: IEEE, 2019: 1-18.
[9]"HE H F, ZHANG H M, ROTH D. Rethinking with Retrieval: Faithful Large Language Model Inference [EB/OL]. (2022-12-31)[2023-02-01]. https://arxiv.org/abs/2301.00303.
[10]"PENG B L, GALLEY M, HE P C, et al. Check Your Facts and Try Again: Improving Large Language Models with External Knowledge and Automated Feedback [EB/OL]. (2023-02-24)[2023-03-10]. https://arxiv.org/abs/2302.12813.
[11]"NAKANO R, HILTON J, BALAJI S, et al. Webgpt: Browser-Assisted Question-Ans
wering with Human Feedback [EB/OL]. (2022-07-01)\12]"張鶴譯, 王鑫, 韓立帆, 等. 大語言模型融合知識圖譜的問答系統研究 [J]. 計算機科學與探索, 2023, 17(10): 2377-2388. (ZHANG H Y, WANG X, HAN L F, et al. Res
earch on Question Answering System on Joint of Knowledge Graph and Large Language Models [J]. Journal of Frontiers of Computer Science and Technology, 2023, 17(10): 2377-2388.)
[13]"MITCHELL E, LIN C, BOSSELUT A, et al. Fast Model Editing at Scale [EB/OL]. (2022-07-13)[2023-03-15]. https://arxiv.org/abs/2110.11309.
[14]"DE CAO N, AZIZ W, TITOV I. Editing Factual Knowledge in Language Models [C]
//Proceedings of the 2021 Conference on Empirical Methods in Natural Language Processing. [S.l.]: ACL, 2021: 6491-6506.
[15]"HASE P, DIAB M, CELIKYILMAZ A, et al. Do Language Models Have Beliefs? Metho
ds for Detecting, Updating, and Visualizing Model Beliefs [EB/OL]. (2021-11-26)[2023-02-15]. https://arxiv.org/abs/2111.13654.
[16]"KASSNER N, TAFJORD O, SCHTZE H, et al. BeliefBank: Adding Memory to a Pre-
trained Language Model for a Systematic Notion of Belief [C]//Proceedings of the 2021 Conference on Empirical Methods in Natural Language Processing. [S.l.]: ACL, 2021: 8849-8861.
[17]"TANDON N, MADAAN A, CLARK P, et al. Learning to Repair: Repairing Model Outp
ut Errors after Deployment Using a Dynamic Memory of Feedback [C]//Findings of the Association for Computational Linguistics: NAACL 2022. [S.l.]: ACL, 2022: 339-352.
[18]"DALVI B, TAFJORD O, CLARK P. Towards Teachable Reasoning Systems: Using a Dyn
amic Memory of User Feedback for Continual System Improvement [C]//Proceedings of the 2022 Conference on Empirical Methods in Natural Language Processing. [S.l.]: ACL, 2022: 9465-9480.
[19]"YANG A Y, XIAO B, WANG B N, et al. Baichuan 2: Open Large-Sscale Language Models [EB/OL]. (2023-09-13)[2023-10-01]. https://arxiv.org/abs/2309.10305.
[20]"FLAGOPEN. FlagEmbedding: Open-Source Embeddings [EB/OL]. (2023-08-02)[2023-09-03]. https://github.com/FlagOpen/FlagEmbedding.
[21]"WEI J, WANG X Z, SCHUURMANS D, et al. Chain-of-Thought Prompting Elicits Reason
ing in Large Language Models [J]. Advances in Neural Information Processing Systems, 2022, 35: 24824-24837.
[22]"OPENAI. GPT-4 Technical Report [EB/OL]. (2023-03-15)[2023-05-10]. https://arxiv.org/abs/2303.08774.
(責任編輯: 韓"嘯)