CNN之於CV和NLP

峻峰飛陽發表於2018-11-27

自然語言處理是對一維訊號(詞序列)做操作,計算機視覺是對二維(影象)或三維(視訊流)訊號做操作。不同:自然語言處理的輸入資料通常是離散取值(例如表示一個單詞或字母通常表示為詞典中的one hot向量),計算機視覺則是連續取值(比如歸一化到0,1之間的灰度值)。

 

為什麼CNN用在CV上更得心應手,卻不一定適合NLP?要看清這點就要理解CNN的原理。CNN有兩個主要特點,區域不變性(location invariance)和組合性(Compositionality)。

1. 區域不變性:濾波器在每層的輸入向量(影象)上滑動,檢測的是區域性資訊,然後通過pooling取最大值或均值。pooling這步綜合了區域性特徵,失去了每個特徵的位置資訊。這很適合基於影象的任務,比如要判斷一幅圖裡有沒有貓這種生物,你可能不會去關心這隻貓出現在影象的哪個區域。但是在NLP裡,詞語在句子或是段落裡出現的位置,順序,都是很重要的資訊。

2. 區域性組合性:CNN中,每個濾波器都把較低層的區域性特徵組合生成較高層的更全域性化的特徵。這在CV裡很好理解,畫素組合成邊緣,邊緣生成形狀,最後把各種形狀組合起來得到複雜的物體表達。在語言裡,當然也有類似的組合關係,但是遠不如影象來的直接。而且在影象裡,相鄰畫素必須是相關的,相鄰的詞語卻未必相關。

當然,還有些技術細節,CNN具體應用在CV和NLP上會有些不同,就不贅述了。比如,濾波器的大小,在CV裡濾波器一般覆蓋一個區域性的小區域,NLP會覆蓋整個詞彙向量的寬度,等等。。。那為什麼最近很多專案把CNN用在NLP上取得了很好的結果?很多時候,理論上嚴格正確的模型在實際上不一定比理論不完整的模型更好用。
--------------------- 
作者:BlackEyes_SGC 
原文:https://blog.csdn.net/u011204487/article/details/76944398 
 

相關文章