Return
AI相关 深度学习 特征复用

深度学习 02

如果浅层网络足够,我们为什么还执着于深层网络。

通用近似定理

1989 年,有人证明了“通用近似定理”:只要隐藏层里的神经元足够多,哪怕只有一个隐藏层,也能无限逼近任何复杂的函数。

尴尬境遇

这个时候深层网络就碰壁了:从理论来说,一层隐藏层足够宽,也能拟合复杂函数;再从现实考量,层数深了后训练也开始出问题:梯度消失、训练不动、调参崩溃

所以在通用近似定理提出后,大家纷纷又回头奔向传统机器学习模型。

矮胖网络

那为什么大家最后还是选择深层网络呢?

通用近似定理只证明了存在性,在实际工程上的表现一塌糊涂。

就像我可以把一个完整项目全写进一个 main.cpp 里。理论上能跑,但稍微有一点代码素养的人都不会接受这种高耦合度的堆屎山写法。

这就是矮胖网络的问题,它试图在一层里把所有关系全部记住。

以图像任务为例:

像素边缘纹理部件物体\text{像素} \to \text{边缘} \to \text{纹理} \to \text{部件} \to \text{物体}

如果希望矮胖网络直接学会从像素类别的映射关系,那就需要记住无数种组合:

  • A 边缘 + B 颜色:猫耳朵
  • B 边缘 + A 纹理:车轮
  • C 轮廓 + D 明暗:字母

这种大胃袋良子的学习模式严重束缚了模型的上限。

浅层网络与深层网络对比

高瘦网络

模块化思维

深层网络就像是在模拟模块化工程

  • 低层:负责学通用的小组件,比如边缘、颜色变化、局部纹理
  • 中层:把这些小组件拼成更大的组件,比如眼睛、轮廓、轮胎、窗框
  • 高层:最后组合成猫、车、人脸、房子

底层学到的东西比较局部、简单、通用;越往上,表示越抽象,越接近任务本身。

倒不是说每一层都有人类指定好的职能;只是说网络在训练过程中,被数据和结构逼着学出这种层级表示。这是一个有点形而上学的结论。

特征复用

这样做的好处很直接:中间特征可以复用。就像是函数的封装使用一样。

同一条边缘检测不只服务于“猫耳”,也可以服务于“车轮”;同一类纹理也不只属于某一个类别。

深层网络的特征复用

深层神经网络虽然参数量庞大,但如果合理实现参数复用,训练开销反而会低于浅层网络,同时模型的性能表现也更为出色。

复杂任务

复杂任务中的相似与差异