干貨速覽 春節(jié)期間,想必你已經(jīng)體驗過了百分點集團(tuán)和人民日報聯(lián)合推出的AI春節(jié)送祝福的應(yīng)用——AI李白,那么,你知道它是如何實現(xiàn)智能作詩的嗎? 百分點集團(tuán)服務(wù)于團(tuán)中央七千萬團(tuán)員的自動問答機器人——小青機器人,你知道它是如何自動回答青年們關(guān)注的就業(yè)問題和情感問題的? 在這里,百分點首席算法科學(xué)家蘇海波博士為你詳細(xì)解剖,深度學(xué)習(xí)在文本分析中的技術(shù)和應(yīng)用。以下為干貨分享: 記得2011年前后,流量廣告、計算廣告、推薦算法,以及用戶畫像這些都是特別熱門的話題。在這些領(lǐng)域的有很多場景都可以用到機器學(xué)習(xí),比如廣告的推薦、推薦的商品排序,以及用戶畫像的各種人口統(tǒng)計學(xué)特征的預(yù)測等等。 那個時候使用的最多的就是傳統(tǒng)的各種機器學(xué)習(xí)模型,工業(yè)界很常見的邏輯回歸模型:SVM、GBDT等等。這種傳統(tǒng)機器學(xué)習(xí)模型工作量最大的地方,有百分之六七十的工作量都在特征工程,要根據(jù)業(yè)務(wù)的特點設(shè)計大量的Feature,去幫助提升模型預(yù)測的泛化能力,尤其是像廣告的點擊率預(yù)估這種問題,特征的好壞直接決定了最終的效果。 有些公司專門做特征的團(tuán)隊就有上百人,因為這部分的工作量是非常大的,那么在面臨這種工作量如此巨大的特征工程時,有沒有辦法去改善甚至解決這方面的問題呢? 深度學(xué)習(xí)在這方面就做得特別好,它通過pre-training可以將數(shù)據(jù)里面的特征自動提取出來,再直接基于原始的數(shù)據(jù),就能訓(xùn)練出一個模型,而且它的效果相比傳統(tǒng)的機器學(xué)習(xí)有顯著的改善,這就是為什么說深度學(xué)習(xí)在這些年得到了這么火熱的歡迎,以及在工業(yè)界得到了大量的使用。 大家都知道,其實深度學(xué)習(xí)采用的神經(jīng)網(wǎng)絡(luò),尤其是神經(jīng)網(wǎng)絡(luò)很復(fù)雜的時候,訓(xùn)練的時間特別長,有時候甚至幾天、一個月都是常見的。這么長的時間顯然會影響神經(jīng)網(wǎng)絡(luò)在實際問題當(dāng)中的應(yīng)用,那么有什么辦法呢?
隨著最近幾年,大數(shù)據(jù)技術(shù)的各種發(fā)展,以及GPU計算能力的大幅度提升,使得神經(jīng)網(wǎng)絡(luò)的計算效率得到了顯著的提升,因此深度學(xué)習(xí)也取得了很大的成功。 最開始是在圖像,然后慢慢應(yīng)用在語音領(lǐng)域,但最近幾年在NLP的很多問題上也取得了顯著的成功。 百分點的整個NLP算法體系分為三層:
這些方法有什么問題? 首先它們有大量的特征工作要做,就是剛說的傳統(tǒng)的機器學(xué)習(xí)方法存在一個非常大的問題,就是它需要大量的人工來做; 第二個問題是領(lǐng)域的移植性問題,比如說在金融領(lǐng)域做了一個分詞模型,可能依靠了大量的詞典和規(guī)則,但是可能轉(zhuǎn)移到一個新的領(lǐng)域,比如說媒體這個領(lǐng)域時候,又要做很多詞庫和規(guī)則,移植性很差;
第三就是一些未登錄詞的識別效果也很差,因此大家才希望能夠用深度學(xué)習(xí)來做。
首先第一個方面,它能夠解決特征工程的問題,避免了大量的人力工作;同時它的領(lǐng)域移植性要好的多,整個工作量能得到顯著的降低;此外,在新詞識別這塊的效果也好很多。
那么具體采用的是一個什么模型呢? 在實際工作中采用的是LSTM+CRF的組合。該組合在這方面已經(jīng)得到了非常成功的使用,它把一個分詞和命名實體識別問題轉(zhuǎn)化為了一個序列標(biāo)注問題。 可以看一下左邊這張圖,拿命名實體來說,序列標(biāo)注前首先建立一個標(biāo)準(zhǔn),B開頭代表實體的首字、I代表實體的非首字:B-PER和I-PER代表的就是人名的首字,和人名的非首字,同樣地點和組織機構(gòu)也是這么來表示的。
“中國很大”這樣四個字用模型來給它做標(biāo)注:“中”是什么?中國首先是一個地點名,那么把“中”就標(biāo)識為地名的一個首字,B-LOC;“國”就是代表地名的一個非首字,代表中間的這個字,I-LOC;“很”和“大”這兩個字都代表它們不屬于任何一個實體的一部分,因此都標(biāo)示為O。
在上面整個圖中,就是LSTM上面加了一個CRF層,CRF就是條件隨機場,相信學(xué)過自然語言處理的同學(xué)對CRF已經(jīng)非常熟悉了。 在整個深度學(xué)習(xí)領(lǐng)域當(dāng)中,一類問題是分類問題,比如說人臉的識別、目標(biāo)的識別等等,用傳統(tǒng)的前饋神經(jīng)網(wǎng)絡(luò)就能做得很好;還有另外一類問題特別依賴于序列之間的關(guān)系,這種依賴關(guān)系對于整個任務(wù)的結(jié)果有很大的影響,這時候就需要用到循環(huán)神經(jīng)網(wǎng)絡(luò)——RNN。
RNN在求解的過程中會有遇到一個梯度消失的問題。經(jīng)過了多年的研究,最后出來了LSTM模型,它很好的解決了這個問題。它在應(yīng)用這種基于序列的問題上有很好的表現(xiàn),同時應(yīng)用場景非常廣泛。
根據(jù)輸入和輸出的情況可以分為下面四種: 首先是一對一,對中文的分詞,比如輸入了一個詞,要給它一個唯一的標(biāo)注,同時還包括其他命名實體、文本生成,這些都是一對一的問題。 第二類是多對一,比如說情感分析,輸入的是一段文字,但輸出的是情感,比如某件事是好還是壞,或者正面還是負(fù)面,其他的還有文本分類、視頻主題分類等等。
第三個是多對多,比如機器翻譯,輸入一段文字,輸入是一段中文出來的是一段英文,還有聊天機器人等等。
最后一種是一對多,輸入的是一張圖片,給它輸出一張文字序列,LSTM應(yīng)用的就是這種情況。
LSTM解決的是序列的問題。
可能大家在學(xué)習(xí)經(jīng)常會比較費解什么叫t時刻,什么叫t-1時刻,就拿剛才的這個例子來說,“中國很大”這四個字,“中”它就是t=1這個時刻,它的輸出就是B-LOC這樣一個標(biāo)注;“國”就是t=2時刻,它的前一個時刻就是“中”,“國”的輸出是I-LOC;那么“很”就是t= 3時刻,“大”就是t=4時刻。 這樣類比的時間序列關(guān)系,大家碰到時刻這個概念的時候一定要理解,它是跟一句話能夠?qū)?yīng)起來的。這個時刻就代表了這個字在一句話當(dāng)中的位置,做了這樣一個類比,大家一定要首先理解這一點。
在LSTM當(dāng)中,t時刻是依賴于t-1的,具體是個什么樣的依賴? 在這個結(jié)構(gòu)當(dāng)中有個非常重要的元素: 單元狀態(tài)C。 Ct-1是t-1時刻神經(jīng)網(wǎng)絡(luò)單元的輸出,它是LSTM具備長短期記憶能力的關(guān)鍵,它就像一個鏈一樣,在不斷的傳輸,不斷會有信息的衰減,也會有信息的新增加,不斷的從t-1時刻不斷的往右邊傳遞到最后一個時刻。
在整個長期狀態(tài)的傳播當(dāng)中會有三個控制開關(guān)去決定狀態(tài)C是怎么傳遞的。
從t時刻傳遞到最后一個時刻經(jīng)過了這樣三個門: 遺忘門、輸入門和輸出門。
首先看一下遺忘門ft。 ft是個向量,向量中的每個元素取值是0到1之間,那么ft的取值決定了Ct-1的狀態(tài)過濾多少信息,并傳遞到第t個狀態(tài)。比如說如果ft=0,表示所有的信息都被卡住了,一點都傳不過去;如果t=1,表示t-1時刻的狀態(tài)信息,全部都傳到Ct那邊去了,它表示的是這樣一個物理含義。 第二個門叫輸入門。 也就是這里的It,It它是由Xt和Ht共同決定的,它也是一個向量,每個元素也是在0到1之間。那么它和輸入Xt一起決定了從輸入當(dāng)中要提取什么樣的信息,來傳播給單元狀態(tài)Ct,它決定了從輸入Xt獲取什么樣的信息往下個時刻去傳。
再看一下輸出門。 輸出門的Ot,取值也是個向量,取值0到1之間。那么它是決定了t時刻的輸出和狀態(tài)C之間是個什么樣的關(guān)系??梢钥吹絫時刻的狀態(tài)Ct,它是用兩部分組成的,一部分就是Ct-1傳遞過來的,過濾出來的一部分信息,另外一部分信息是從輸入Xt里面直接抽取出來的信息,它是兩部分信息合成的一個結(jié)果。那么有了Ct之后,再結(jié)合輸出門Ot,就能直接計算出t時刻的輸出Ht。 剛才的解釋就是對輸入門、輸出門、遺忘門的一個解釋。整個的網(wǎng)絡(luò)單元看起來比較復(fù)雜,其實它都是有一個明確的物理的含義,整個的核心就是:去解釋每個神經(jīng)網(wǎng)絡(luò)的單元狀態(tài)Ct是如何傳遞到下一個時刻、如何進(jìn)行信息的衰減,以及如何從狀態(tài)t時刻的輸入去提取新的信息讓Ct得到更新。理解神經(jīng)網(wǎng)絡(luò)當(dāng)中的物理含義是非常重要的。
再看一下,LSTM結(jié)合CRF的數(shù)學(xué)原理。好多同學(xué)一看到這個數(shù)學(xué)公式,可能腦袋就大了,其實你真正理解它的物理含義以后,它們并沒有那么復(fù)雜。
那么有了對應(yīng)的輸入輸出,有了大規(guī)模的訓(xùn)練語料以后,那么如何來求解這個模型的參數(shù)?
可以看的出來,整個這一層LSTM’s ouput非常的關(guān)鍵:s(x,y),它由兩部分組成:一部分是加Ay,y+1,它代表著Y輸出的標(biāo)注從第I個狀態(tài)轉(zhuǎn)移到I+1的狀態(tài),所轉(zhuǎn)移得到這樣一個分?jǐn)?shù)。
另外一部分就是Pi,yi,代表的是整個LSTM的輸出。
當(dāng)LSTM輸出的Pi,yi,再加上了CRF狀態(tài)之間的轉(zhuǎn)移分?jǐn)?shù),進(jìn)行一個求和,這樣將兩個模型的特性都比較好的融合在一起,輸出s(x,y)這樣一個分?jǐn)?shù)之后,進(jìn)行歸一化,就得到P(Y|X)。同時,每個輸入對應(yīng)著一個標(biāo)注,通過反向傳播梯度求解,以及參數(shù)更新,最后可以將所有模型參數(shù)都計算出來。
直接采用LSTM就能預(yù)測輸出序列了,為什么后面還要接個CRF模型? 計算復(fù)雜度反而提高了,那么CRF到底帶來一個什么樣的好處?
看一下中間這個例子:這里面是做了個分詞,把分詞轉(zhuǎn)換為一個序列標(biāo)注的問題。B代表一個詞的開始,E代表一個詞的結(jié)束,S代表一個字可以單獨的作為一個詞。
real output,是實際輸出的是什么。它的后面,E又接了一個E,正確的輸出應(yīng)該是B,再接一個E。
這里可以看出來一個明顯的錯誤:一個結(jié)束符后面再跟著一個結(jié)束符顯然是不合理的,說明LSTM存在對應(yīng)的問題。解決這個問題要把CRF接在后面,因為CRF的特點是比較好的學(xué)習(xí)到輸出狀態(tài)的轉(zhuǎn)移關(guān)系,比如說:前面的一個詞的結(jié)束,后面應(yīng)該是接一個新的詞開始,或者后面接單獨的一個詞,所以是不可能出現(xiàn)E的。
通過這樣的限定特征就保證這個上面這種例子錯誤不會再出現(xiàn),LSTM后面接入一個CRF以后,它能夠取得比單個LSTM更好的效果。
實際在開發(fā)、做項目的過程當(dāng)中,需要同時使用一些模型調(diào)優(yōu)的技巧。這些技巧非常重要,是大家在實際去做深度學(xué)習(xí)的時候需要掌握的。
這兩種極端都會有它對應(yīng)的問題,如果Batch_size取的太小,就導(dǎo)致整個的收斂速度很慢,甚至收斂會出現(xiàn)問題,而且沒有比較好的去利用機器的內(nèi)存;如果Batch_size取得非常的大,可能內(nèi)存就爆了,因此需要選取一個合理的Batch_size數(shù)字,既能夠?qū)?nèi)存利用起來,同時又能讓它比較穩(wěn)定的去收斂到目標(biāo)值。 實際情況當(dāng)中,經(jīng)常采用的是Batch_size要盡量取2的冪指數(shù),比如32,64,128都可以,可以提高內(nèi)存中的計算效率。同時要根據(jù)實際的分配內(nèi)存和顯存來估計Batch_size,保證內(nèi)存不要爆掉。 第二個技巧是初始化權(quán)重參數(shù),就是整個神經(jīng)網(wǎng)絡(luò)里面的結(jié)構(gòu)參數(shù)。如果這些參數(shù)全都取0的話,整個傳遞下來,所有的取值都是一樣的,顯然這樣是不行的。所以經(jīng)常采用的是隨機初始化的策略,包括高斯分布,均勻分布。Tensorflow這個框架里面是自帶了一系列初始化的函數(shù),以上是第二點。 第三個技巧是dropout超參數(shù),這也是很重要的。在神經(jīng)網(wǎng)絡(luò)里經(jīng)常會面臨這樣一個問題:過擬合,那么dropout這樣一個參數(shù)能夠提升整個網(wǎng)絡(luò)的泛化能力,在上面提到的項目當(dāng)中,采用字向量輸入到雙向LSTM之前去加入dropout,進(jìn)一步提升了效果。這里取值就是0.5,那么在實際表現(xiàn)當(dāng)中,準(zhǔn)確率會有幾個百分點的顯著提升。 其他的技巧還有包括比如說輸入embedding Size到底應(yīng)該怎么去選,中間的隱藏層的維度應(yīng)該怎么去選,還包括learning rate要怎么去選,到底采用什么樣訓(xùn)練的方式,是傳統(tǒng)SGD,還是說加動量法等等,都是要選擇的,這些也是大家在學(xué)習(xí)深度學(xué)習(xí)時候需要的基本功。 那么剛剛講述的很多的技巧以及原理在實際當(dāng)中取得了什么樣的效果? v1.3、v1.4是我們文本分析產(chǎn)品的兩個階段的版本。 1.3版本采用的是傳統(tǒng)的方法,1.4版本采用了深度學(xué)習(xí)的方法??梢钥吹贸鰜恚?1.4會有效果上的一個顯著提升,無論是準(zhǔn)確度,還是F1值都有一個提升。同時與業(yè)界的NLP方面做得很好的企業(yè),包括Boson、文智等等都進(jìn)行了對比。這里選了Boson作為代表。因為做了對比之后,發(fā)現(xiàn)它是比較具有代表性的。 接下來看一下,基于Pytorch的分詞性能。在維特比解碼這塊,它們都采用了GPU,因此它的速率都有幾百K的水平,隨著batch_size在增長,它的性能也是在不斷的增加的。同時,batch_size超過兩千的時候內(nèi)存直接爆了,這時候整個值立馬就降下來,這是基于分詞的性能。
接下來跟大家分析情感分析當(dāng)中如何使用深度學(xué)習(xí)。
那么用這種方法存在什么樣的問題? 第一個問題就是詞序的信息,在每個詞做特征的時候都是比較獨立的,因此詞序的信息被忽略了,整個效果明顯有個上限;第二個問題是,只考慮了字面上的特征,沒有考慮詞和詞之間語義上的一個特征;第三個是訓(xùn)練應(yīng)該覆蓋全部序列,就是說在做特征的時候,可能有些值就直接被篩掉了,這樣很明顯會影響最終的效果。 那么深度學(xué)習(xí)是怎樣解決這些問題的?
第二個就是維度災(zāi)難的問題,比如庫的大小為幾萬的量級,那么特征維度就會特別長,對于語言模型就有這個問題,就會存在一個維度災(zāi)難的問題。 第三個問題,使用one hot representation的表示,應(yīng)用到深度學(xué)習(xí)當(dāng)中,訓(xùn)練的復(fù)雜度非常高,整體效果會非常差。 基于這三點方面的原因,通常將one hot representation改為distributed representation,分布式的向量來進(jìn)行表示,每個詞都用一個向量來表示,這樣就可用cosin和歐式距離表示任意兩個詞之間的語義長度和語義距離。一般來說用深度學(xué)習(xí)都是用embedding向量,而不是用one hot representation。
那么這些值向量是如何計算出來的?
這兩種網(wǎng)絡(luò)結(jié)構(gòu)能夠?qū)⒔Y(jié)合大規(guī)模的語料,訓(xùn)練出所有詞的語義向量,對應(yīng)的每個詞都能將它最相似的向量計算出來。比如上圖中的“好看”、“很漂亮”、“難看”、“喜歡”,這些都是跟“漂亮”在語義上特別近似的。
語義向量計算出來之后,在情感分析當(dāng)中具體采用的是CNN的模型。大家可能會問,為什么會采用CNN模型?當(dāng)采用全連接的方式時整個網(wǎng)絡(luò)中的參數(shù)是非常多的,幾十萬、幾百萬,網(wǎng)絡(luò)參數(shù)一旦數(shù)量過多,導(dǎo)致網(wǎng)絡(luò)模型的求解會非常的慢,甚至?xí)?xùn)練一個月,這么長的訓(xùn)練時間是不能忍受的。
一、卷積層,大家應(yīng)該在信號處理里面之間學(xué)過,它能夠去計算相應(yīng)元素之間的加權(quán)求和,能夠起到一個作用就是全體參數(shù)共享。什么叫參數(shù)共享?就是很多相同位置上的網(wǎng)絡(luò)中的參數(shù)取同樣的值,這樣就能大大降低神經(jīng)網(wǎng)絡(luò)中參數(shù)的數(shù)量。實現(xiàn)參數(shù)的共享,用卷積層。
二、池化層,能夠?qū)崿F(xiàn)空間的亞采樣,之前一個小格子,可能包括四個元素,直接對這四個元素求個平均值,一方面能夠避免噪聲帶來的影響,另外一方面也能降低模型需要用到的參數(shù)數(shù)量。 通過這樣兩種方式就能夠?qū)⒕W(wǎng)絡(luò)當(dāng)中的參數(shù)數(shù)量大幅度的降低,而且CNN也被證明在工業(yè)界能夠取得非常不錯的效果。最早CNN被應(yīng)用在圖像當(dāng)中,現(xiàn)在將它應(yīng)用在文本中的情感分析。
CNN模型當(dāng)中,輸入采用了一個雙通道向量,這也是一個比較重要的技術(shù)。以前經(jīng)常用的傳統(tǒng)方法是單通道的方式,CNN的輸入詞向量有這么幾種:
那么這兩種詞向量在語義和情感上有什么樣的差別?
對于這種non-static channel這種動態(tài)的向量,它能夠在訓(xùn)練過程,結(jié)合情感分析的標(biāo)注數(shù)據(jù)進(jìn)行微調(diào),它能夠區(qū)別正面或者負(fù)面的情感。還是對這個詞,bad,經(jīng)過non-static channel動態(tài)向量訓(xùn)練,最后首先匹配的相似詞是terrible,horrible等等,這些都是負(fù)面相關(guān)的詞。通過這種動態(tài)的調(diào)整,模型能夠準(zhǔn)確學(xué)習(xí)到詞語所表達(dá)的情感。 為了幫助大家去更好的運用CNN,下面列出了一些在實際模型開發(fā)的過程中會存在一些問題:
最后一塊是模型本身,通常會使用dropout的一些技巧,F(xiàn)1值可以提升兩個百分點。
剛剛提到CNN模型,那么采用一些其他的模型,是個什么樣的效果?
前面我們講述了深度學(xué)習(xí)在情感分析當(dāng)中的一些應(yīng)用,現(xiàn)在我們已經(jīng)在NLP陸續(xù)更多地使用深度學(xué)習(xí)的技術(shù),包括文本分類、句法分析、文本生成、知識圖譜、自動問答等等,我們都去采用深度學(xué)習(xí)的技術(shù)。
第一個案例是AI李白。
大家知道對于文本生成來說肯定用到語言模型的,提到語言模型很多人就會說,用n-gram這種語言模型,但是它的問題在于無法捕獲距離比較長的詞語之間的字詞依賴關(guān)系,因此這里采用LSTM的語言模型,大概使用了70多萬詩詞的訓(xùn)練語料,最終也取得非常不錯的效果,整個AI李白上線六天的時間,獲得了超過一千萬的訪問量,如果大家有興趣的話,可以去體驗一下。
第二個案例是團(tuán)中央自動問答機器人。
自動問答里面有幾個關(guān)鍵的技術(shù)問題,比如如何實現(xiàn)問題的匹配,如何自動去計算出問題和答案之間的相似程度,目前都可以采用深度學(xué)習(xí)去解決這方面的問題,現(xiàn)在內(nèi)測版已經(jīng)上線了,接下來會對外推出這款自動問答機器人。
第三個案例是某媒體客戶的智能采編系統(tǒng)。
實際上,深度學(xué)習(xí)、自然語言處理現(xiàn)在在業(yè)界有越來越多的實現(xiàn)場景,這也是非常有前途的方向,希望大家一起參與到這個方向,將 NLP 這塊的人工智能技術(shù)在越來越多的行業(yè)落地,謝謝大家! 作者答疑 Q1:深度學(xué)習(xí)和機器學(xué)習(xí)有什么區(qū)別? A:深度學(xué)習(xí)也是機器學(xué)習(xí)中的一種技術(shù)而已,這個問題應(yīng)該更具體,應(yīng)該說這種深度學(xué)習(xí)模型和傳統(tǒng)的模型有什么樣的差別。對于這個問題而言,我剛剛第一頁里面就講到,傳統(tǒng)模型很重要的一塊工作是設(shè)計這些模型的特征,而且是靠人去設(shè)計的,對業(yè)務(wù)有準(zhǔn)確的理解,才能具有泛化能力特征,這也是一門手藝活,這塊的工作量是特別大的。為了解決人工去設(shè)計特征的工作,我們采用深度學(xué)習(xí)的技術(shù),就是從數(shù)據(jù)當(dāng)中自動發(fā)現(xiàn)對應(yīng)的特征,直接得到一個結(jié)果,它是從端到端的一套技術(shù),而且它的效果相比傳統(tǒng)機器學(xué)習(xí)能夠有顯著的提升。
Q2:訓(xùn)練的時候都是單機嗎?有用到集群嗎? 基于tensorflow的時候,用集群訓(xùn)練,可以用好幾個GPU來訓(xùn)練;基于pytroch的時候是單機的。
Q3:batch_size的選取,除了內(nèi)存因素,對于訓(xùn)練的結(jié)果,比如準(zhǔn)確度,有影響嗎? batch_size越小,優(yōu)化路線在走的時候,隨機性特別強,可能最后優(yōu)化到最終目標(biāo)中間可能會有些問題,會影響準(zhǔn)確度;batch_size過大的時候,內(nèi)存可能撐不住,內(nèi)存會直接爆了, batch_size到了一定的程度,再往上面走的時候,它可能對準(zhǔn)確度影響沒有那么大,比如batch_size取256,或者取512,最后都能達(dá)到一個近似的最優(yōu)結(jié)果,影響不會特別大。
Q4:機器人自動問答是怎么做的? 自動問答首先需要建立一個非常優(yōu)質(zhì)的問題答案資源庫,有這個庫之后,要在庫里找到答案,還涉及幾個問題:
第一個是問題與問題之間的等價計算,你問一個問題的時候,你能不能從這個庫里面找到等價的問題,這是很關(guān)鍵的,涉及到深度學(xué)習(xí);另外一點,比如說我問了一個問題,但是這個庫里面有一堆的答案,如何從這個答案里面當(dāng)中給出最好的,這里涉及到問題和答案匹配問題。用傳統(tǒng)的模型也能做,如果采用深度學(xué)習(xí)也能做,但是對于數(shù)據(jù)的數(shù)量和質(zhì)量會要求更高。
第二,閱讀理解的問題,什么叫閱讀理解?答案是存在一個文檔中,而不是存在一個QA庫當(dāng)中的,在文檔中要去挑選出最合適的片段,能夠去回答這樣一個問題,這時候要找到這個答案的位置,就需要有一個標(biāo)準(zhǔn)的訓(xùn)練數(shù)據(jù)。有這樣的標(biāo)注數(shù)據(jù)之后,再去訓(xùn)練這樣一個深度學(xué)習(xí)模型,來了一個新的問題以后,才能去預(yù)測出它在文章中的片段位置。
Q5:老師,謝謝您的分享,對于學(xué)生來說,沒有AI工作經(jīng)驗,怎么找該方面的工作呢? 我看有一些同學(xué)在問,沒有AI方面一些工作經(jīng)驗,對于學(xué)生來說,怎么找這方面的工作?
相信很多人有這方面的困境,這個時候我給大家分享的是說,第一個,現(xiàn)在有很多的機會,互聯(lián)網(wǎng)上的資源比我當(dāng)時讀書的時候要豐富的多。我可以分享一些自己的經(jīng)驗,當(dāng)時我在學(xué)校,可能接觸沒那么多,但是可以加入學(xué)校的協(xié)會,比如學(xué)校的開源軟件協(xié)會,當(dāng)時把基礎(chǔ)技術(shù)都學(xué)會了。
至于AI,第一個,大家可以去上這種培訓(xùn)質(zhì)量比較高的培訓(xùn)課程,國內(nèi)AI方面的培訓(xùn)課程很多,因為這些培訓(xùn)課程不僅僅是這方面知識的講解,還會幫助大家進(jìn)行實踐;
第二個方面,我是建議大家有機會可以加入開源的項目,現(xiàn)在AI方面,基于機器學(xué)習(xí),或者相關(guān)的開源項目有很多,針對這些項目,加入一個進(jìn)去,貢獻(xiàn)自己部分的代碼。
第三,我建議大家可以把基礎(chǔ)打好之后,從找一份實習(xí)開始,你如果還是在校生,因為公司對實習(xí)生的要求沒有那么高,它更多要求你的編程功底扎實,對AI一定的了解,可能要求沒有那么高,你再通過實習(xí)當(dāng)中的歷練去積攢這方面的經(jīng)驗,這也是一個比較好的方式。這是給大家的一些建議。
Q6:要不要學(xué)傳統(tǒng)機器學(xué)習(xí)模型算法? 我覺得是要學(xué)的。因為這就像基本功,傳統(tǒng)機器學(xué)習(xí)算法里面的很多的模型基本理論、一些泛化理論、一些特征設(shè)計的理論、一些模型它為什么效果好,為什么效果不好?它整個模型的一些內(nèi)在的思想是什么,這些基本功都是要學(xué)會的。不然的話,你真的直接上深度學(xué)習(xí),你就也只會用一些工具。一旦碰到一些問題的時候,就像如何調(diào)參,碰到效果不好的時候,我該怎么辦?你如果沒有這些理論基礎(chǔ),你就只能去瞎試,試出來是運氣好,試不出來也不明白為什么,我建議大家還是要學(xué)習(xí)機器傳統(tǒng)模型理論,這個東西都是要掌握的。這些理論的好處是在你實際項目當(dāng)中遇到瓶頸、遇到問題的時候,這些理論會指導(dǎo)你,你該去朝什么樣的方向去努力,你該怎么去定位問題,這些基礎(chǔ)理論還是非常重要的,我建議大家要學(xué)一學(xué),直接上來學(xué)深度學(xué)習(xí),基本功是不扎實的。 |
|
來自: KyunraWang > 《AI》