0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详细介绍算法效果调优的流程

深度学习自然语言处理 来源:CS的陋室 作者:机智的叉烧 2022-08-24 09:55 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

效果调优应该是算法工程师最基础的工作了我们需要对当前的现状有一定了解后,提出有效的效果优化方案,为指标服务,最终达到指标提升的目标。但是,效果调优并不是一个容易的事,为了让大家能更快找到有效的解决方案,完成优化任务,这里给大家介绍一下我的流程和思路。

算法效果调优的流程

在开始之前,先和大家说清为什么要有这个流程。所谓流程,在明确的情况下,能让大家更简单直接地执行,执行过程中,更不容易遗漏关键点,流畅地流程能让我们更快更有目的性地做事,所以有这个流程还是很重要的。效果调优主要是下面几个流程,我详细介绍下。

明确目标和现状

一个模型也好,一个算法模块也好,他都有自己的功能,他执行的怎么样,有哪些问题,距离预期差多远,这都是我们要在最开始明确的,一般情况很简单,就是看指标,例如准确率和召回率,复杂的,还有一些业务角度的指标,我们必须明确,在开始执行,为了方便大家观测,这里列举出需要在这步里回答的问题,供大家参考,能回答这些问题,那可以开始进行下一步。

这个模块的主要功能是什么,预期的指标是多少,计算和抽样逻辑是否具有合理性(一定要注意,有些时候出现的问题就在抽样和指标上,这个错了,后面的优化无从谈起)。

当前模块的指标是多少,距离目标还差多少。

具体使用的技术方案是什么,这里有没有做什么权衡和妥协,这些妥协有没有解开的可能。

上面的问题,如果能够很清楚地回答,说明你对这个问题、模块等都非常明确,在这个前提下去做效果调优,才是有效的。

分析和定位问题

很多新人很容易跳过这个步骤,但这往往是最重要,而且是最考验算法工程师功力的部分。

分析和定位的过程,核心目标是关注这几个问题:

确定当前方案的问题点在哪里,哪些位置或者哪些case没有解决好。

看集中性和case分布,哪些是重点问题,需要优先考虑哪些问题。

评估问题的难度和解决率,从而了解预期的收益。

这里的分析,我喜欢把它分为两个视角,一个是宏观,另一个是微观。前者更关注整体数据上的问题,通过多个角度的统计,来发现目前数据和模型的问题,例如在多分类场景,统计各个类目的准确率、召回率甚至各个类目的数据占比,找出类目短板,对类目短板进行针对性提升是可以很大程度上提升总体指标的;后者,则是进行case分析,找出bad case的一些共性,并对共性问题进行针对性解决,当然这里也会考验到不同角度的bad case抽取,这个可以结合前面宏观的分析结论来抽样处理。

解决方案的制定

有了前面信息的支撑,我们是可以开始进行效果调优了,然而,用什么方法来解决,也是一个问题,如何去找最合适的方法来解决我们上面分析出的问题。

首先,我们要知道,有哪些可行的解决方案。如果是只会换模型,调参数,那招数属实有点少,如果是这种情况,我们就应该去调研,多去看看业界和科研界的主要方案(平时,也需要),另一方面,我们也看看简单地,从样本、模型、规则上是否有快速的解决方案,增加手里能打的牌,才有可能有好牌,只有储备的够多,才更容易从中找出好东西来解决问题。

第二步,就是方案的选择,要从众多方案中,找出最优的方案,这里大家需要考虑这几个问题:

方案对问题的解决程度是否可以明确,看能解决当前多少的问题。

方案的上下限在哪,除了解决问题本身外,还有没有别的问题可以解决,或者带来哪些伤害,换言之,方案的优缺点是什么,这点要明确。

方案需要投入多少的时间、人力、机器、数据等资源。

这些问题大家平时多少都会考虑到,但是并不一定全,尤其是后者,玩NLP的多少都会手痒试试BERT,包括我在内,但是理性思考后其实很可能不会当做一个优先级较高的方案了,尤其是问题都很明确的情况下。

调优的难点问题

说到调优,其实难度比较大的,是这么几个位置。

首先,是问题的定位难,我们往往很容易通过直观的指标知道我们的方案是有问题,有一定空间的,但是,具体突破口在哪里,这个会很困难。这里给大家几个建议吧:

多看case,好的坏的,都多看看,理解业务里面常见的用例,只有理解,才能更多地发现问题。

当然,我们也可以多看看很多文章,论文的、技术分享的等等,很多文章都会去聊他们面临的问题以解决方案,这些问题其实给我们提供思路,例如“我们会不会也遇到和他们一样的问题”。

然后,是解决方案的储备问题。方案分两种,一种是针对性方案,根据明显的问题我们可以想到一些快速的解决方案,这个往往取决于我们对业务的理解能力和方法的熟悉程度。第二种,是一些长期的,依赖储备的方案,很多业界的方法会给我们很多思路,这些思路的内化能让我们很快从中找到解决方案。无论是前者还是后者,其实都很依赖我们的平时积累,这个积累不仅在于量,还在于质,也就是深度,对方案理解的越清楚,越能看清本质,我们用起来其实会更加得心应手。

第三点,是技术方案的权衡。权衡是根据我们需要面临的技术环境的,例如数据、机器、时间、人力等,有的方案可能可以很好的解决问题,但是会花费很多成本,例如NLPer最喜欢的预训练模型,他是很依赖机器的,后续即使效果真的会有提升,也要考虑到性能和机器的问题最终可能上不了线就功亏一篑了。这个其实挺吃经验,权衡这个能力是需要经过项目的历练,逐步形成的,坑才多了才能把坑绕过,这点需要大家在进行项目的过程中多思考多总结。

调优能力

上面聊了很多有关调优流程的东西,但是,调优本身的能力要求还是比较高的,这里我整理了一些有关调优能力的能力项和成长的阶段,看看对大家有没有什么帮助,当然,我自己的能力也没到很高的水平,持续学习和成长吧。

首先是执行力,在问题都给清楚了,解决方案也明确了,这个时候能编码实现,这个应该是最基本的能力了。

第二层就是独立完成的能力。

首先,能通过多种分析手段,诊断出现有方案的问题。

第二,就是解决方案的提出。这里背后,比较重要的事解决方案和技术的储备。这点是需要长期积累的,一方面是对数据、场景的熟悉,另一方面是对业界和科研界的技术的了解,如果储备不够,很多问题绝对是解决不了的。

第三层,其实除了独立完成以外,能有整个项目的视野。

现状的理解和未来的规划,能带着规划去设计解决方案。

能够跳出问题,结合业务等因素来解决问题和甚至到框架和系统的设计。



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4807

    浏览量

    98569

原文标题:谈谈效果调优的流程和能力

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Nginx高并发连接实战手册

    Nginx 的高性能源自其事件驱动架构。与 Apache 的"每连接一线程"模型不同,Nginx 使用单线程事件循环处理数千个并发连接。理解这套架构是的前提。
    的头像 发表于 03-16 15:28 437次阅读

    算法工程师需要具备哪些技能?

    、链式法则等。应用场景:梯度下降优化算法、反向传播计算等。 优化理论核心内容:凸优化、非凸优化、拉格朗日乘数法等。应用场景:模型参数、资源分配问题等。 编程语言Python:主流选择,用于数据处理、模型
    发表于 02-27 10:53

    解锁Zephyr实时操作系统深度能力

    可以说,代码编写只是项目开发的起点,而随之而来的资源分析与性能才是确保系统稳定可靠的关键环节。
    的头像 发表于 01-30 09:16 6270次阅读

    Linux系统内核参数实战指南

    Linux 内核参数是系统性能优化的核心环节。随着云原生架构的普及和硬件性能的飞速提升,默认的内核参数配置往往无法充分发挥系统潜力。在高并发 Web 服务、大数据处理、容器化部署等场景下,合理的内核参数调整可带来 30%-200% 的性能提升。
    的头像 发表于 01-28 14:27 720次阅读

    实战RK3568性能:如何利用迅为资料压榨NPU潜能-在Android系统中使用NPU

    《实战RK3568性能:如何利用迅为资料压榨NPU潜能-在Android系统中使用NPU》
    的头像 发表于 11-07 13:42 1084次阅读
    实战RK3568性能<b class='flag-5'>调</b><b class='flag-5'>优</b>:如何利用迅为资料压榨NPU潜能-在Android系统中使用NPU

    天翼云基于开源欧拉的智能实践

    在数字经济加速渗透的当下,操作系统作为底层基础设施的核心,其稳定性与适配性直接关系到行业数字化进程。随着CentOS停止维护,国内企业面临操作系统迁移的紧迫需求,天翼云基于开源欧拉研发的CTyunOS,不仅成为这一迁移浪潮中的关键解决方案,更通过智能实践,为数字经济筑
    的头像 发表于 10-17 11:04 817次阅读

    音频DSP设计与应用

    库,克服了物理扬声器的限制,提供卓越的音频性能和专业级解决方案。 量身定制的专业工具具有直观的调试界面,可简化项目开发: 在整个 DSP 系列中,新唐科技采用了 MaxxBass 智能低音增强
    发表于 09-05 07:45

    HarmonyOSAI编程智慧

    DevEco Studio提供智慧能力,支持通过自然语言交互,分析并解释当前实例或项目中存在的性能问题,帮助开发者快速定位影响性能的具体原因。该功能从DevEco Studio 6.0.0
    发表于 09-01 15:15

    HarmonyOS AI辅助编程工具(CodeGenie)智慧

    DevEco Studio提供智慧能力,支持通过自然语言交互,分析并解释当前实例或项目中存在的性能问题,帮助开发者快速定位影响性能的具体原因。该功能从DevEco Studio 6.0.0
    发表于 08-14 11:12

    Linux网络性能方案

    在当今高并发、大流量的互联网环境下,网络性能往往成为系统的瓶颈。作为一名资深运维工程师,我在生产环境中遇到过无数次因为TCP/IP参数配置不当导致的性能问题。今天分享一套完整的Linux网络性能方案,帮助大家彻底解决网络性能瓶颈。
    的头像 发表于 08-06 18:01 1500次阅读

    Linux内核参数方案

    在高并发微服务环境中,网络性能往往成为K8s集群的瓶颈。本文将深入探讨如何通过精细化的Linux内核参数,让你的K8s节点网络性能提升30%以上。
    的头像 发表于 08-06 17:50 1174次阅读

    Linux系统性能方案

    关键要点预览:本文将深入解析Linux系统性能瓶颈的根本原因,提供可直接落地的方案,让你的系统性能提升30-50%!
    的头像 发表于 08-06 17:49 1078次阅读

    MySQL配置技巧

    上个月,我们公司的核心业务系统突然出现大面积超时,用户投诉电话不断。经过紧急排查,发现是MySQL服务器CPU飙升到99%,大量慢查询堆积。通过一系列配置和SQL优化,最终在30分钟内恢复了服务。
    的头像 发表于 07-31 10:27 816次阅读

    Nginx在企业环境中的策略

    Nginx作为现代互联网架构中最重要的Web服务器和反向代理服务器,其性能对企业级应用的稳定性和效率至关重要。本指南将从运维实践角度出发,详细介绍Nginx在企业环境中的各种
    的头像 发表于 07-14 11:13 796次阅读

    手把手教你如何Linux网络参数

    在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃。本文基于真实案例分析,从参数解读、问题诊断到优化实践,手把手教你如何Linux网络参数,支撑百万级并发连接。
    的头像 发表于 05-29 09:21 1198次阅读