正文
一个自己学习特征的 HMAX 模型就不是深度学习了吗?
甚至于,用贪婪算法逐层训练的深度神经网络就不是深度学习了吗?
要我说的话,它们都是深度学习。
深度学习应该指的是一种表征学习方法,其中的模型是由一连串的模块组成的(一般都会堆成一个多层的或者金字塔形的模型,这也就是「深度」的由来),而其中的每一个模块分别拿出来训练之后都可以作为独立的特征提取器。
我在我自己的书里也就是这么定义的。
通过这样的定义,我们也就能明确深度学习不是下面这样的模型:
-
不学习表征的模型,比如 SIFT 之类的人工特征工程,符号 AI,等等
-
深度学习的定义里不需要指定固定的某种学习机制(比如反向传播),也不需要指定固定的使用方式(比如监督学习还是强化学习),而且也不是一定要做联合的端到端学习(和贪婪学习相反)。
这才是深度学习「是什么」的本质属性、根本结构。
这之外的描述仅仅是「我们是如何做深度学习的」。
清晰的定义也就划分出了明确的边界,有的东西是深度学习,有的东西不是。
2019 年随处可见的这种深度神经网络自然是深度学习,而用演化策略 ES、ADMM、虚拟梯度之类的反向传播替代方案训练的深度神经网络当然也是深度学习。
基因编程就不是深度学习,快速排序不是深度学习,SVM 也不是。
单独一个全连接层不是深度学习,但很多个全连接层堆在一起就是;
K-means 算法不是深度学习,但把许多个 K-means 特征提取器堆叠起来就是。
甚至我自己在 2011 到 2012 年间,收集视频数据的位置的成对的共同信息矩阵,然后把矩阵分解堆叠在上面,也是深度学习。
一般的人类软件工程师用语言写出的程序不是深度学习,给这些程序加上参数、能自动学习几个常量,也仍然不是深度学习。
一定要用成串连起来的特征提取器做表征学习,这才是深度学习。
它的本质在于通过深度层次化的特征来描述输入数据,而这些特征都是从数据里学习到的。
根据定义也能看出来,
深度学习是一种逐步完善的、一点点优化的从数据中提取表征的方法。
以深度学习现在的形式来看,它至少是 C1 连续的(甚至到无限阶都是连续的)。
这一条可能不那么关键,但「逐步优化」的这一条也是深度学习的固有属性。
所以深度学习和以往的符号运算 AI、常规编程都完全不同,它的基础结构就是离散的、以数据流为核心的,而且通常也不需要任何中间层的数据表征。
想用深度学习做符号运算也不是不可能,但需要引入很多额外的步骤。