【吴恩达机器学习笔记】第五章 神经网络学习
1、神经网络模型
我们将一个神经元模拟成一个逻辑单元,下图表示对 hθ(x) 进行计算的神经元,黄色圆圈代表一个神经元,蓝色圆圈代表树突或轴突传输的信号。

假设 hθ(x) 是logistic函数,则这个神经元也可以被称为一个带有logistic**函数的人工神经元。
在神经网络术语中,**函数是指非线性函数 g(z) 的另一个术语。在神经网络的文献中, θ 参数有时也被称为权重。
神经网络其实是一组神经元连接在一起的组合,如下图所示:

神经网络术语中,第一层也被称为输入层,因为我们在这一层输入特征,最后一层也被成为输出层,因为这一层的神经元输出假设的最终计算结果,中间第二层被称为隐藏层。
为了解释神经网络的计算过程,首先我们需要记住以下符号
ai(j) :表示第 j 层第 i 个神经元或单元的**项,**项是指由一个具体神经元计算并输出的值。
Θ(j) :表示权重矩阵。它控制从某一层到下一层的映射。如果一个网络在第 j 层有 sj 个单元,在第 j+1 层有 sj+1 个单元,那么矩阵 Θ(j) 即控制第 j 层到第 j+1 层映射的矩阵。它的维度为 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(1)a0(2)+Θ11(1)a1(2)+Θ12(1)a2(2)+Θ13(1)a3(2))
2、向量化计算
将上述计算公式向量化以后如下所示:
x=⎣⎢⎢⎡x0x1x2x3⎦⎥⎥⎤z(2)=⎣⎢⎡z1(2)z2(2)z3(2)⎦⎥⎤
a(1)=xz(2)=Θ(1)a(1)a(2)=g(z(2))
a0(2)=1z(3)=Θ(2)a(2)hΘ(x)=a(3)=g(z(3))
这个计算 h(x) 的过程,也成为前向传播,因为我们从输入单元的**项开始,然后进行前向传播给隐藏层计算隐藏层的**项,然后我们继续前向传播,并计算输出层的**项。
如果把前向传播前面的部分盖住如下图所示:

剩下的部分,实际上是实现的logistic回归。
特征项 a1,a2,a3 是学习得到的函数输入值,具体来说,就是从第一层映射到第二层的函数,这个函数由其他参数 Θ(1) 决定。
所以在神经网络中,它没有用输入特征值 x1,x2,x3 来训练Logistic回归,而是自己训练Logistic回归的输入值 a1,a2,a3 ,根据 Θ(1) 的不同,有时会训练出很有趣和复杂的特征,这样可以得到一个更好的假设函数,比使用原始的 x1,x2,x3 输入值得到的假设更好。
当然我们也可以用别的图来表示神经网路,如下图所示:

神经网路中神经元的连接方式称为神经网络的架构,架构是指不同神经元的连接方式。
3、例子与理解
神经网络来拟合逻辑关系AND
例:x1,x2∈0,1y=x1ANDx2拟合过程:
神经元如下所示:

S型**函数如下图所示:

神经网络的计算如下所示:hΘ(x)=g(−30+20x1+20x2)
计算结果如下所示:

从圈出的一列中可以看出拟合很成功,与AND的结果一致,当赋值为-10,20,20时,可以实现OR。
另外计算 NOT X1如下图所示:

根据以上所述,我们得到以下结论:

再举个复杂点的栗子:拟合 x1 XNOR x2
我们将以上的结论组合起来形成新的神经网路如下所示:

4、神经网络解决多元分类
要想用神经网络解决多元分类问腿,采用的方法本质上是一对多法的拓展,举个栗子:假设我们要将输入的图片分为以下四类:
我们要做的就是建立一个有四个输出神经元的神经网络,这个神经网络的输出是一个含4个数的向量,并分别用这四个神经元来判断类别:

当 h(Θ)≈⎣⎢⎢⎡1000⎦⎥⎥⎤ 时,代表行人,h(Θ)≈⎣⎢⎢⎡0100⎦⎥⎥⎤ 时,代表汽车,以此类推。
本章内容着重对于神经网络的入门和理解,后面一章我们会介绍神经网络的代价函数和算法等。