Skip to content

CNN

待办事项/思考:

  • 为什么浅层卷积提取的是线条,而深层卷积能识别出眼睛或轮子?
  • 如果猫在图片的左上角或右下角,CNN 为什么都能认出它?

表征学习

简单来说,表征学习(Representation Learning) 就是让机器自动寻找“如何描述数据”最好的过程。

为了让机器识别图片里的“猫”,有两种做法:

  • 传统做法(人工特征工程): 科学家告诉计算机:“猫有尖耳朵、长胡须、圆眼睛”。程序员需要写复杂的算法去定义什么是“尖”、什么是“圆”。这就是 人工设计表征 。缺点是极其僵硬,换个角度或光线,程序就失效了。
  • 表征学习(深度学习): 你不告诉计算机猫长什么样,只给它看几万张猫的照片。计算机通过隐藏层的权重调整,自发发现了“边缘”、“弧线”、“毛发纹理”等特征。它自己学会了如何把一张复杂的像素图,浓缩成一组高效的数学向量。

表征学习本质上是在做特征提取降维

  • 原始数据(低级表征): 是一堆毫无意义的像素点(RGB数值),数据量极大且杂乱。
  • 学习后的数据(高级表征): 是神经网络高层的一串数字。这串数字可能代表了“这里有一个圆形”或“这里有轮廓”。

1770171499668

虽然CNN的表征学习最为明显,但其实所有深度神经网络(DNN)都在遵循该哲学。

在深度学习流行之前,机器学习主要依靠Shallow Models(浅层模型),它们的特点是层数非常少(通常只有 1-2 层隐藏层,甚至没有) 。

虽然通用近似定理在数学上证明了一个包含单个隐藏层且具有足够多神经元的反馈神经网络,可以以任意精度近似任何闭区间内的连续函数,但在现实中,自然界的逻辑本身就是多层递进、层层抽象的。正如著名学者Yoshua Bengio所说:“深度架构具有一种能够更好表达自然界复杂性的先验(Prior)。” 这种先验就是图中所见的层次结构。

这就好比我们用加法可以代替所有的乘法,但是我们依然需要乘法。不同的工具在实践中作用差别是很大的。


评论 #