深度學(xué)習(xí)、機(jī)器學(xué)習(xí)與NLP的前世今生

2 評(píng)論 16012 瀏覽 71 收藏 29 分鐘
🔗 产品经理在不同的职业阶段,需要侧重不同的方面,从基础技能、业务深度、专业领域到战略规划和管理能力。

隨著深度學(xué)習(xí)的發(fā)展,自然語(yǔ)言處理領(lǐng)域的難題也得到了不斷突破,AlphaGo項(xiàng)目的主要負(fù)責(zé)人David Silver曾說(shuō)“深度學(xué)習(xí) (DL)+ 強(qiáng)化學(xué)習(xí) (RL)= 人工智能(AI)”。目前深度學(xué)習(xí)在自然語(yǔ)言處理上主要有哪些應(yīng)用?在工程實(shí)踐中是否會(huì)有哪些瓶頸?

一、為什么做文本挖掘

什么是NLP?

簡(jiǎn)單來(lái)說(shuō):NLP的目的是讓機(jī)器能夠理解人類(lèi)的語(yǔ)言,是人和機(jī)器進(jìn)行交流的技術(shù)。它應(yīng)用在我們生活中,像:智能問(wèn)答、機(jī)器翻譯、文本分類(lèi)、文本摘要,這項(xiàng)技術(shù)在慢慢影響我們的生活。

NLP的發(fā)展歷史非常之久,計(jì)算機(jī)發(fā)明之后,就有以機(jī)器翻譯為開(kāi)端做早期的NLP嘗試,但早期做得不是很成功。直到上個(gè)世紀(jì)八十年代,大部分自然語(yǔ)言處理系統(tǒng)還是基于人工規(guī)則的方式,使用規(guī)則引擎或者規(guī)則系統(tǒng)來(lái)做問(wèn)答、翻譯等功能。

第一次突破是上個(gè)世紀(jì)九十年代,有了統(tǒng)計(jì)機(jī)器學(xué)習(xí)的技術(shù),并且建設(shè)了很多優(yōu)質(zhì)的語(yǔ)料庫(kù)之后,統(tǒng)計(jì)模型使NLP技術(shù)有了較大的革新。接下來(lái)的發(fā)展基本還是基于這樣傳統(tǒng)的機(jī)器學(xué)習(xí)的技術(shù),從2006年深度學(xué)習(xí)開(kāi)始,包括現(xiàn)在圖像上取得非常成功的進(jìn)步之后,已經(jīng)對(duì)NLP領(lǐng)域領(lǐng)域影響非常大。

達(dá)觀劃分的NLP技術(shù)層次

達(dá)觀劃分的NLP技術(shù)層次

當(dāng)年上小學(xué)時(shí)有一本書(shū)叫《字詞句篇與達(dá)標(biāo)訓(xùn)練》,里面講了字、詞、句、篇,我們開(kāi)始學(xué)寫(xiě)字,詞是最基礎(chǔ)的一級(jí),中文的一個(gè)字比英文的一個(gè)字母的語(yǔ)義要豐富的多,但表義能力仍然較差。所以中文一般的處理情況都是按照詞級(jí)別,詞級(jí)別的分析就有了中文分詞、有了命名實(shí)體識(shí)別這樣的層次來(lái)做底層處理。

在這個(gè)底層處理之上是段落級(jí)別,是一句話、一段話、短的文本,對(duì)這個(gè)級(jí)別文本做法又對(duì)應(yīng)了相關(guān)的技術(shù),包括:依存文法分析、詞位置分析、語(yǔ)義歸一化、文本糾錯(cuò)等等功能。但是這個(gè)功能也是為它更上級(jí)的服務(wù)去服務(wù)的,達(dá)觀稱(chēng)之為“篇章”級(jí)的應(yīng)用。

大部分同學(xué)平時(shí)做比賽、做項(xiàng)目關(guān)注的點(diǎn)最多是在“篇章”級(jí)的應(yīng)用,底下這些中文分詞等都已經(jīng)有很好的工具了,不用再?gòu)念^到尾去開(kāi)發(fā),只要關(guān)心上層的應(yīng)用,把底下的工具用好,讓它產(chǎn)生需要的Feature,來(lái)做分類(lèi)、主題模型、文章建模,這種比較高層次的應(yīng)用。

所以,要做好NLP,包括我們公司在內(nèi),這三個(gè)級(jí)別的技術(shù)都是自己掌握的。但是如果個(gè)人學(xué)習(xí)使用是有權(quán)衡的。某個(gè)同學(xué)的某一個(gè)技術(shù)特別好也是OK的,因?yàn)楝F(xiàn)在開(kāi)源工具,甚至商用工具有很好的效果。如果不要求精度特別高或者有特殊的要求,用這些工具一般是可以達(dá)到你的要求。

每個(gè)層次的技術(shù)都是完全不同的,而且層次間的技術(shù)是有聯(lián)系,一般的聯(lián)系是底層是為上層服務(wù)。

達(dá)觀數(shù)據(jù)就是應(yīng)用這些技術(shù)為企業(yè)提供文檔智能審閱、個(gè)性化推薦、垂直搜索等文本挖掘服務(wù)。

二、為什么要用深度學(xué)習(xí)?

深度學(xué)習(xí)的發(fā)展與應(yīng)用要有一定的基礎(chǔ),上個(gè)世紀(jì)末互聯(lián)網(wǎng)時(shí)代到來(lái)已經(jīng)有大量的數(shù)據(jù)電子化,我們有海量的文章真是太多了。有這樣的數(shù)據(jù)之后就要去算它,需要算法進(jìn)步。以前這個(gè)數(shù)據(jù)量規(guī)模沒(méi)法算,或者數(shù)據(jù)量太大算起來(lái)太慢。就算有更好的算法還是算得很慢時(shí),就需要芯片的技術(shù),尤其我們現(xiàn)在用并行計(jì)算GPU,這個(gè)加速對(duì)各種各樣的算法尤其深度學(xué)習(xí)的算法影響速度非常大。

所以一定要有這三個(gè)基礎(chǔ)——數(shù)據(jù)、算法、芯片,在這三個(gè)核心基礎(chǔ)上面做更高級(jí)的應(yīng)用,涉及人的感官——聽(tīng)覺(jué)、視覺(jué)、語(yǔ)言這三個(gè)感官,語(yǔ)音的識(shí)別、計(jì)算機(jī)的視覺(jué)、自然語(yǔ)言的處理。

1. 深度學(xué)習(xí)與機(jī)器學(xué)習(xí)

很多同學(xué)會(huì)把深度學(xué)習(xí)和機(jī)器學(xué)習(xí)劃等號(hào),實(shí)際上它們不是等號(hào)。AI的概念非常大,比如:我們用的Knowledge Base知識(shí)數(shù)據(jù)庫(kù)也是一種AI,它可能沒(méi)有那么智能。機(jī)器學(xué)習(xí)是AI其中的一小塊,而深度學(xué)習(xí)用又是機(jī)器學(xué)習(xí)中的一小塊,我們常見(jiàn)的CNN、RNN都屬于深度學(xué)習(xí)的范疇。

同時(shí),也做Logistics Regression知識(shí)圖譜,因?yàn)橹R(shí)圖譜是NLP中一個(gè)很重要的應(yīng)用,無(wú)論是生成知識(shí)圖譜,還是用它做像問(wèn)答等其他應(yīng)用都是會(huì)用到的。

我們?yōu)槭裁匆蒙疃葘W(xué)習(xí)?

可以比較一下經(jīng)典機(jī)器學(xué)習(xí)和深度學(xué)習(xí)間的差異。

比如:做一個(gè)分類(lèi)的問(wèn)題,這兩個(gè)分類(lèi)問(wèn)題唯一的區(qū)別就是特征工程的區(qū)別。我們用經(jīng)典的機(jī)器學(xué)習(xí)算法是上面這條路,輸入數(shù)據(jù)后大家就開(kāi)始(包括打比賽也)做各種各樣的特征工程。有了這樣的特征,我們還要根據(jù)TF-IDF、互信息、信息增益等各種各樣的方式去算特征值,或?qū)μ卣鬟M(jìn)行過(guò)濾排序。傳統(tǒng)機(jī)器學(xué)習(xí)或經(jīng)典機(jī)器學(xué)習(xí)90%的時(shí)間,都會(huì)花在特征工程上。

而Deep learning顛覆了這個(gè)過(guò)程,不需要做特征工程。需要各種各樣的特征,比如:需要一些長(zhǎng)時(shí)間依賴(lài)的特征,那可以用RNN、LSTM這些,讓它有個(gè)序列的依賴(lài);可以用局部的特征,用各種各樣的N元語(yǔ)法模型,現(xiàn)在可以用CNN來(lái)提取局部的文本特征。

深度學(xué)習(xí)節(jié)省的時(shí)間是做特征工程的時(shí)間,這也是非常看重深度學(xué)習(xí)的原因:

  • 特征工程做起來(lái)很累。
  • 很多實(shí)際場(chǎng)景是挖掘出一個(gè)好的特征或者對(duì)我們系統(tǒng)貢獻(xiàn)很大的特征,往往比選擇算法影響還大。用基本的特征,它的算法差距不會(huì)特別大,最多也就10個(gè)點(diǎn),主要還是特征工程這塊,而深度學(xué)習(xí)很好的解決了這個(gè)問(wèn)題。

有了深度學(xué)習(xí)之后,對(duì)文本挖掘就有了統(tǒng)一處理的框架,達(dá)觀把它定義為五個(gè)過(guò)程:

  1. 文本數(shù)據(jù)。
  2. 預(yù)處理,預(yù)處理很重要,大家在工作中拿到的數(shù)據(jù)都是經(jīng)過(guò)清洗過(guò)程的,“達(dá)觀杯”算法大賽的數(shù)據(jù)是我們幫大家清洗過(guò)的。比賽中做到的字、詞都是各種各樣的ID,是預(yù)處理的一部分。
  3. 有了預(yù)處理之后,我們可以選擇各種各樣的網(wǎng)絡(luò)。
  4. 后處理,比如業(yè)務(wù)需要分類(lèi),分類(lèi)最終的結(jié)果是通過(guò)不通過(guò),這都是后處理的過(guò)程。
  5. 應(yīng)用,應(yīng)用的方向有文本分類(lèi)、情感分析、中文分詞、命名實(shí)體識(shí)別、機(jī)器翻譯。

幾乎所有任務(wù)都可以拿Deep learning來(lái)做,它的適應(yīng)性和它的廣度非常好,例如:傳統(tǒng)的機(jī)器學(xué)習(xí)做文本分類(lèi)需要特定的算法,而這個(gè)算法不可能做命名實(shí)體識(shí)別的事情。

2. 通過(guò)Vector Representationns?進(jìn)行低緯度連續(xù)空間的字詞表示

在深度學(xué)習(xí)在NLP領(lǐng)域火起來(lái)之前,最有代表性的一個(gè)研究,對(duì)每個(gè)人影響最大的工作就是Word2Vec,把一個(gè)字、一個(gè)詞變成向量來(lái)表示,這是對(duì)我們影響非常大的工作。

這件事情的好處是什么?

在之前我們以詞為單位,一個(gè)詞的表示方式幾乎都是one hot。 one hot序列有一個(gè)致命的缺點(diǎn),你不能計(jì)算相似度,所有人算出來(lái)都是“0”,都是一樣的,距離也都是一樣的,因此它不能很好的表示詞之間的關(guān)系。

過(guò)去像威海市、濰坊市、棗莊市這三個(gè)城市對(duì)計(jì)算機(jī)來(lái)說(shuō)是完全不一樣的東西,而我們使用Word2Vec做這件事情有兩個(gè)好處:

第一,這個(gè)詞如果有1萬(wàn)維的話,1萬(wàn)維本來(lái)存儲(chǔ)它就是一個(gè)非常稀疏的矩陣、而且很浪費(fèi),我們就可以把它變得更小,因?yàn)槲覀兊腤ord2Vec里面一般的向量都在 512以?xún)?nèi)。

這個(gè)維度的向量相對(duì)1萬(wàn)維來(lái)說(shuō)已經(jīng)是比較低維的空間,它里面存的是各種的浮點(diǎn)數(shù),這個(gè)浮點(diǎn)數(shù)看起來(lái)這三個(gè)向量好像每個(gè)都不一樣,但是實(shí)際去計(jì)算,發(fā)現(xiàn)這三個(gè)向量之間的相似度非常高,一個(gè)是相似度可以判斷它的相似性,另外是判斷它們的距離。

威海、濰坊、棗莊這幾個(gè)城市在空間上離得非常近,它們的數(shù)值也非常近。它對(duì)于我們實(shí)際工作的好處是增強(qiáng)了我們的泛化能力,這是一個(gè)很難做的事情。

  • 第一,有更好的帶語(yǔ)義的表示;
  • 第二,有了這樣的表示之后可以做語(yǔ)義的計(jì)算,包括山東-威海約等于廣東-佛山,兩個(gè)向量之間是約等于的,語(yǔ)義的東西不太好解釋?zhuān)侨酥肋@是怎么回事,語(yǔ)義相近就是Word2Vec最大的幫助。

有了表示學(xué)習(xí)之后,下一步就是常見(jiàn)的各種網(wǎng)絡(luò)結(jié)構(gòu),這些都是非常常見(jiàn)的,比如:CNN、GRU、RNN、Bi-LSTM。LSTM也是一種RNN,Bi-LSTM也是一種LSTM,只不過(guò)Bi是雙向的LSTM,它可能學(xué)到前后上下文的特征和語(yǔ)義。

GRU的好處是比LSTM這種算法稍微簡(jiǎn)單,所以在層次比較深的時(shí)候或者比較復(fù)雜的時(shí)候,用它這個(gè)單元的運(yùn)算效率會(huì)高一點(diǎn)、快一點(diǎn),但它實(shí)際精度可能稍微差一點(diǎn)。所以模型那么多,怎么來(lái)選是很重要的,要根據(jù)大家的實(shí)踐去看看怎么用。

3. CNN模型原理

CNN是卷積神經(jīng)網(wǎng)絡(luò)。

這張圖中間的九宮格就是個(gè)卷積格,每個(gè)數(shù)字相當(dāng)于一個(gè)過(guò)濾器。它做的事情對(duì)一個(gè)圖像來(lái)說(shuō),是把九宮格和圖像中對(duì)應(yīng)的矩陣相乘,乘出來(lái)一個(gè)結(jié)果,得到卷積之后它就開(kāi)始平移,平移的步長(zhǎng)是可選擇的,一般我們都是一步一步平移過(guò)去。

它這樣的好處是什么?對(duì)于圖像來(lái)說(shuō),1個(gè)像素真的代表不了什么東西,那9個(gè)像素是不是有意義?

是有意義的,它可能學(xué)到像直線、彎曲等特征,很簡(jiǎn)單的圖形特點(diǎn),然后它會(huì)得到一層。

為什么叫深度學(xué)習(xí)?

我們這只是一層,它在CNN里面尤其圖像識(shí)別網(wǎng)絡(luò),大家都聽(tīng)過(guò)“大力出奇跡”,網(wǎng)絡(luò)越深效果越好,因?yàn)樗?jīng)過(guò)一層一層的學(xué)習(xí),可以把每一層的特征進(jìn)行濃縮。

簡(jiǎn)單的像素沒(méi)有任何的表義能力,到第一層濃縮之后它有一些點(diǎn)線的能力,再往上濃縮可能就有弧線的能力,再往上濃縮它越來(lái)越復(fù)雜,可以做到把一個(gè)像素這個(gè)沒(méi)有意義的東西變成有意義的東西??梢运梢钥闯墒且粚訉拥倪^(guò)濾,選出最好的特征結(jié)果,這是卷積的原理。卷積不僅僅在圖像里,在文本里用得也非常好。

4. RNN和LSTM

簡(jiǎn)單來(lái)說(shuō)LSTM就是單元格換了一個(gè)更復(fù)雜的RNN,它可以做到RNN做不到的事情。

為什么叫長(zhǎng)短期記憶網(wǎng)絡(luò)?

看下面這張圖,它比傳統(tǒng)的RNN多了一個(gè)所謂的細(xì)胞狀態(tài),我翻譯成“細(xì)胞”,一般也叫“cell”,它多了一個(gè)存儲(chǔ)長(zhǎng)期信息的“cell”狀態(tài)。

我們看一下第一張圖,它是怎么來(lái)做長(zhǎng)期記憶的更新?

看輸入Ht-1和Xt,Ht-1是上一個(gè)時(shí)刻這個(gè)cell隱狀態(tài)的輸出,Xt是當(dāng)前輸入,它們兩個(gè)通過(guò)這個(gè)函數(shù)計(jì)算后的輸出是0-1之間的某一個(gè)值。

  • 第一步,決定上個(gè)時(shí)刻細(xì)胞狀態(tài)留下的比率是多少。
  • 第二步,來(lái)了一些新的信息,不能只是把老的細(xì)胞狀態(tài)更新,還要把新的信息添進(jìn)去,通過(guò)這兩個(gè)公式來(lái)添,第一個(gè)公式輸出0-1的系數(shù),第二個(gè)公式要選出量是多少。

有了第一步和第二步之后就開(kāi)始第三步細(xì)胞狀態(tài)更新,第一步的輸出0-1和Ct-1相乘決定上一時(shí)刻這個(gè)細(xì)胞狀態(tài)留下多少。第二步算出來(lái)系數(shù)和信息量相乘決定留下多少新增信息,然后把上一步剩下的和這一步新增的加起來(lái),做一個(gè)更新,這個(gè)更新就是現(xiàn)的cell狀態(tài)值。

現(xiàn)在單元的狀態(tài)更新完了,下一步就要輸出,這個(gè)輸出有兩個(gè):第一個(gè),對(duì)外是一樣,還是隱層的輸出Ht,這個(gè)輸出和前面講的RNN隱層輸出是一樣的,只是多了一步內(nèi)部更新。決定留下多少老的信息,決定留下多少新的信息,再把老的信息和新的信息加起來(lái)就是最終的結(jié)果。

長(zhǎng)短期記憶網(wǎng)絡(luò)可以把很長(zhǎng)很遠(yuǎn)的語(yǔ)義通過(guò)Ct把信息記下來(lái),而RNN本來(lái)就很擅長(zhǎng)記憶這種比較近的信息,所以LSTM長(zhǎng)短信息都能記下來(lái),對(duì)后面特征的選擇、模型的輸出選擇有很大的幫助。

三、深度學(xué)習(xí)的具體應(yīng)用

  • one to one:圖像分類(lèi),對(duì)于我們來(lái)說(shuō),圖像就是二維矩陣,就是像素XY坐標(biāo)的矩陣,輸入之后經(jīng)過(guò)神經(jīng)網(wǎng)絡(luò)的處理輸出藍(lán)色,這是分類(lèi)問(wèn)題。
  • one to many:圖像描述,最早看到這個(gè)應(yīng)用覺(jué)得很神奇,一個(gè)圖像進(jìn)來(lái)了,它告訴我圖像上有一個(gè)狗、一個(gè)貓站在車(chē)旁邊,這就是一個(gè)圖像描述的過(guò)程,它可以把圖像變成很多輸出,這就是one to many的問(wèn)題。
  • many to one:輸入的是一個(gè)序列,文字等都是這樣一個(gè)序列,這個(gè)序列輸出之后做文本分類(lèi)、情感分析,它最終都給出來(lái)這樣一個(gè)結(jié)果,它們都屬于“多到一”的過(guò)程。
  • many to many:這有兩張圖,它們的區(qū)別是:第一張圖紅色輸入的時(shí)候沒(méi)有藍(lán)色的輸出,而是等第三個(gè)紅色輸入的時(shí)候藍(lán)色開(kāi)始輸出,它是一個(gè)異步的序列到序列的問(wèn)題,異步到一個(gè)序列問(wèn)題常見(jiàn)的例子就是機(jī)器翻譯。機(jī)器翻譯是看到很多上下文才能決定開(kāi)始怎么翻譯,不能光看到China就翻譯成中國(guó),因?yàn)橛⑽牡谋硎龊椭形谋硎鲰樞蛴袝r(shí)候不同,需要看到上下文之后再去翻譯。但是有異步就有同步,我們寫(xiě)代碼經(jīng)常異步和同步問(wèn)題,其實(shí)這邊也一樣,序列到序列的同步關(guān)系就是我們經(jīng)常見(jiàn)的,所有選手應(yīng)該都知道的序列標(biāo)注問(wèn)題,序列標(biāo)注問(wèn)題的上面就是各種各樣的應(yīng)用。

本次講的是文本,所以我著重會(huì)講many to one和many to many的過(guò)程。

1. 文本分類(lèi)

“達(dá)觀杯”算法大賽很多同學(xué)在用傳統(tǒng)的方式,包括baseline來(lái)做,很多人吐槽baseline好像有點(diǎn)高。但是我們沒(méi)有做特殊優(yōu)化,這是最基礎(chǔ)的版本,做出來(lái)很高說(shuō)明傳統(tǒng)的機(jī)器學(xué)習(xí)還是非常好的,不是Deep learning一統(tǒng)天下。

傳統(tǒng)的機(jī)器學(xué)習(xí),需要構(gòu)造特征,不同領(lǐng)域定制化程度很高,這個(gè)模型A領(lǐng)域用了,B領(lǐng)域幾乎要從頭再做一遍,沒(méi)有辦法把其他的特征遷移過(guò)來(lái)很好的使用。某些領(lǐng)域效果很好,某些領(lǐng)域另外一個(gè)算法很好,傳統(tǒng)機(jī)器學(xué)習(xí)把各種各樣的方式做以融合來(lái)提升效果。

深度學(xué)習(xí)則可實(shí)現(xiàn)端到端,無(wú)需大量特征工程。框架的通用性也很好,能滿(mǎn)足多領(lǐng)域的需求,并且可以使用費(fèi)監(jiān)督語(yǔ)料訓(xùn)練字詞向量提升效果。

但是為什么有人吐槽Deep learning?

因?yàn)檎{(diào)參很麻煩,有時(shí)改了一下參數(shù)好很多,改了一個(gè)參數(shù)效果又下降了,有的算法能夠?qū)Υ擞幸欢ǖ慕忉專(zhuān)幌駛鹘y(tǒng)機(jī)器學(xué)習(xí)能夠解釋得那么好。這兩大幫派不能說(shuō)完全誰(shuí)戰(zhàn)勝了誰(shuí),是相融相生的。

2. TextCNN

它是一個(gè)單層的CNN,選擇了幾種類(lèi)型的卷積,做一個(gè)feature map,然后用max-pooling取得每個(gè)map最大的特征作為最終的輸出,結(jié)構(gòu)非常簡(jiǎn)單,大家只要有一點(diǎn)深度學(xué)習(xí)的知識(shí)就可以。但是因?yàn)檫^(guò)于簡(jiǎn)單,而且CNN天生的缺陷是寬度有限,導(dǎo)致它會(huì)損失語(yǔ)義的問(wèn)題。

2. Deep Pyramin CNN

Deep Pyramin CNN就是深度的CNN, CNN的特點(diǎn)就是結(jié)構(gòu)簡(jiǎn)單。雖然有block N,但它每個(gè)block長(zhǎng)得都是一樣的,除了第一層,每一層就是一個(gè)pooling取一半,剩下是兩個(gè)等寬度的卷積,輸出250維,疊加好幾層后就可能學(xué)到非常準(zhǔn)的語(yǔ)義。

3. Hierarchical Attention Network

這個(gè)模型的優(yōu)點(diǎn)是非常符合人類(lèi)的思維。Word級(jí)別的時(shí)候前面的套路都是一樣的,做各種Embedding,在Embedding到下一層次,這個(gè)輸?shù)较乱粚觭entence級(jí)別之前會(huì)加一層Attention,讓它知道這句話里面哪一個(gè)詞最重要,這像我們知道一句話中哪個(gè)詞最重要。

最終輸出之前再加個(gè)Attention,這個(gè)Attenton去學(xué)這里面哪些句子最重要的。你可以簡(jiǎn)單的理解,它把我們輸入的那么多文本,也是經(jīng)過(guò)了一層層的過(guò)濾,前面是通過(guò)卷積的過(guò)程,它現(xiàn)在是通過(guò)Attention的機(jī)制去找。

還有一個(gè)特別好的地方是學(xué)部分可解釋?zhuān)渥永锬男┰~最重要,它的藍(lán)顏色就更深,它能找到語(yǔ)義級(jí)別哪個(gè)語(yǔ)義對(duì)分類(lèi)貢獻(xiàn)最大,這是這個(gè)網(wǎng)絡(luò)很好的一點(diǎn)。

包括前面講的HNN、Deep Pyramin CNN,網(wǎng)上的實(shí)現(xiàn)跟論文是有一定差別的。所以大家要注意,我們關(guān)注的是它整體的網(wǎng)絡(luò)結(jié)構(gòu),并不是每一點(diǎn)的百分之百的還原,我們不是它的復(fù)制者,而是它的使用者。所有的網(wǎng)絡(luò)結(jié)構(gòu)、參數(shù)甚至過(guò)程,只要大體的思想有了就OK。這兩個(gè)是many to one在文本分類(lèi)上用得很多的。

4. 序列標(biāo)注

序列標(biāo)注就兩個(gè)東西:第一個(gè)是定義標(biāo)簽體系。我們這邊一般最常用BMES,簡(jiǎn)單一點(diǎn)的IO,復(fù)雜一點(diǎn)的BIO,BMES算是一個(gè)經(jīng)典的方法,不多也不少,還有M1、M2、M3更復(fù)雜的一般都不太用。

5. 深度學(xué)習(xí)和傳統(tǒng)文本處理方法的結(jié)合

傳統(tǒng)的CRF用起來(lái)效果不錯(cuò),Deep learning也能夠把這個(gè)事情做得很好。LSTM可以學(xué)習(xí)到很長(zhǎng)的上下文,而且對(duì)識(shí)別非常有幫助。實(shí)際問(wèn)題或者工業(yè)應(yīng)用來(lái)說(shuō),我們要保證它的整體效果和復(fù)雜度的情況下,這邊Bi-LSTM是一個(gè)非常好的方式,也是相對(duì)比較成熟的方式。

為什么要加CRF?

我對(duì)這個(gè)模型結(jié)構(gòu)的看待,它是一個(gè)深度學(xué)習(xí)和傳統(tǒng)方式非常完美的結(jié)合。Bi-LSTM做特征工程,CRF做標(biāo)簽的輸出。很多同學(xué)都試過(guò),用純的Bi-LSTM去寫(xiě),最終輸出標(biāo)簽之間沒(méi)有序列依賴(lài)的關(guān)系。

6. 序列標(biāo)注特征選擇多維度字詞向量表示

做這個(gè)模型能做什么事情?大家的網(wǎng)絡(luò)都類(lèi)似,怎么去PK?

這是非常好的一篇論文,講到了我們?cè)趺茨軌虬迅鞣N各樣的level的信息用到,它這邊是英文,所以有一個(gè)char級(jí)別的,先對(duì)char,通過(guò)RNN、CNN做一個(gè)Embedding。學(xué)習(xí)到char級(jí)別上的關(guān)系,char級(jí)別的關(guān)系合并之后是黃顏色那個(gè)字符的向量,然后它又把word級(jí)別的紅顏色的詞向量也加進(jìn)去拼起來(lái),還有兩個(gè)是灰顏色的,灰顏色的是人工特征。就看大家自己怎么加,這是每個(gè)人的智慧。

7. 引入注意力機(jī)制來(lái)實(shí)現(xiàn)生成式摘要

生成式摘要是很難的一個(gè)東西,它的訓(xùn)練集標(biāo)注比我們標(biāo)分詞、標(biāo)分類(lèi)難得多,要有一篇文章,人得寫(xiě)出摘要,整理出好多這樣的摘要。因?yàn)槊總€(gè)人寫(xiě)得不一樣,包括評(píng)測(cè)的方式BLUE等,所以做摘要比較難。但是我們平時(shí)可以基于生成式文本的其他小應(yīng)用。

舉個(gè)簡(jiǎn)單的例子:大家爬過(guò)一些新聞的網(wǎng)站,那么長(zhǎng)的正文一般正文第一段把事情都說(shuō)清楚了,然后有一個(gè)新聞的標(biāo)題,我們可以用第一段作為輸入,標(biāo)題作為輸出,做這樣一個(gè)簡(jiǎn)單的通過(guò)新聞第一段可以寫(xiě)出新聞標(biāo)題的功能,其實(shí)跟生成摘要的思想是一樣的。唯一的差別是它加了注意力的機(jī)制,會(huì)發(fā)現(xiàn)它關(guān)注輸出的哪些詞對(duì)語(yǔ)義表達(dá)最有用,它會(huì)關(guān)注有用的信息,解碼的時(shí)候就可以得到各種各樣的序列、各種各樣的值,用beam search找到最好的結(jié)果。

引入注意機(jī)制,以前做不了這個(gè)事情,現(xiàn)在我們可以做這個(gè)事情。工業(yè)中用得比較多的是抽取式的摘要。簡(jiǎn)單來(lái)說(shuō),就是一篇文章中哪些句子比較重要,把它抽出來(lái)就可以了。

四、文本挖掘的經(jīng)驗(yàn)和思考

實(shí)際工程中需要考慮的因素

  1. 長(zhǎng)文本閱讀的場(chǎng)景和關(guān)鍵難點(diǎn)有哪些?
  2. 文檔結(jié)構(gòu)信息(如段落)丟失時(shí)該如何還原?
  3. 數(shù)據(jù)的訓(xùn)練量如何,質(zhì)量和數(shù)據(jù)量都不行的時(shí)候該怎么辦?
  4. 如何構(gòu)建一個(gè)真正面向?qū)嵱玫臏y(cè)評(píng)系統(tǒng)?
  5. 領(lǐng)域知識(shí)如何引入到系統(tǒng)中?
  6. 知識(shí)圖譜自動(dòng)化構(gòu)建方法?
  7. 深度學(xué)習(xí)和經(jīng)典機(jī)器學(xué)習(xí)該如何取舍?

實(shí)際工程中運(yùn)用深度學(xué)習(xí)挖掘文本的思考

深度學(xué)習(xí)優(yōu)點(diǎn):

我們可以用非監(jiān)督的訓(xùn)練向量來(lái)提升它的泛化,主要目標(biāo)是提升泛化。它有些端到端的方式,可以提供新思路。

深度學(xué)習(xí)能夠克服傳統(tǒng)模型的缺點(diǎn),大家用CRF很多,但CFR有時(shí)拿不到太遠(yuǎn)的長(zhǎng)的上下文,它比較關(guān)注左右鄰居的狀態(tài),很遠(yuǎn)的狀態(tài)對(duì)它影響不大。

但是有些語(yǔ)義影響很大,比如:我們要抽“原告律師”、“被告律師”、“原告劉德華”,然后中間講了一大堆,“委托律師張學(xué)友”,我們能抽取出來(lái)他是律師,但是如何知道他是原告律師?

一定要看到劉德華前面三個(gè)有“原告”兩個(gè)字,才知道他是原告律師。這時(shí)如果用深度學(xué)習(xí)LSTM的方式可以學(xué)到比較遠(yuǎn)的上下文特征,幫助你解決這個(gè)問(wèn)題。

深度學(xué)習(xí)缺點(diǎn):

  1. 小數(shù)據(jù)量的情況效果不能保證;
  2. 調(diào)參工作量有時(shí)不亞于特征工程;
  3. 系統(tǒng)要配合客戶(hù)的部署硬件系統(tǒng)。

思考:

  1. 在業(yè)務(wù)場(chǎng)景下盡量收集并理解數(shù)據(jù),分析問(wèn)題本質(zhì),選擇合適模型;
  2. 初始階段可以使用傳統(tǒng)機(jī)器學(xué)習(xí)模型快速?lài)L試,再引入深度學(xué)習(xí)技術(shù);
  3. 疑難問(wèn)題使用端到端也許會(huì)有驚喜;
  4. 關(guān)注前沿技術(shù),包括對(duì)抗網(wǎng)絡(luò)、強(qiáng)化學(xué)習(xí)、遷移學(xué)習(xí);
  5. 一句話送給大家, “數(shù)據(jù)決定效果的上限,模型只是逼近上線”;
  6. 不斷嘗試,從挫折中總結(jié)規(guī)律。

 

本文由 @達(dá)觀數(shù)據(jù) 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖作者提供

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 你好,請(qǐng)問(wèn)想要轉(zhuǎn)載文章的話,需要注意什么?謝謝

    來(lái)自浙江 回復(fù)