CNN之于CV和NLP

自然语言处理是对一维信号(词序列)做操作,计算机视觉是对二维(图像)或三维(视频流)信号做操作。不同:自然语言处理的输入数据通常是离散取值(例如表示一个单词或字母通常表示为词典中的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 
 

你可能感兴趣的:(人工智能)