CV学习第四课——神经网络,反向传播和正则化

1.神经网络

神经网络参考文献如下:
1.神经网络的理解和实现
2.机器学习—有监督学习—神经网络算法(推导及代码实现)

1.1神经网络介绍

无论是线性回归还是逻辑回归都有一个缺点:当特征太多的时,计算负荷会非常大。例如在图片识别的模型中,由于每个像素都是255个特征,而一个50×50像素的小图片,都拥有巨大量的特征,普通的逻辑回归模型,不能有效处理这么多特征,这时我们需要神经网络算法。
CV学习第四课——神经网络,反向传播和正则化
如图所示,神经网络模型分为:输入层、中间层(隐藏层)、输出层。
神经网络模型是逻辑单元按照不同层级组织起来的网络,每一层的输出变量都是下一层的输入变量。
CV学习第四课——神经网络,反向传播和正则化
CV学习第四课——神经网络,反向传播和正则化
注意计算每层的输出都会在上一层的输入中添加一个一个常数1项,故每层的未知数变量θ\theta个数要比上层的未知数xx多1.
我们使用θji(k)θ^{(k)}_{ji}来表示第kk层的参数(边权),其中下标jj表示第k+1k+1层的第jj个神经元,ii表示第kk层的第ii个神经元。于是我们可以计算出隐藏层的三个**值:
  再将隐藏层的三个**值以及偏置项(a0(2),a1(2),a2(2),a3(2))(a_0^{(2)},a_1^{(2)},a_2^{(2)},a_3^{(2)} )用来计算出输出层神经元的**值即为该神经网络的输出:
a1(3)=g(θ10(2)a0(2)+θ11(2)a1(2)+θ12(2)a2(2)+θ13(2)a3(2))a_1^{(3)}=g(θ_{10}^{(2)}a_0^{(2)}+θ_{11}^{(2)}a_1^{(2)}+θ_{12}^{(2)}a_2^{(2)}+θ_{13}^{(2)}a_3^{(2)})
神经网络每下一层的输入是通过上一层输出的加权求和,加权求和后依旧是线性故需要加个非线性部分,g(z)g(z)此部分一般称为**函数,常用**函数有:sigmoidtanhrelusigmoid、tanh、relu

1.2.神经网络目标函数

同样的,对于神经网络我们也需要知道其目标函数,才能够对目标函数进行优化从而学习到参数。
  假设神经网络的输出层只有一个神经元,该网络有KK层,则其目标函数为(若不止一个神经元,每个输出神经元的目标函数类似,仅仅是参数矩阵的不同):
CV学习第四课——神经网络,反向传播和正则化

其中a(i)a^{(i)}倒数第2层的**值,作为输出层的输入值。而其值为a(k)=g(a(k1))a^{(k)}=g(a^{(k−1)})y(i)y^{(i)}为实际分类结果 0/1 ,mm为样本数,NkN_k为第kk层的神经元个数。

2.反向传播

参考上面文献

3.正则化

参考文献如下文献:
1.机器学习中的正则化(Regularization)
2.正则化的理解
简单来说,正则化是一种为了减小测试误差的行为(有时候会增加训练误差)。我们在构造机器学习模型时,最终目的是让模型在面对新数据的时候,可以有很好的表现。当你用比较复杂的模型比如神经网络,去拟合数据时,很容易出现过拟合现象(训练集表现很好,测试集表现较差),这会导致模型的泛化能力下降,这时候,我们就需要使用正则化,降低模型的复杂度。
L1L_1&L2L_2范数
首先介绍一下范数的定义,假设xx是一个向量,它的LpL_p范数定义:
xp=(ixip)1p||x||_p = (\sum_{i}^{}{|x_i|^p})^\frac{1}{p}