中醫(yī)藥領(lǐng)域的問(wèn)題生成,阿里天池算法大賽Top1

來(lái)源:機(jī)器學(xué)習(xí)AI算法工程 本文約1700字,建議閱讀5分鐘
任務(wù)是中醫(yī)藥領(lǐng)域的問(wèn)題生成挑戰(zhàn),而問(wèn)題生成屬于NLG中重要的一種應(yīng)用。

問(wèn)題生成任務(wù)需要我們根據(jù)篇章及對(duì)應(yīng)的答案自動(dòng)生成相應(yīng)的問(wèn)題,即“篇章+答案→問(wèn)題”這樣的流程。 訓(xùn)練集由三個(gè)字段(篇章、問(wèn)題、答案)構(gòu)成,測(cè)試集由兩個(gè)字段(篇章、答案)構(gòu)成,其中的問(wèn)題字段需要我們生成。 根據(jù)以上分析,我們可以采用Seq2Seq模型來(lái)端到端地實(shí)現(xiàn)問(wèn)題生成,而模型的輸入為篇章和答案,輸出為問(wèn)題。

文本長(zhǎng)度分布



分析總結(jié)
訓(xùn)練數(shù)據(jù)量適中,不是很大數(shù)據(jù)量,但是也不算少。 文本長(zhǎng)度:篇章文本最大,其次是答案文本,最后是問(wèn)題文本。 如果只看答案文本,那它的長(zhǎng)度分布應(yīng)該是同分布。 若要將篇章、問(wèn)題和答案拼接進(jìn)行訓(xùn)練,則需要對(duì)其進(jìn)行文本截?cái)啵?/span> 問(wèn)題是要預(yù)測(cè)的部分,并且長(zhǎng)度不是太長(zhǎng),所以可以不進(jìn)行截?cái)啵?/span> 答案是從篇章中截取的,可以適當(dāng)截取短一點(diǎn); 篇章在硬件資源允許的范圍內(nèi),可以盡量截取長(zhǎng)一點(diǎn)。




核心思路
數(shù)據(jù)預(yù)處理:數(shù)據(jù)清洗(剔除空白字符、剔除帶括號(hào)的英文),處理部分不匹配數(shù)據(jù)(絕大部分答案是從篇章中截取的,不匹配數(shù)據(jù)指答案在篇章中無(wú)法完全匹配到的數(shù)據(jù)); 文本截?cái)啵核悸肥瞧轮写鸢杆谖恢玫母浇c問(wèn)題的相關(guān)性最強(qiáng),答案的前面部分信息最多,問(wèn)題文本最長(zhǎng)131個(gè)字符。具體操作是篇章取答案所在位置的前64個(gè)字符和后128個(gè)字符;答案取前64個(gè)字符;問(wèn)題取前131個(gè)字符。 數(shù)據(jù)輸入:訓(xùn)練時(shí)按照“[CLS]篇章[SEP]答案[SEP]問(wèn)題[SEP]”格式輸入。推斷時(shí)按照“[CLS]篇章[SEP]答案[SEP]”格式輸入。如圖1所示。 模型架構(gòu):使用“NEZHA + UniLM”的方式來(lái)構(gòu)建一個(gè)Seq2Seq模型,端到端地實(shí)現(xiàn)“篇章 + 答案 → 問(wèn)題”。如圖2所示。

緩解Exposure Bias問(wèn)題的策略:1.通過(guò)隨機(jī)替換Decoder的輸入詞來(lái)構(gòu)造“有代表性”的負(fù)樣本;2.使用對(duì)抗訓(xùn)練來(lái)生成擾動(dòng)樣本。 解碼:使用Beam search來(lái)對(duì)問(wèn)題進(jìn)行解碼。 解決顯存不足的方法:由于顯存有限,無(wú)法使用較大的batch size進(jìn)行訓(xùn)練,梯度累積優(yōu)化器可以使用小的batch size實(shí)現(xiàn)大batch size的效果——只要你愿意花n倍的時(shí)間,可以達(dá)到n倍batch size的效果,而不需要增加顯存。 其他Trick: 在單模型(NEZHA-Large-WWM)上使用5折交叉驗(yàn)證。 對(duì)詞表進(jìn)行精簡(jiǎn)(因?yàn)榭偟膖okens大概有2萬(wàn)個(gè),這意味著最后預(yù)測(cè)生成的token時(shí)是一個(gè)2萬(wàn)分類問(wèn)題,但事實(shí)上有接近一半的tokens都不會(huì)分出來(lái),因此這2萬(wàn)分類浪費(fèi)了一些計(jì)算量)。 EarlyStopping。 偽標(biāo)簽。




經(jīng)驗(yàn)總結(jié)
文本截?cái)嗖呗允沟梦谋灸軌蛟跐M足預(yù)訓(xùn)練模型輸入的要求下,較少的損失上下文信息,提分效果顯著。使用該文本截?cái)嗖呗灾埃恢睙o(wú)法提升至0.6+。 nezha-large-wwm預(yù)訓(xùn)練模型是我們隊(duì)試過(guò)效果是最好的模型,單個(gè)的nezha-large-wwm加上之前的技巧就能達(dá)到0.64+。nezha-base、nezha-base-wwm和wobert在該任務(wù)上效果相差不多,大約0.63+,roberta-wwm-large-ext、bert-wwm-ext大約0.62+。 使用隨機(jī)替換和對(duì)抗訓(xùn)練能夠緩解Exposure Bias,使用這兩個(gè)trick后效果提升也比較明顯,大約有百分之二提升。 不使用交叉驗(yàn)證,不劃分驗(yàn)證集的情況下,使用全部訓(xùn)練數(shù)據(jù)進(jìn)行訓(xùn)練,大約第12個(gè)epoch效果最好。使用交叉驗(yàn)證后效果會(huì)優(yōu)于全量訓(xùn)練的結(jié)果,缺點(diǎn)是訓(xùn)練推斷時(shí)間太長(zhǎng)。 偽標(biāo)簽是一個(gè)比較常用的trick,在該生成任務(wù)上,使用偽標(biāo)簽有細(xì)微的提升,大約萬(wàn)分之二左右。 梯度累積使得能夠用較大的batch size訓(xùn)練large模型,分?jǐn)?shù)上也有細(xì)微的提升。
編輯:于騰凱
評(píng)論
圖片
表情
