第二周作业:多层感知机

线性回归与softmax回归

线性回归
在这里插入图片描述
线性模型可以看做是单层神经网络

损失函数
损失函数能量化目标的实际值与预测值之间的差距。通常我们会选择非负数作为损失,且数值越小表示损失越小,完美预测时的损失为0。回归问题中最常用的损失函数是平方误差函数。
在这里插入图片描述
训练数据
在这里插入图片描述
计算在训练集 n 个样本上的损失均值(也等价于求和)

在这里插入图片描述
寻找一组参数(w*, b* )最小化在所有训练样本上的总损失
在这里插入图片描述
在这里插入图片描述
基础优化方法
在这里插入图片描述
在这里插入图片描述
注:选择学习率不能太小(昂贵)也不能太大(震荡,没有真正下降)。
在这里插入图片描述
在这里插入图片描述
注:选择批量大小不能太小(不适合并行来最大利用计算资源),也不能太大(内存消耗增加、浪费计算)。
在这里插入图片描述
Softmax回归
回归估计一个连续值,分类预测一个离散分类。
在这里插入图片描述
均方损失:
在这里插入图片描述
无校验比例:
在这里插入图片描述
关于一位有效编码:若有A、B和C三类,标号则是长度为3的向量,那么可以分别表示为001、010和100。

校验比例:
在这里插入图片描述
若X是矩阵,则softmax定义为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
损失函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
softmax代码实现
1、初始化参数模型
在这里插入图片描述2、定义softmax操作
在这里插入图片描述
注:由于使用keepdim=True,将产生形状(1, 3)的二维张量
在这里插入图片描述
注:运算使用广播机制
3、定义模型
在这里插入图片描述
4、定义损失函数
在这里插入图片描述
实现交叉熵损失函数
在这里插入图片描述
5、分类准确率
在这里插入图片描述
6、训练
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7、预测
在这里插入图片描述
简洁实现
在这里插入图片描述
在这里插入图片描述

感知机

感知机
在这里插入图片描述
二分类:-1或1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
存在的问题:感知机不能拟合XOR问题,只能产生线性分割面。
在这里插入图片描述
多层感知机
在这里插入图片描述
在这里插入图片描述
注:激活函数一定是非线性函数,否则等价于单层感知机。

激活函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注:ReLU激活函数最为常用。

多类分类增加隐藏层,使用softmax实现。
在这里插入图片描述
多隐藏层:最后一层无需激活函数,激活函数目的是防止层数的塌陷。
在这里插入图片描述
超参数:隐藏层数、每层隐藏层的大小。
在这里插入图片描述
代码实现
实现一个具有单隐藏层的多层感知机,它包含256个隐藏单元
在这里插入图片描述
实现ReLU激活函数
在这里插入图片描述
实现模型
在这里插入图片描述
训练
在这里插入图片描述
与上文对比,多层感知机损失有所降低,精度变化不大。

简洁实现
在这里插入图片描述
区别:增加ReLU激活函数
训练过程
在这里插入图片描述
问题:怎么计算多层感知机层数?图示箭头的意义?
在这里插入图片描述
答:图中多层感知机共两层,每个箭头代表一个权重。

模型选择、欠拟合和过拟合

模型选择
训练误差和泛化误差
训练误差:模型在训练数据上的误差
泛化误差:模型在新数据上的误差
验证数据集和测试数据集
验证数据集:用来评估模型好坏的数据集
测试数据集:只用一次的数据集
K-则交叉验证
使用场景:数据量不够大时
算法:①将训练数据分割成K块(K常取5或10)
②For i=1,…,K
使用第i块作为验证数据集,其余作为训练数据集
③报告K个验证集误差的均值
欠拟合与过拟合
在这里插入图片描述
在这里插入图片描述
对于中等数据集,泛化误差与训练误差的差值可以衡量过拟合欠拟合程度,目的是两者差值尽可能小。
在这里插入图片描述
代码实现
在这里插入图片描述
在这里插入图片描述
实现一个函数来评估模型在给定数据集上的损失
在这里插入图片描述
定义训练函数
在这里插入图片描述
注:模型复杂度较高,但数据不全或数据量过小时,易欠拟合;数据量很大导致过度学习误差上升时,为过拟合。

权重衰减、DropOut

权重衰退
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码实现
在这里插入图片描述
在这里插入图片描述初始化参数模型
在这里插入图片描述
定义 L2范数惩罚(核心
在这里插入图片描述
训练
在这里插入图片描述
忽略正则化直接训练 ,明显过拟合
在这里插入图片描述使用权重衰减,有好转训练误差增大,但测试误差减小
在这里插入图片描述简洁实现
区别:‘weight_decay’: wd
在这里插入图片描述
对比:若修改L2范数为:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
对比实验结果,训练数据集损失曲线平滑度降低。

DropOut
动机:一个好的模型需要对输入数据的扰动鲁棒。丢弃法即在层中之间加入噪音。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码实现
实现 dropout_layer 函数,该函数以dropout的概率丢弃张量输入X中的元素
在这里插入图片描述
测试dropout_layer函数
在这里插入图片描述
定义具有两个隐藏层的多层感知机,每个隐藏层包含256个单元在这里插入图片描述
定义模型
在这里插入图片描述
训练和测试
(双隐藏层,大小为256,训练模型相对数据集复杂度较大,dropout起较大作用)
在这里插入图片描述
对比:dropout=0
在这里插入图片描述
简洁实现
在这里插入图片描述在这里插入图片描述

数值稳定性、模型初始化和激活函数

数值稳定性

在这里插入图片描述
数值稳定性常见的两个问题:梯度爆炸和梯度消失。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

问题与感想

问题
最后一节与概率论有关的计算推理比较吃力,需要多回顾理解;实验上还不够深入,目前做的复现以及简单对比还远不够。
感想
本周学习内容,对多层感知机及其常用策略有了了解,对之后学习更复杂的网络结构打下理论基础。当然,借用李沐老师书上的一句话“纸上得来终觉浅,绝知此事要躬行”,之后应该更合理地规划学习节奏,多动手多实践。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值