Ch8 先引出logistic回归模型的不足:对复杂的非线性假设模型的产生的决策边界难以进行拟合与训练。然后受到大脑神经元的启发,我们开发了神经网络模型。本章介绍了神经网络模型的组成、前向传播算法,并就网络为何能构造复杂的特征做出了解释,并提供了简单逻辑运算器(与、或、非异或、同或)的神经网络表示。最后在二分类神经网络的基础上描述了对多分类神经网络的构建方法。
目录
神经网络的表述
非线性假设
逻辑回归的缺点:如果决策边界复杂,则假设函数也会变得十分复杂。这就导致需要进行组合的非线性特征过多,则需要计算和选择特征产生的计算量会非常大。
面对复杂的分类问题,我们可能需要很复杂的假设函数,如下图所示:

图8-1 复杂的决策边界
图中的决策边界是以由两个原始特征形成的复合特征组为自变量的假设函数形成的。
复合特征组中的各元素是原始自变量的不同幂次乘积。例如若原始特征有$x_1,; \cdots ;x_{100}$,则其二次项就有$x_1^2,x_1x_2,; \cdots ;x_{100}^2$,共有$\frac{100^2}{2!}=5000(O(n^2))$个复合特征;而若是三次项就有$x_1^3,x_1x_2x_3,; \cdots ;x_{100}^3$,共有$\frac{100^3}{3!}=170000(O(n^3))$个复合特征。
若是原始特征本就很多,例如计算机视觉中的图像识别,我们将一张$50x50$的图片,拉成$R^{2500}$的一个向量,若要生成任意两个像素间的复合特征,会有3百万的新特征。
而这么多特征用logistic回归做假设函数,则难以进行特征选择和模型训练,所以我们需要开发新的模型。
神经元和大脑
视觉传感与触觉和听觉有极大关系。本节还介绍了一些关于大脑的一些研究。
模型表示
大脑神经元结构如下:

图8-2 典型神经元结构
信息从上一个神经元的突触,传送到下一个神经元的树突,经过细胞核处理后,由轴突传送到突触进入下一个传送阶段。
模仿大脑神经元的传送原理,我们开发了神经网络模型。
大脑的基本单元是神经元,而神经网络的基本单元是逻辑元,其结构如下:

图8-3 神经网络基本单元
其中,$x_1,x_2,x_3$是输入,$x_0$是模型内的偏置单元,橙色圆是处理单元,代表logistic函数。从输入$x_0,x_1,x_2,x_3$到处理单元间的流程线上是各输入单元的权重值$\theta$;从处理单元到输出$h_\theta(x)$上无运算,处理后直接输出。
神经网络是其基本单元的合成版,如下图所示:

图8-4 单隐藏层神经网络
其中Layer1是输入层,Layer2是隐藏层,Layer3是输出层。
规定:
- $\Theta^{j}$代表从第j层到第j+1层单元的映射权重矩阵。若第j层有$s_{j}$个单元,而第j+1层有$s_{j+1}$个单元,则$\Theta^{(j)}$的维度为$s_{j+1}\times(s_j+1)$(1为第j层的偏置单元)。
该处容易搞反,row为下一层的单元数,column为当前层单元数+1
- $a_i^{(j)}$代表第j层的第i个单元的激活函数。
- 默认每一层的输入都增加一个偏置单元,取值为1。
前向传播FORWARD PROPAGATION
从输入层到输出层的各个单元的值以及损失函数的计算称为前向传播。
针对一般的情形,若输入层单元数为$n$,隐含层层数为$m$,令$x=[x_0 ; x_1; \cdots x_n ]=a^{(1)}$,后续隐藏层的输出看做一个向量分别记作$a^{(j)},; j=2,; \cdots , m+1$,将输出层单元记作$a^{(m+2)}$。
前向传播算法流程:
- 从输出层开始,每层在传播到下一层前都需要加入一个偏置单元$a_0^{(j)},; j=2,; \cdots , m+1$。
- 后续各层的各单元的总输入为
$$z_i^{(j)}=\sum_{k=0}^{s_j}\Theta_{ik}^{(j-1)}x_k ; ,j=1,2,…m+2$$ - 经过单元内的激励函数后的输出为
$$a_i^{(j)}=g(z_i^{(j)})$$ - 最终输出层的输出为
$$h_\Theta(x)=a^{(m+2)}=g(z^{(m+2)})$$
针对图8-4的神经网络而言,最终神经网络的输出为$h_\Theta(x)=a^{(1+2)}=g(z^{(3)})$
特征与假设函数
针对图8-4的神经网络,最终输出是用$a_1^{(2)},a_2^{(2)},a_3^{(2)}$做输入特征,以进行logistic回归分类,而$a_1^{(2)},a_2^{(2)},a_3^{(2)}$又是通过$x_1x_3$做logistc回归得到的特征,因此能够生产复杂的假设函数。(这里的$x_1x_3$可以更改为 $x_1x_2,x_2x_3,\cdots$ 等其他输入)

图8-5 另一种构造的神经网络
如图8-5所示,Layer2是对Layer1的特征的复合组合,Layer3是对Layer2特征的复合组合,以此达到更好的假设函数。
神经网络若有多个隐含层,可以采用各隐含层单元数相同的架构,也可以用单元数不同的架构,如图8-5所示。
神经网络的直观理解
对于logistic函数g(z),其函数图像如下:

图8-6 logistic函数
不妨设$x_1,x_2$为二元变量,取值为${0/1}$,则有下列逻辑运算器成立。
AND

图8-and AND逻辑元神经网络实现
$$h_\theta(x)=g(-30+20x_1+20x_2)=g(z)$$
| x1 | x2 | AND | g(z) |
| :–: | :–: | :–: | :–: |
| 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 0 |
| 1 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 |
OR

图8-or OR逻辑元神经网络实现
$$h_\theta(x)=g(-10+20x_1+20x_2)=g(z)$$
x1 | x2 | OR | g(z) |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 1 | 1 |
1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 |
NOT

图8-not NOT逻辑元神经网络实现
$$h_\theta(x)=g(10-20x_1)=g(z)$$
x1 | NOT | g(z) |
---|---|---|
0 | 1 | 1 |
1 | 0 | 0 |
双非Not And Not

图8-nan NOT AND NOT逻辑元神经网络实现
$$h_\theta(x)=g(10-20x_1-20x_2)=g(z)$$
x1 | x2 | N A N | g(z) |
---|---|---|---|
0 | 0 | 1 | 1 |
0 | 1 | 0 | 0 |
1 | 0 | 0 | 0 |
1 | 1 | 0 | 0 |
双非运算器满足:$Not ;A ;and ;Not ;B = NOT( A ;OR; B )$
异或XOR
x1 | x2 | XOR | g(z) |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 1 | 1 |
1 | 0 | 1 | 1 |
1 | 1 | 0 | 0 |
异或运算器满足:A^B = ( A & ~ B) | (A & ~ B )
其中^,&,|,~分别是异或、与、或、非的逻辑符号;由此说明异或逻辑运算器可以由与或非逻辑运算器组合生成。
同或XNOR

图8-xnor XNOR逻辑元神经网络实现
$$h_\theta(x)=g(10-20x_1-20x_2)$$
x1 | x2 | XNOR | g(z) |
---|---|---|---|
0 | 0 | 1 | 1 |
0 | 1 | 0 | 0 |
1 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
同或运算器满足:$A ; XNOR ; B = NOT( A ; XNOR; B )$
多类别识别
若是有多个类别$n$需要区分,我们可以在设置输出层单元数为$n$对应类别数,各个输出单元输出0或1,用输出one-hot向量来区分预测的种类。
例如:预测类别数为4,则$h_\Theta(x)=[1;0;0;0 ]^T$代表行人,$h_\Theta(x)=[0;1;0;0 ]^T$代表小汽车,$h_\Theta(x)=[0;0;1;0 ]^T$代表摩托车,$h_\Theta(x)=[0;0;0;1 ]^T$代表货车。
同时我们的训练集中的标签值也应该更改为相应的one-hot向量。
针对1次输入,神经网络中的输出层的各个输出单元都会对应有一个0~1的输出。我们在最终预测时,可以将其中的输出最大值的输出单元置1,其余置0,以此得到一个预测类别。