Motivations
这里首先介绍了一下神经网络算法的动机。对于一个非线性分类问题,我们可以通过多项式拟合出决策边界,但是对于现实问题,特征数往往由于过多而带来很多问题,比如计算量过大,过拟合等等,例如下图的一辆汽车,我们一眼就能看到这是一辆车,但是对于计算机来讲,他是像素点的集合,特征很多,就需要引入一种新的算法。
Neural Network
神经网络,顾名思义就是一种模拟大脑的算法,首先利用大脑中神经元的结构建立模型。神经元的树突接受信息,对应着神经网络的输入层(input layer),细胞体进行计算,对应神经网络的隐藏层(hidden layer),而轴突将其计算结果输出到下一个神经元,对应神经网络的输出层(output layer)。除了最后一层输出层,每一层神经网络需要加入一个偏置单元(bias unit),经过相应权重计算到达下一层,如下图。
图中我们可以看到,a1,a2,a3都是经过x0-x4经过相应权重计算得到的中间值,我们仔细看一下关于权重矩阵的部分,θj记录了第j层到第j+1层的权重情况,下面英文的意思是如果前一层有i个单元,下一层有j个单元,那么这层的权重矩阵是j*(i+1)阶的(由于偏置单元的存在)。
需要注意的是,除了权重分配情况,得到的中间量还需要经过一个sigmoid activation function的运算。所以可能的计算过程如下:
神经网络可能有多层,除了输入层和输出层,其余的都统称为隐藏层。下面给出几个利用神经网络算法改进的例子,主要思想就是利用合理的权重分配来改进看似复杂的分类问题。
在日常的分类问题中,我们可以使用一种 one-vs-all的输出,如下图,将对应的输出设为1其余为0: