• 【小笔记】面对一个没搞过的任务,如何选择合适的算法模型?


    【学而不思则罔,思而不学则殆】
    9.28
    在这里插入图片描述

    1.确定问题定义

    确定要解决的问题是一个什么类型,在算法中有没有一个专业的任务名定义它,确定了问题类型就明确了问题解决方向。
    有时候我们要解决的问题可能有多种解决问题的角度,此时可能就会对应多个任务类型。
    举例:
    实体抽取是知识图谱中的一个任务,可以将其视为序列标注任务,也可以将其视为一个阅读理解任务。
    有时候待解决的问题可以作为一个复杂的任务,也可以拆分为多个子任务
    举例:
    实体抽取即可以作为一个完整的任务,也可以拆分为实体边界识别和实体类别分类两个子任务;知识抽取可以作为一个实体-关系联合抽取任务,也可以拆分为实体抽取和关系抽取两个任务。

    可以将自己的问题在网上进行搜索,以确定问题定义,最好是找到与场景无关的,更基础的问题定义。
    举例:
    要做一个文本的情感分类任务,按情感分类任务去查资料可以,但是更建议按文本分类任务去查资料更好,能够获取到更多的模型解决方案。

    2.调研baseline模型

    确定了问题定义,就去收集它的强baseline模型。多看看网上的资源,比如按“文本分类 baseline”进行查找,在知乎,CSDN,github上都能找到一些资料,多看几篇后,差不多就会有一个初步的认知,至少能获取到一些经典热门的baseline,若想获取到更新更强的baseline模型,则需要查看论文或paperwithcode进行查找。
    以文本分类任务为例,通过查资料,会发现fasttext和bert被谈及很多,都可以作为baseline,当有多个模型可供选择时,怎么选?
    一种是按照先简后繁的原则,优先选择轻量级的,能快速跑起来看到效果的;一种是按照选新不选旧的原则,即不要选择过时的baseline,选择比较新的。
    先用简单模型跑通baseline是非常明智的决定,一方面确定基准,另一方面建立信心。而不是一来就考虑用最牛最复杂的模型,这会花费更多成本。‌

    3.模型优化

    ‌无论是简单的模型还是复杂的模型,都需要优化,且约简单的模型对调参的技巧要求越高,再优化时同样采用先简后繁原则进行模型优化,优先对模型进行调参以提高模型性能,这是一种低成本优化。
    当调参后性能无法提升时,则考虑从数据量和模型复杂度连个方面进行高成本优化。

    4.增加数据

    在模型优化过程中,先用小数据集进行验证,然后不断扩充数据(可以的话),在达到一定数据量后发现性能瓶颈时,再考虑更换模型。
    数据决定了算法的上限,当给定的样本数据数量都比较多时,简单如fasttext,也能获得和bert类模型差不多的效果。

    5.魔改或更换模型

    除了数据,对模型也可以进行适当的修改以更匹配自己的业务场景,比如修改损失函数,修改模型对结构等,当然,这个对技能要求比较高,需要非常了解用的模型和任务特点。
    除此外,还可以考虑换模型,比如将bert-base换成roberta,Albert,ERNIE等改进的模型。

    6.小结

    如何选择合适的算法模型?
    确定问题类型,找到强baseline模型,从简到易优化模型,先增数据,后改模型。

  • 相关阅读:
    Java8实战-总结24
    JAVA随机数真的随机吗?
    Linux文件系统及命令 | 实用操作指令汇总
    Nmap介绍与安装
    hologres基础知识一文全
    leetcode 1412 查询成绩处于中游的学生(postgresql)
    自动化测试框架pytest命令参数
    做现货黄金分析师的意见重要吗?
    关于Maven中使用idea发布java项目的步骤:
    Python+高光谱数据预处理-机器学习-深度学习-图像分类-参数回归
  • 原文地址:https://blog.csdn.net/xiangxiang613/article/details/133377624