最近冠状病毒肺炎的事情,在家里宅了好久,想想自己之前想要整理的笔记还有很多,正好补补功课,加之 知乎上面风格变化的有点大,有点适应不了,于是打算将自己在知乎上的文章也迁移到简书上,算是一个笔记和汇总。
这个文章是我在知乎上 关于 《机器学习如何避免「只是调参数」 》的一个回复,这里放到这个笔记里记录学习一下。文章最开始还是 2018 年末写的,当时 AI 落地还是正在兴起时候,笔者也有幸深度参与一些 大中小型的NLP 落地的项目。总结一下经验并记录下来。
坦白讲现阶段 NLP 落地的场景以及 NLP 能力能力边界还是比较有限的,这也导致了使用单一算法能力可以解决的问题很有限,一度让 AI 落地成为“鸡肋”。
最后发现 AI公司的核心竞争力, 其实不是算法,而是如何定义客户的业务问题并可以将自己的产品、能力和客户的场景结合,打造真正可以解决问题、可用、可售卖的解决方案。是 “技术+产品+咨询+服务” 的综合能力的体现,这也是一家 AI 公司或者大数据公司服务的核心竞争力。 这个话题比较大,以后有时间在整理一下,希望有机会讨论。
以下是原回答:
人工智能落地是未来几年很有潜力的一个方向,一方面金融机构、传统企业、互联网已经积累了大量的数据,尤其是大量的文本类数据,同时很多人工的工作就是针对文本来进行的,所以这个需求是实际存在的 ,同时技术层面AI技术的成熟,和与之配套的工程能力的发展,也为了人工智能落地提供更大的想象空间和应用场景。
真正让笔者决心投入进来这个方向的原因其实很朴素,笔者只是觉得,现阶段的AI技术已经可以切实的解决部分客户的问题,AI在这些特定问题下,确实可以提供以前传统方法无法完成的效果。
笔者眼中的机器学习定位是提供一个解决问题的有力武器。所以本人的回答更多的是思考如何使用机器学习解决实际问题,如何在现实环境中落地,并为客户带来价值的角度,希望不算偏题。
以下简单罗列,待日后慢慢补充完善。
(1)不要小瞧调参数(算法原理,落地调参数经验)
调参数、经验值:调参数是机器学习无法避免的环节,同时一个会调参数的算法工程师效率几倍于新手不止
了解算法原理:如何调参呢,了解原理是必须的,这个不必拘泥于长篇大论的数学推导,但是如果说数学不重要,也确实不负责任,中庸的讲,能够口述每个模型的算法原理,关键细节要吃透,不同场景下,几个关键参数要搞的比较透彻明了
性能,数据,模型效果之间的一个妥协:模型效果好不好现在看极大的倚重数据的质量和数量,特别是标注数据的质量。现阶段落地还是以有监督学习为主,那么标注语料的稀缺是很致命的。当大量数据给到算法工程师后,是不是模型搞得越精细越好呢,也不尽然,用户实际使用的是产品,只是这个产品中的一些核心模块采用了AI,机器学习的技术,但是客户对于产品的性能,准确率,甚至是结果展示的友好性都是有严格要求的。这个可以单独展开一个篇幅来讲。后面会进一步介绍。
(2)不只是调参数,还要控制标注(有监督方式)
模型准不准,和用户的标注质量息息相关:落地感受最深的感受就是,很多时候,模型调了半天,远不如增加标注数据提升效果来的明显。而模型效果不好,很多时候排查的原因是因为数据标注的就有问题,标注的结果就是我们模型学习的答案,所以标注数据质量如何,直接影响模型效果。笔者了解,在国内,一些ai公司,他们的标注员就切实的背负着部分的模型的指标压力,这种方式确实是有一定合理性的。
如何说服用户标注,培训如何标注: 估计会有部分人疑问,这个标注的事情难道也是让用户来做,一般ai公司不是都有类似的职位吗,现实中落地,客户出于数据安全考量,或者客户备考的业务场景需要很多的业务知识,一般的数据标注公司无法处理,都很难避免需要客户的专业的业务人员来标注。所以结合实际解决方案,给出最佳的标注方式,也是一种至关重要的能力。当然最理想的情况,当然是乙方自己就是深挖特定领域的资深服务方,有一套来之既战的产品。但是对于现阶段,大多是的场景下恐怕还没法做到。
如何最小化客户投入,换取最大的对用户可见的回报:既然上面谈到了用户的标注,大的客户,还涉及很多的数据安全,不同业务系统的数据打通,这些都是客户宝贵的资源,都是客户投入的实实在在的钱,时间,人力。那么提供一套让用户投入产出比最高的方案就十分重要。而解决方案的核心都是为了最终的核心算法模型服务的,所以这个责任,搞机器学习的专家们,和算法工程师们恐怕无论如何都是要承担部分甚至大部分责任的,这个能力要求就是很全面的了。
(3)需要协助明确 数据打通,业务场景梳理等工作
从用户的角度思考机器学习在具体场景中的定位:首先必须澄清一点,这部分工作是为了机器学习的最终落地所做的必要的步骤。同时从用户角度来讲,数据打通,流程梳理,场景细化等才是核心,特别是大型客户,人家的核心业务,支撑公司生命线的业务才是核心,而AI对于他们是一个尝试,是一个有着很大潜在价值的新尝试。说到底很多时候还是提升已有的核心业务的。
从机器学习落地的角度给出协助落地方案制定:落地过程中,机器学习模型需要什么的数据,要想对这个业务场景建模,你需要对接那几个上游系统,你身为一个算法工程师怎么定义这个问题,决定了客户宝贵的人力和时间的投入,同时一旦方案确定后的再修改(由于各种不可控因素,甚至有可能就是你第一时间没有考虑清楚,再或者之前的方案效果不及客户预期),如何最小化双方的损失,最大化收益,这都是核心机器学习算法工程师或者技术负责人需要承担的压力,所以说这个还只是调参吗?
(4)领域知识在实际落地过程中至关重要
特征工程:领域知识,在实际落地中,是特别特别宝贵的。从单个项目而言落地过程中由于标注数据的缺乏,甚至是生数据本身的缺乏都会严重影响项目最终的落地。但是数据一直是客户核心的资产,尤其是现在客户也意识到了数据本身潜在的巨大价值。那么出于数据安全,或者投入成本的考量,用户落地过程中都会控制自己人力投入,那么为了最终落地,特定的领域知识就是很重要。建模的角度来说,领域知识有利于特征工程的创建。可以支持在有限数据的情况下,做出一定的效果,增强客户的信心,同时也促进了客户的配合力度。
机器学习产品化:从AI产品化的角度来讲也是特别重要的。有了领域知识,如果还能搞到一些公开语料,那么对于细化产品是受益无穷的。AI领域,随着机器学习相关技术的成熟,核心竞争力必然会从模型算法倾向到数据,领域知识,最后必然体现在产品化上。客户买的不是某些技术,而是产品。
业务敏感性:说到产品化,那么机器学习算法工程师,是不可或缺的。这就无形之间要求算法工程师懂场景,产品,用户行为,或者要求产品经理,BA懂得机器学习。这个门槛真的是很高很高。
(5)抽象出要解决的问题,划清楚算法模型的边界,同时对于具有突破性潜质的技术持续关注
清楚模型能做什么很重要,清楚模型处理不了的情况,同样重要:现阶段很多新的高大上的技术,在实验室环境是可以跑一个很好的结果的,但是这些模型具体在实际的业务场景表现如何,身为一个机器学习的从业者应该是有一个基本的了解。
算法人要有业务敏感性:如果是自己所在的细分领域,那更应该时刻关注,并且真正的验证,给出一个负责任的评估。如果长期在一线的机器学习工程师,也要求一定的业务敏感性,以及对新技术可能对已有问题有哪些影响,要有一个敏锐的嗅觉。将技术和实际场景结合,是一个定位为落地的机器学习工程师义不容辞的责任。
抽象出问题:不只是机器学习,对于每一个算法工程师,最重要的一部分工作内容就是抽象出要解决的问题。而问题的抽象决定了客户的问题实际上是机器学习解决,还是经典的算法就可以解决,甚至本身就是一个纯工程性的流程类的项目。因为很多时候,客户是不清楚实际的问题的根源,更很难判断哪些是AI,或者机器学习可以处理的问题,哪些是管理流程类问题。当然一般大型企业是有专业的BA(Business Analyst)来处理的。但是现阶段对于AI落地有经验的BA还是很稀缺的,这个时候,机器学习工程师是需要协助甲方的BA,业务方,乙方的项目技术负责人(如果不是算法工程师本人),项目经理来梳理出问题。
(6)机器学习需要一些联想能力和想象力
了解机器学习不同的领域,增加广度:机器学习不同领域很多思想是可以借鉴的。比如之前文本处理时候,pdf的表格一直是难点,痛点。最近很多公司尝试将CV(计算机视觉)相关的技术引入进来,配合NLP能力,确实出现了很多亮眼的效果。这个对笔者的触动就很大。当然由于笔者自身积累有限,也就不展开讲了,只是在这里抛砖引玉。
小结:
这里笔者发散的东西比较多,而且确实自身和上面所列的要求也是差距蛮大的,很多问题这里看只是简单的几个字,但是实际落地项目过程中碰到的时候,真的是压力山大、寝食难安。这里分享出来希望同道中人有一些共鸣。同时也是对于自己这段经历的一个整理总结。
网友评论