Geeks_Z の Blog Geeks_Z の Blog
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)

Geeks_Z

AI小学生
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)
  • Python

  • MLTutorials

    • 机器学习基础

      • 机器学习术语
      • 单变量线性回归
      • 归一化、标准化和正则化
      • 经典网络
      • 多变量线性回归
      • 逻辑回归
      • 调试策略
      • 激活函数
      • Embedding
      • GCN
      • GAT
      • BayesClassifier
      • 距离函数
      • ReinforcementLearning
      • TransferLearning
      • 线性判别分析LDA
      • Sequence2sequence
      • Network Compression
      • 数据集
      • AI会议期刊
      • 损失函数
      • 正则化
      • 感知机
      • 机器学习奇技淫巧
    • 模型与算法

    • 模型优化

  • 卷积神经网络

  • 循环神经网络

  • Transformer

  • VisionTransformer

  • 扩散模型

  • LLM

  • PTM

  • MoE

  • LoRAMoE

  • LongTailed

  • 多模态

  • 最优运输

  • PEFT

  • 对比学习

  • Few-Shot

  • Mamba

  • TokenFormer

  • PyTorch

  • CL

  • CIL

  • FSCIL

  • UCIL

  • MMCIL

  • LTCIL

  • DIL

  • 论文阅读与写作

  • GPU

  • AINotes
  • MLTutorials
  • 机器学习基础
Geeks_Z
2024-10-11

机器学习奇技淫巧

  1. 做新模型的时候,最开始不要加激活函数,不要加batchnorm,不要加dropout,先就纯模型。然后再一步一步的实验,不要过于信赖经典的模型结构(除非它是预训练的),比如加了dropout一定会有效果,或者加了batchnorm一定会有提升所以先加上,首先你要确定你的模型处于什么阶段,到底是欠拟合还是过拟合,然后再确定解决手段。
  2. 如果是欠拟合,直接模型宽度深度增加,一般2倍递增或者数据集增强,特别在nlp领域可以用大量数据增强方式-比如,同义词替换,随机抛弃词语,句子改写,句子转译等。这些方法都试过可以,考虑增加relu,mish等作为某些层的激活函数不过在此做之前建议最好把每一层的参数打印出来,看是否符合正态分布,一般来说relu可能有奇效,but最后一层千万不要relu,因为relu可能把很多数值都干为0,所以使用relu需要慎重,如果效果严重下降,建议看看relu的参数分布。
  3. 如果过拟合,首先是dropout,然后batchnorm,过拟合越严重dropout+bn加的地方就越多,有些直接对embedding层加,有奇效。
  4. 对于数据量巨大的推荐系统的模型来说一个epoch足矣,再多就会过拟合。
  5. 做召回的同学,不要迷信专家们说的embedding做l2 norm,笔者就踩过这个坑,直接对embedding l2结果效果贼垃圾,查了半天,直接去掉l2,效果正常了。
  6. 做推荐的同学,一般特征不要直接全怼进去,最好是一个一个的加特征进行效果测试,因为有些特征可能导致模型过拟合,最好还是一个一个加
  7. 学习率最好是从高到底2倍速度递减一般从0.01开始。
  8. 对于稀疏特征多的模型采用adagrad,稠密特征多的模型用adam
  9. 召回负采样负样本效果肯定高于曝光未点击负样本
  10. 粗排用精排后topk做负样本,基本是有效果的
  11. batch size对于推荐来说32-64-128-512测试效果再高一般也不会正向了,再低训练太慢了。
  12. 对于负样本太多的数据集,测试集的loss降并不代表没有过拟合,试试看看f1或者auc有没有降低,因为有可能负样本学的爆好,所以loss降低,但是正样本凉了
  13. 对于长文本来说longformer的效果高于各种bert变体
  14. 对于图像和nlp,效果一直不提高,可以尝试自己标注一些模型经常分错的case,然后加入训练会有奇效。
  15. 对于推荐序列来说pooling和attention的效果差别真的不大,基本没有diff
  16. 对于推荐来说senet和lhuc,是深度学习领域为数不多的可以观察特征重要性的模型结构
  17. 一般不要尝试用强化学习优化,因为真的很费力气,而且效果很一般
  18. bert不要太过于相信cls的embedding能力,还是要看看它有没有做过相关任务,特别对于文本匹配场景
  19. 序列特征才用layernorm,正常用batchnorm。
  20. 推荐召回用softmax效果比sigmoid更好,意思就是召回更适合对比学习那种listwise学习方式。
  21. 参数初始化用xavier和truncated_normal可以加速收敛,但是,同样是tensorflow和pytorch用同样的初始化,pytorch可能存在多跑一段时间才开始收敛的情况,所以,如果出现loss不下降的情况,大哥请耐心一点,多跑几个epoch,当然你也可以用tensorflow实现一把,看看效果是不是一样
  22. 对于推荐系统的老汤模型,建议热启动,但是热启动大概率也是追平,小概率找到了之前没有找到的关键特征,可以超越,其他操作笔者的实验都是负向,除了热启动,而且就算热启动,如果只启动embedding层也是不行的,必须embedding+DNN全部热启动,然后仅对倒数第一层作扰动,或者类似wide&deep,新加一个结构对最后一层个性化扰动,为啥最后一层,因为,你扰动太多又负向了。
  23. 对于nlp任务,采用embedding扰动的方式有奇效,比如Fast Gradient Method(FGM)和Projected Gradient Descent(PGD)
  24. 推荐多目标任务可以考虑采用Gradient Surgery的方式,帕累托就算复杂度又高,效果也没有好很多,不推荐。
  25. Focal loss对于极大不平衡的数据集确实有奇效,其中gamma因子可以成10倍数衰减
  26. 对于embedding可视化的问题最好是先用pca降维,然后采用t-sne进行可视化,但是,对于类别很多的情况,个人建议还是肉眼抽样观察,t-sne只能对于类目不多的情况的embedding进行可视化。
  27. 显存不够用的时候,gradient checkpointing可以起到降低显存的效果
  28. 对于机器阅读任务,在bert层后加bi-attention或者coattention有奇效。
  29. 在推荐系统中,神经网络模型对于连续数值的处理是不如xgb的,所以,最好对连续数值分箱,一般等频分箱足矣,但是,个人建议还是观察数据分布,把outlier单独一箱,如果还想完美一点可以,用IV值看看分箱的优劣。

深度学习调参有哪些技巧? (opens new window)

上次更新: 2024/12/29, 13:44:37
感知机
KNN

← 感知机 KNN→

最近更新
01
ViT综述
12-29
02
Sparse-Tuning
12-27
03
DyT
12-27
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Geeks_Z | MIT License
京公网安备 11010802040735号 | 京ICP备2022029989号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式