[机器学习]神经网络及反向传播算法的步骤和实现思路
实现神经网络前向传播和反响传播的步骤及心得
1.初始化参数矩阵的值
目的:防止神经网络参数的高度冗余。
在线性回归和logistic回归中,通常把初始化参数设置为0,但如果神经网络把初始化参数设置为0,就无法得到一个很好的拟合参数集。
2.实现向前传播算法 对每一个输入值得到对应的假设输出值
步骤:
1.根据输入样本通过对应的参数矩阵的计算得到输出值,并且要对每一层的假设输出值代入sigmoid函数中进行**,**值当作下一层的输入参数和对应的参数矩阵进行计算。这样最后会输出一个或多个假设值。
2.每两层假设矩阵之间的维数通常是下一层的单元数*(上一层的单元数+1),这是因为上一层有一个隐含的biasunit导致的。
3计算代价函数J(θ)
代价函数为:
对代价函数的理解:第一项中的k是输出个数值,m是总样本值。
1.如果输出结果为单值,k=1,和logistic回归一样。
2.如果输出结果为多值。对每一个输入值(1<i<=m)得到的1.2.3…k个输出单元进行代价计算ym,求和。然后对m个输出单元求和得到总的代价函数
4.反向传播算法
目的:求出每一个参数的偏导数。
步骤:
1.在一个for循环中,循环的次数是样本数量
经过前面的前向传播算法的实现,每一个输入值都对应一个或多个输出值。通过输出值与y值得差,我们反向传递给前面层数的数据。
接着对????进行更新,循环遍历m次,最后得到的一组参数值就是每一个参数的导数值
5.对每一个导数值进行检验
通过数值计算
来验证计算结果的准确性,并关掉算法中的梯度检测。
6.找到适合神经网络的权值数组。
通过导数值:我们就可以实行梯度下降,通过matlab中自带的算法,找到使代价
函数最小的局部最优解