神经网络
之前学习了线性回归模型和 logistic 回归模型,现在学习第三个模型——神经网络。神经网络是模拟我们大脑神经系统的产物。
神经网络的结构如下所示:

上图是一个 3 层神经网络,由神经元和神经连接组成。每条神经连接都有各自的强度,即 weight 。第 i 层的每个神经元会与第 i+1 的每个神经元建立连接。可以发现该神经网络只有 1 个输出。
生物大脑中的神经元一般不会跟其他各个神经元建立连接,为什么这个神经网络的模型中一个神经元会与下一层的各个神经元之间建立连接?对于这个问题,其实有些神经连接的强度可以设置为 0 ,也就意味着这些神经连接跟没有一样。
前向传播
该神经网络的第 1 层是输入层,可以输入 3 个特征的值,可以将这些输入的特征值当作电信号。特征值分别用 x1,x2,x3 表示,x0 是 bias 神经元。电信号(特征值)通过第 1 层和第 2 层之间的神经连接进行传输,神经连接的强度会影响最终到达下一层神经元的电信号强度。
用 wab(i) 来表示神经连接的权重,例如 w12(1) ,上标 w(1) 表示第 1 层与第 2 层之间的神经连接,下标表示第 1 层第 2 个神经元与第 2 层第 1 个神经元之间的连接。用 zj(2) 来表示到达下一层神经元的电信号。则有
z1(2)=x0w10(1)+x1w11(1)+x2w12(1)+x3w13(1)
z2(2)=x0w20(1)+x1w21(1)+x2w22(1)+x3w23(1)
z3(2)=x0w30(1)+x1w31(1)+x2w32(1)+x3w33(1)
上面的式子可以用矩阵来表示:
z(2)=⎣⎢⎡z1(2)z2(2)z3(2)⎦⎥⎤ X=⎣⎢⎢⎡x0x1x2x3⎦⎥⎥⎤ W(1)=⎣⎢⎡w10(1)w20(1)w30(1)w11(1)w21(1)w31(1)w12(1)w22(1)w32(1)w13(1)w23(1)w33(1)⎦⎥⎤
则可化简为:z(2)=W(1)X
经过神经连接传输的电信号到达第 2 层的神经元后,会在该层神经元内部进行计算,该层神经元内部都有一个**函数 g(z),该函数接收输入值,然后输出一个值:
a1(2)=g(z1(2))
a2(2)=g(z2(2))
a3(2)=g(z3(2))
可用矩阵表示为:
a(2)=⎣⎢⎡a1(2)a2(2)a3(2)⎦⎥⎤=g(z(2))=g(W(1)X) ,其中 a(2) 不包括 a0(2)
最后将这些值作为第 3 层的输入,第 3 层将输入值进行处理,生成最后的输出:
hθ(x)=g(a0(2)w102+a1(2)w112+a2(2)w122+a3(2)w132)
上述整个过程,就是神经网络的前向传播 Forward Propagation 过程。