李宏毅2021年机器学习作业2(classification)实验记录

李宏毅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。

一、问题描述

实质是一个多分类问题。
B站作业讲解视频
Kaggle地址
李宏毅2021年机器学习作业2(classification)实验记录_第1张图片
李宏毅2021年机器学习作业2(classification)实验记录_第2张图片
李宏毅2021年机器学习作业2(classification)实验记录_第3张图片
我们可以借助于深度学习的框架(例如:Tensorflow/pytorch等)来帮助我们快速实现网络的搭建,在这里我们利用Pytorch来实现。

二、实验过程

2.1 跑助教提供的baseline

李宏毅2021年机器学习作业2(classification)实验记录_第4张图片
Kaggle得分: 0.68869 0.68917

2.2 修改激活函数

操作:将softmax改成ReLU
结果:训练loss有所降低,acc有所增加 过拟合
Kaggle得分:0.69913 0.69891

2.3 Normalization

操作:对每个线性层激活函数后加入BatchNorm1d
结果:loss有所降低,acc有所增加
李宏毅2021年机器学习作业2(classification)实验记录_第5张图片
Kaggle得分:0.69998 0.70150

操作:对每个线性层激活函数前加入BatchNorm1d
结果:在loss和acc上不如前者
李宏毅2021年机器学习作业2(classification)实验记录_第6张图片
Kaggle得分:0.70116 0.70284(略优于前者)

2.4 Drop out

操作:选择2.3中第二种模型的基础上,对除最后一个线性层外其他线性层加入dropout(0.2)
结果:李宏毅2021年机器学习作业2(classification)实验记录_第7张图片

Kaggle得分:0.72448 0.72586(优于前者)

2.5 提高epoch

操作:在2.4的模型上提高epoch(20->50)
结果:李宏毅2021年机器学习作业2(classification)实验记录_第8张图片
Kaggle得分:0.72761 0.72809(略优于前者)

2.6 weight_decay

操作:在2.4的模型上加入weight_decay(0.001)
结果:李宏毅2021年机器学习作业2(classification)实验记录_第9张图片

Kaggle得分:0.71481 0.71620
说明weight decay效果不好

2.7 在2.5的基础上继续提升epoch到120

结果:
李宏毅2021年机器学习作业2(classification)实验记录_第10张图片
Kaggle得分:0.72839 0.73008

2.8 增加模型层数

操作:在2.7的基础上增加两层线性层
结果:验证集loss想先降低后上升,过拟合。在epoch13时,验证集loss最低。李宏毅2021年机器学习作业2(classification)实验记录_第11张图片李宏毅2021年机器学习作业2(classification)实验记录_第12张图片
Kaggle得分:0.73160 0.73286

2.9 增大batchsize

操作:在2.8的基础上增加batchsize(64->128), epoch换成20
结果:
李宏毅2021年机器学习作业2(classification)实验记录_第13张图片
Kaggle得分:0.73158 0.73216

三、总结

李宏毅2021年机器学习作业2(classification)实验记录_第14张图片

Optimizer
使用Adam

激活函数
用ReLU,效果比sigmioid好得多。

network架构

  1. 加上batch normalization,加速收敛,为避免batch不能代表数据分布,将batch size调大
  2. 加上dropout,虽然batch normalization一定程度上可以替代dropout的效果,但还是有使
  3. 用 L1/L2正則,避免overfitting

epoch太多不一定好,如果不保存最优模型的话,最终结果可能严重的过拟合。

代码链接:

https://github.com/Wangdaoshuai/LHYML2021-Spring

你可能感兴趣的:(李宏毅机器学习,机器学习,pytorch,深度学习)