动机
我们之前学的,无论是线性回归还是逻辑回归都有这样一个缺点,即:当特征太多时,计算的负荷会非常大
人工神经网络是对具有很多特征的复杂问题进行机器学习的一种方法。
神经网络
人工神经网络是对生物神经网络的一种简化的模拟。那么,我们先从生物中的神经元入手,进而了解神经网络的工作方式。
用一个简单的模型来模拟神经元的工作,我们将神经元模拟成一个逻辑单元:
可以将其看成输入神经树突,黄色的圆圈则可以看成中心处理器细胞核, 则可看成输出神经轴突。因为这里是逻辑单元,所以我们的输出函数为: 。一般我们把这称为一个有 s 型函数(逻辑函数)作为激励的人工神经元。
那么神经网络其实就是这些神经元组合在一起的集合。
左边第一层 Layer1 被称为输入层。在输入层我们输入我们的特征项 。
右边最后一层被称为输出层。输出函数为: 。
中间这层被称为隐藏层。
上面的神经网络可以简单的表示为:
左边输入层多增加了一个偏置单元(偏置神经元),
用 表示特征量前的参数,是一个有权重的矩阵控制着一层参数的大小,映射第j层到第j+1层的权值矩阵。
上述的神经网络可用数学表达,如下:
矩阵也被称作为模型的权重。这里的 都是 sigmoid 激活函数,即
对上面的神经网络数学表达方式进行向量化推导,令:
于是可以得到:
用向量即可表示为:
统一一下前后两层的输入输出关系,将 ,即可得到:
这里也可以得到一个结论:
假如一个网络里面在第 j 层有 个单元,在第 j+1 层有 个单元,那么 则控制着第 j 层到第 j+1 层的映射矩阵,矩阵的维度是: 。(例如: j=1 , , =1 ,也就是说第一层只有一个单元,第二层也只有一个单元,那么 矩阵维度就是 1 * 2 ,因为要算上偏置单元)
因为我们通常有 ,所以:
由这个关系其实可以看出,神经网络跟之前所学的逻辑回归根本区别在于,它是将上一层的输出当做下一层的输入,这个从输入层到隐藏层再到输出层一次计算激励的过程叫做 forward propagation(前向传播)。
其实神经网络就像是逻辑回归,只不过我们把逻辑回归中的输入向量[x1 ∼ x 3 ] 变成了中间层的, 即:
我们可以把a0,a1,a2,a3 看成更为高级的特征值,也就是x0 ,x1 ,x2 ,x3 的进化体,并且它们是由x与决定的,因为是梯度下降的,所以a是变化的,并且变得越来越厉害,所以这些更高级的特征值远比仅仅将x次方厉害,也能更好的预测新数据
这就是神经网络相比于逻辑回归和线性回归的优势。
特征和直观理解
1. 逻辑运算
利用神经网络进行 逻辑与运算
利用神经网络进行 逻辑非运算
但是单一一层无法完成异或运算。
异或在几何上的问题其实是将红叉和蓝圈分开,但是我们的输出函数是: ,这是线性的,那么在图上无论怎么画一条直线,也没有办法将两个不同的训练集分开。既然一条直线不行,那么神经网络增加一层。
如上图,将第二层第一个元素 作为与运算的结果,第二个元素 作为或非运算的结果, 和 再作为输入,进行或运算,作为第三层输出的结果,最后得到的结果与输入的关系正是异或运算的关系。
2. 本质
神经网络正是这样解决比多较复杂的函数,当层数很的时候,我们有一个相对简单的输入量,通过加以权重和不同的运算送到第二层,而第三层在第二层作为输入的基础上再来进行一些更复杂的运算,一层一层下去解决问题。
多元分类
对于一个输入,如何判断他的类别,类别的数量为多个。
输入向量x有三个维度,两个中间层,输出层 4 个神经元分别用来表示 4 类,也就是每一个数据在输出层都会出现[a,b,c,d] T ,且a,b,c,d中仅有一个为1,表示当前类。下面是该神经网络的可能结构示例:
输出层四个结点的输出均为{0,1},分别代表这个输入是否为该节点所代表的类。
最后,我们根据最后四个分类共同组成的结果判断类别。