日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用RNN解决NLP中序列标注问题的通用优化思路

發布時間:2024/2/28 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用RNN解决NLP中序列标注问题的通用优化思路 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

/*?版權聲明:可以任意轉載,轉載時請標明文章原始出處和作者信息?.*/

?

?????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? author:?張俊林?

?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(想更系統地學習深度學習知識?請參考:深度學習枕邊書)

序列標注問題應該說是自然語言處理中最常見的問題,而且很可能是最而沒有之一。在深度學習沒有廣泛滲透到各個應用領域之前,傳統的最常用的解決序列標注問題的方案是最大熵、CRF等模型,尤其是CRF,基本是最主流的方法。隨著深度學習的不斷探索和發展,很可能RNN模型會取代CRF的傳統霸主地位,會成為解決序列標注問題的標配解決方案。

?

本文主要抽象出利用RNN解決序列標注問題的通用優化思路。這個RNN優化思路應該說是使用場景非常廣泛,目前NLP中絕大多數問題都可以套用這套優化思路來統一解決問題。它有個獨特的好處,就是說只要你構建好完整的這一套優化模型,絕大多數NLP的問題,包括分詞、詞性標注、命名實體識別、關鍵詞抽取、語義角色標注等等,等于說問題已經被解決了,只需要你使用不同問題對應的訓練數據跑一遍,就等于說上面問題的實際解決工具你就擁有了,而不用像傳統模型一樣還需要不斷定義問題特征模板等,這就是End-to-End的好處。

?

再啰嗦兩句,為什么說RNN一定會取代CRF?當然這不代表CRF完全會被拋棄,以后一定有人去研究怎么結合RNN和CRF,這個估計也沒有疑問。但是RNN取代CRF獲得主流地位是一定的,原因就是上面說的DL的End-to-End的優勢。意思是,即使RNN只能取得和CRF方法類似的效果,但是由于End-to-End的優勢,你不需要對研究領域有任何領域知識也能把它干好,因為有用的領域特征DL自己會去學,這個好處是巨大的(但是對于傳統依靠NLP經驗混飯吃的NLP老手們來說,這是個壞消息),況且目前看RNN在不少領域已經獲得了最好的結果。結合這些特點,這就是為何說RNN會取代CRF成為新的主流模型的原因。

?

如果看將來的技術發展趨勢,從目前情況看,如果再把Encoder-Decoder框架引進來,加上這篇文章講的RNN解決序列標注問題,以及后面可能會寫的用RNN解決句子分類問題的通用思路,我相信NLP中90%以上的問題都可以被這兩個模型覆蓋(當然Encoder-Decoder實際上和RNN不是一個層級的模型,這個我們暫且放一邊,但且把它們并列來提)。所謂:RNN在手,全都我有,此言誠不我欺也。

?

我覺得還在堅韌不拔地堅持用傳統方法搞NLP的同志應該好好讀一讀我上面這幾段話,里面有深意,自己去體會。

?

?

|序列標注問題

?

如上文所述,序列標注問題是NLP中最常見的問題,因為絕大多數NLP問題都可以轉化為序列標注問題,雖然很多NLP任務看上去大不相同,但是如果轉化為序列標注問題后其實面臨的都是同一個問題。所謂“序列標注”,就是說對于一個一維線性輸入序列:

?

給線性序列中的每個元素打上標簽集合中的某個標簽

?

?

所以,其本質上是對線性序列中每個元素根據上下文內容進行分類的問題。一般情況下,對于NLP任務來說,線性序列就是輸入的文本,往往可以把一個漢字看做線性序列的一個元素,而不同任務其標簽集合代表的含義可能不太相同,但是相同的問題都是:如何根據漢字的上下文給漢字打上一個合適的標簽。

?

我們以中文分詞任務來說明序列標注的過程。圖1給出了個例子,假設現在輸入句子“跟著TFboys學左手右手一個慢動作”,我們的任務是正確地把這個句子進行分詞。首先,把句子看做是一系列單字組成的線性輸入序列,即:

?

? ? ? ? ? “跟? 著 Tfboys? 學? 左? 手? 右? 手? 一? 個? 慢? 動? 作”

?

序列標注的任務就是給每個漢字打上一個標簽,對于分詞任務來說,我們可以定義標簽集合為:

?

?

其中B代表這個漢字是詞匯的開始字符,M代表這個漢字是詞匯的中間字符,E代表這個漢字是詞匯的結束字符,而S代表單字詞。

?

?1. 中文分詞序列標注過程

?

?

有了這四個標簽就可以對中文進行分詞了。這時你看到了,中文分詞轉換為對漢字的序列標注問題,假設我們已經訓練好了序列標注模型,那么分別給每個漢字打上標簽集合中的某個標簽,這就算是分詞結束了,因為這種形式不方便人來查看,所以可以增加一個后處理步驟,把B開頭,后面跟著M的漢字拼接在一起,直到碰見E標簽為止,這樣就等于分出了一個單詞,而打上S標簽的漢字就可以看做是一個單字詞。于是我們的例子就通過序列標注,被分詞成如下形式:

? ? ? ?{跟著? Tfboys 學 左手 右手 一個 慢動作}

?

要學習NLP,首先要把面對問題時的思維意識轉換一下,就是如上所示,把你直觀感覺的問題轉換為序列標注思維,這個思維意識轉換過程很重要,如果你沒有這種意識,那很明顯屬于業余選手,專業選手看NLP問題肯定首先是把它們看做一個序列標注問題的。

?

為了促進意識轉換,下面再用命名實體識別(NER)問題舉個序列標注解決問題的例子,命名實體識別任務是識別句子中出現的實體,通常識別人名、地名、機構名這三類實體。現在的問題是:假設輸入中文句子

?

? {花園北路的北醫三院里,昏迷三年的我聽楊冪的愛的供養時起身關了收音機。}

?

我們要識別出里面包含的人名、地名和機構名。如果以序列標注的角度看這個問題,應該怎么解決呢?圖2給出了整個流程的說明。

?

首先,我們把輸入序列看成一個個漢字組成的線性序列,這是基礎。

?

然后,我們定義標簽集合如下(這個標簽用什么代表不重要,重要的是它們代表的含義):

?

?

其中,BA代表這個漢字是地址首字,MA代表這個漢字是地址中間字,EA代表這個漢字是地址的尾字;BO代表這個漢字是機構名的首字,MO代表這個漢字是機構名稱的中間字,EO代表這個漢字是機構名的尾字;BP代表這個漢字是人名首字,MP代表這個漢字是人名中間字,EP代表這個漢字是人名尾字,而O代表這個漢字不屬于命名實體。

?

2. 命名實體(NER)序列標注過程

?

?

有了輸入漢字序列,也有了標簽集合,那么剩下的問題是訓練出一個序列標注ML系統,能夠對每一個漢字進行分類,假設我們已經學好了這個系統,那么就給輸入句子中每個漢字打上標簽集合中的標簽,于是命名實體就被識別出來了,為了便于人查看,增加一個后處理步驟,把人名、地名、機構名都明確標識出來即可。

?

很多NLP中的其它任務同樣可以轉換為序列標注問題,比如詞性標注、CHUNK識別、句法分析、語義角色識別,甚至包括關鍵詞抽取等很多應用問題也是如此。

?

傳統解決序列標注問題的方法包括HMM/MaxEnt/CRF等,很明顯RNN很快會取代CRF的主流地位,成為解決序列標注問題的標準解決方案,那么如果使用RNN來解決各種NLP基礎及應用問題,有什么優化軌跡可循嗎?有的,下面我們就歸納一下使用RNN解決序列標注問題的一般優化思路。

?


|使用RNN解決序列標注問題的一般優化思路

?

首先,我們可以說,對于序列標注問題,都可以用RNN來替代傳統解決方案,這個目前看沒什么問題,也是大勢所趨。

?

然后,如果歸納的話,一般的優化流程是:首先用RNN來解決序列標注問題,然后可以上LSTM或者GRU來替代RNN中的隱層單元,因為LSTM或GRU對于解決長距離依賴的場景明顯要優于RNN本身,接著可以上BLSTM,即雙向LSTM,因為雙向RNN或者雙向LSTM相對RNN來說,能夠看到下文特征,所以明顯引入了更多的特征,如果你覺得效果還是不夠好,那么可以增加BLSTM的深度,不斷疊加網絡形成深度BLSTM網絡,當然,這里要注意,隨著優化的進行,模型越來越復雜,如果訓練數據規模不夠的話,很可能會出現過擬合現象,所以使用LSTM的時候,記得用上DropOut以及L1/L2正則來避免過擬合,但是如果模型相對訓練數據規模確實復雜,你加上這些可能也沒用。至于GRU和LSTM兩者相比,到底哪個更好目前并無定論,傾向于認為兩者性能差不多,但是GRU是LSTM的簡化模型,所以同樣結構的神經網絡其參數要少,在訓練數據不太大情況下,優先考慮使用GRU。

?

當然,根據NLP的不同任務特點,是先上BiRNN好還是先上LSTM好這個可能不同任務情況不一樣,比如對于分詞、POS、NER這種依賴不會太遠的任務,RNN應該就夠了,但是BiRNN肯定是要上的,因為下文特征有重要參考意義,但是對于語義級別的任務比如指代消解、語義角色標注等,估計肯定是要上LSTM的。所以要根據具體情況具體分析,不過通用的優化手段也不外乎以上幾種。

?

下面給出深層雙向LSTM來做NER的神經網絡結構示意圖:

?

3. 深層雙向LSTMNER

?

?

圖比較直觀,就不解釋了,其它的NLP序列標注任務其實都可以套用這個模型來解決。

?

?

?

掃一掃關注微信號:“布洛卡區” ,深度學習在自然語言處理等智能應用的技術研討與科普公眾號。

?

?

?

?

總結

以上是生活随笔為你收集整理的使用RNN解决NLP中序列标注问题的通用优化思路的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。