文本生成就是一個source text 到 target text的映射過程泡躯。
文本生成與文本分類的方法類似,只是在拿到輸入文本的語義表示后的處理方式不同,還需要將這個語義表示輸入到decoder中解碼生成目標(biāo)文本柳弄。
1疯潭、將給定的訓(xùn)練數(shù)據(jù)中的源文本和目標(biāo)文本進(jìn)行分詞,分別建立詞典祝旷。
2履澳、使用Word2Vec訓(xùn)練詞向量。
3怀跛、輸入源文本的詞向量到神經(jīng)網(wǎng)絡(luò)中
4距贷、輸出源文本的語義表示,然后將該語義表示作為decoder的初始隱狀態(tài)輸入到decoder中吻谋,同時接受的向量忠蝗,即start of sequence,進(jìn)行解碼漓拾。
5阁最、在解碼的時間步t,通過softmax輸出骇两。這時有三種處理方式速种,第一種直接將作為下一個時間步的輸入,但是這種方法會導(dǎo)致錯誤累積低千。如果這一個時間步輸出錯誤配阵,那么將其作為后續(xù)的輸入,將會導(dǎo)致以后的時間步的輸出都是錯誤的示血。因此有了第二種方法棋傍,就是每一步的輸入都使用上一步標(biāo)準(zhǔn)的正確的輸出結(jié)果,即訓(xùn)練集中的數(shù)據(jù)难审。這樣子就確保每一個時間步的輸入都是絕對正確的瘫拣。但是這種方法訓(xùn)練出的模型會產(chǎn)生過擬合的問題,如果遇到不在訓(xùn)練集中的數(shù)據(jù)告喊,模型效果極差麸拄。因此,綜合前面兩種方法葱绒,提出了第三種方法感帅,使用teacher forcing。即每一步輸入時地淀,使用采樣sample的方法失球,若采樣的數(shù)據(jù)>0.5,那么就采用訓(xùn)練集中的期望數(shù)據(jù)作為輸入數(shù)據(jù);若采樣結(jié)果<0.5实苞,那么就采用上一步的實(shí)際輸出結(jié)果作為輸入豺撑。
6、直到decoder輸出<EOS>黔牵,即end of sequence聪轿,或者達(dá)到了最長的字?jǐn)?shù)限制,一次訓(xùn)練結(jié)束猾浦,然后將預(yù)測結(jié)果與期望結(jié)果比較陆错,計算LOSS,設(shè)置優(yōu)化策略金赦,更新權(quán)重參數(shù)音瓷。設(shè)置epoch值,當(dāng)訓(xùn)練次數(shù)到達(dá)epoch時夹抗,模型訓(xùn)練結(jié)束绳慎。
7、進(jìn)行測試漠烧。