解释为什么word2vec也被称作deep learning
链接:https://www.zhihu.com/question/27689129/answer/39117725
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
关于这个问题,我觉得需要澄清几个概念:
1. 浅层(shallow)的监督学习(supervised learning)
代表性方法:Logistic Regression,Adaboost, Decision Tree等。
这一类方法的输入是data的原始特征,输出是data的label,不存在任何的中间层。
2.浅层无监督学习(unsupervised learning)
代表性方法:Kmeans, PCA, Sparse Coding, RBMs等。
这一类方法的输入是data的原始特征,输出是新的data表达,也不存在中间层。但是由于这类方法的输出并不是针对某些特定的标签或者场景,所以得到的数据表达可以继续被用在其他的监督或者无监督学习的任务中。所以这些方法也可以被分为特征学习(feature learning)或者表达学习(representation learning)的方法。
3.深层无监督学习
代表性方法:Deep Boltzmann Machines, Deep Autoencodes等。
这一类方法可以大概看成是多个浅层无监督学习方法的叠加。所以方法最终的输出同样是data新的特征表达。与此同时,模型中每一层的输出,同样也可以看做是data的特征表达。
4.深度监督学习
代表性法方法:DBN,DNN,CNN等
这些方法的输入是数据的原始特征,最后的输出数据的label。但是与浅层的监督学习方法不同,虽然也是监督模型,但这类方法也会生成很多data的中间层表达或者特征。因此这些中间层的学习或提取也可以看成是一个特特征学习或者表达学习的过程,这是有深度学习的特殊情况决定的。
因此可以总结如下:无监督学习和深度学习的方法都可以看做是特征学习或者表达学习的方法,但是浅层的监督学习不能算是。
那么应该怎么区分无监督学习和深度学习的方法呢,这个似乎没有特别明确的定义,或者也很难去教条的定义。但是非要较真的话,但是从深度学习这个名称来看,首先模型的层数应该达到一定的数量才能算作是深度学习的方法。如果最基本的浅层学习方法看做一个二层的模型,那么kernel SVM和经典的BP网络就可以看成是三层的模型。我想它们还算不了深度学习的方法,至少模型的层数应该超过三层吧。当然,如果仅仅是这样,那么人工去构造多层特征也能算做深度学习了。既然我们讨论的问题都是机器学习范畴,还应该满足特征应该是逐层自动学习而得到的。至于是不是表达学习,我觉得到不用过于强调,因为前面已经讨论过,只要是深度学习,就天生具有表达学习的特性。
下面来看w2v和glove这两个模型吧。算法细节就不讨论了,从我一开始读论文就觉得这两个模型跟深度学习关系不大,反倒更像是两种特殊的矩阵分解算法。从word到vector,并不存在任何的中间表达层,而是直接一步到位得到的。从这个意义上来说,这两个方法并不能称作是深度学习。否则,SVD++,Factorization Machines 这些方法也都能算作是deep learning了。反倒是最近一些利用RNN和CNN的多层神经网络对文本进行学习的方法是真正的deep learning方法。
那为什么很多人都把他们和deep learning扯到一起呢?我觉得有几个原因:
1. word2vec是之前神经网络语言模型的简化。而那个神经网络语言模型看起来似乎更像是一个“深度”的学习模型,不过仔细分析算法本身,最核心的特征学习其实只有两层。更何况word2vec又对这个模型做了很大的简化。
2. word2vec是一个特征学习的方法,然后直接把特征学习等同到深度学习。这个前面已经多次讨论过,深度学习方法应该是特征学习方法的一个子集。就像说人类是能直立行走的动物,但是直立行走的动物未必就一定是人类。
3. deep learning这个概念最近很火,可以借机炒作一把。
其实到底什么叫deep learning并不是那么重要,无非是一个名字的问题。大家理解算法本身才是最重要的。但是另外一方面,只有名正才能言顺,才能避免个人带来一些理解上的偏差。记得以前我曾经面试过一个学生,在他的简历里面曾经提到自己曾经从事了deep learning的研究工作。最后我发现,他所谓的deep learning,就是用kmeans对特征进行聚类和汇总,然后再进行分类。在他理解,这个方法属于特征或者表达学习的范畴,所以也属于deep learning的范畴。但我想他所做的工作和真正的deep learning还是有很大的差别。而类似这种归类方式,对于其他人,特别是一些对深度学习领域不太熟悉的人,还是会带来很大的误导。
解释为什么word2vec也被称作deep learning的更多相关文章
- Word2Vec之Deep Learning in NLP (一)词向量和语言模型
转自licstar,真心觉得不错,可惜自己有些东西没有看懂 这篇博客是我看了半年的论文后,自己对 Deep Learning 在 NLP 领域中应用的理解和总结,在此分享.其中必然有局限性,欢迎各种交 ...
- (Stanford CS224d) Deep Learning and NLP课程笔记(二):word2vec
本节课将开始学习Deep NLP的基础--词向量模型. 背景 word vector是一种在计算机中表达word meaning的方式.在Webster词典中,关于meaning有三种定义: the ...
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料【转】
转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ...
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料汇总 (上)
转载:http://dataunion.org/8463.html?utm_source=tuicool&utm_medium=referral <Brief History of Ma ...
- 机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总
<Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.D ...
- 【深度学习Deep Learning】资料大全
最近在学深度学习相关的东西,在网上搜集到了一些不错的资料,现在汇总一下: Free Online Books by Yoshua Bengio, Ian Goodfellow and Aaron C ...
- Deep Learning(深度学习)学习笔记整理
申明:本文非笔者原创,原文转载自:http://www.sigvc.org/bbs/thread-2187-1-3.html 4.2.初级(浅层)特征表示 既然像素级的特征表示方法没有作用,那怎样的表 ...
- 【转载】Deep Learning(深度学习)学习笔记整理
http://blog.csdn.net/zouxy09/article/details/8775360 一.概述 Artificial Intelligence,也就是人工智能,就像长生不老和星际漫 ...
- Deep Learning and Shallow Learning
Deep Learning and Shallow Learning 由于 Deep Learning 现在如火如荼的势头,在各种领域逐渐占据 state-of-the-art 的地位,上个学期在一门 ...
随机推荐
- Sublime Text Version 3.0,Build3143注册码
1.打开sublime text软件2.Help->Enter License3.复制以下BEGIN LICENSE和END LICENSE之间的部分,粘贴进去.(注意:不要复制BEGIN LI ...
- 涨知识III - 百度2016校园招聘——移动软件研发工程师
1.列关于线程调度的叙述中,错误的是(). 正确答案 :BE A调用线程的sleep()方法,可以使比当前线程优先级低的线程获得运行机会 B调用线程的yeild()方法,只会使与当前线程相同优先级的线 ...
- C++ friend关键字
友元:友元函数 友元类. 友元函数:不属于任何类,只是在类中声明一下(可以放在 private 或者 public,没有区别),告诉这个类,这个函数是你的朋友,当然朋友不是白当的:这个函数可以访问你的 ...
- scala 变量定义,基本操作符
scala是jvm语言,它将面向对象与函数风格结合的很好,它可以访问任何java类库并很好的结合使用. 它可以使程序更简单,同时可利用并发的威力. scala基本语法: package com.tes ...
- Java final和static 修饰符
一.final final是不变的,最终的意思.可以用来修饰变量,方法,类. 1. 修饰变量 private final int a = 2; private final int b; // fina ...
- hibernate 级联删除报更新失败的问题(org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update)
首先hibernate级联删除的前提是,首先需要在映射文件中配置,配置多表之间的关联关系: 下面以部门表(Dept)和员工表(Emp)为例: 1.在Emp.hbm.xml映射文件中配置many-to- ...
- 【译】x86程序员手册14-5.1段转换
5.1 Segment Translation 段转换 Figure 5-2 shows in more detail how the processor converts a logical add ...
- 转录组入门(3):了解fastq测序数据
sra文件转换为fastq格式 fastq-dump -h --split-3 也就是说如果SRA文件中只有一个文件,那么这个参数就会被忽略.如果原文件中有两个文件,那么它就会把成对的文件按*_1.f ...
- CSS 之自定义滚动条样式
::-webkit-scrollbar {/*滚动条整体样式*/ width: 5px; /*高宽分别对应横竖滚动条的尺寸*/ height: 1px; } ::-webkit-scrollbar-t ...
- zTree 模糊搜索
/** * 搜索树,高亮显示并展示[模糊匹配搜索条件的节点s] * @param treeId * @param searchConditionId 搜索条件Id */ function search ...