机器学习期末作业(别抄,我不放代码)
准备数据和工具(numpy)实现基础的五层神经网络(前向、反向传播)实现批量标准化模块,能开关使用实现权重衰减功能,能开关使用实现dropout功能,能开关使用写训练循环,支持超参数调节分别跑不同配置的实验,记录训练和验证准确率在Jupyter Notebook里写代码和文字分析,展示结果图表网络层数配置激活函数组合使用技巧备注基线配置,较稳定BatchNormSigmoid 结合 BN 抑制梯度
机器学习期末大作业
构建一个五层的神经网络,在mnist数据集上对网络进行训练,要求如下:
1、 利用训练集和验证集找到一组合适的超参数;
2、 分析使用批量标准化和不使用批量标准化时的网络性能差异;
3、 分析使用权重衰减和不使用权重衰减时的网络性能差异;
4、 分析使用dropout技术和不使用dropout时的网络性能差异;
5、 将以上所有技术应用到网络的训练过程中后,对网络的性能进行分析。
以上实现过程和分析过程全部在jupyter notebook中实现,一定要有运行结果输出
chatgpt:
作业要求解析
你要实现一个五层神经网络(一般理解为输入层+3个隐藏层+输出层,共五层)在MNIST数据集上训练和测试。MNIST是一个手写数字识别数据集,有60000张训练图像和10000张测试图像,每张28x28像素,10个数字类别。
具体要求包括:
-
利用训练集和验证集找到合适的超参数
-
超参数一般指学习率、每层神经元数量、激活函数、批大小(batch size)、迭代次数(epoch)、dropout比率、权重衰减系数等。
-
你要用训练集训练网络,用验证集评估性能,通过试验选择表现最好的超参数组合。
-
-
分析批量标准化(Batch Normalization)对网络性能的影响
-
比较网络加了批量标准化和没加批量标准化两种情况下,网络的训练效果、收敛速度、准确率等差别。
-
-
分析权重衰减(Weight Decay,L2正则化)对网络性能的影响
-
比较加和不加权重衰减时,模型的训练表现,权重衰减一般用于防止过拟合。
-
-
分析dropout技术对网络性能的影响
-
比较加和不加dropout时的网络表现,dropout也是防止过拟合的一种技巧。
-
-
将批量标准化、权重衰减和dropout这三种技术全部用到网络训练中,分析最终网络的性能。
所有过程都需要在Jupyter Notebook中完成,要有代码和运行结果输出,也就是说不仅写代码,还要做实验分析。
思路建议(纯Python实现神经网络)
用numpy,自己手写神经网络的前向传播、反向传播和训练流程。
1. 数据准备
-
MNIST数据集可以用
tensorflow.keras.datasets加载或者从网上下载,加载后转成numpy数组。(已有) -
分割成训练集和验证集(例如训练集50000,验证集10000)。
2. 网络结构设计
-
输入层:28×28=784个输入节点
-
隐藏层1:比如128个神经元
-
隐藏层2:128个神经元
-
隐藏层3:64个神经元
-
输出层:10个神经元(数字类别)
-
激活函数:隐藏层用ReLU,输出层用softmax
3. 实现关键模块
-
前向传播:计算每层的加权和,激活函数输出
-
损失函数:交叉熵损失
-
反向传播:计算梯度,更新权重
-
权重更新:用SGD(随机梯度下降)或带动量的SGD
4. 实现作业要求的特殊技术
-
批量标准化
-
在每个隐藏层加激活前进行批量标准化,计算mini-batch的均值和方差,归一化数据,再学习两个可训练参数(缩放和平移)
-
-
权重衰减
-
在更新权重时增加正则项,比如权重 = 权重 - lr * (梯度 + λ * 权重)
-
-
Dropout
-
训练时随机丢弃部分神经元(置0),测试时不丢弃,权重乘以keep概率
-
5. 超参数调节
-
手动尝试不同的学习率、隐藏层大小、dropout概率、权重衰减系数
-
训练后在验证集上计算准确率,找出最优组合
6. 实验与分析
-
实现没有批量标准化的网络,训练并画出训练/验证准确率曲线
-
实现加了批量标准化的网络,比较二者性能差异
-
同理,比较有无权重衰减,有无dropout的效果
-
最后三者都加上,分析结果
总结:你可以按下面步骤做
-
准备数据和工具(numpy)
-
实现基础的五层神经网络(前向、反向传播)
-
实现批量标准化模块,能开关使用
-
实现权重衰减功能,能开关使用
-
实现dropout功能,能开关使用
-
写训练循环,支持超参数调节
-
分别跑不同配置的实验,记录训练和验证准确率
-
在Jupyter Notebook里写代码和文字分析,展示结果图表
| 网络层数配置 | 激活函数组合 | 使用技巧 | 备注 |
|---|---|---|---|
| [784, 128, 64, 32, 10] | ReLU, ReLU, ReLU | Dropout + Weight decay | 基线配置,较稳定 |
| [784, 128, 64, 32, 10] | Sigmoid, ReLU, ReLU | BatchNorm | Sigmoid 结合 BN 抑制梯度消失 |
| [784, 128, 64, 32, 10] | Sigmoid, Sigmoid, ReLU | 无特殊技巧 |
比较梯度消失的效果 |
你该怎么调试
-
绘制 loss/acc 曲线,观察收敛速度;
-
改变激活函数组合:ReLU vs Sigmoid;
-
打开或关闭 Dropout、BatchNorm、L2正则(weight decay);
-
控制 epoch 与 batch size,防止过拟合;
-
最后在测试集上评估,而不是只看训练集。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)