1 为什么要用神经网络
实际问题往往有很多特征,成千的特征会带来两个问题:一是过拟合,二是消耗大量计算资源。模型复杂度为O(n2,n3)或者更高。
在计算机视觉中,一张图片对于计算机来说就是一堆数字矩阵,对图片处理时有成千上万的特征,对于这类问题使用logistic回归是没法解决的,这个时候就要用到神经网络(Neural Network)。
2 神经网络
(1)组成
输入层:第一层,输入单元:为x1,x2,x3, 有时候为了方便我们添加一个x0, 叫做偏差单位(bias unit)。将原始数据输入给它们。
隐藏层:中间单元(都会增加偏差单元),它们负责将数据进行处理,然后呈递到下一层。
输出层:最后一层,它负责计算ℎ?(?)
(2)前向传播
对于上图所示的模型,激活单元和输出分别表达为:
每一个?都是由上一层所有的?和每一个?所对应的决定的。把?, ?, ? 分别用矩阵表示,我们可以得到? ⋅ ? = ?
把上面的从左到右的算法称为前向传播算法( FORWARD PROPAGATION )。
3 特征和直观理解
神经网络中,单层神经元(无中间层)的计算可用来表示逻辑运算,比如逻辑与(AND)、逻辑或(OR)。
(1)逻辑与
x1,x2∈{0,1}
y = x1 AND x2
其中?0 = −30, ?1 = 20, ?~2 ~= 20 我们的输出函数ℎ? (?)即为:ℎ?(?) = ?(−30 + 20?1+20?2)
(2)逻辑或
与AND 整体一样,区别只在于的取值不同。
(3)逻辑非(NOT)
(4)XNOR
XNOR = (x1 AND x2) OR((NOT x1)AND(NOT x2))
首先构造一个能表达(NOT x1)AND(NOT x2)部分的神经元;然后将表示 AND 的神经元和表示(NOT x1)AND(NOT x2)的神经元以及表示 OR 的神经元进行组合;得到一个能实现 XNOR 运算符功能的神经网络。
4 多类分类
神经网络算法的输出结果用向量表示,如: