前言

在这个暑假我从头到尾把李宏毅机器学习的课后作业做了一遍,之前看了一遍课程,对相关知识都有一些了解,觉得这就够了,准备开始我的研究生生涯,奈何暑假在家一直没有任务。但也要自学,自己给自己布置任务。李宏毅的课后作业实在是一个很好的练手项目,而且要真正起到效果的话,不能浅尝辄止,每一个任务的目标一定是过boss baseline。
我现在任务已经完成得差不多了,临近开学,趁着这段时间把这个暑假自己的一些收获进行总结,我发现,如果不进行总结的话,这些等于没学,到时候应用的时候又会忘了。
我的分享会偏向于代码方面,关于如何修改代码能让模型的结果有所提升,因此对于任务的介绍部分我不会投入太多的精力,这部分分享一下几个链接,大家可以去这里找到课程的详细信息以及每节课课后作业助教的介绍。
2021课程官方地址
2022课程官方地址
B站搬运视频地址
另2022和2021的homework非常像,所以我是选择其中一个进行做的,我会注明我的结果是基于哪一年的数据和要求的。

HW042021数据

代码

任务描述:Speaker Classification,给你一段声音信号,让你判断出这个声音是哪个人发出来的,当然这个声音信号都是处理好的,关于声音的数据处理不多阐释,最终得到的声音信号用向量表示为:batch_size * seq_length * dim ,本次任务数据处理由助教帮忙处理好了,seq_length=512, dim=40
然后人的类别及label 共有600类。
simple baseline:助教的代码用了一层TransformerEncoderlayer,再加上pernet和pred_layer,模型很简单。

下面来说优化的思路:

  1. 只有一层的TransformerEncoderlayer复杂度可能是不够的,我们知道模型越大它越容易拟合,同样的结构大模型就是比小模型效果好,(这一部分理论可以看李宏毅课程网络压缩部分大乐透假说)。所以我们使用nn.TransformerEncoder设置numlayer为3,增加模型的复杂度。
  2. pernetpred_layer的存在很有必要,对模型的结果起着重要的左右,助教代码的参数设置并不是太好,首先是prenet中的d_model 参数助教设置为80,有点小了,d_model决定了输入到TransformerEncoder中的向量尺寸,而最后要预测的维度为600,80->600跨度有点大了,这里设置d_model为224,对于pred_layer来说,使用Batchnorm1d,并且去掉第一层直接经过一层得到预测结果就行。
  3. 使用上述技巧再训练得更久一点,就可以过2021的Medium baseline: 0.90547
  4. 要过Hard baseline: 0.95404根据助教的提示,要使用ConformerBlock代替nn.TransformerEncoder,Conformer就是基于Transformer但要比Transformer更强的一个模型,具体可以看论文:Conformer
    最终的模型结构如图:

    提交kaggle结果如下:

李宏毅 HW4 hard baseline 解析相关推荐

  1. 天池大赛-心跳信号分类预测:赛题理解与baseline解析

    比赛地址:零基础入门数据挖掘-心跳信号分类预测 参考资料:由DataWhale开源的学习资料 1. 赛题简介 本次新人赛是Datawhale与天池联合发起的0基础入门系列赛事 -- 心跳信号分类预测. ...

  2. 李宏毅机器学习 hw1 boss baseline 解析

    hw1 代码 任务描述 任务很简单,就是一个回归问题,给你过去四天新冠肺炎感染人数的相关情况,让你预测最后一天的新冠感染人数. 上图展示了特征的解析特征共有117维,首先是37维的关于州的one-ho ...

  3. 李宏毅机器学习 hw2 boss baseline 解析

    hw2 代码 任务描述: Multiclass Classification,让你判断给定的向量是属于哪一个phoneme,由于一个phoneme可能包含好多个向量,所以要对数据进行处理,对向量进行拼 ...

  4. 李宏毅hw4,训练+调优

    作业简述 本次作業為 Twitter 上收集到的推文,每則推文都會被標注為正面或負面 数据集: labeled training data :20萬 unlabeled training data : ...

  5. 李宏毅2022机器学习HW2解析

    准备工作:去课程github下载原始代码,kaggle下载数据集.或者关注本公众号,下载代码和数据集(文末有方法).解压数据集,出现libriphone文件夹,将文件和代码放到同一目录下. kaggl ...

  6. 李宏毅老师机器学习选择题解析

    机器学习选择题解析加整理 项目说明,本项目是李宏毅老师在飞桨授权课程的配套问题 课程 传送门 该项目AiStudio项目 传送门 仅供学习参考! 三岁出品必是精品! 整理内容源于李宏毅老师机器学习课程 ...

  7. 李宏毅2022机器学习HW10解析

    准备工作 作业十是黑箱攻击(Blackbox Attack),完成作业需要助教代码和数据集,运行代码过程中保持联网可以自动下载数据集,已经有数据集的情况可关闭助教代码中的下载数据部分.关注本公众号,可 ...

  8. 李宏毅2022机器学习HW5解析

    准备工作 作业五是机器翻译,需要助教代码,运行代码过程中保持联网可以自动下载数据集,已经有数据集的情况可关闭助教代码中的下载数据部分.关注本公众号,可获得代码和数据集(文末有方法). 提交地址 这次作 ...

  9. 李宏毅机器学习作业10——Adversarial Attack,FGSM,IFGSM

    理论部分参见​李宏毅机器学习--对抗攻击Adversarial Attack_iwill323的博客-CSDN博客 目录 目标和方法 评价方法 导包 Global Settings Data tran ...

最新文章

  1. [转] 先验概率and后验概率
  2. window 注册表五大类
  3. gulp build
  4. java 网页正文抽取算法_网页正文抽取算法 ContentExtractor
  5. python3 beautifulsoup 模块详解_关于beautifulsoup模块的详细介绍
  6. java学习笔记—标准连接池的实现(27)
  7. sklearn.preprocessing.PolynomialFeatures的使用
  8. Android系统源码学习步骤
  9. JDK9的32位版本下载
  10. keytool条目_keytool常用命令
  11. Android开发环境
  12. 逆向工程是什么意思(逆向工程是抄袭技术吗)
  13. java接收二进制数据,java接口接收二进制流
  14. 2015~2020年中国房价走势
  15. 【转】操作系统Unix、Windows、Mac OS、Linux的故事
  16. 深度学习词汇表(一)
  17. actor 模型原理 (一)
  18. 『数据分析』使用python进行同期群分析
  19. Ali-Perseus(擎天):统一深度学习分布式通信框架 [弹性人工智能]
  20. Windbg串口联调

热门文章

  1. java中的7种单例模式
  2. 关于Linux中网卡Teamd(分流容灾)的一些笔记
  3. 基于PHP+小程序(MINA框架)+Mysql数据库的家政服务预约小程序系统设计与实现
  4. MacOS VSCode 常用快捷键配置
  5. html4是什么时候发布的,小米MIX4发布时间已确定 小米MIX4什么时候发布2021
  6. Python仿银行系统(可以保存用户数据)
  7. 强化学习系列 - 刘建平Pinard
  8. 有趣的python项目 国外_推荐 10 个有趣的Python练手项目
  9. 依赖倒置原则——举例说明Java设计模式中的依赖倒置原则
  10. CheatEngine 多级指针 基址、偏移量、拓扑分析图