7 神经网络:表达
7.1 非线性假设
- 之前我们已经看过,非线性多项式能够更好的处理问题,但它也同样带来了不少问题,比如说,当特征量比较多的时候,我们将这些特征量结合起来,将会是数量非常大的特征组合。
e.g. - 假设我们希望通过学习使计算机能够识别一张图片是否是汽车,即使图片大小事50*50像素的灰度图片,就有2500个基本特征,如果我们想要进一步两两组合这些特征,将会有 250022 个特征,普通的逻辑回归模型,不能有效的处理这么多的特征,这时候我们需要神经网络来解决这个问题。
7.2 神经网络介绍
- 神经网络算法源于对大脑的模仿,再八十年代到九十年代被广为使用过,之后逐渐减少使用,现在又流行起来主要的原因是因为神经网络非常依赖计算能力,计算机性能的提高才使这种算法成为一个行之有效的技术。
7.3 模型表达
- 为了构建神经网络,我们首先需要了解大脑中的神经网络是如何工作的
- 大脑中每一个神经元被认为是一个神经元,它含有树突和轴突,神经网络是大量神经元相互连接并通过电脉冲交流的一个网络。
- 神经网络模型建立再很多神经元之上,每一个神经元又是一个个学习模型,这些神经元采纳一些特征作为输入,并且根据自身的模型为下一个模型提供输出,下图是一个以逻辑回归模型作为自身学习模型的神经元示例,再神经元网络中,参数又被称之为权重。
7.4 神经网络模型表达
神经网络模型是许多逻辑单元按照不同的层级组织起来,每一层的输出都是下一层的输入,下图为一个3层神经网络,第一层为输入层,中间层为隐藏层,最后一层为输出层。
aji 代表第j层第i个神经元
-
Θj
代表从第j层到j+1层的权重矩阵,尺寸为(j层神经元个数)*(j+1层神经元个数)
对于上图,神经元和输出的表达式为:
a21=g(Θ110x0+Θ111x1Θ112x2Θ113x3)
a22=g(Θ120x0+Θ121x1Θ122x2Θ123x3)
a23=g(Θ130x0+Θ131x1Θ132x2Θ133x3)
hΘ(x)=g(Θ210a20+Θ211a21Θ212a22Θ213a23) - Θcab 代表的是第c层第b个神经元到c+1层第a个神经元的配权重
- 上述讨论的只是将特征矩阵中的一行(一个训练实例)给了神经网络,我们要将所有的训练集都给神经网络
7.5 正向传播 forward propagation
- 我们可以用矩阵的形式,将上一节的两层方程写出:
第一层到第二层:
g⎛⎝⎜⎜⎜⎜⎡⎣⎢⎢⎢Θ110Θ120Θ130Θ111Θ121Θ131Θ112Θ122Θ132Θ113Θ123Θ133⎤⎦⎥⎥⎥×⎡⎣⎢⎢⎢⎢x0x1x2x3⎤⎦⎥⎥⎥⎥⎞⎠⎟⎟⎟⎟=⎡⎣⎢⎢⎢a21a22a23⎤⎦⎥⎥⎥
g(Θ1×XT)=a(2)
第二层到第三层:
g⎛⎝⎜⎜⎜⎜⎜[Θ210Θ211Θ212Θ213]×⎡⎣⎢⎢⎢⎢⎢a(2)0a(2)1a(2)2a(2)3⎤⎦⎥⎥⎥⎥⎥⎞⎠⎟⎟⎟⎟⎟=hΘ(x)
g(Θ2×a(2))=hΘ(x)
7.6 对神经网络的理解
- 本质上讲,如果是以前的逻辑回归或者线性回归,它只能利用最开始的那些特征,虽然我们可以通过二项式结合,但得到的还是受到原始特征限制,但在神经网络中,原始的特征只是第一层,从第二层开始,是上一层产生的结果作为的新特征。
7.7 神经网络示例:二元逻辑运算符
- 当输入特征为布尔值的时候(0 or 1),我们可以用单一的神经元作为隐藏层
- 权重分别为-30,20,20的时候,相当于逻辑与
- 权重分别为-10,20,20的时候,相当于逻辑或
- 权重分别为10,-20的时候,相当于逻辑非
- 我们也可以根据上面这些构造更加复杂的逻辑表达式
xNOR=(x1ANDx2)OR((NOTx1)AND(NOTx2))
7.8多类分类
如果我们要训练一个神经网络来识别人,汽车,摩托车,卡车,再输出层有4个值,