在使用“Text Generation”時(shí)會(huì)用到.generation方法,這里記錄一下所有可能用到的參數(shù)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-475679.html
- 首先需要一個(gè)起始行的參數(shù),即給定一個(gè)主題。如:“<|endoftext|>”
- max_length :即限定生成的最大長(zhǎng)度,這里的長(zhǎng)度指的token的長(zhǎng)度。并且是最大的長(zhǎng)度,在這個(gè)長(zhǎng)度之內(nèi)的其他長(zhǎng)度的句子也是可以被生成的。
- min_length:與max_length相反,限定生成的最小長(zhǎng)度。在此不做贅述。
- early_stopping:early_stopping 參數(shù)用于控制是否啟用 early stopping 策略來(lái)提前終止生成序列的過(guò)程。在啟用 early stopping 策略后,會(huì)在生成的序列中檢查停止標(biāo)記(例如,句號(hào)、問(wèn)號(hào)、感嘆號(hào)等),一旦發(fā)現(xiàn)該標(biāo)記,就會(huì)將生成的序列剪裁到該標(biāo)記位置,停止生成。這樣,就可以確保生成的序列是自然的、完整的、有意義的,并且符合預(yù)期的格式和長(zhǎng)度。
- max_time:運(yùn)行的最長(zhǎng)時(shí)間。
-
do_sample:do_sample是一個(gè)布爾值,是指是否使用采樣(sampling)方法來(lái)生成文本。采樣是一種生成文本的方法,它從模型輸出的概率分布中隨機(jī)采樣一個(gè) token 作為下一個(gè)生成的 token,具有一定的隨機(jī)性和多樣性,因此生成的文本可能更加多樣化,而不是完全按照概率分布中的概率來(lái)選擇下一個(gè) token。
具體來(lái)說(shuō),如果設(shè)置 do_sample=True,那么在生成文本時(shí)就會(huì)使用采樣方法。在采樣時(shí)可以指定一些參數(shù),例如 temperature、top_p 等,這些參數(shù)會(huì)影響采樣方法的結(jié)果,從而影響生成文本的多樣性和質(zhì)量。
如果設(shè)置 do_sample=False,那么就會(huì)使用貪心算法(greedy decoding)來(lái)生成文本,即每次選擇模型輸出概率最大的 token 作為下一個(gè) token,這種方法生成的文本可能會(huì)比較單一和呆板。
do_sample的設(shè)置影響后續(xù)一些參數(shù)的設(shè)置,有些并不能兼容使用。 -
num_beams :“num_beams"是在進(jìn)行文本生成時(shí)的一個(gè)參數(shù)。它是指在生成一個(gè)序列的時(shí)候,預(yù)測(cè)模型同時(shí)生成的候選解的數(shù)量。在Beam Search生成文本的方法中,預(yù)測(cè)模型會(huì)對(duì)于每一個(gè)時(shí)間步,生成一定數(shù)量的候選解,選取其中最優(yōu)解進(jìn)行下一步預(yù)測(cè),直到完成整個(gè)序列的生成。這個(gè)數(shù)量即為"num_beams”。
"num_beams"設(shè)置較高,可以增加生成的候選解的數(shù)量,從而得到更多可能性,但是會(huì)同時(shí)增加計(jì)算代價(jià)。因此,通常需要根據(jù)任務(wù)的需求,合理選擇"num_beams"的值。 -
num_beam_groups :num_beam_groups是在文本生成中使用的參數(shù),它代表在生成給定序列的下一個(gè)單詞時(shí)要使用的束數(shù)組數(shù)。一般來(lái)說(shuō),束搜索是一種生成文本的技術(shù),它通過(guò)對(duì)生成的文本的分?jǐn)?shù)進(jìn)行排序來(lái)選擇最佳的文本生成結(jié)果。
在num_beam_groups參數(shù)中,如果指定的數(shù)字為1,那么將使用單一的束搜索組,如果指定的數(shù)字為2或更多,則將使用多個(gè)束搜索組。每個(gè)束搜索組將獨(dú)立進(jìn)行搜索,并通過(guò)在多個(gè)束搜索組中并行進(jìn)行搜索來(lái)生成更多的文本生成結(jié)果。這樣可以顯著提高生成效率。
總的來(lái)說(shuō),num_beam_groups參數(shù)可以幫助控制生成的文本數(shù)量和質(zhì)量,具體的值可以根據(jù)需求進(jìn)行調(diào)整。 - penalty_alpha** :penalty_alpha是在Transformer模型中生成文本時(shí)用于控制生成的文本多樣性的參數(shù)。它控制生成的文本的多樣性和翻譯的目標(biāo)序列的近似程度之間的權(quán)衡。當(dāng)penalty_alpha值越大時(shí),模型生成的文本變得更加多樣性,生成的文本與目標(biāo)序列的近似程度可能會(huì)變得更加差。反之,當(dāng)penalty_alpha值越小時(shí),模型生成的文本變得更加相似于目標(biāo)序列,多樣性可能會(huì)變得更加差。因此,根據(jù)生成文本的目的和要求,用戶可以調(diào)整penalty_alpha的值以獲得更好的結(jié)果。
-
temperature :temperature 是生成文本模型(如Transformer模型)在生成文本時(shí)所使用的參數(shù)。
模型通過(guò)對(duì)每一個(gè)單詞的概率進(jìn)行計(jì)算,并選擇具有最高概率的單詞作為下一個(gè)單詞,以生成文本序列。為了生成多樣性更高的文本,通常使用高斯分布重新調(diào)整單詞的概率值。temperature 參數(shù)定義了重新調(diào)整的度量。
如果 temperature 的值為1,則沒(méi)有任何調(diào)整;如果其值比1大,則會(huì)生成更加隨機(jī)的文本;如果其值比1小,則生成的文本更加保守。通常需要多次試驗(yàn)來(lái)找到最適合特定數(shù)據(jù)集的 temperature 值 - top_k :用于top-k篩選的最高概率詞匯表標(biāo)記的數(shù)量。
-
top_p:“top_p” 是一個(gè)用于限制生成文本中詞語(yǔ)選擇的概率分布的參數(shù)。它代表了僅選擇概率分布中前p%大的詞語(yǔ),而舍棄剩余的詞語(yǔ)。通俗地說(shuō),它用于約束生成文本中詞語(yǔ)的數(shù)量,防止生成過(guò)多的詞語(yǔ),并且只選擇最可能的詞語(yǔ)。
具體地,假設(shè)我們有一個(gè)模型,它預(yù)測(cè)了下一個(gè)單詞的概率分布,如果我們將 top_p 設(shè)置為0.9,那么我們將只選擇概率分布中前 90% 的詞語(yǔ)。因此,如果我們生成的詞語(yǔ)不在前90%,那么將不會(huì)考慮這個(gè)詞語(yǔ)。這樣做可以降低生成的詞語(yǔ)數(shù)量,同時(shí)可以保證生成的詞語(yǔ)更可能是正確的。 -
typical_p :“top_p” 和 “top_k” 是一組限制生成文本中每個(gè)詞選擇的概率的參數(shù)?!皌op_p” 控制生成的文本中,每個(gè)詞選擇的概率必須在最高概率的前 p 的詞中,而不是選擇來(lái)自整個(gè)詞匯表中的任何詞。
“typical_p” 是一個(gè)新加入的參數(shù),與 “top_p” 類似,但是它限制的是生成的文本中每個(gè)詞概率的分布,而不是概率的確切值。與 “top_p” 不同的是,“typical_p” 可以產(chǎn)生更長(zhǎng)的文本序列,因?yàn)樗试S更多的詞匯選擇。
使用這些參數(shù)可以限制生成的文本,從而產(chǎn)生更有意義的,更符合目標(biāo)的生成文本。 -
epsilon_cutoff:epsilon_cutoff 是一個(gè)超參數(shù),它在文本生成中用于控制如何選擇詞語(yǔ)。它是一個(gè)數(shù)字,代表了從預(yù)測(cè)分布中刪除詞語(yǔ)的閾值。
舉個(gè)例子,如果我們?cè)O(shè)置 epsilon_cutoff = 0.01 ,那么預(yù)測(cè)分布中低于0.01的所有詞語(yǔ)將不會(huì)被選擇,只有剩下的更高的分?jǐn)?shù)的詞語(yǔ)將被選中。通過(guò)調(diào)整這個(gè)參數(shù),可以控制預(yù)測(cè)的詞語(yǔ)數(shù)量,從而控制生成的文本的精細(xì)程度。 -
eta_cutoff:“eta_cutoff” 是 GPT-2 文本生成中的一個(gè)參數(shù),它控制生成的序列的多樣性。它的作用是決定是否要在符合預(yù)定要求的前提下生成更加出奇不意的序列。
eta_cutoff 表示當(dāng)前生成的序列與最高概率的第二高概率的比值,如果比值大于 eta_cutoff,則繼續(xù)生成下一個(gè)字符;如果比值小于 eta_cutoff,則停止生成。
通過(guò)調(diào)整 eta_cutoff 的值,可以控制生成的序列的多樣性:如果 eta_cutoff 較低,則生成的序列會(huì)更加多樣化;如果 eta_cutoff 較高,則生成的序列會(huì)更加保守,更接近訓(xùn)練數(shù)據(jù)。 - diversity_penalty :diversity_penalty 參數(shù)是指對(duì)生成的文本多樣性的懲罰因子。當(dāng) diversity_penalty 設(shè)置為正數(shù)時(shí),它會(huì)懲罰生成的文本里排在前面的單詞出現(xiàn)的頻率過(guò)高的情況,進(jìn)而提高文本的多樣性。較小的 diversity_penalty 值可以使生成的文本更加保守,而較大的值則可以提高文本的創(chuàng)造性。需要注意的是,對(duì)文本多樣性的懲罰因子過(guò)大也可能導(dǎo)致生成的文本質(zhì)量下降,因此選擇正確的 diversity_penalty 值需要根據(jù)具體應(yīng)用場(chǎng)景和需求進(jìn)行調(diào)整。
-
repetition_penalty :“repetition_penalty” 是用于文本生成中的參數(shù),用于懲罰重復(fù)的單詞和句子。默認(rèn)值為1.0,其中較高的值意味著更強(qiáng)的懲罰,生成的文本中將出現(xiàn)更少的重復(fù)。如果取值為0,則沒(méi)有懲罰,生成的文本可能包含大量重復(fù)的內(nèi)容。
在實(shí)際使用中,通常需要對(duì)該參數(shù)進(jìn)行調(diào)整,以根據(jù)具體需求在生成的文本中達(dá)到適當(dāng)?shù)钠胶猓缭谝恍┤蝿?wù)中,過(guò)多的重復(fù)可能不是理想的,因此需要將repetition_penalty設(shè)置為較高的值;而在其他任務(wù)中,更多的重復(fù)可能是有意義的,因此需要將repetition_penalty設(shè)置為較低的值。 - encoder_repetition_penalty :encoder_repetition_penalty是Transformers庫(kù)中用于文本生成任務(wù)的一個(gè)參數(shù)。它決定了對(duì)模型對(duì)源文本進(jìn)行重復(fù)生成文本的懲罰程度。當(dāng)設(shè)置了較高的值時(shí),模型會(huì)對(duì)生成出來(lái)的文本與源文本重復(fù)的部分進(jìn)行懲罰,從而有可能生成出不同于源文本的新文本。設(shè)置的值越大,模型對(duì)重復(fù)的文本的懲罰程度就越高。如果不設(shè)置此參數(shù),則默認(rèn)為1.0。
-
length_penalty :length_penalty是一個(gè)因子,用于調(diào)整生成的序列長(zhǎng)度的影響。在生成的文本中,長(zhǎng)度是相對(duì)的。例如,一篇長(zhǎng)文章與另一篇短文章相比可能更有價(jià)值。為了考慮這種情況,可以在生成文本時(shí)考慮長(zhǎng)度,通過(guò)設(shè)置長(zhǎng)度懲罰因子。
具體來(lái)說(shuō),length_penalty是一個(gè)根據(jù)生成的序列長(zhǎng)度動(dòng)態(tài)調(diào)整生成序列的分?jǐn)?shù)的因子。如果length_penalty的值較小,則長(zhǎng)序列的分?jǐn)?shù)會(huì)比較低,因此生成的序列可能較短。如果length_penalty的值較大,則長(zhǎng)序列的分?jǐn)?shù)可能更高,因此生成的序列可能更長(zhǎng)。在適當(dāng)?shù)那闆r下,可以通過(guò)調(diào)整length_penalty的值來(lái)影響生成文本的長(zhǎng)度。 - no_repeat_ngram_size:no_repeat_ngram_size 參數(shù)指定了生成文本時(shí)需要避免的重復(fù)文本的大小。該參數(shù)指示在生成的文本中,最多允許多少個(gè)詞與原始文本中的詞進(jìn)行重復(fù)。如果該值設(shè)置為 3,則生成的文本中的任何一段長(zhǎng)度為三個(gè)詞的子序列都不能與原始文本的任何子序列重復(fù)。設(shè)置該值可以防止生成的文本中出現(xiàn)重復(fù)詞匯,因此可以提高生成文本的多樣性。
-
bad_words_ids:bad_words_ids 是 Text Generation 中的一個(gè)參數(shù),用來(lái)表示需要被禁止出現(xiàn)在生成的文本中的單詞(通常是一些不當(dāng)語(yǔ)言、種族歧視等)的 ID。這些單詞在生成文本時(shí)將會(huì)被忽略,以確保生成的文本在內(nèi)容和語(yǔ)言方面符合某些道德和社會(huì)規(guī)范。
例如,假設(shè)你使用的是 BERT 模型,并且在你的詞匯表中有一些不恰當(dāng)?shù)脑~。如果你不希望這些詞在生成的文本中出現(xiàn),你可以將它們的 ID 添加到 bad_words_ids 列表中。生成的文本中將不會(huì)再出現(xiàn)這些詞的 ID。 -
force_words_ids:force_words_ids參數(shù)可以用于強(qiáng)制模型在生成的文本中包含特定的單詞或子序列。具體來(lái)說(shuō),它是一個(gè)包含單詞或子序列id的列表,表示模型必須生成包含這些單詞或子序列的文本。
如果給定的單詞或子序列在生成的過(guò)程中無(wú)法滿足約束條件,則會(huì)嘗試進(jìn)行多次重新采樣,直到滿足條件或達(dá)到最大重試次數(shù)。如果最終無(wú)法生成滿足條件的文本,則會(huì)引發(fā)一個(gè)異常。
在一些應(yīng)用場(chǎng)景中,force_words_ids可以用于約束生成的文本必須滿足某些關(guān)鍵詞或要求,例如在生成廣告文案時(shí)強(qiáng)制包含某些銷售亮點(diǎn)詞匯。 -
renormalize_logits:在 Text Generation 中,renormalize_logits 是一個(gè)控制標(biāo)準(zhǔn)化邏輯概率的布爾值。當(dāng)設(shè)置為 True 時(shí),它會(huì)將模型中的 logits 規(guī)范化為概率分布,以便于計(jì)算損失和生成樣本。在某些情況下,如果 logits 不規(guī)范化,可能會(huì)出現(xiàn)訓(xùn)練困難或生成不穩(wěn)定的問(wèn)題,因此可以將 renormalize_logits 設(shè)置為 True 來(lái)解決這些問(wèn)題。
需要注意的是,將 renormalize_logits 設(shè)置為 True 會(huì)對(duì)生成的樣本產(chǎn)生一定的影響。具體來(lái)說(shuō),它會(huì)使生成的樣本更加平滑,這意味著它們可能會(huì)失去一些原始模型的細(xì)節(jié)。因此,在某些情況下,可以將 renormalize_logits 設(shè)置為 False,以便生成更加準(zhǔn)確和詳細(xì)的樣本。但是,這也可能導(dǎo)致訓(xùn)練問(wèn)題和不穩(wěn)定的生成結(jié)果,需要在使用時(shí)謹(jǐn)慎權(quán)衡。 -
constraints :constraints參數(shù)用于對(duì)生成文本的內(nèi)容進(jìn)行限制,以滿足特定的條件或要求。該參數(shù)可以設(shè)置為一個(gè)約束函數(shù)的列表,每個(gè)函數(shù)都返回一個(gè)布爾值,表示輸入序列是否符合特定的限制條件。
具體來(lái)說(shuō),約束函數(shù)可以檢查生成的序列是否包含特定的單詞或短語(yǔ),或者是否滿足特定的語(yǔ)法規(guī)則。例如,可以使用一個(gè)約束函數(shù)來(lái)檢查生成的序列是否符合特定的主題,或者是否包含不允許出現(xiàn)的單詞。 -
forced_bos_token_id:時(shí),forced_bos_token_id是一個(gè)可選參數(shù),用于指定要強(qiáng)制用作開(kāi)始標(biāo)記的token ID,即在生成文本時(shí)將其添加到生成序列的開(kāi)頭。
默認(rèn)情況下,Transformers使用模型的開(kāi)始標(biāo)記作為生成序列的第一個(gè)token,但是在某些情況下,可能需要強(qiáng)制使用其他token作為開(kāi)始標(biāo)記。例如,在對(duì)話生成任務(wù)中,我們可能希望生成序列的開(kāi)頭始終是某個(gè)固定的問(wèn)句。 - remove_invalid_values :在文本生成任務(wù)中,模型可能會(huì)生成一些無(wú)效的值,如NaN或Inf。如果這些無(wú)效值被允許出現(xiàn),可能會(huì)導(dǎo)致模型出現(xiàn)錯(cuò)誤或不可預(yù)測(cè)的結(jié)果。因此,如果在模型輸出中檢測(cè)到此類無(wú)效值,可以選擇將其移除。在Transformers庫(kù)中,可以使用remove_invalid_values參數(shù)來(lái)控制是否移除無(wú)效值。當(dāng)remove_invalid_values設(shè)置為True時(shí),任何無(wú)效值都會(huì)被移除。當(dāng)設(shè)置為False時(shí),這些無(wú)效值將保留在輸出中。
-
exponential_decay_length_penalty:exponential_decay_length_penalty參數(shù)指定在生成文本時(shí)如何懲罰長(zhǎng)度。該參數(shù)的默認(rèn)值為0.0,表示不應(yīng)用長(zhǎng)度懲罰。當(dāng)exponential_decay_length_penalty參數(shù)為非零值時(shí),將按指數(shù)衰減的方式對(duì)生成文本的長(zhǎng)度進(jìn)行懲罰。
衰減的速度由decay_rate參數(shù)決定。例如,如果decay_rate設(shè)置為0.5,對(duì)于長(zhǎng)度為N的文本,生成器會(huì)給該文本的得分乘以0.5^N。這樣做可以有效防止生成器生成過(guò)長(zhǎng)的文本。
exponential_decay_length_penalty參數(shù)適用于需要生成特定長(zhǎng)度文本的任務(wù),比如對(duì)話系統(tǒng)中對(duì)話長(zhǎng)度的控制。通常情況下,生成較短的文本可以更加流暢自然,而過(guò)長(zhǎng)的文本可能會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤或者邏輯混亂等問(wèn)題。 - suppress_tokens:suppress_tokens參數(shù)可以用來(lái)抑制模型生成指定的標(biāo)記(token)。具體來(lái)說(shuō),當(dāng)模型生成一個(gè)標(biāo)記時(shí),如果該標(biāo)記在suppress_tokens中指定了,那么模型將會(huì)跳過(guò)該標(biāo)記,繼續(xù)生成下一個(gè)標(biāo)記。這個(gè)參數(shù)通常用于特殊情況下的文本生成任務(wù),比如過(guò)濾掉一些不合適的詞匯或者指定一些強(qiáng)制要求的單詞。
- num_return_sequences:num_return_sequences 參數(shù)用于控制模型生成的文本序列的數(shù)量。默認(rèn)情況下,模型將生成一個(gè)完整的文本序列,但是你可以設(shè)置 num_return_sequences 參數(shù)為一個(gè)大于 1 的整數(shù),以生成多個(gè)文本序列。這對(duì)于生成多個(gè)相關(guān)但不完全相同的文本序列很有用,例如為一組給定的提示或問(wèn)題生成多個(gè)可能的答案。
-
output_attentions:output_attentions 是一個(gè)參數(shù),用于指定是否返回注意力矩陣。注意力機(jī)制是深度學(xué)習(xí)中常用的一種機(jī)制,用于在給定輸入時(shí),自動(dòng)分配不同的權(quán)重給不同的輸入項(xiàng),并計(jì)算其與輸出的關(guān)聯(lián)度。
在文本生成任務(wù)中,注意力機(jī)制可以用來(lái)讓模型了解輸入文本的各部分之間的關(guān)聯(lián),從而更好地生成上下文相關(guān)的輸出。如果 output_attentions 被設(shè)置為 True,那么在調(diào)用 generate() 方法時(shí),模型將返回一個(gè)元組 (output, attentions)。其中,output 是生成的文本序列,attentions 是一個(gè)元組,包含每個(gè)層次的注意力矩陣。注意力矩陣是一個(gè)三維張量,其維度為 [batch_size, num_heads, sequence_length, sequence_length],其中,batch_size 表示輸入的樣本數(shù),num_heads 表示注意力頭數(shù),sequence_length 表示輸入序列的長(zhǎng)度。
這里對(duì)參數(shù)基本全部做了詳細(xì)的介紹,記錄于此。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-475679.html
到了這里,關(guān)于關(guān)于Text Generation的GenerationCoinfig參數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!