背景-非线性假设的缺陷
-
特征量增加过快
非线性处理拥有多个特征的数据集是非常棘手的,如果将输入特征变为二次,如:将
x1、x2、x3变为
x12、x22、x32、x1x2、x1x3、x2x3,特征种类从三个变为六个。
具体的,如果将n个输入特征变为二次,则特征种类有
Cn2(
n(n+1)/2),特征种类数量的增长估计为
o(n2/2)。
-
实际处理问题复杂
如果处理一幅50*50像素的照片,将有2500个输入特征,如果将输入特征变为二次,则有约三百万个输入特征,特征的增长量非常大,因此很容易造成过拟合、计算效率低等问题?
-
神经网络的出现提供了对于输入特征过多的另一种解决方法。
神经元和大脑
神经网络对我们自己的大脑如何工作的模仿是有限的,但是 由于计算机硬件的进步,关于神经网络的研究热情最近有了较大的回升。
有证据表明大脑只使用一种“学习算法”来实现其所有不同的功能。 科学家们已经尝试切割(在动物大脑中)耳朵和听觉皮层之间的连接,并将视神经与听觉皮层重新连接,发现听觉皮层确实学会了去“看”。
这个原则被称为“神经可塑性”,并有许多例子和实验证据。神经网络算法正是源于这一原则,构建一个自主学习世间万物的算法。
模型展示1
-
以一个神经元为计算单元的话,将输入(树突)作为电输入(尖峰)进行处理,再将处理后的电输入引导至输出(轴突)。
-
在我们的模型中,树突相当于输入特征
x1、…、xn,轴突相当于输出特征(假设函数的计算结果)。
-
x0(对应
θ0)作为额外的偏置单元,取值为1。
-
神经网络中同样采用逻辑函数(S型函数)进行假设。
-
机器学习中的模型参数
θ在神经网络中被称为“权重”。
-
简单展示如下:
⎣⎡x0x1x2⎦⎤→[ ]→hθ(x)
输入节点(第1层)进入另一个节点(第2层)时,以假设函数为输出。
-
第1层和第2层分别称为输入层和输出层,它们之间的中间层可称为隐藏层,第2层若为隐藏层,其中的节点
a02、…、a0n,也被称为激励单元。具体展示如下:
⎣⎢⎢⎡x0x1x2x3⎦⎥⎥⎤→⎣⎢⎡a1(2)a2(2)a3(2)⎦⎥⎤→hθ(x)
-激励单元由以下式子获得:
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
-
定义一个函数g的新变量
zk(j),则第2层中的各节点可以计算为:
a1(2)=g(z1(2))a2(2)=g(z2(2))a3(2)=g(z3(2))
在第2层中的k个节点的变量z为:
zk(2)=Θk0(1)x0+Θk1(1)x1+⋯+Θk3(1)x3
-
若令输入变量x为
a(1),那么可以定义在第j(>1)层中,节点的变量z为:
z(j)=Θ(j−1)a(j−1)
各节点计算为:
a(j)=g(z(j))
PS:在计算变量z时,需要引入取值为1 的偏置单元
a0(j−1)。
-
输出层设为j+1层,则假设函数输出
hθ(x)等同于
a(j+1),也即等同于
g(z(j+1))。说明每一层都作为下一层的输入变量进行递进计算。
-
随着中间层的增加,能够更优雅地生成有趣复杂的非线性假设,而且需要计算的特征种类数量增长不快。
直观例子1
通过神经网络简单实现
x1和
x2间的逻辑与,展示如下:
⎣⎡x0x1x2⎦⎤→[g(z(2))]→hΘ(x)
其中,
x0为偏置单元,取值为1。
-
权重设置为:
Θ(1)=[−302020]
-
输出的假设函数为:
hΘ(x)=g(−30x0+20x1+20x2)
-
真值表:
x1=0 and x2=0 then g(−30)≈0x1=0 and x2=1 then g(−10)≈0x1=1 and x2=0 then g(−10)≈0x1=1 and x2=1 then g(10)≈1
由上可知,只有
x1和
x2同时等于1时,输出才为1,因此,我们通过使用小型的神经网络而不是使用实际的与门来构建计算机的基本操作之一,神经网络也可以用于模拟所有的其他逻辑门。
直观例子2
逻辑与AND、或非NOR,以及或OR 的权重
Θ(1)分别设置为:
AND:Θ(1)=[−302020]NOR:Θ(1)=[10−20−20]OR:Θ(1)=[−102020]
-
结合上述权重,可以实现同或(异或非,XNOR)门,展示如下
⎣⎡x0x1x2⎦⎤→[a1(2)a2(2)]→[a(3)]→hΘ(x)
-
权重
Θ(1)设置为:
Θ(1)=[−301020−2020−20]
-权重
Θ(2)设置为:
Θ(1)=[−102020]
-
各节点计算为:
a(2)=g(Θ(1)⋅x)a(3)=g(Θ(2)⋅a(2))hΘ(x)=a(3)
最终,通过设置两个隐藏层实现了同或门。
多元分类
为了将数据分类为多个类,我们让假设函数返回一个向量,向量中包括各分类结果,再确定最终的分类:
⎣⎢⎢⎢⎢⎡x0x1x2⋯xn⎦⎥⎥⎥⎥⎤→⎣⎢⎢⎢⎡a0(2)a1(2)a2(2)⋯⎦⎥⎥⎥⎤→⎣⎢⎢⎢⎡a0(3)a1(3)a2(3)⋯⎦⎥⎥⎥⎤→⋯→⎣⎢⎢⎡hΘ(x)1hΘ(x)2hΘ(x)3hΘ(x)4⎦⎥⎥⎤→
其中,假设函数输出的向量如下:
hΘ(x)=⎣⎢⎢⎡0010⎦⎥⎥⎤
上式表示将输入变量x所表示的样本分类为第三种。
所以,当有四个样本时,输出变量y为:
y=⎣⎢⎢⎡1000⎦⎥⎥⎤,⎣⎢⎢⎡0100⎦⎥⎥⎤,⎣⎢⎢⎡0010⎦⎥⎥⎤,⎣⎢⎢⎡0001⎦⎥⎥⎤
上式分别表示四个样本的分类结果。