李宏毅2021年机器学习作业2学习笔记
- 前言
- 一、问题描述
- 二、实验过程
-
- 2.1 跑助教提供的baseline
- 2.2 修改激活函数
- 2.3 Normalization
- 2.4 Drop out
- 2.5 提高epoch
- 2.6 weight_decay
- 2.7 在2.5的基础上继续提升epoch到120
- 2.8 增加模型层数
- 2.9 增大batchsize
- 三、总结
前言 声明:本文参考了李宏毅机器学习2021年作业例程,开发平台是kaggle notebook。
一、问题描述 【李宏毅机器学习|李宏毅2021年机器学习作业2(classification)实验记录】实质是一个多分类问题。
B站作业讲解视频
Kaggle地址
文章图片
文章图片
文章图片
我们可以借助于深度学习的框架(例如:Tensorflow/pytorch等)来帮助我们快速实现网络的搭建,在这里我们利用Pytorch来实现。
二、实验过程 2.1 跑助教提供的baseline
文章图片
Kaggle得分: 0.68869 0.68917
2.2 修改激活函数 操作:将softmax改成ReLU
结果:训练loss有所降低,acc有所增加 过拟合
Kaggle得分:0.69913 0.69891
2.3 Normalization 操作:对每个线性层激活函数后加入BatchNorm1d
结果:loss有所降低,acc有所增加
文章图片
Kaggle得分:0.69998 0.70150
操作:对每个线性层激活函数前加入BatchNorm1d
结果:在loss和acc上不如前者
文章图片
Kaggle得分:0.70116 0.70284(略优于前者)
2.4 Drop out 操作:选择2.3中第二种模型的基础上,对除最后一个线性层外其他线性层加入dropout(0.2)
结果:
文章图片
Kaggle得分:0.72448 0.72586(优于前者)
2.5 提高epoch 操作:在2.4的模型上提高epoch(20->50)
结果:
文章图片
Kaggle得分:0.72761 0.72809(略优于前者)
2.6 weight_decay 操作:在2.4的模型上加入weight_decay(0.001)
结果:
文章图片
Kaggle得分:0.71481 0.71620
说明weight decay效果不好
2.7 在2.5的基础上继续提升epoch到120 结果:
文章图片
Kaggle得分:0.72839 0.73008
2.8 增加模型层数 操作:在2.7的基础上增加两层线性层
结果:验证集loss想先降低后上升,过拟合。在epoch13时,验证集loss最低。
文章图片
文章图片
Kaggle得分:0.73160 0.73286
2.9 增大batchsize 操作:在2.8的基础上增加batchsize(64->128), epoch换成20
结果:
文章图片
Kaggle得分:0.73158 0.73216
三、总结
文章图片
Optimizer
使用Adam
激活函数
用ReLU,效果比sigmioid好得多。
network架构
- 加上batch normalization,加速收敛,为避免batch不能代表数据分布,将batch size调大
- 加上dropout,虽然batch normalization一定程度上可以替代dropout的效果,但还是有使
- 用 L1/L2正則,避免overfitting
代码链接:
https://github.com/Wangdaoshuai/LHYML2021-Spring
推荐阅读
- sklearn|UCI Iris数据集K近邻方法建模预测鸢花种类
- 深度学习|基于pytorch用yolov5算法实现目标检测与分割
- 神经网络|如何从频域的角度解释CNN(卷积神经网络)()
- 人工智能|ReadPaper的在线论文阅读笔记神器
- 算法|DeepMind联合UCL,推出2021强化学习最新课程
- 人工智能|收藏 | 计算机顶会论文投稿指南
- AI算力加速之道
- 人工智能|英媒(人工智能终于接近人类智能了吗())
- ui|广工工作室各方向学习指南