<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          實(shí)戰(zhàn)必備!文本分類中的一些經(jīng)驗(yàn)和 tricks

          共 2561字,需瀏覽 6分鐘

           ·

          2022-06-21 04:02

          NewBeeNLP公眾號(hào)原創(chuàng)出品  

          公眾號(hào)專欄作者 @wulc

          作者是字節(jié)跳動(dòng)廣告算法工程師,個(gè)人blog: http://wulc.me

          最近在總結(jié)之前做的文本分類實(shí)驗(yàn)的一些經(jīng)驗(yàn)和 tricks,同時(shí)也參考了網(wǎng)上的一些相關(guān)資料(見(jiàn)文末),其中有些 tricks 沒(méi)嘗試過(guò),先在這里記下,或者日后能用上。

          這里的經(jīng)驗(yàn)和 tricks 大概可分為兩部分:預(yù)處理部分模型訓(xùn)練部分,下面分別介紹

          預(yù)處理

          • 「文本更正」,主要是將文本標(biāo)準(zhǔn)化,包括繁體轉(zhuǎn)簡(jiǎn)體,全角轉(zhuǎn)半角,拼音糾錯(cuò)等

          • 「文本泛化」,如一個(gè)手機(jī)號(hào)碼,因?yàn)橛袔浊f(wàn)的手機(jī)號(hào)碼,不可能為每個(gè)手機(jī)號(hào)碼設(shè)一個(gè)特征,所以最好將手機(jī)號(hào)碼轉(zhuǎn)化為同一個(gè)特征;另外表情符號(hào)、人名、地址、網(wǎng)址、命名實(shí)體等也要考慮這種泛化,泛化的程度這個(gè)視具體的任務(wù),比如說(shuō)地址可以以國(guó)家為粒度,也可以以省份為粒度

          • 規(guī)范文本為統(tǒng)一長(zhǎng)度時(shí),取所有長(zhǎng)度的均值或者中位數(shù),但是別取最大值;截?cái)鄷r(shí)根據(jù)具體任務(wù)考慮從前面階段或從后面截?cái)?/p>

          • 構(gòu)建數(shù)據(jù)集的 vocabulary 時(shí),需要考慮以下幾個(gè)方面

            • 取前N個(gè)高頻詞或者過(guò)濾掉出現(xiàn)次數(shù)小于某個(gè)閾值的詞
            • 根據(jù)具體任務(wù)確定是否需要去掉 stop words
            • 假如采用了預(yù)訓(xùn)練的詞向量,要盡可能讓 vocabulary 中的詞語(yǔ)能找到對(duì)應(yīng)的詞向量(這個(gè)問(wèn)題也涉及到預(yù)訓(xùn)練的詞向量和分詞器的選擇)
          • 詞向量的選擇,當(dāng)數(shù)據(jù)集較小時(shí),直接使用預(yù)訓(xùn)練好的詞向量(如google、facebook開(kāi)源的),且不用微調(diào);當(dāng)訓(xùn)練集比較大的時(shí)候,可隨機(jī)初始化進(jìn)行訓(xùn)練,也可以對(duì)預(yù)訓(xùn)練的詞向量進(jìn)行微調(diào)(微調(diào)收斂得更快,但是結(jié)果差異不大)

          • 分詞時(shí)考慮以下幾個(gè)方面

            • 是否需要分詞,使用 char-level 的方法時(shí)不需要分詞,但是在很多場(chǎng)景下 word-level 的效果都要比 char-level 的要好
            • 分詞時(shí)可以只保留長(zhǎng)度大于1的詞(會(huì)去除很多停止詞),對(duì)結(jié)果精度沒(méi)什么影響,但是可以有效降低特征維度
            • 采用預(yù)訓(xùn)練的詞向量時(shí),要保證分詞后的大部分詞語(yǔ)能夠出現(xiàn)在預(yù)訓(xùn)練的詞向量表中,否則這個(gè)詞語(yǔ)的 embedding 就相當(dāng)于是隨機(jī)初始化,預(yù)訓(xùn)練的詞向量沒(méi)有提供任何信息;具體方法可參考這里
          • 數(shù)據(jù)增強(qiáng)

            • 常見(jiàn)的方法有:drop(隨機(jī)刪掉文本)、shuffle(隨機(jī)改變文本順序)、replace(用近義詞進(jìn)行替換)
            • 數(shù)據(jù)增強(qiáng)對(duì) word-level 的方法有一定的提升,但是對(duì)于 char-level 的方法效果不一定好,甚至?xí)鸬椒醋饔?/section>

          模型訓(xùn)練

          • 規(guī)則有時(shí)能解決大部分的問(wèn)題,不一定要用到模型,使用時(shí)要權(quán)衡模型帶來(lái)的收益和復(fù)雜性

          • 傳統(tǒng)的機(jī)器學(xué)習(xí)方法根據(jù)其特征工程的不同可分為三大類

            • 詞袋模型:將出現(xiàn)的詞記為1,否則記為 0,問(wèn)題是維度高且稀疏性嚴(yán)重
            • 向量空間模型:根據(jù)文檔頻率、互信息、信息增益、χ2統(tǒng)計(jì)量等進(jìn)行了特征(詞語(yǔ))的選擇,同時(shí)通過(guò) tfidf 值為每個(gè)詞賦權(quán)重;一定程度上緩解了上面提到的詞袋模型維度高且稀疏性嚴(yán)重的問(wèn)題
            • 主題模型:pLSA/LDA/HDP 等主題模型將文本表示低維實(shí)數(shù)向量,類似于深度學(xué)習(xí)中的 embedding,但是比 embedding 有更好的解釋性
            • fasttext 簡(jiǎn)單、速度快,是一個(gè)非常不錯(cuò)的 baseline;隨著問(wèn)題復(fù)雜性增加可依次嘗試 CNN -> RNN -> BERT
          • 對(duì)于深度學(xué)習(xí)模型,把模型變得更深更寬更復(fù)雜往往能夠提升效果;但是當(dāng)模型復(fù)雜到一定程度的時(shí)候,提升的效果微乎其微甚至沒(méi)提升

          • rnn 類模型用雙向一般會(huì)比單向要好

          • 使用 dropout(經(jīng)驗(yàn)值為 0.5) 基本都能提升效果,使用的地方包括:embedding 層后、FC層后

          • 訓(xùn)練震蕩問(wèn)題:增加隨機(jī)采樣因素盡可能使得數(shù)據(jù)分布 iid,默認(rèn) shuffle 機(jī)制能使得訓(xùn)練結(jié)果更穩(wěn)定。如果訓(xùn)練模型仍然很震蕩,可以考慮調(diào)整學(xué)習(xí)率 或 mini_batch_size

          • 采用預(yù)訓(xùn)練的 embedding 并進(jìn)行 finetune 時(shí),在最開(kāi)始 embedding 的學(xué)習(xí)率設(shè)為 0,訓(xùn)練到效果較好時(shí)才開(kāi)始 finetune embedding 層

          • 學(xué)習(xí)率的設(shè)置考慮以下幾個(gè)方面

            • 經(jīng)驗(yàn)值一般為 1、0.1、0.01、0.001, 一般從1開(kāi)始嘗試。很少見(jiàn)學(xué)習(xí)率大于10的
            • 學(xué)習(xí)率一般要隨著訓(xùn)練進(jìn)行衰減,衰減系數(shù)一般是0.5;衰減時(shí)機(jī)可以是驗(yàn)證集準(zhǔn)確率不再上升,或固定訓(xùn)練 N 個(gè) epoch 后
            • 比起自定義的衰減方法,更便捷的方法是使用自適應(yīng)梯度的辦法,例如 adam,adadelta,rmsprop 等,這些一般使用相關(guān)論文提供的默認(rèn)值即可,可以避免再費(fèi)勁調(diào)節(jié)學(xué)習(xí)率
            • 對(duì)RNN來(lái)說(shuō),如果要處理的序列比較長(zhǎng),或者RNN層數(shù)比較多,那么learning rate一般小一些比較好,否則有可能出現(xiàn)結(jié)果不收斂,甚至Nan等問(wèn)題。
          • 超參數(shù)的設(shè)置經(jīng)驗(yàn)可參考 A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification

          • 模型融合時(shí),差異性越大,融合效果越好,具體可參考知乎看山杯奪冠記[1]

          本文參考資料

          [1]

          知乎看山杯奪冠記: https://zhuanlan.zhihu.com/p/28923961

          [2]

          在文本分類任務(wù)中,有哪些論文中很少提及卻對(duì)性能有重要影響的tricks?: https://www.zhihu.com/question/265357659

          [3]

          用深度學(xué)習(xí)(CNN RNN Attention)解決大規(guī)模文本分類問(wèn)題 - 綜述和實(shí)踐: https://zhuanlan.zhihu.com/p/25928551

          [4]

          深度學(xué)習(xí)網(wǎng)絡(luò)調(diào)參技巧: https://zhuanlan.zhihu.com/p/24720954


          - END -


          往期精彩回顧




          瀏覽 25
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲热在线免费看 | 日韩无码电影网 | 鸡巴马上放进去免费视频网站 | 大香蕉网黄色 | 久操资源 |