一、基本变换:层
一般的神经网络是由一层一层堆叠而成的,但是每层究竟在做啥呢?我从三个方面述说一下:
- 数学公式
其中Y是输出量,X是输入量,a()是一个激活函数,W是权重矩阵,b是偏置向量。每一层都是通过该公式简单的得到输出Y。
- 数学理解
通过如下5种对输入空间(输入向量的集合)的操作,完成输入空间—>输出空间的变换(矩阵的行空间到列空间)。
注:用“空间”二字是指被分类的并不是单个事物,而是一类事物。空间是指这类事物所有个体的集合。- 升维/降维
- 放大/缩小
- 旋转
- 平移
- “弯曲”
- 物理理解
假想情景: X是二维向量,维度是碳原子和氧原子的数量 [C;O],数值且定为 [1;1]。若确定 Y是三维向量,就会形成如下网络的形 状 (神经网络的每个节点表示一个维度)。通过改变权重的值,可以获得若干个不同物质。右侧的节点数决定了想要获得多少种不同的新物质(矩阵的行数)。
若减少右侧的一个节点,并改变权重 W 至(2),那输出Y就会是两个新物质, [ O_{0.3} ;CO_{1.5}]。
若再加一层,就是再次通过组合 [CO2;O3;CO] 这三种基础物质,形成若干个更高层的物质。
若希望通过层网络能够从[C, O]空间转变到 [CO2;O3;CO]空间的话,那么网络的学习过程就是将 W 的数值变成尽可能接近(1)的过程 。
重要的是这种组合思想,组合成的东西在神经网络中并不需要有物理意义,可以是抽象概念。
二、理解角度
现在我们知道了每一层的行为,但这种行为又是如何完成识别任务的呢?
数学视角:“线性可分”
一维情景
以分类为例,当要分类正数、负数、零,三类的时候,一维空间的直线可以找到两个超平面(比当前空间低一维的子空间。当前空间是平面的话,超平面就是点)分割这三类。但面对像分类奇数和偶数无法找到可以区分它们的点的时候,我们借助 x % 2(除2取余)的转变,把x变换到另一个空间下来比较0和非0,从而分割奇偶数。
- 二维情景
所谓监督学习就是给予神经网络网络大量的训练例子,让网络从训练例子中学会如何变换空间。每一层的权重 W 就控制着如何变换空间,我们最终需要的也就是训练好的神经网络的所有层的权重矩阵。
这里有非常棒的可视化空间变换Demo,一定要打开尝试并感受这种扭曲过程。 更多内容请看Neural Networks, Manifolds, and Topology.
- 线性可分视角:神经网络的学习就是学习如何利用矩阵的线性变换加激活函数的非线性变换,将原始输入空间投向线性可分/稀疏的空间去分类/回归。
- 增加节点数:增加维度,即增加线性转换能力。
- 增加层数:增加激活函数的次数,即增加非线性转换次数。
物理视角:“物质组成”
- 类比
- 人脸识别情景
- 物质组成视角:神经网络的学习过程就是学习物质组成方式的过程。
- 增加节点数:增加同一层物质的种类,比如118个元素的原子层就有118个节点。
- 增加层数:增加更多层级,比如分子层,原子层,器官层,并通过判断更抽象的概念来识别物体。
三、“深层”的思考:真的只有这些原因吗?
按照上文在理解视角中所述的观点,可以想出下面两条理由关于为什么更深的网络会更加容易识别,增加容纳变异体(variation)(红苹果、绿苹果)的能力、鲁棒性(robust)。
数学视角:变异体(variation)很多的分类的任务需要高度非线性的分割曲线。不断的利用那5种空间变换操作将原始输入空间像“捏橡皮泥一样”在高维空间下捏成更为线性可分/稀疏的形状:可视化空间变换。
物理视角:通过对“抽象概念”的判断来识别物体,而非细节。比如对“飞机”的判断,即便人类自己也无法用语言或者若干条规则来解释自己如何判断一个飞机。因为人脑中真正判断的不是是否“有机翼”、“能飞行”等细节现象,
而是一个抽象概念。层数越深,这种概念就越抽象,所能涵盖的变异体就越多,就可以容纳战斗机,客机等很多种不同种类的飞机。