作者:清凇
鏈接:https://zhuanlan.zhihu.com/p/25928551
來源:知乎
著作權(quán)歸作者所有,轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)。
近來在同時(shí)做一個(gè)應(yīng)用深度學(xué)習(xí)解決淘寶商品的類目預(yù)測(cè)問題的項(xiàng)目械姻,恰好碩士畢業(yè)時(shí)論文題目便是文本分類問題,趁此機(jī)會(huì)總結(jié)下文本分類領(lǐng)域特別是應(yīng)用深度學(xué)習(xí)解決文本分類的相關(guān)的思路傻谁、做法和部分實(shí)踐的經(jīng)驗(yàn)书劝。
業(yè)務(wù)問題描述:
淘寶商品的一個(gè)典型的例子見下圖,圖中商品的標(biāo)題是“夏裝雪紡條紋短袖t恤女春半袖衣服夏天中長(zhǎng)款大碼胖mm顯瘦上衣夏”葡盗。淘寶網(wǎng)后臺(tái)是通過樹形的多層的類目體系管理商品的螟左,覆蓋葉子類目數(shù)量達(dá)上萬個(gè),商品量也是10億量級(jí)觅够,我們是任務(wù)是根據(jù)商品標(biāo)題預(yù)測(cè)其所在葉子類目,示例中商品歸屬的類目為“女裝/女士精品>>蕾絲衫/雪紡衫”奄妨。很顯然,這是一個(gè)非常典型的短文本多分類問題苹祟。接下來分別會(huì)介紹下文本分類傳統(tǒng)和深度學(xué)習(xí)的做法评雌,最后簡(jiǎn)單梳理下實(shí)踐的經(jīng)驗(yàn)。
一直焙、傳統(tǒng)文本分類方法
文本分類問題算是自然語言處理領(lǐng)域中一個(gè)非常經(jīng)典的問題了景东,相關(guān)研究最早可以追溯到上世紀(jì)50年代,當(dāng)時(shí)是通過專家規(guī)則(Pattern)進(jìn)行分類奔誓,甚至在80年代初一度發(fā)展到利用知識(shí)工程建立專家系統(tǒng)斤吐,這樣做的好處是短平快的解決top問題,但顯然天花板非常低厨喂,不僅費(fèi)時(shí)費(fèi)力和措,覆蓋的范圍和準(zhǔn)確率都非常有限。
后來伴隨著統(tǒng)計(jì)學(xué)習(xí)方法的發(fā)展蜕煌,特別是90年代后互聯(lián)網(wǎng)在線文本數(shù)量增長(zhǎng)和機(jī)器學(xué)習(xí)學(xué)科的興起派阱,逐漸形成了一套解決大規(guī)模文本分類問題的經(jīng)典玩法,這個(gè)階段的主要套路是人工特征工程+淺層分類模型斜纪。訓(xùn)練文本分類器過程見下圖:
整個(gè)文本分類問題就拆分成了特征工程和分類器兩部分贫母,玩機(jī)器學(xué)習(xí)的同學(xué)對(duì)此自然再熟悉不過了
1.1 特征工程
特征工程在機(jī)器學(xué)習(xí)中往往是最耗時(shí)耗力的,但卻極其的重要盒刚。抽象來講腺劣,機(jī)器學(xué)習(xí)問題是把數(shù)據(jù)轉(zhuǎn)換成信息再提煉到知識(shí)的過程,特征是“數(shù)據(jù)-->信息”的過程因块,決定了結(jié)果的上限橘原,而分類器是“信息-->知識(shí)”的過程,則是去逼近這個(gè)上限贮聂。然而特征工程不同于分類器模型靠柑,不具備很強(qiáng)的通用性,往往需要結(jié)合對(duì)特征任務(wù)的理解吓懈。
文本分類問題所在的自然語言領(lǐng)域自然也有其特有的特征處理邏輯歼冰,傳統(tǒng)分本分類任務(wù)大部分工作也在此處。文本特征工程分位文本預(yù)處理耻警、特征提取隔嫡、文本表示三個(gè)部分,最終目的是把文本轉(zhuǎn)換成計(jì)算機(jī)可理解的格式甘穿,并封裝足夠用于分類的信息腮恩,即很強(qiáng)的特征表達(dá)能力。
1)文本預(yù)處理
文本預(yù)處理過程是在文本中提取關(guān)鍵詞表示文本的過程温兼,中文文本處理中主要包括文本分詞和去停用詞兩個(gè)階段秸滴。之所以進(jìn)行分詞,是因?yàn)楹芏嘌芯勘砻魈卣髁6葹樵~粒度遠(yuǎn)好于字粒度募判,其實(shí)很好理解荡含,因?yàn)榇蟛糠址诸愃惴ú豢紤]詞序信息咒唆,基于字粒度顯然損失了過多“n-gram”信息。
具體到中文分詞释液,不同于英文有天然的空格間隔全释,需要設(shè)計(jì)復(fù)雜的分詞算法。傳統(tǒng)算法主要有基于字符串匹配的正向/逆向/雙向最大匹配误债;基于理解的句法和語義分析消歧浸船;基于統(tǒng)計(jì)的互信息/CRF方法。近年來隨著深度學(xué)習(xí)的應(yīng)用寝蹈,WordEmbedding + Bi-LSTM+CRF方法逐漸成為主流李命,本文重點(diǎn)在文本分類,就不展開了躺盛。而停止詞是文本中一些高頻的代詞連詞介詞等對(duì)文本分類無意義的詞项戴,通常維護(hù)一個(gè)停用詞表形帮,特征提取過程中刪除停用表中出現(xiàn)的詞槽惫,本質(zhì)上屬于特征選擇的一部分。
經(jīng)過文本分詞和去停止詞之后淘寶商品示例標(biāo)題變成了下圖“ / ”分割的一個(gè)個(gè)關(guān)鍵詞的形式:
夏裝 / 雪紡 / 條紋 / 短袖 / t恤 / 女 / 春 / 半袖 / 衣服 / 夏天 / 中長(zhǎng)款 / 大碼 / 胖mm / 顯瘦 / 上衣 / 夏
2)文本表示和特征提取
文本表示:
文本表示的目的是把文本預(yù)處理后的轉(zhuǎn)換成計(jì)算機(jī)可理解的方式辩撑,是決定文本分類質(zhì)量最重要的部分界斜。傳統(tǒng)做法常用詞袋模型(BOW, Bag Of Words)或向量空間模型(Vector Space Model),最大的不足是忽略文本上下文關(guān)系合冀,每個(gè)詞之間彼此獨(dú)立各薇,并且無法表征語義信息。詞袋模型的示例如下:
( 0, 0, 0, 0, .... , 1, ... 0, 0, 0, 0)
一般來說詞庫量至少都是百萬級(jí)別君躺,因此詞袋模型有個(gè)兩個(gè)最大的問題:高緯度峭判、高稀疏性。詞袋模型是向量空間模型的基礎(chǔ)棕叫,因此向量空間模型通過特征項(xiàng)選擇降低維度林螃,通過特征權(quán)重計(jì)算增加稠密性。
特征提劝称:
向量空間模型的文本表示方法的特征提取對(duì)應(yīng)特征項(xiàng)的選擇和特征權(quán)重計(jì)算兩部分疗认。特征選擇的基本思路是根據(jù)某個(gè)評(píng)價(jià)指標(biāo)獨(dú)立的對(duì)原始特征項(xiàng)(詞項(xiàng))進(jìn)行評(píng)分排序,從中選擇得分最高的一些特征項(xiàng)伏钠,過濾掉其余的特征項(xiàng)横漏。常用的評(píng)價(jià)有文檔頻率、互信息熟掂、信息增益缎浇、χ2統(tǒng)計(jì)量等。
特征權(quán)重主要是經(jīng)典的TF-IDF方法及其擴(kuò)展方法赴肚,主要思路是一個(gè)詞的重要度與在類別內(nèi)的詞頻成正比素跺,與所有類別出現(xiàn)的次數(shù)成反比鹏秋。
3)基于語義的文本表示
傳統(tǒng)做法在文本表示方面除了向量空間模型,還有基于語義的文本表示方法亡笑,比如LDA主題模型侣夷、LSI/PLSI概率潛在語義索引等方法,一般認(rèn)為這些方法得到的文本表示可以認(rèn)為文檔的深層表示仑乌,而word embedding文本分布式表示方法則是深度學(xué)習(xí)方法的重要基礎(chǔ)百拓,下文會(huì)展現(xiàn)。
1.2 分類器
分類器基本都是統(tǒng)計(jì)分類方法了晰甚,基本上大部分機(jī)器學(xué)習(xí)方法都在文本分類領(lǐng)域有所應(yīng)用衙传,比如樸素貝葉斯分類算法(Na?ve Bayes)、KNN厕九、SVM蓖捶、最大熵和神經(jīng)網(wǎng)絡(luò)等等,傳統(tǒng)分類模型不是本文重點(diǎn)扁远,在這里就不展開了俊鱼。
二、深度學(xué)習(xí)文本分類方法
上文介紹了傳統(tǒng)的文本分類做法畅买,傳統(tǒng)做法主要問題的文本表示是高緯度高稀疏的并闲,特征表達(dá)能力很弱,而且神經(jīng)網(wǎng)絡(luò)很不擅長(zhǎng)對(duì)此類數(shù)據(jù)的處理谷羞;此外需要人工進(jìn)行特征工程帝火,成本很高。而深度學(xué)習(xí)最初在之所以圖像和語音取得巨大成功湃缎,一個(gè)很重要的原因是圖像和語音原始數(shù)據(jù)是連續(xù)和稠密的犀填,有局部相關(guān)性,嗓违。應(yīng)用深度學(xué)習(xí)解決大規(guī)模文本分類問題最重要的是解決文本表示九巡,再利用CNN/RNN等網(wǎng)絡(luò)結(jié)構(gòu)自動(dòng)獲取特征表達(dá)能力,去掉繁雜的人工特征工程靠瞎,端到端的解決問題比庄。接下來會(huì)分別介紹:
2.1 文本的分布式表示:詞向量(word embedding)
分布式表示(Distributed Representation)其實(shí)Hinton 最早在1986年就提出了,基本思想是將每個(gè)詞表達(dá)成 n 維稠密乏盐、連續(xù)的實(shí)數(shù)向量佳窑,與之相對(duì)的one-hot encoding向量空間只有一個(gè)維度是1,其余都是0父能。分布式表示最大的優(yōu)點(diǎn)是具備非常powerful的特征表達(dá)能力神凑,比如 n 維向量每維 k 個(gè)值,可以表征
個(gè)概念。事實(shí)上溉委,不管是神經(jīng)網(wǎng)絡(luò)的隱層鹃唯,還是多個(gè)潛在變量的概率主題模型,都是應(yīng)用分布式表示瓣喊。下圖是03年Bengio在A Neural Probabilistic Language Model的網(wǎng)絡(luò)結(jié)構(gòu):
這篇文章提出的神經(jīng)網(wǎng)絡(luò)語言模型(NNLM坡慌,Neural Probabilistic Language Model)采用的是文本分布式表示,即每個(gè)詞表示為稠密的實(shí)數(shù)向量藻三。NNLM模型的目標(biāo)是構(gòu)建語言模型:
詞的分布式表示即詞向量(word embedding)是訓(xùn)練語言模型的一個(gè)附加產(chǎn)物洪橘,即圖中的Matrix C。
盡管Hinton 86年就提出了詞的分布式表示棵帽,Bengio 03年便提出了NNLM熄求,詞向量真正火起來是google Mikolov 13年發(fā)表的兩篇word2vec的文章Efficient Estimation of Word Representations in Vector Space和Distributed Representations of Words and Phrases and their Compositionality,更重要的是發(fā)布了簡(jiǎn)單好用的word2vec工具包逗概,在語義維度上得到了很好的驗(yàn)證弟晚,極大的推進(jìn)了文本分析的進(jìn)程。下圖是文中提出的CBOW 和 Skip-Gram兩個(gè)模型的結(jié)構(gòu)逾苫,基本類似于NNLM卿城,不同的是模型去掉了非線性隱層,預(yù)測(cè)目標(biāo)不同隶垮,CBOW是上下文詞預(yù)測(cè)當(dāng)前詞藻雪,Skip-Gram則相反秘噪。
除此之外狸吞,提出了Hierarchical Softmax 和 Negative Sample兩個(gè)方法,很好的解決了計(jì)算有效性指煎,事實(shí)上這兩個(gè)方法都沒有嚴(yán)格的理論證明蹋偏,有些trick之處,非常的實(shí)用主義至壤。詳細(xì)的過程不再闡述了威始,有興趣深入理解word2vec的,推薦讀讀這篇很不錯(cuò)的paper:word2vec Parameter Learning Explained像街。額外多提一點(diǎn)黎棠,實(shí)際上word2vec學(xué)習(xí)的向量和真正語義還有差距,更多學(xué)到的是具備相似上下文的詞镰绎,比如“good”“bad”相似度也很高脓斩,反而是文本分類任務(wù)輸入有監(jiān)督的語義能夠?qū)W到更好的語義表示,有機(jī)會(huì)后續(xù)系統(tǒng)分享下畴栖。
至此随静,文本的表示通過詞向量的表示方式,把文本數(shù)據(jù)從高緯度高稀疏的神經(jīng)網(wǎng)絡(luò)難處理的方式,變成了類似圖像燎猛、語音的的連續(xù)稠密數(shù)據(jù)恋捆。深度學(xué)習(xí)算法本身有很強(qiáng)的數(shù)據(jù)遷移性,很多之前在圖像領(lǐng)域很適用的深度學(xué)習(xí)算法比如CNN等也可以很好的遷移到文本領(lǐng)域了重绷,下一小節(jié)具體闡述下文本分類領(lǐng)域深度學(xué)習(xí)的方法沸停。
2.2 深度學(xué)習(xí)文本分類模型
詞向量解決了文本表示的問題,該部分介紹的文本分類模型則是利用CNN/RNN等深度學(xué)習(xí)網(wǎng)絡(luò)及其變體解決自動(dòng)特征提日炎俊(即特征表達(dá))的問題星立。
1)fastText
fastText 是上文提到的 word2vec 作者 Mikolov 轉(zhuǎn)戰(zhàn) Facebook 后16年7月剛發(fā)表的一篇論文Bag of Tricks for Efficient Text Classification。把 fastText 放在此處并非因?yàn)樗俏谋痉诸惖闹髁髯龇ㄔ岬剩撬鼧O致簡(jiǎn)單绰垂,模型圖見下:
原理是把句子中所有的詞向量進(jìn)行平均(某種意義上可以理解為只有一個(gè)avg pooling特殊CNN),然后直接接 softmax 層火焰。其實(shí)文章也加入了一些 n-gram 特征的 trick 來捕獲局部序列信息劲装。文章倒沒太多信息量,算是“水文”吧昌简,帶來的思考是文本分類問題是有一些“線性”問題的部分[from項(xiàng)亮]占业,也就是說不必做過多的非線性轉(zhuǎn)換、特征組合即可捕獲很多分類信息纯赎,因此有些任務(wù)即便簡(jiǎn)單的模型便可以搞定了谦疾。
2)TextCNN
本篇文章的題圖選用的就是14年這篇文章提出的TextCNN的結(jié)構(gòu)(見下圖)。fastText 中的網(wǎng)絡(luò)結(jié)果是完全沒有考慮詞序信息的犬金,而它用的 n-gram 特征 trick 恰恰說明了局部序列信息的重要意義念恍。卷積神經(jīng)網(wǎng)絡(luò)(CNN Convolutional Neural Network)最初在圖像領(lǐng)域取得了巨大成功,CNN原理就不講了晚顷,核心點(diǎn)在于可以捕捉局部相關(guān)性峰伙,具體到文本分類任務(wù)中可以利用CNN來提取句子中類似 n-gram 的關(guān)鍵信息。
TextCNN的詳細(xì)過程原理圖見下:
TextCNN詳細(xì)過程:第一層是圖中最左邊的7乘5的句子矩陣该默,每行是詞向量瞳氓,維度=5,這個(gè)可以類比為圖像中的原始像素點(diǎn)了栓袖。然后經(jīng)過有 filter_size=(2,3,4) 的一維卷積層匣摘,每個(gè)filter_size 有兩個(gè)輸出 channel。第三層是一個(gè)1-max pooling層裹刮,這樣不同長(zhǎng)度句子經(jīng)過pooling層之后都能變成定長(zhǎng)的表示了音榜,最后接一層全連接的 softmax 層,輸出每個(gè)類別的概率必指。
特征:這里的特征就是詞向量囊咏,有靜態(tài)(static)和非靜態(tài)(non-static)方式。static方式采用比如word2vec預(yù)訓(xùn)練的詞向量,訓(xùn)練過程不更新詞向量梅割,實(shí)質(zhì)上屬于遷移學(xué)習(xí)了霜第,特別是數(shù)據(jù)量比較小的情況下,采用靜態(tài)的詞向量往往效果不錯(cuò)户辞。non-static則是在訓(xùn)練過程中更新詞向量泌类。推薦的方式是 non-static 中的 fine-tunning方式,它是以預(yù)訓(xùn)練(pre-train)的word2vec向量初始化詞向量底燎,訓(xùn)練過程中調(diào)整詞向量刃榨,能加速收斂,當(dāng)然如果有充足的訓(xùn)練數(shù)據(jù)和資源双仍,直接隨機(jī)初始化詞向量效果也是可以的枢希。
通道(Channels):圖像中可以利用 (R, G, B) 作為不同channel,而文本的輸入的channel通常是不同方式的embedding方式(比如 word2vec或Glove)朱沃,實(shí)踐中也有利用靜態(tài)詞向量和fine-tunning詞向量作為不同channel的做法苞轿。
一維卷積(conv-1d):圖像是二維數(shù)據(jù),經(jīng)過詞向量表達(dá)的文本為一維數(shù)據(jù)逗物,因此在TextCNN卷積用的是一維卷積搬卒。一維卷積帶來的問題是需要設(shè)計(jì)通過不同 filter_size 的 filter 獲取不同寬度的視野。
Pooling層:利用CNN解決文本分類問題的文章還是很多的翎卓,比如這篇A Convolutional Neural Network for Modelling Sentences最有意思的輸入是在 pooling 改成 (dynamic) k-max pooling 契邀,pooling階段保留 k 個(gè)最大的信息,保留了全局的序列信息失暴。比如在情感分析場(chǎng)景回窘,舉個(gè)例子:
“ 我覺得這個(gè)地方景色還不錯(cuò)泊业,但是人也實(shí)在太多了 ”
雖然前半部分體現(xiàn)情感是正向的凭涂,全局文本表達(dá)的是偏負(fù)面的情感拍冠,利用 k-max pooling能夠很好捕捉這類信息。
3)TextRNN
盡管TextCNN能夠在很多任務(wù)里面能有不錯(cuò)的表現(xiàn)缴阎,但CNN有個(gè)最大問題是固定 filter_size 的視野,一方面無法建模更長(zhǎng)的序列信息简软,另一方面 filter_size 的超參調(diào)節(jié)也很繁瑣蛮拔。CNN本質(zhì)是做文本的特征表達(dá)工作,而自然語言處理中更常用的是遞歸神經(jīng)網(wǎng)絡(luò)(RNN, Recurrent Neural Network)痹升,能夠更好的表達(dá)上下文信息建炫。具體在文本分類任務(wù)中,Bi-directional RNN(實(shí)際使用的是雙向LSTM)從某種意義上可以理解為可以捕獲變長(zhǎng)且雙向的的 "n-gram" 信息疼蛾。
RNN算是在自然語言處理領(lǐng)域非常一個(gè)標(biāo)配網(wǎng)絡(luò)了肛跌,在序列標(biāo)注/命名體識(shí)別/seq2seq模型等很多場(chǎng)景都有應(yīng)用,Recurrent Neural Network for Text Classification with Multi-Task Learning文中介紹了RNN用于分類問題的設(shè)計(jì),下圖LSTM用于網(wǎng)絡(luò)結(jié)構(gòu)原理示意圖衍慎,示例中的是利用最后一個(gè)詞的結(jié)果直接接全連接層softmax輸出了转唉。
4)TextRNN + Attention
CNN和RNN用在文本分類任務(wù)中盡管效果顯著,但都有一個(gè)不足的地方就是不夠直觀稳捆,可解釋性不好赠法,特別是在分析badcase時(shí)候感受尤其深刻。而注意力(Attention)機(jī)制是自然語言處理領(lǐng)域一個(gè)常用的建模長(zhǎng)時(shí)間記憶機(jī)制乔夯,能夠很直觀的給出每個(gè)詞對(duì)結(jié)果的貢獻(xiàn)砖织,基本成了Seq2Seq模型的標(biāo)配了。實(shí)際上文本分類從某種意義上也可以理解為一種特殊的Seq2Seq末荐,所以考慮把Attention機(jī)制引入近來侧纯,研究了下學(xué)術(shù)界果然有類似做法。
Attention機(jī)制介紹:
詳細(xì)介紹Attention恐怕需要一小篇文章的篇幅甲脏,感興趣的可參考14年這篇paperNEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE茂蚓。
以機(jī)器翻譯為例簡(jiǎn)單介紹下,下圖中
是源語言的一個(gè)詞剃幌,
是目標(biāo)語言的一個(gè)詞聋涨,機(jī)器翻譯的任務(wù)就是給定源序列得到目標(biāo)序列。翻譯
的過程產(chǎn)生取決于上一個(gè)詞
和源語言的詞的表示
(
的 bi-RNN 模型的表示)负乡,而每個(gè)詞所占的權(quán)重是不一樣的牍白。比如源語言是中文 “我 / 是 / 中國人” 目標(biāo)語言 “i / am / Chinese”,翻譯出“Chinese”時(shí)候顯然取決于“中國人”抖棘,而與“我 / 是”基本無關(guān)茂腥。下圖公式,
則是翻譯英文第
個(gè)詞時(shí),中文第
個(gè)詞的貢獻(xiàn)切省,也就是注意力最岗。顯然在翻譯“Chinese”時(shí),“中國人”的注意力值非常大朝捆。
Attention的核心point是在翻譯每個(gè)目標(biāo)詞(或 預(yù)測(cè)商品標(biāo)題文本所屬類別)所用的上下文是不同的般渡,這樣的考慮顯然是更合理的。
TextRNN + Attention 模型:
我們參考了這篇文章Hierarchical Attention Networks for Document Classification芙盘,下圖是模型的網(wǎng)絡(luò)結(jié)構(gòu)圖驯用,它一方面用層次化的結(jié)構(gòu)保留了文檔的結(jié)構(gòu),另一方面在word-level和sentence-level儒老。淘寶標(biāo)題場(chǎng)景只需要 word-level 這一層的 Attention 即可蝴乔。
加入Attention之后最大的好處自然是能夠直觀的解釋各個(gè)句子和詞對(duì)分類類別的重要性。
5)TextRCNN(TextRNN + CNN)
我們參考的是中科院15年發(fā)表在AAAI上的這篇文章 Recurrent Convolutional Neural Networks for Text Classification 的結(jié)構(gòu):
利用前向和后向RNN得到每個(gè)詞的前向和后向上下文的表示:
這樣詞的表示就變成詞向量和前向后向上下文向量concat起來的形式了驮樊,即:
最后再接跟TextCNN相同卷積層薇正,pooling層即可片酝,唯一不同的是卷積層 filter_size = 1就可以了,不再需要更大 filter_size 獲得更大視野挖腰,這里詞的表示也可以只用雙向RNN輸出雕沿。
三、一點(diǎn)經(jīng)驗(yàn)
理論和實(shí)踐之間的Gap往往差異巨大曙聂,學(xué)術(shù)paper更關(guān)注的是模型架構(gòu)設(shè)計(jì)的新穎性等晦炊,更重要的是新的思路;而實(shí)踐最重要的是在落地場(chǎng)景的效果宁脊,關(guān)注的點(diǎn)和方法都不一樣断国。這部分簡(jiǎn)單梳理實(shí)際做項(xiàng)目過程中的一點(diǎn)經(jīng)驗(yàn)教訓(xùn)。
模型顯然并不是最重要的:不能否認(rèn)榆苞,好的模型設(shè)計(jì)對(duì)拿到好結(jié)果的至關(guān)重要稳衬,也更是學(xué)術(shù)關(guān)注熱點(diǎn)。但實(shí)際使用中坐漏,模型的工作量占的時(shí)間其實(shí)相對(duì)比較少薄疚。雖然再第二部分介紹了5種CNN/RNN及其變體的模型,實(shí)際中文本分類任務(wù)單純用CNN已經(jīng)足以取得很不錯(cuò)的結(jié)果了赊琳,我們的實(shí)驗(yàn)測(cè)試RCNN對(duì)準(zhǔn)確率提升大約1%街夭,并不是十分的顯著。最佳實(shí)踐是先用TextCNN模型把整體任務(wù)效果調(diào)試到最好躏筏,再嘗試改進(jìn)模型板丽。
理解你的數(shù)據(jù):雖然應(yīng)用深度學(xué)習(xí)有一個(gè)很大的優(yōu)勢(shì)是不再需要繁瑣低效的人工特征工程,然而如果你只是把他當(dāng)做一個(gè)黑盒趁尼,難免會(huì)經(jīng)常懷疑人生埃碱。一定要理解你的數(shù)據(jù),記住無論傳統(tǒng)方法還是深度學(xué)習(xí)方法酥泞,數(shù)據(jù) sense 始終非常重要砚殿。要重視 badcase 分析,明白你的數(shù)據(jù)是否適合芝囤,為什么對(duì)為什么錯(cuò)似炎。
關(guān)注迭代質(zhì)量 - 記錄和分析你的每次實(shí)驗(yàn):迭代速度是決定算法項(xiàng)目成敗的關(guān)鍵,學(xué)過概率的同學(xué)都很容易認(rèn)同凡人。而算法項(xiàng)目重要的不只是迭代速度名党,一定要關(guān)注迭代質(zhì)量。如果你沒有搭建一個(gè)快速實(shí)驗(yàn)分析的套路挠轴,迭代速度再快也只會(huì)替你公司心疼寶貴的計(jì)算資源。建議記錄每次實(shí)驗(yàn)耳幢,實(shí)驗(yàn)分析至少回答這三個(gè)問題:為什么要實(shí)驗(yàn)岸晦?結(jié)論是什么欧啤?下一步怎么實(shí)驗(yàn)?
超參調(diào)節(jié):超參調(diào)節(jié)是各位調(diào)參工程師的日常了启上,推薦一篇文本分類實(shí)踐的論文A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification邢隧,里面貼了一些超參的對(duì)比實(shí)驗(yàn),如果你剛開始啟動(dòng)文本分析任務(wù)倒慧,不妨按文章的結(jié)果設(shè)置超參包券,怎么最快的得到超參調(diào)節(jié)其實(shí)是一個(gè)非常重要的問題,可以讀讀 蕭瑟的這篇文章深度學(xué)習(xí)網(wǎng)絡(luò)調(diào)參技巧 - 知乎專欄溅固。
一定要用dropout:有兩種情況可以不用:數(shù)據(jù)量特別小侍郭,或者你用了更好的正則方法,比如bn亮元。實(shí)際中我們嘗試了不同參數(shù)的dropout爆捞,最好的還是0.5,所以如果你的計(jì)算資源很有限嵌削,默認(rèn)0.5是一個(gè)很好的選擇苛秕。
fine-tuning 是必選的:上文聊到了,如果只是使用word2vec訓(xùn)練的詞向量作為特征表示艇劫,我賭你一定會(huì)損失很大的效果店煞。
未必一定要 softmax loss: 這取決與你的數(shù)據(jù)蟹演,如果你的任務(wù)是多個(gè)類別間非互斥酒请,可以試試著訓(xùn)練多個(gè)二分類器鸣个,也就是把問題定義為multi lable 而非 multi class布朦,我們調(diào)整后準(zhǔn)確率還是增加了>1%昼窗。
類目不均衡問題:基本是一個(gè)在很多場(chǎng)景都驗(yàn)證過的結(jié)論:如果你的loss被一部分類別dominate,對(duì)總體而言大多是負(fù)向的唆途。建議可以嘗試類似 booststrap 方法調(diào)整 loss 中樣本權(quán)重方式解決掸驱。
避免訓(xùn)練震蕩:默認(rèn)一定要增加隨機(jī)采樣因素盡可能使得數(shù)據(jù)分布iid,默認(rèn)shuffle機(jī)制能使得訓(xùn)練結(jié)果更穩(wěn)定滚婉。如果訓(xùn)練模型仍然很震蕩帅刀,可以考慮調(diào)整學(xué)習(xí)率或 mini_batch_size。
沒有收斂前不要過早的下結(jié)論:玩到最后的才是玩的最好的扣溺,特別是一些新的角度的測(cè)試锥余,不要輕易否定,至少要等到收斂吧驱犹。
四雄驹、寫在最后
幾年前校招面阿里時(shí),一面二面聊的都是一個(gè)文本分類的項(xiàng)目(一個(gè)新浪微博主題分類的學(xué)校課題項(xiàng)目)医舆,用的還是文中介紹的傳統(tǒng)的做法。面試時(shí)對(duì)特征項(xiàng)處理和各個(gè)分類器可謂如數(shù)家珍爷速,被要求在白板上寫了好幾個(gè)特征選擇公式霞怀,短短幾年傳統(tǒng)做法已經(jīng)被遠(yuǎn)遠(yuǎn)超越,不得不感慨深度學(xué)習(xí)的發(fā)展毙石。
值得感慨的一方面是今天技術(shù)的發(fā)展非承埠冢快废封,故步自封自然是萬萬萬萬不可取漂洋,深知還有很多理論尚且不懂還要繼續(xù)深讀paper力喷;另一方面,理解理論原理和做好項(xiàng)目間實(shí)際非常有巨大的gap弟孟,特別是身處工業(yè)界的同仁們拂募,學(xué)術(shù)圈值得鉆但要把握分寸,如果僅僅追逐技術(shù)深度陈症,不免容易陷入空中閣樓。
最后老規(guī)矩再次安利下我們team的招聘趴腋,對(duì)淘寶搜索排序和自然語言處理方向感興趣的同學(xué)歡迎郵件我 qingsong.huaqs@taobao.com论咏,來淘寶,一起成長(zhǎng)蠢护!
以上卦溢,感謝閱讀糊余。