神经网络-机器学习(machine learning)笔记(Andrew Ng)

神经网络(neural networks)

生物学上的神经元

神经网络-机器学习(machine learning)笔记(Andrew Ng)
神经网络-机器学习(machine learning)笔记(Andrew Ng)
神经网络-机器学习(machine learning)笔记(Andrew Ng)
(图片来自百度图片)
从三张图片中可以看到,神经元由细胞体,轴突和树突构成。在两个神经元传送脉冲的过程中,神经元1将脉冲从其轴突传出,神经元2的树突接受1传出的脉冲。

神经元的数学定义

神经网络-机器学习(machine learning)笔记(Andrew Ng)
(图片来自吴恩达cousera机器学习课程)
Layer 1:输入层(input layer)
Layer 2:隐藏层(hidden layer)(可能不止一个)
Layer 3:输出层(output layer)
a(j)i:在第j层单元i的“激励”(activation)(可以看做第j层的输出)
各层所做的事:

a(2)1=g(Θ(1)10x0+Θ(1)11x1+Θ(1)12x2+Θ(1)13x3)a(2)2=g(Θ(1)20x0+Θ(1)21x1+Θ(1)22x2+Θ(1)23x3)a(2)3=g(Θ(1)30x0+Θ(1)31x1+Θ(1)32x2+Θ(1)33x3)hΘ(x)=a(3)1=g(Θ(2)10a(2)0+Θ(2)11a(2)1+Θ(2)12a(2)2+Θ(2)13a(2)3)

这里的上标都代表这个值属于第几层。从公式中我们可以看到x0a(2)0,这些在图中是没有的,他们的值都是1,称为偏置单位(bias unit)或偏置神经元(bias unit)。(个人想法:这里的偏置单位是为了简化计算为矩阵乘法所设,将常数项设为x0=1
y=g(x)是逻辑回归中介绍过的s函数,或者叫逻辑激励函数(logistic activation function)或者s激励函数(sigmoid activation function)。
如果神经网络在第j层有sj个单元,那么Θ(j)是一个sj+1(sj+1)维的矩阵,如上面的第1层有3个单元,第2层有3个单元,Θ(1)矩阵是3*4的。(提矩阵是为了方便编程实现)

神经网络计算向量化

我们将sigmoid函数的加权输入(Θ可以看做权重)提取为一个数z,那么每一层的输入相当于一个z向量,向量长度为sj+1,拿上面的例子来说就是第1层的输入为长度为3的一个列向量。
令:

x=x0x1x2x3z(2)=z(2)1z(2)2z(2)3

那么:
z(2)=Θ(1)xa(2)=g(z(2))Adda(2)0=1.z(3)=Θ(2)a(2)hΘ(x)=a(3)=g(z(3))

这里我们得到a(2)之后,需要增加a(2)0,产生一个长度为4的向量,满足下一层的输入,所以在编程实现的时候我们需要注意不要忘记这个细节。

神经网络的隐藏层到输出层与逻辑回归很相似。那么神经网络和逻辑回归的不同在于逻辑回归以输入层x作为输出层h的输入,而神经网络以隐藏层最后一层作为输出层的输入。我们也可以说神经网络对自己的特征进行学习,以期得到更好的特征用于最后一层(输出层)的输入。(最开始的输入也可以是多项式)
另外,我们可以想象由很多类似上图的神经元可以组成一个神经网络。一些神经元的输出可以作为某个神经元的输入,这就是生物学上神经元轴突和树突的概念启发而来。
另外,我们上面提及的是一种前向传播在神经网络中工作的方式,即由输入层**(‘activate’)中间的隐藏层,最后**输出层进行输出。