神经网络表示
神经网络是一种机器学习算法,有别于线性回归、逻辑回归。
一、非线性假设
1. 引例
-
利用逻辑回归求解非线性分类问题
-
问题:房子如何能卖出?
下面是两个特征的情况:

然而当特征数量比较多时,如房子尺寸、卧室个数、层数、房龄等,那么假设函数中的 z 项就会复杂得多,带来了巨大的计算复杂度。
-
假设函数:
g(θ0+θ1x1+θ2x2+θ3x1x2+θ4x12x2+θ5x13x2+θ6x1x22+…)
若是特征个数比较多,比如说有 100 个,那么最终 z 就会有 大约 5000 个 x 项,这就造成了运算量过大的问题。
-
汽车分类问题(是否为汽车)
-
计算机眼中的汽车
彩色图像是由BGR三层灰度叠加而成,而灰度图只有一层,一般灰度级的取值范围为[0, 255]

-
汽车检测模型
-
一般方法
-
收集图像信息(汽车与非汽车)

-
调出对应的训练像素点训练

-
形成模型,用以判别新图像

-
推广
由两个像素点推广到整幅图像的像素点,进行处理。一副 50 * 50的灰度图由 2500 个灰度像素点,而一副RGB图拥有 3 * 2500 = 7500 个灰度像素点。

二、神经元和大脑
-
神经网络
- 起源:试图去模仿大脑的算法
- 发展历程:兴起于上世纪8、90年代,但是在90年代末期销声匿迹;但是最近几年又重现江湖。
-
假设
- 只需要用一个假设函数就能完成人脑的日常功能
- 神经重接实验:若一块大脑区域能处理光、声或触觉信号,那么可能存在着一种算法能同时处理视觉、听觉和触觉(通感)。也就不需要成百上千个程序来实现不同的功能。
-
大脑中的传感器互联

三、模型展示
-
神经元在大脑中的陈列方式:

- 树突(dendrite):输入层
- 轴突(axon):输出层
- 细胞核(Nucleus):隐藏层,处理信息
-
多个神经元协同工作:

1. 模型一
- 神经模型(逻辑单元)
-
术语:

-
激活函数:
sigmoid,也即是神经元
-
参数(权重)
θ
-
偏移量
b或x0,通常设置为 1
- 神经网络
-
展示

其中的ai(j)是第j层第i个神经元的激活函数,θ(j)是从第 j 层到 第 j+1 层的权重阵列,图中的θ(j)的尺为 3 * 4。
另外,如果神经网络的第 j 层有有sj个神经元,同时第 j + 1层有 sj+1个神经元,那么 θ(j)的尺寸就为: sj+1∗(sj+1)
-
术语:
- 输入层
- 隐藏层(全连接层)
- 输出层
-
计算过程
a1(2)=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3)a2(2)=g(Θ20(1)x0+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3)a3(2)=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3)hΘ(x)=a1(3)=g(Θ10(2)a0(2)+Θ11(2)a1(2)+Θ12(2)a2(2)+Θ13(2)a3(2))。
2. 模型二
-
模型一:基于向量实现(前向传播)
-
处理过程
a1(2)=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3)a2(2)=g(Θ20(1)x0+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3)a3(2)=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3)hΘ(x)=a1(3)=g(Θ10(2)a0(2)+Θ11(2)a1(2)+Θ12(2)a2(2)+Θ13(2)a3(2))。
前向传播:从输入层输入数据,前向传播至第一隐藏层、第二隐藏层,然后再送入输出层输出
-
简化计算表示:
- 引入 z ,用来装载 g 的参数列表,例如 : z1(2)=Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3,表示 第二层 第一个神经元的 x 多项式,对应的激活函数 a1(2)=g(z1(2))。以此类推可以简化各个神经元的激活函数。
- x=⎣⎡x0x1x2x3⎦⎤z(2)=⎣⎡z1(2)z2(2)z3(2)⎦⎤z(2)=Θ(1)xa(2)=g(z(2)).其中 Θ(1)是一个 3 * 4 的矩阵:⎣⎡Θ10(1)x0Θ20(1)x0Θ30(1)x0Θ11(1)x1Θ21(1)x1Θ31(1)x1Θ12(1)x2Θ22(1)x2Θ32(1)x2Θ13(1)x3Θ23(1)x3Θ33(1)x3⎦⎤.而 a(2)是一个三维列向量。
- 同时在计算过程中,为了便于计算,我们也会加入一些项,会在隐藏层中加入激活函数a0(2)=1和x0=1,a(2)也就变成了 4 维 向量, 从而 z(3)=Θ(2)a(2)、hθ(x)=a(3)=g(z(3))。
-
神经网络学习自身特征
将之前层的输出作为最后一层隐藏层的特征输入,将神经网络的最后一层隐藏层和输出层挑选出来,则会得到一个类逻辑回归的假设函数:

令 z=Θ10(2)a0(2)+Θ11(2)a1(2)+Θ12(2)a2(2)+Θ13(2)a3(2),则 hΘ(x)=g(z),本质上是逻辑回归算法。
-
其余的网络结构

每层依次为:输入层、隐藏层 1 、 隐藏层 2 、 输出层。
3. 示例和直觉理解
-
示例一(非线性分类示例:XOR/XNOR)
-
x1、x2是二值变量(0, 1)

-
y = x1 XOR x2
y = x1 XNOR x2
y = NOT (x1 XOR x2)
-
简例:AND
神经元图例:

其中的 + 1 表示为 x0=1,图中的 -30、+20、+20分别为 θ0、θ1、θ2的值。所以假设函数为: hθ(x)=g(−30+20x1+20x2)。
g(z) [sigmoid] 函数图像如下:

可以将 x1和x2分别以值为0、1代入 函数可得 结果为:
| x1 | x2 | hθ(x) |
|---|
| 0 | 0 | g(−30)≈0 |
| 0 | 1 | g(−10)≈0 |
| 1 | 0 | g(−10)≈0 |
| 1 | 1 | g(10)≈1 |
-
简例:OR
hθ(x)=g(−10+20x1+20x2)。
| x1 | x2 | hθ(x) |
|---|
| 0 | 0 | g(−10)≈0 |
| 0 | 1 | g(10)≈1 |
| 1 | 0 | g(10)≈1 |
| 1 | 1 | g(30)≈1 |
-
简例:NOT
这个例子只有一个变量,所以假设函数可以为 : hΘ(x)=g(10−20x1)
-
简例:(NOT x1)AND(NOTx2)
- 对于比较复杂的项,可以先进行展开
- 展开为 只有当 x1=x2=0时,整个式子才为 1,表示为:NOT(x1ORx2),将上面的OR例子中的各参数取反就行了,也即是 : hθ(x)=g(10−20x1−20x2)。
主要就是给对应的变量乘上较大的权重,利用sigmoid函数取值来用概率输出对应分类。
-
示例二(x1 XNOR x2)
-
总结上面的 AND、NOT(x1ORx2)、OR三者各自关系:

-
计算过程:
-
神经网络构成:

第一层是输入层,第二层是包含了两个激活函数和a02=1的隐藏层,第三层还是一个隐藏层,将第二层的处理结果进行处理并将结果传入第四层输出层。其中a1(2)、a2(2)、a1(3)分别表示了 AND、NOT - AND、OR关系。
四、多元分类
引例:判别公路上的物体
-
类型:行人、汽车、摩托、卡车
-
神经网络的构成:

-
输出层的规定:和之前的二值分类不同(可以直接返回数字),多分类长返回一个向量:
hΘ(x)≈⎣⎡1000⎦⎤,hΘ(x)≈⎣⎡0100⎦⎤,hΘ(x)≈⎣⎡0010⎦⎤,hΘ(x)≈⎣⎡0001⎦⎤.分别代表了不同的分类:行人、汽车、摩托、卡车等。
-
训练集设置:
(x(1),y(1))、(x(2),y(2))、(x(3),y(3))、(x(4),y(4))、......、(x(m),y(m)),其中 y(i)为上面的四维向量,并且hθ(x(i))≈y(i)