实验四:神经网络学习
一、实验目的
将实现用于神经网络的反向传播算法,并将其应用于手写数字识别的任务中。
二、实验环境
Window10,Octave
三、实验步骤/过程
1.神经网络:
1.1数据可视化:加载数据并通过调用函数 displayData.m 将其显示在二维图上。
1.2模型表示:将存储在ex4weights.mat中的网络参数θ(1),θ(2)由ex4.m加载到Theta1和 Theta2 这两个参数中。
1.3前馈与损失函数:在nnCostFunction.m 中添加代码以返回损失:
1.4 正则化损失函数:使用现有的 nnCostFunction.m 计算非正则化的损失函数,然后加上正则项的损失。
2.反向传播:
2.1 Sigmoid梯度:在sigmoidGradient(z)添加代码:
g=sigmoid(z).*(1-sigmoid(z));
2.2随机初始化:在randInitializeWeights.m中添加代码:
2.3反向传播:实现反向传播算法。
2.4梯度检验:运行提供的函数checkNNGradients.m,该函数将创建一个小的神经网络和数据集,用于检查梯度。
2.5正则化神经网络:实现反向传播算法后,将向梯度添加正则化。
2.6使用 fmincg 学习参数
3.可视化隐藏层:使用displayData函数显示一个对应于25个神经元的图像,每一幅图像对应于神经网络的一个隐藏神经元。
四、实验结果
1.1数据可视化:
1.3前馈与损失函数:
1.4 正则化损失函数:
2.1 Sigmoid梯度:
2.4梯度检验:
2.5正则化神经网络:
2.6使用 fmincg 学习参数:
3.可视化隐藏层: