131 1300 0010
電機伺服
當前位置: 首頁>> 電源技術>>電機伺服>>
  • 導航欄目
  • 逆變電源
  • 開關電源
  • 電機伺服
  • 其他電源
  • EDA與代碼實現(xiàn)方案及相關實驗設計
    EDA與代碼實現(xiàn)方案及相關實驗設計
  • EDA與代碼實現(xiàn)方案及相關實驗設計
  • 來源:AIAS編程有道  發(fā)布日期: 2022-07-05  瀏覽次數(shù): 1,056

     數(shù)據(jù)增強可以算作是做深度學習算法的一個小trick。該介紹主要出自論文:EDA: Easy Data AugmentaTIon?Techniques for BoosTIng Performance on Text ClassificaTIon Tasks[1]

      論文中的中文文本分類數(shù)據(jù)增強的代碼實現(xiàn)可參考EDA_NLP_for_Chinese[2],當然在實際使用中可以根據(jù)具體情況再做修改。文中介紹的代碼是我個人對該源碼的根據(jù)我個人書寫習慣進行的修改。

      論文簡介主要內(nèi)容

      這篇論文中作者提出所謂的簡單數(shù)據(jù)增強(Easy Data AugmentaTIon, EDA),包括了四種方法:「同義詞替換、隨機插入、隨機交換、隨機刪除」。作者使用了CNN和RNN分別在五種不同的文本分類任務中做了實驗,實驗表明,EDA提升了分類效果。作者也表示,平均情況下,僅使用50%的原始數(shù)據(jù),再使用EDA進行數(shù)據(jù)增強,能取得和使用所有數(shù)據(jù)情況下訓練得到的準確率。

      文中作者提出「通用的」NLP數(shù)據(jù)增強技術,命名為EDA。同時作者表示,他們是第一個給數(shù)據(jù)增強引入文本編輯技術的人。EDA的提出也是一定程度上受計算機視覺上增強技術的啟發(fā)而得到。下面詳細介紹EDA的四個方法:

      對于訓練集中的每個句子,執(zhí)行下列操作:

      同義詞替換(Synonym Replacement, SR):從句子中隨機選取n個不屬于停用詞集的單詞,并隨機選擇其同義詞替換它們;

      隨機插入(Random Insertion, RI):隨機的找出句中某個不屬于停用詞集的詞,并求出其隨機的同義詞,將該同義詞插入句子的一個隨機位置。重復n次;

      隨機交換(Random Swap,?RS):隨機的選擇句中兩個單詞并交換它們的位置。重復n次;

      隨機刪除(Random Deletion, RD):以 的概率,隨機的移除句中的每個單詞;

      這些方法里,只有SR曾經(jīng)被人研究過,其他三種方法都是本文作者首次提出。

      值得一提的是,長句子相對于短句子,存在一個特性:長句比短句有更多的單詞,因此長句在保持原有的類別標簽的情況下,能吸收更多的噪聲。為了充分利用這個特性,作者提出一個方法:基于句子長度來變化改變的單詞數(shù),換句話說,就是不同的句長,因增強而改變的單詞數(shù)可能不同。具體實現(xiàn):對于SR、RI、RS,遵循公式: = * , 表示句長, 表示一個句子中需要改變的單詞數(shù)的比例。在RD中,讓 和 相等。另外,每個原始句子,生成 個增強的句子。

      相關實驗

      實驗設置作者使用了5個不同的Benchmark數(shù)據(jù)集,就有了5種文本分類任務,使用了兩個state-of-the-art文本分類的模型:LSTM-RNN[3]和CNNs[4]。并將有無EDA作為對比,同時因為欲得到EDA在小數(shù)據(jù)集上的實驗效果,將訓練數(shù)據(jù)集大小分為500、2000、5000、完整這4個量級。每個訓練效果是在5個文本分類任務上的效果均值。

      實驗結果在完整的數(shù)據(jù)集上,平均性能提升0.8%;在大小為500的訓練集上,提升3.0%。具體見如下:

    pYYBAGLD3LiANdpiAACEgsDwQkE768

      作者指出,EDA在小訓練集上有更好的性能效果。若使用完整的訓練集數(shù)據(jù),不使用EDA的情況下,最佳的平均準確率達到88.3%。若使用50%的訓練集數(shù)據(jù)并且使用EDA的情況下,最佳的平均準確率達到88.6%,超過前述情況。

      問題總結問題1:若句子中有多個單詞被改變了,那么句子的原始標簽類別是否還會有效?

      作者做了實驗:首先,使用RNN在一未使用EDA過的數(shù)據(jù)集上進行訓練;然后,對測試集進行EDA擴增,每個原始句子擴增出9個增強的句子,將這些句子作為測試集輸入到RNN中;最后,從最后一個全連接層取出輸出向量。應用t-SNE技術,將這些向量以二維的形式表示出來。實驗結果就是,增強句子的隱藏空間表征緊緊環(huán)繞在這些原始句子的周圍。作者的結論是,句子中有多個單詞被改變了,那么句子的原始標簽類別就可能無效了。

      對于EDA中的每個方法,單獨提升的效果如何?

      作者做實驗得出的結論是,對于每個方法在小數(shù)據(jù)集上取得的效果更明顯。 如果太大的話,甚至會降低模型表現(xiàn)效果,=0.1似乎是最佳值。

      如何選取合適的增強語句個數(shù)?

      在較小的數(shù)據(jù)集上,模型容易過擬合,因此生成多一點的語料能取得較好的效果。對于較大的數(shù)據(jù)集,每句話生成超過4個句子對于模型的效果提升就沒有太大幫助。因此,作者推薦實際使用中的一些參數(shù)選取如下表所示,其中, :每個原始語句的增強語句個數(shù);:訓練集大小

    pYYBAGLD3MOAN5G1AAAi-K9arSk041

      EDA提高文本分類的效果的原理是什么?

      生成類似于原始數(shù)據(jù)的增強數(shù)據(jù)會引入一定程度的噪聲,有助于防止過擬合;

      使用EDA可以通過同義詞替換和隨機插入操作引入新的詞匯,允許模型泛化到那些在測試集中但不在訓練集中的單詞;

      為什么使用EDA而不使用語境增強、噪聲、GAN和反向翻譯?

      上述的其它增強技術作者都希望你使用,它們確實在一些情況下取得比EDA較好的性能,但是,由于需要一個深度學習模型,這些技術往往在其取得的效果面前,付出的實現(xiàn)代價更高。而EDA的目標在于,使用簡單方便的技術就能取得相接近的結果。

      EDA是否有可能會降低模型的性能?

      確實有可能。原因在于,EDA有可能在增強的過程中,改變了句子的意思,但其仍保留原始的類別標簽,從而產(chǎn)生了標簽錯誤的句子。

      中文文本分類數(shù)據(jù)增強代碼實現(xiàn)代碼實現(xiàn)中是需要jieba分詞,停用詞,以及一個提供同義詞的包(Synonyms[5]),本代碼參考地址:ChineseTextEDA[6]

      使用方式

      本代碼暫時不考慮上傳到pip上,本代碼只需要進入chinese-text-eda目錄下后,執(zhí)行:

      python?setup.py install

      即可安裝使用。也可以將代碼復制到項目錄下使用。

      在中文文本分類過程中需要使用數(shù)據(jù)增強的方式能夠在數(shù)據(jù)量少的情況起到一定效果。

      固定格式數(shù)據(jù)增強

      該種方式提供只需要將待增強的數(shù)據(jù)處理成如下格式,然后在書寫一個py腳本,在命令行運行即可。

      label sentence

      其中數(shù)據(jù)的標簽在前,文本在后,標簽和文本之間使用\t(tab)分割。

      使用方式如下,python 文件為example.py

      from eda import SimpleEDAEnhancesed = SimpleEDAEnhance()sed.simple_eda_enhance()

      然后在控制臺中輸入相關參數(shù)即可。控制臺輸入樣例如下:

      python example.py --input train.txt --output eda_train.txt --num_aug 2 --alpha 0.2

      相關參數(shù)說明:

      --input: 原始數(shù)據(jù)的輸入文件, must

      --output: 增強數(shù)據(jù)后的輸出文件, optional,如果未填寫,會在input目錄下生成一個eda開頭的結果

      --num_aug: 一條數(shù)據(jù)增強幾條數(shù)據(jù),optional, default 9

      --alpha: 每條語句中將會被改變的單詞數(shù)占比, optional, default 0.1

      自定義格式數(shù)據(jù)增強

      有時數(shù)據(jù)格式相對復雜,這時需要我們將增強的方法嵌入到數(shù)據(jù)處理的程序中,這時可以參考如下方法, 案例代碼如下,這也是實例化EDA這個類

    pYYBAGLD3N2AWmESAABW38Dler0762

      其中,EDA初始化類的參數(shù)如下:

      num_aug: 一條數(shù)據(jù)增強到多少條,optional, default 9

      stop_words: 增強過程使用的停用詞, optional, default use hit提供的停用詞

      stop_words_type: 停用詞類型,optional, select scope: [“hit”, “cn”, “baidu”, “scu”]

      EDA類中的數(shù)據(jù)增強方法的分數(shù)如下:

      sentence: must, 待增強的語句;

      alpha_sr: default=0.1,近義詞替換詞語的比例

      alpha_ri: default=0.1,隨機插入詞語個數(shù)占語句詞語數(shù)據(jù)的比例

      alpha_rs: default=0.1,隨機交換詞語個數(shù)占語句詞語數(shù)據(jù)的比例

      p_rd: default=0.1,隨機刪除詞語個數(shù)占語句詞語數(shù)據(jù)的比例

      一個簡單的測試如下:

      from ChineseTextEDA.eda import EDAeda = EDA()res = eda.eda(“我們就像蒲公英,我也祈禱著能和你飛去同一片土地”)print(res)

      結果如下:

      [‘我們 就 像 蒲公英 , 我 也 天主 著 能 和 你 飛去 同 一片 土地’, ‘我們 就 像 蒲公英 , 我 也 祈禱 著 能 和 你 飛去 同 一片 土地’, ‘我們 就 像 蒲公英 , 我 也 祈禱 和 能 著 你 飛去 同 一片 土地’, ‘我們 就 像 蒲公英 , 我 也 祈禱 著 聚花 能 和 你 飛去 同 一片 土地’, ‘我們 就 像 蒲公英 , 我 也 祈禱 著 能 和 飛去 你 同 一片 土地’, ‘我們 就 像 蒲公英 , 我 也 祈禱 能 和 你 飛去 同 一片 土地’, ‘我們 就 像 , 我 也 祈禱 著 能 和 你 飛去 同 一片 土地’, ‘我們 就 像 蒲公英 , 我 也 祈禱 著 能 和 你 飛去 同 假如 一片 土地’, ‘我們 就 像 蒲公英 , 我 也 祈禱 著 能 和 你 直奔 同 一片 土地’, ‘我們 就 像 蒲公英 , 我 也 祈禱 著 能 和 你 飛去 同 一片 土地’]


  • ·上一篇:
    ·下一篇:
  • 其他關聯(lián)資訊
    深圳市日月辰科技有限公司
    地址:深圳市寶安區(qū)松崗鎮(zhèn)潭頭第二工業(yè)城A區(qū)27棟3樓
    電話:0755-2955 6626
    傳真:0755-2978 1585
    手機:131 1300 0010
    郵箱:hu@szryc.com

    深圳市日月辰科技有限公司 版權所有:Copyright?2010-2023 m.xbquwah.cn 電話:13113000010 粵ICP備2021111333號