本文根據達觀數據王文廣在「達觀杯」文本智能處理挑戰賽期間的技術直播分享整理而成,內容略有刪減。算法
深度學習是從機器學習基礎上發展起來的,機器學習分爲監督學習、非監督學習以及強化學習三種類型。深度學習是在機器學習的基礎上把特徵抽取工做放到裏面一塊兒來完成的,直接實現了端到端的學習。一般咱們遇到的深度網絡包括:堆疊自編碼器、深度信念網絡、卷積神經網絡和循環神經網絡。網絡
下面左邊這張圖是自編碼器的一個網絡結構示意圖,自編碼器的特色是輸入和輸出是徹底同樣的,它經過將輸入複製到輸出,去學習它在隱層裏面的表示。右邊是堆疊自編碼器,它能夠把自編碼器的隱層不斷堆疊起來,造成多層的深度網絡。架構
與堆疊自編碼器同樣,深度信念網絡是在限制玻爾茲曼機基礎上疊出來的一個網絡,限制玻爾茲曼機是神經網絡裏面最基礎的網絡結構之一,經過將多個限制玻爾茲曼機堆疊起來造成的深度網絡,是深度學習裏面最基本的網絡結構之一。機器學習
深度學習被最普遍使用的是從卷積神經網絡開始的,卷積神經網絡的示意圖如這張圖片所示,它經過卷積和對輸入的局部特徵進行學習,來達到最終的目標。卷積神經網絡被普遍應用於文本處理和圖像識別當中。ide
深度學習另一個被普遍使用的網絡是循環神經網絡,循環神經網絡有很是多的變種,這張圖是它其中的一個,叫LSTM,常常被用於語音識別和文本處理當中。工具
從上面網絡能夠看出來,深度學習是在神經網絡的基礎上發展起來的,神經網絡早期的效果並非特別好,可是從兩千零幾年開始,由於海量數據的積累、逐層訓練技術的出現以及以GPU爲表明的計算性能的極大提高,使得深度學習能效果愈來愈好,被普遍應用於語音識別、計算機視覺、天然語言處理中。天然語言處理就會用到很是多深度學習的算法。性能
天然語言理解所處理的對象是文本,文本是普遍存在於咱們的平常生活和工做當中的,像達觀數據所擅長處理的是正式文本或者長文本,長文本像法律文書、人事檔案、證券專業文書、企業手冊、新聞文章、問答資料、客戶評論意見等都是咱們常的文本,它幾乎存在於全部的行業中,金融、法律、媒體、互聯網、政府、公共機構、大型企業,無所不在,若是可以使用天然語言理解和機器學習的方法,使得大量須要人工處理的海量文檔自動化,將會很是大地提升企業和政府部門的工做效率。學習
然而,讓計算機來理解文本是很是難的一件事情,首先,計算機缺少常識以及專業的背景知識,而人類一般擁有很是豐富的專業知識和背景。好比對「future」的理解,普通人認爲是「將來」,但對於金融相關的專業可能就會認爲是「期貨」,而「期貨」對金融專業人士來講是一個語境,這是計算機所不存在的一個場景。搜索引擎
除此以外,人類說話自己很是的抽象和模糊,一般擁有很是多的歧義或者語境信息在裏面。咱們一般在見到朋友時會說「吃飯了嗎?」「吃飯了嗎」對計算機來講就是「吃飯了嗎」四個字,而對人類來講它一般擁有豐富的隱含意義在裏面。編碼
從分詞的角度,咱們能夠看詞自己的粒度問題,「中華人民共和國」和「中國」自己意義是同樣的。還有指代歸屬問題,當人與人之間交流時候,你說的「你、我、他」可以天然而然的被替換成相應的目標,而計算機來解決指代歸屬問題也是很是難的一個事情。除此以外,還有同義詞、近義詞、局部轉義、一詞多義等問題。
好比一詞多義的問題,你們在網絡上看到過一個段子,「方便方便,意思意思」而後去理解「方便方便」和「意思意思」不一樣的意思。計算機一樣存在這個問題,它如何理解「方便方便」和「意思意思」的不一樣意思和不一樣的方便程度。
再從詞語構形成句子的過程當中也會遇到很是多的問題,由於對人類來講,句子之間的部分結構發生顛倒,人類依然可以正常的理解,可是對計算機來講,它對於像「你上班了嗎?」「班上你了嗎?」就有難度。
再往上,語義層面的歧義就更多了,「咬死獵人的狗」若是在沒有上下文語境的狀況下,人類也很是的難以理解,究竟是狗咬死了獵人,仍是某些動物把獵人的狗給咬死了,這就是所謂的語境。
除了語境以外,還有比較多的領域知識、專家知識,好比最近爆雷很是多的P2P,有一個特色是利息比較高。當利息高過了必定程度,存在問題的機率比較高了。這類專家的知識對計算機來講也是一個問題。
「企業清算時按投資年復率20%給予補償」,這句話若是存在合同當中,每每是須要注意的點。由於一般不超過12%,20%的利率太高。這個『太高』是寫錯了、仍是由於其餘特殊緣由,遇到這種問題時就須要經過雙重確認,來確保文本的正確。
爲了解決這些問題,咱們使用各類機器學習和深度學習的方法來創建模型,經過海量的文本進行訓練這個模型來預測將來。這個方式有點相似於人腦,人是要經過學習,學習不少專業知識,當學完知識以後,在將來遇到這些問題時,就會經過相似於機器學習的模型來實現預測和判斷。
在創建這些模型的過程當中,咱們一般會分爲字詞級分析、段落級分析、篇章級分析。
字詞級分析是咱們一般所遇到的像分詞、命名實體識別、同義詞分析等。段落級分析是從句子到段落層面來對文本進行建模,它通常包括依存文法分析、文本糾錯等。從段落往上是篇章級分析,篇章級分析更可能是語義層面的理解,它一般包括像文本類似度、主題模型、文章的聚類分類和標籤提取。
文本語義分析首先是表示學習。表示學習一般傳統上對文本的表示是經過One-hot編碼來實現的,在深度學習出來之後,每每使用稠密的向量編碼來對文本表示。
詞向量的稠密表示具備很是大的以上,一方面是它的維度下降得很是多,通常狀況下200-300維就足夠以表達中文的詞彙,而one-hot編碼每每須要50萬-100萬維來表示。除此以外,詞向量還能表達詞的語義層面的類似性。
對詞向量經典的訓練方法是谷歌發表的原始的「Word2Vec」這篇論文裏提到的兩種方法,詞袋模型和跳躍表。詞袋模型是用詞的上下文信息來表示這個詞自己,而跳躍表則是用詞的自己來表達詞的上下文信息。在「Word2Vec」基礎之上還發展出包含了全局信息的GloVe方法。
除了詞向量以外,深度學習的各類網絡結構也被用來進行文本分析。好比對句子進行分類,可使用卷積神經網絡來實現。
層次注意力模型是最新的一個網絡,它最先被使用來對評論進行打分。層次注意力模型有一個很是大的優勢,就是它考慮了文本或者是篇章的結構,它是從詞開始,到句子的一個注意力模型,再到整個篇章是另外一個注意力模型。它另外的一個優勢是能夠把整個網絡結構的參數可視化出來,來解釋詞、句子對目標的貢獻的大小。
除此以外,另一篇最新的論文所提出來的金字塔結構的卷積神經網絡模型,能夠很是高效的對長文本進行表示學習,最終達到一個很是好的分類效果或者標籤提取類效果。
除了分類和標籤提取以外,信息抽取也能夠用深度學習來實現,達觀一般會把信息抽取問題轉化成四種類型的分類問題來實現的,這樣就能夠充分利用前面所提到的各類網絡結構,好比層次注意力模型和金字塔結構的卷積神經網絡。
對於像NER或者分詞這種任務來講,咱們也會使用「深度學習+CRF」的方法來實現,這張PPT裏面講的就是使用「詞向量+LSTM+CRF」方法來實現NER。
像這張使用「詞向量+Bi-SLTM+CRF」一般狀況下效果都是很是好的。可是對於某些特定場景下它還會有一些不足,好比很是專業的文獻,這種狀況下會遇到很是低頻的詞彙,如何對這些低頻的詞彙進行處理是咱們須要考慮的一個問題。
達觀數據採用了一個方法,是把低頻詞彙和專業領域的詞彙經過某種表示,和原始的詞向量一塊兒拼接,做爲LSTM和CRF的輸入,來實現對這些低頻詞彙問題的解決。充分利用這些深度學習的模型和應用實踐所總結出來的經驗,咱們能夠很是高效的去處理像企業一般所遇到的合同、簡歷、工單、新聞、用戶評論、產品說明這些文檔。
推薦系統很是的火熱,像今日頭條和抖音這種經過算法推薦用戶所感興趣的東西,讓用戶不離開APP,都是很是成功的案例。國內相似於的 趣頭條都比較小的企業或者APP也很是多,它們每每會選擇一家像達觀這樣的SaaS服務來實現它們的推薦系統。
推薦系統的基本過程是像這張PPT裏面所講的同樣,經過對原始的數據進行處理,使用到天然語言理解裏面的分詞和NER技術,使用文本的分類、主題模型、情感分析等,把這個分析結果放到搜索引擎,達觀使用的搜索引擎是Elasticsearch集羣,在這些集羣裏面會實現一個初步的Ranking處理。
以搜索引擎爲基礎,咱們使用各類推薦算法,像協同過濾和基於內容的推薦算法,以及深度學習出來之後的神經網絡協同過濾的方法,來對這種文檔進行推薦。不一樣的推薦算法會在同個場景下推薦出不一樣的內容,在這個基礎上咱們會使用一些融合算法,來把這些不一樣算法推薦的結果進行融合。咱們經常使用的推薦融合算法包括GBDT、SVD等。
在深度學習上也有一些算法,像DeepFM這種算法也能夠用來作算法融合,作推薦內容的融合。經過融合算法把不一樣推薦算法、推薦內容給融合起來以後,還會根據APP所要求的業務規則和過濾規則,來對這些內容進行過濾,最終把這些過濾好的結果發送給用戶,這個是咱們整個推薦系統的一個基本的過程。
對於推薦系統來講,底層的像協同規律或者基於內容推薦很是成熟的算法,在算法之上如何得到更好的效果,咱們會利用最前沿的深度學習推薦算法的技術。推薦系統的效果每每取決於算法的好壞。
除了傳統的像 CF這種算法以外,咱們也嘗試了很是多深度學習層面的算法,像Wide&Deep這個算法就是一個例子,Wide&Deep是咱們嘗試的一種算法。
這張PPT講的是Wide&Deep網絡結構,左邊是一個Wide模型,Wide模型它通常經常使用LR,它很是高效,能夠對很是大的維度的輸入進行很是高效的學習。這些輸入通常是用戶點擊行爲反饋數據。
Wide&Deep模型的Deep是右邊這個模型所展現的,它是個多層的神經網絡,多層神經網絡能夠對原始特徵進行學習,學習出一些人工特徵所沒法抽象出來的一部分特徵。經過聯合訓練,將Wide模型的輸出和Deep神經網絡的輸出結合起來,得到更好的效果。
在實踐中,Wide模型通常是用戶反饋這種,經過LR這種很是高效的方法,把用戶反饋實時的體現到推薦結果上。而Deep模型通常是用來訓練像Item這種數據,能夠經過離線的方法,使用很是長的時間,訓練出一個更好的效果出來。Wide&Deep的優點是把實時反饋和對文章的深層理解結合起來,從而得到更好的效果。
在Wide&Deep以外,咱們也嘗試了神經網絡協同過濾,神經網絡協同過濾是在協同過濾的基礎上、使用神經網絡的方法來實現更好的效果。
這是一個神經網絡協同過濾的示意圖,左下角這個輸入是user層面的向量,而右下角這個輸入是Item層面的向量,將user向量和Item向量輸入到一個多層的神經網絡上,能夠經過大規模離線訓練的方法,來得到一個比較好的協同過濾的效果。
這個網絡結構和一般的網絡結構很是類似的,通常狀況下它是對user和Item經過embedding的方式,這個embedding就跟前面講的word2vec是同樣的,經過embedding把user和Item變成一個稠密編碼,而後輸入到一個多層的神經網絡上。輸入就是user、Item之間的分數值,這個網絡就是一個簡單的迴歸模型,經過很是多層的神經網絡的非線形特性來實現比傳統簡單CRF的效果會好很是多。
知識圖譜是當前很是熱門的一個方向。如何把知識圖譜和深度學習結合起來應用到推薦系統裏面,是咱們去作的一個嘗試。
這張圖能夠簡單的分紅三個部分,左上角這部分是普通的注意力網絡結構,它經過將用戶所感興趣的Item跟普通的候選集的Item進行學習,學習出一個權值,這個全值能夠用來表示用戶對這個新聞感興趣的程度。左下角這個網絡是是將item的內容經過表示學習學習出item的向量表示。右邊大圖是將左邊這兩個圖學習出來的結果,用相似於前面提到的神經網絡協同過濾的方式把它給組合起來,造成了推薦系統裏對用戶推薦內容候選級的學習過程。經過這種方法,在某種場景下咱們能夠獲得更好的效果。
綜合前面這些推薦算法造成的推薦系統,能夠很是有效的去作好個性化推薦、相關推薦和熱門推薦等各類內容,它能夠普遍應用在像資訊推薦,也能夠應用到簡歷推薦上。好比能夠在HR發佈一個JD的時候,給HR推薦知足這些JD要求的簡歷。對其餘場景也可使用推薦算法來實現,對於一個案件,能夠推薦這個案件相關的其餘案件,或者適用於這個案件的一些法律條文。商品推薦則是更常見的內容,它其實也是推薦系統最初使用的一個應用場景。
達觀的推薦系統結合前面提到的各類深度學習、天然語言理解和各類各樣的算法,來實現一個很是好的推薦效果。除此以外,咱們也有很是多行業應用經驗,好比招商銀行的掌上生活的個性化推薦,使用的就是達觀給它們作的私有化部署推薦系統。像澎湃新聞APP,它們的新聞推薦系統是用咱們的SaaS服務來實現的。
咱們在天然語言理解環節提到,文檔的種類是很是豐富的,企業面臨的文檔也是很是多的,應用場景也是各類各樣。好比對財務報表來講,須要的是信息抽取,如何把財務報表變成一個結構化的數據。而對於合同來講它包括兩方面的內容,一方面是寫合同的時候是否寫得符合合同法和企業內部的法務規定;另外一方面則是針對審覈合同的人,是否放過了一個不符合合同規定的條款,或者,如何去防止合同裏面陰陽合同的狀況出現。
其餘還包括文檔的智能搜索,如何去搜一大篇幾百頁文章裏的某些文字,而後把對應的字段給顯示出來。應用場景包括,員工剛入職一家公司,須要一個公司手冊同樣的內容,想理解報銷或者請假是怎麼去走流程的時候,就要去搜這個文檔。如何作到不須要展現給員工整個文檔,而是直接給到員工對應的章節,對於企業則是一個可以確實提升員工工做效率的問題。這些問題都是達觀所擅長解決的。
除了讀、搜、審以外,還有一個場景是更好的利用深度學習和天然語言理解來幫助寫文檔的人更好更快的寫做,好比輔助去寫新聞、報告等。
下面,我以場景來作技術層面的解析,好比文本分類.前面提到了很是多深度學習的分類器,還包括一些傳統學習的分類器,均可以用來作文本分類。傳統學習的優點是在語料比較少的時候,好比JD就是職位描述,這種場景下通常企業的職位描述就是幾百個或者幾千個,從深度學習的方法去實現,可能效果並非特別好,這種狀況下咱們會選擇像傳統的方法,決策數或者SVM來實現對JD的分類。而對於簡歷,簡歷的規模每每JD的100倍以上,這種狀況下咱們就能夠用前面提到的層次注意力模型和金字塔結構的CNN來實現對簡歷的分類。
除了分類以外,像信息抽取一般使用的是CRF,CRF能夠達到一個比較好的效果,它的標註語料要求可能比較低,幾百到一兩千份就可以實現比較好的效果。當企業有更多語料的時候,咱們就可使用深度學習的方法來實現。前面已經提到過,咱們能夠把信息抽取轉化成分類問題來實現,前面提到的各類分類算法,像金字塔結構的CNN和層疊注意力模型均可以用來作分類。
除此以外,咱們在推薦系統環節所提到的像Wide&Deep這種算法,結合LR和深度網絡的方法,也能夠用來作這個信息抽取的事情。
這個方式提及來也比較簡單,能夠把CRF看成Wide模型,而後用深度網絡Deep模型,用聯合訓練方法把它們結合起來,這樣能夠實現相似於遷移學習的效果,就是咱們能夠預先訓練好一個深度網絡,而後把深度網絡給固化起來。在面對企業沒有大量GPU的時候,咱們只要從新去訓練這個Wide,Wide模型可使用比較簡單的像CRFPP等工具來實現。這種方法能夠很好的均衡資源的使用和效果。
除了企業對文檔抽取有要求以外,其實文檔的智能比對也是一個很是重要的應用場景,這種比對是在文檔的信息抽取之上構建的。在信息抽取之上,咱們一般使用規則來實現比對這個功能,只要信息抽取的效果足夠好,比對效果通常都不會太差。
這是咱們實際的一些應用場景,它經過信息抽取技術把關鍵信息給抽取出來,而後使用各類業務規則對合同進行智能審閱。這種簡單的方法就能夠達到很是高的效果,能夠替企業節省大量的法務人員。單個文檔的審閱時間節免得很是多,同時可讓企業節省200個法務的人力。人工智能和文本智能審閱的使用,能夠給企業帶來很是大的收益,同時可讓這200我的作更有意義的工做。這個是合同審閱的效果圖。
這是達觀使用的架構圖,咱們能夠把輸入經過各類特徵工程,使用傳統的方法來作機器學習,也能夠經過Embedding的方式使用各類深度網絡來實現,最終會使用一些融合算法,來把不一樣模型的結果輸出作算法融合,最後作些後處理,好比各類業務規則、各類過濾條件、各類在國內特殊國情所不能出現的內容都要過濾掉,獲得一個結果出來。
並不只僅是深度學習效果好就使用它,咱們會根據具體的應用場景來選擇。如當數據規模小的時候就沒法使用深度學習來作。