大模型技術(shù)細(xì)節(jié)——大模型之文本生成與文檔總結(jié) 原創(chuàng)
“ 大模型就是一個黑盒,盒子外面的人一直在霧里看花”
我們一直在說大模型大模型,但大部分人都沒深入研究過大模型的具體實現(xiàn)以及隱藏在大模型這個黑盒下的技術(shù)細(xì)節(jié)。
思考個問題,根據(jù)要求讓大模型生成一段文字和給大模型一個PDF文本,讓它總結(jié)文本內(nèi)容,這兩種方式是同一種大模型嗎?
文本生成大模型和文檔總結(jié)大模型
很多人都簡單的認(rèn)為,生成文本的模型和進(jìn)行文檔總結(jié)的模型是一回事,都屬于文本處理模型。
因為從使用者的角度來說,只需要告訴它需求或者仍給它一個文檔它就能很好的完成任務(wù);所以說從使用者的角度來說,產(chǎn)生上面的認(rèn)知也不能說錯。
但事實上,大部分人都被大模型的黑盒給欺騙了,大模型遠(yuǎn)遠(yuǎn)沒有想的那么簡單。
文本生成模型和文檔總結(jié)模型有很多相似之處,但它們的目的和具體的實現(xiàn)方式不盡相同。
文本生成模型
定義
文本生成模型是通過學(xué)習(xí)數(shù)據(jù)的分布生成新的文本內(nèi)容。它們通常用于生成自然語言文本,如文章、對話、故事等。
目標(biāo)
生成連貫,符合語法和語義的新文本段落。
常見類型
- 自回歸模型
- 自回歸模型典型的有GPT(Generative Pre-trained Transformer),也就是生成式預(yù)訓(xùn)練模型,通過逐步預(yù)測下一個詞生成文本。
from transformers import GPT2LMHeadModel, GPT2Tokenizer
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
model = GPT2LMHeadModel.from_pretrained("gpt2")
input_text = "Once upon a time"
input_ids = tokenizer.encode(input_text, return_tensors='pt')
output = model.generate(input_ids, max_length=50)
print(tokenizer.decode(output[0], skip_special_tokens=True))
- 自編碼模型
- 自編碼模型典型的有BERT(Bidirectional Encoder Representation from Transformers),常用于理解和生成上下文相關(guān)文本。
from transformers import BertModel, BertTokenizer
tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
model = BertModel.from_pretrained("bert-base-uncased")
input_text = "Hello, my dog is cute"
input_ids = tokenizer.encode(input_text, return_tensors='pt')
outputs = model(input_ids)
print(outputs)
應(yīng)用場景
- 生成文章,故事,對話
- 自動寫作和創(chuàng)作
- 自然語言對話系統(tǒng)
文檔總結(jié)模型
定義
文檔總結(jié)模型是通過提取和抽取技術(shù)生成簡潔的文檔摘要,它們常用于從長文本中提取關(guān)鍵信息,并生成簡明扼要的摘要。
目標(biāo)
生成文檔的簡要概述,提煉出關(guān)鍵信息
常見類型
- 抽取式摘要模型(Extractive Summarization Models)
- 常見的抽取式摘要模型BERTSUM,基于BERT的抽取式文檔總結(jié)模型,通過選擇原文中的重要句子生成摘要。
# 從huggingface中加載模型
from transformers import BertTokenizer, BertForSequenceClassification
tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
model = BertForSequenceClassification.from_pretrained("bert-base-uncased")
input_text = "Your long document text here."
input_ids = tokenizer.encode(input_text, return_tensors='pt')
outputs = model(input_ids)
print(outputs)
- 生成式摘要模型(Abstractive Summarization Models)
- T5(Text-to-Text Transfer Transformer),通過生成新的句子來總結(jié)文檔。
from transformers import T5Tokenizer, T5ForConditionalGeneration
tokenizer = T5Tokenizer.from_pretrained("t5-small")
model = T5ForConditionalGeneration.from_pretrained("t5-small")
input_text = "summarize: Your long document text here."
input_ids = tokenizer.encode(input_text, return_tensors='pt')
outputs = model.generate(input_ids, max_length=50)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
應(yīng)用場景
- 新聞?wù)?/li>
- 科研論文摘要
- 法律文檔摘要
- 長文章的概述
區(qū)別與聯(lián)系
目的
文本生成模型:生成連貫的新文本內(nèi)容
文檔總結(jié)模型:生成文檔的簡明摘要,提取關(guān)鍵信息
方法
文本生成模型:使用語言模型(如GPT)根據(jù)上下文逐詞生成文本。
文檔總結(jié)模型:使用抽取式或生成式方法從文檔中提取或生成摘要
輸入輸出
文本生成模型:
輸入:起始文本或上下文提示
輸出:生成新的文本段落
文檔總結(jié)模型:
輸入:完整的文檔或長文本
輸出:簡明的文檔摘要
總結(jié)
盡管文本生成模型和文檔總結(jié)模型在技術(shù)上有一些重疊,但它們的目的和具體應(yīng)用場景不同。
文本生成模型用于生成新的文本,而文檔總結(jié)模型則用于提煉和總結(jié)現(xiàn)有文檔的內(nèi)容。
學(xué)習(xí)大模型技術(shù),不能只浮于表面,要深入理解其內(nèi)部實現(xiàn);這樣我們才能真正了解大模型能做什么,不能做什么。
也就是常說的,知其然也要知其所以然。
本文轉(zhuǎn)載自公眾號AI探索時代 作者:DFires
原文鏈接:??https://mp.weixin.qq.com/s/tdhkqUKgG4nOW5Ss3bv1pQ??
