AIPM要知道的NLP知識(shí)(2):RNN和LSTM的應(yīng)用
編輯導(dǎo)語(yǔ):RNN是一種使用類似鏈表的形式、具有一定記憶能力的網(wǎng)絡(luò)模型;對(duì)于具有序列性的樣本數(shù)據(jù),記住過(guò)去的信息對(duì)預(yù)測(cè)當(dāng)前狀態(tài)是非常必要的;本文作者分享了關(guān)于RNN和LSTM的應(yīng)用,我們一起來(lái)看一下。
就像CV繞不開(kāi)CNN,NLP也繞不開(kāi)RNN,這一節(jié)就來(lái)總結(jié)下自然語(yǔ)言處理中的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)和它的好姐妹長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)以及它們的實(shí)際應(yīng)用。
一、先講個(gè)故事
從前有個(gè)小姑娘在森林里采蘑菇,有一天她撿到里一個(gè)神奇的黑盒子,盒子上有兩個(gè)洞,洞的大小只能塞一個(gè)小球進(jìn)去。
為了試一試這個(gè)黑盒子能干嘛,小姑娘塞了一個(gè)寫(xiě)著“我”的小球進(jìn)去,盒子的另一個(gè)洞里立刻彈出了一個(gè)“天”字小球,于是小姑娘發(fā)現(xiàn)這個(gè)黑盒子的用途是放進(jìn)去一個(gè)小球就會(huì)彈出來(lái)一個(gè)小球。
她繼續(xù)往里邊塞了寫(xiě)著“愛(ài)”、“北”、“京”、“天”、“安”、“門(mén)”的小球,黑盒子依次彈出來(lái)“安”、“門(mén)”、“上”、“太”、“陽(yáng)”、“升”。
哇,小姑娘驚喜地發(fā)現(xiàn)彈出來(lái)的小球不是無(wú)序的,而是和我們放進(jìn)去的小球有某種對(duì)應(yīng)關(guān)系,于是小姑娘把這個(gè)神奇的盒子珍藏了起來(lái)。
后來(lái)小姑娘長(zhǎng)大了,成為了一名出色的工程師,有一天她在收拾閣樓時(shí)候發(fā)現(xiàn)了這個(gè)小時(shí)候的黑盒子,她決定打開(kāi)看看黑盒子里邊到底是什么樣子。
打開(kāi)之后她發(fā)現(xiàn)盒子里的設(shè)計(jì)非常精妙,是這樣的:
進(jìn)一步拆解,是這樣的:
小姑娘對(duì)黑盒子產(chǎn)生了濃厚的興趣,于是她開(kāi)始在全世界搜集這樣的黑盒子。
隨著搜集的盒子越來(lái)越多,她發(fā)現(xiàn)有些黑盒子和她的一樣,塞一個(gè)小球進(jìn)去就會(huì)盒子就會(huì)輸出一個(gè)小球(多對(duì)多);有的黑盒子要依次把所有小球都塞完才會(huì)吐出一個(gè)(多對(duì)一);有的黑盒子更神奇,只要塞一個(gè)小球進(jìn)去盒子就會(huì)不停的吐小球出來(lái)(一對(duì)多)。
小姑娘花費(fèi)畢生精力研究黑盒子們,她把黑盒子命名為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN);她發(fā)現(xiàn)黑盒子對(duì)之前的小球有一定的“記憶”,像人一樣會(huì)考慮上下文的語(yǔ)境;還有一種內(nèi)部結(jié)構(gòu)更復(fù)雜的黑盒子叫做長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM),LSTM的記憶力要比RNN更好。
于是她利用黑盒子們做出了很多有意思的發(fā)明:
二、應(yīng)用場(chǎng)景
小姑娘的發(fā)明大概可以分為4類:
- 一是序列標(biāo)注,比如詞性標(biāo)注、命名實(shí)體識(shí)別;
- 二是分類任務(wù),比如情感分析;
- 三是關(guān)系判斷,比如推理、閱讀理解等;
- 四是生成式任務(wù),比如翻譯、對(duì)話、文本摘要等通過(guò)一段文字生成另一段文字的任務(wù)。
從產(chǎn)品角度看,要實(shí)現(xiàn)一個(gè)完整產(chǎn)品,可能涉及到以上一個(gè)或者多個(gè)任務(wù)。
比如一個(gè)對(duì)話系統(tǒng)中會(huì)涉及到識(shí)別意圖(分類問(wèn)題)、槽信息識(shí)別(序列標(biāo)注問(wèn)題)等等;可見(jiàn)任務(wù)的粒度是要比產(chǎn)品細(xì)的,所以接下來(lái)的所有應(yīng)用場(chǎng)景分析還是都從偏技術(shù)的任務(wù)角度展開(kāi),舉得栗子可能比較偏向簡(jiǎn)單的應(yīng)用(即一個(gè)應(yīng)用=一個(gè)任務(wù))。
1. 多對(duì)多
多輸入多輸出也就是輸入序列和輸出序列長(zhǎng)度相同,以文本為例,輸入為10個(gè)字的一句話,輸出也是10個(gè)字或者標(biāo)記——多對(duì)多模型可以用來(lái)解決標(biāo)注問(wèn)題。
命名實(shí)體識(shí)別實(shí)現(xiàn)中常用biLSTM+crf算法,輸入是待標(biāo)注的句子,輸出是每個(gè)詞的IOB標(biāo)記;比如對(duì)句子“王梅梅在香港大學(xué)讀研究生”進(jìn)行命名實(shí)體識(shí)別,可以得到“王梅梅”和“香港大學(xué)”兩個(gè)命名實(shí)體,一個(gè)是人名,一個(gè)是組織機(jī)構(gòu)名。
對(duì)話機(jī)器人中的slot filling也可以看做是標(biāo)注問(wèn)題,所以也可以用RNN/LSTM實(shí)現(xiàn),輸入是用戶表達(dá),輸出是IOB標(biāo)注出的槽。
比如“訂明天到上海的機(jī)票”,輸出的標(biāo)簽序列是“O B-time I-time O B-toloc I-toloc O O O”,其中識(shí)別出了兩個(gè)槽——時(shí)間和目的地;根據(jù)識(shí)別出來(lái)的槽信息后續(xù)可以進(jìn)行業(yè)務(wù)處理(比如查詢機(jī)票信息)或者進(jìn)一步詢問(wèn)缺失的信息(比如詢問(wèn)出發(fā)地)。
2. 一對(duì)多
單輸入多輸出也就是輸入序列長(zhǎng)度為1、輸出序列長(zhǎng)度為n(對(duì)于特定模型輸出的最大值是一定的),典型的應(yīng)用是生成特定風(fēng)格的音樂(lè)、寫(xiě)詩(shī)、寫(xiě)文章等生成式任務(wù),比如古詩(shī)生成器:給定首字生成一首詩(shī)(如下圖)。
3. 多對(duì)一
多輸入單輸出是輸入序列長(zhǎng)度為n、輸出序列長(zhǎng)度為1,多對(duì)一其實(shí)也就是分類任務(wù),輸入一句話輸出一個(gè)評(píng)分、分類。
例如根據(jù)用戶對(duì)商品的評(píng)價(jià)生成評(píng)分(1到5分);還有就是情感分析,比如對(duì)話系統(tǒng)中通過(guò)用戶的輸入判斷用戶當(dāng)前情緒(積極、消極);還有違禁內(nèi)容檢測(cè)等等。
相關(guān)閱讀:
AIPM要知道的NLP知識(shí)(1):詞的表達(dá)
本文由 @LCC 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自Unsplash,基于CC0協(xié)議。
文中最后分析語(yǔ)句情感的是什么軟件呀?
百度官網(wǎng)示例
謝謝