
2: 多层感知机理论
🌟 欢迎来到神经网络的核心世界!
你将开启深度学习之旅的关键一步——掌握多层感知机(MLP)的理论基础!作为神经网络的基石,MLP不仅是最简单的深度学习模型,更是理解更复杂架构(如CNN、RNN)的钥匙。
📚1解释下列概念:
隐藏层,激活函数,全连接层
过拟合,欠拟合,暂退法,权重衰减
前向传播,反向传播,梯度爆炸,梯度消失
建议回答加上一些图片,多加入自己的理解,不要简单的复制粘贴
📦2回答问题:
为什么单层感知机无法解决异或问题?MLP如何解决
给定输入维度d,隐藏层维度h,输出维度o (1)参数数量是多少?(注意偏置参数)
(2)根据参数量,计算以Float32,INT8方式存储的情况下参数所占内存空间?
(3)前向传播的计算复杂度是?
比较不同激活函数:ReLU vs Sigmoid vs Tanh
(1)梯度特性对比
(2)死ReLU问题分析
(3)sigmoid的计算比较复杂,请分析在前向传播和反向传播中通常会采用什么方法简化计算?
暂退法如何防止过拟合
🔥3动手实现MLP基础架构:
class MLP(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
"""
初始化多层感知机
input_size: 输入特征维度
hidden_size: 隐藏状态维度
output_size: 输出维度
"""
def relu(self, x):
"""激活函数实现
这里只给出了relu
"""
def forward(self, X):
"""前向传播实现"""class MLP(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
"""
初始化多层感知机
input_size: 输入特征维度
hidden_size: 隐藏状态维度
output_size: 输出维度
"""
def relu(self, x):
"""激活函数实现
这里只给出了relu
"""
def forward(self, X):
"""前向传播实现"""📚4简单的MLP实验:
二分类边界:圆形数据分离
实验目标:生成内外两个圆形分布的数据点,训练MLP划分边界。
关键步骤:生成数据:内圆(半径<0.4,标签0),外圆(半径>0.6,标签1)
使用单隐藏层
可视化训练后权重对决策边界的影响
预期效果:验证简单隐藏层处理圆形边界的能力。
生成一个人造数据集
使用你自己写的MLP进行训练
def generate_circles(n_samples=1000, noise=0.05):
"""随机生成圆形数据集"""
def generate_circles(n_samples=1000, noise=0.05):
"""随机生成圆形数据集"""- 训练完成之后统计参数的分布情况(画出频率分布图)
🎉5让你的模型效果更好
深度与宽度:
分析增加深度 vs 增加宽度的效果
计算效率对比
初始化方法:
零初始化的问题
Xavier初始化原理
He初始化的优势
优化困境分析:
局部最优与鞍点问题
学习率设置策略
批量大小的影响
⚠️注意事项:
可以合理借助AI,但是不能照抄,必须要有自己的理解
提交要求
提交内容
代码文件
:将代码部分的.ipynb文件作为邮件附件,命名格式:
ml-02-姓名-学号.ipynb文档报告
:将写有这道题目文本解答的.md文件作为邮件附件,命名格式:
ml-02-姓名-学号.md将两个文件压缩成压缩包
ml-02-姓名-学号.zip提交
提交方式
邮箱:
gimmerml401@163.com主题:
2-姓名-学号
出题人:鹁霖
QQ:2046193615