谈谈对CNN在NLP中可行性的理解

谈到CNN,人们的直观感受还是其在图像处理领域取得的巨大成就,虽然近几年越来越多的论文使用到CNN与RNN的模型来探索卷积网络在自然语言处理中的应用,但始终还是无法取代CNN在图像中的地位,或是RNN之于NLP的地位。所以想谈谈自己对于CNN在NLP中可行性的一点个人理解。

CNN到底在干什么

提起CNN的作用,或者是原理,所有博客,教程等等,都会使用一个词:特征提取!那么,特征到底是个什么玩意儿?对于传统机器学习,无论分类还是拟合,都是靠着特征的组合进行学习与训练的,打个不太恰当的比方,就拟合而言,最终拟合出的曲线看作是各个特征的函数结果的话,那么特征就是各个自变量,而拟合的结果就是因变量。到这里还是比较好理解的,那么图像的特征是什么?语言文本的特征又是什么呢?一张照片摆在你面前,或者一段文字摆在书桌上,什么是他们的特征,又怎么去提取这些特征呢?

特征

先从我们人类的角度来理解下,当我们去看一幅图画,一张照片时,我们所关注的,其实是颜色的变化,或者线条的形状等等,如果有画商给你一张纯白的崭新的A4纸,告诉你这是毕加索的名画,你肯定不会相信,因为你什么画面都没有看到。也就是说,你什么特征都没有提取到!举个例子,最近非常火的一张图片:


如果图片变成这样,你依旧认得出来:

甚至变成这样,你还是认得出来:

虽然没有了那么多细节,但是只凭这些颜色线条,你就能知道这张图在代表什么。而这些让你能够认出图片本质的玩意儿,就是图像的特征。现在我们来说说计算机,众所周知的,计算机是处理数字的,无论是图片还是文字,终究逃不过一串数字表征。而通过对比图片相邻的像素点,计算机就能够对在它的世界里“看到”与我们相同的景象了。

对于NLP来说,人们靠什么去理解读懂一篇文章?用词,断句,标点等等,这些其实都可以看做是文本的特征,比如“这篇博客很有用。”和“这篇博客很有用!”,仅仅符号之差,意义就大不相同。或者说“这篇博客挺有用”和“这篇博客很有用”,一字之差,情感也有所差异。我们知道图像可以用 RGB 三色值来进行数字化的表示,文字也同样可以通过词向量等方式将文字利用数字组合进行特征表示。

提取

特征提取的方法不止CNN一种,我们也不能说CNN是最为可靠的一种,但是至少现在看来,CNN算是绝对高效的。为什么说他高效,就在于其卷积核共享权重值的方法。无论是图像还是文本,卷积核口每次都只关注于其中的一小部分特征,对于图像可能就只是一条边界线,对于文本可能就只是一个四字成语,但是将这些小特征重新的加权组合起来,就能够用一组全新的数据重新对原目标进行表示。解释下filter,作为一个电子信息工程专业出身,半道出家的码农来说,滤波器这个词实在是再熟悉不过。信号中的滤波器在做什么?扔掉没用的,只看有用的,细看有用的。对于一个混有多频的信号,我可以只看一个频段的部分,其余的无论多么复杂,都与我无关。对于我只关心的部分,我还可以进行相应的放大进行细看。从这个角度来看,就会对CNN的filter有一层更深的理解。

就好像上面的三幅画一样,CNN其实在做的是一种”虚化“的工作,将图像的边边角角虚化为寥寥几笔的简笔画,将繁杂的文字精简为大意,而这些保留下来的线条,词句,就是新的图像表示或者句子表示,能够作为下一步分类或者生成的基础。

CNN为什么可以用在NLP

上面已经说过,无论多么美丽的图画,无论多么华丽的辞藻,到了计算机那边,统统成为了无法直观理解的数字组合。如何使用尽量少的数字,同时又尽可能避免信息的丢失,这就是不同模型在尽力所做的事情。CNN希望使用权重共享的卷积核,捕捉重复性更强的特征信息,也就是说,它在找寻更为通用的特征。偷一张论文里的图片来说,

卷积核在句子中进行卷积,比如红色的来说,每次我只看两个词组合的效果,于是我得到了”wait for“,”for the”…”rent it”7中双词组合,从中我选取最有可能的那一个,即maxpooling的操作,不同的滤波器得到不同的结果最终进行加权组合,从而能够得到一个新的句子表示。从这个角度来看,这个过程就是N-Gram模型的思想!说白了,CNN就是在找相邻N个词的相关性,找出出现频率高的N元词。而这个N,就体现在卷积核的宽度。与RNN对比来看,RNN更侧重的是序列模型,也就是从头到尾读下来,没加入一个新的词汇,重新更新句子的表示。而CNN侧重于以小见大,在细节处做文章(文本的用词组合等等),最后将不同的小细节挑选完重新组合起来,进行完整句子的表示。

从这个角度上来看,CNN的思想与树结构模型有些相似。树结构自下而上,将语法树中同级的子节点进行整合,只不过它更多的还要参考语法结构,相较于CNN又多了一些需要考虑的部分。CNN这种卷积加池化的模式,使得特征的空间性消失,对于文本来说,特征的空间性就是对应的语序,当语序意义不再存在,CNN就像是把所有关键词,更确切的说是常用词提取出来,在通过训练出来的网络把这些常用词安排成整个句子,最终得到的就是新的句子表示向量。而这与我们所说的文本信息是相悖的,也就是为什么CNN在NLP中无法做到在图像中那种统治地位。

谈谈对CNN在NLP中可行性的理解相关推荐

  1. 【NLP】详聊NLP中的阅读理解(MRC)

    机器阅读理解,笔者认为他是NLP中最有意思的任务了.机器阅读一份文档之后,可以"理解"其中的内容,并可以回答关于这份文档的问题.听上去,有一种很强的"人工智能" ...

  2. 理解NLP中的卷积神经网络(CNN)

    此篇文章是Denny Britz关于CNN在NLP中应用的理解,他本人也曾在Google Brain项目中参与多项关于NLP的项目.  ·  翻译不周到的地方请大家见谅. 阅读完本文大概需要7分钟左右 ...

  3. 一篇了解NLP中的注意力机制

    文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 转自 | AI小白入门(公众号ID: StudyForAI) 作者 | yuquanle,985在读硕 ...

  4. 无监督学习︱GAN 在 NLP 中遇到瓶颈+稀疏编码自学习+对偶学习

    深度学习训练一个模型需要很多的人工标注的数据.例如在图象识别里面,经常我们可能需要上百万的人工标注的数据,在语音识别里面,我们可能需要成千上万小时的人工标注的数据,机器翻译更是需要数千万的双语句对做训 ...

  5. 微信高级研究员解析深度学习在NLP中的发展和应用 | 公开课笔记

    作者 | 张金超(微信模式识别中心的高级研究员) 整理 | Just 出品 | 人工智能头条(公众号ID:AI_Thinker) 近年来,深度学习方法极大的推动了自然语言处理领域的发展.几乎在所有的 ...

  6. word2vec模型评估_干货 | NLP中的十个预训练模型

    Word2vec, Fasttext, Glove, Elmo, Bert, Flair pre-train Word Embedding源码+数据Github网址:https://github.co ...

  7. 深度学习将会变革NLP中的中文分词

    深度学习将会变革NLP中的中文分词 2016-08-08 19:03 转载 陈圳 0条评论 雷锋网按:本文转自ResysChina高翔,文章主要介绍了1)区分中文分词的方法:2)用深度学习的方法来解决 ...

  8. 【信息抽取】NLP中关系抽取的概念,发展及其展望

    事物.概念之间的关系是人类知识中非常重要的一个部分,但是他们通常隐藏在海量的非结构文本中.为了从文本中抽取这些关系事实,从早期的模式匹配到近年的神经网络,大量的研究在多年前就已经展开. 然而,随着互联 ...

  9. 【每周NLP论文推荐】 NLP中命名实体识别从机器学习到深度学习的代表性研究

    NER是自然语言处理中相对比较基础的任务,但却是非常重要的任务.在NLP中,大部分的任务都需要NER的能力,例如,聊天机器人中,需要NER来提取实体完成对用户输入的理解:在信息提取任务中,需要提取相应 ...

最新文章

  1. hook修改信息_React系列二十一 Hook(二)高级使用
  2. popstate_HTML onpopstate 属性 - Break易站
  3. 2015腾讯暑期实习笔试题目
  4. 支付宝 报错 rsa_private read error : private key is NULL解决方法
  5. 1-8:学习shell之高级键盘技巧
  6. Python获取环境变量值
  7. ”易书网“开发总结——管理篇
  8. python从零开始到放弃_Python 协程从零开始到放弃
  9. python编写系统遇到的问题_python编写时遇到的小问题
  10. Insert Delete GetRandom O(1)
  11. HTTP 连接管理进化论
  12. thymeleaf使用总结
  13. 如何复现论文中的算法
  14. Windows下的hiberfil.sys文件及其作用
  15. Python实现淘宝准点抢单!双十一秒杀神器啊!还不来学?
  16. linux 服务器远程开机,详解使用Ubuntu系统中实现远程开机的方法
  17. 各种软件如何双开,三开,N开,包括微信,qq等。
  18. Pulsar集群 监听mysql8的binlog
  19. Docker与自动化部署
  20. OPTEE RPMB文件系统

热门文章

  1. mysql自动填充测试数据库_入门篇(三):通过填充器快速填充测试数据
  2. 宝讯网捷:拼多多商家如何做好运营?
  3. Anbox源码分析(三)——Anbox渲染原理(源码分析)
  4. 程序员、架构师、技术经理、技术总监和CTO有啥区别?
  5. win10清理_小学生都会:win10设置自动清理缓存和垃圾文件
  6. 用python计算100以内所有奇数的和_python怎样求1到100的奇数和
  7. 微信图片怎么添加竖排文字_轻松设置微信竖排昵称
  8. php 法定节假日接口,通过百度接口获取每一个月的工作和法定假日
  9. c# 不同时区的时间的转换
  10. edvac是商用计算机吗,计算机基础知识78228