AI工程的实践者:普元积极将场景落地,为企业提供智能化解决方案
作者 | Jane
出品 | AI科技大本营
11 月 8-9 日,CSDN 和 AICamp 联合举办的 AI 开发者大会在北京顺利举行。普元移动产品线总经理郝振明发表了《基于机器学习的工程实践》的主题演讲,并接受了 AI科技大本营的专访。
以下内容为郝振明的演讲与采访总结,文内略有删减:
演讲
机器学习有RPA结合的必要性
今天的演讲主题是根据普元在 RPA 实践过程中的一些经验分享,是从工程化的角度来探讨如何解决特定领域中的问题。RPA (Robotic Process Automation),就是把人重复性劳动通过自动化手段去完成。例如,有些公司代理申报纳税,这个工作流程是比较繁琐的,直到最后完成提交,需要大量重复录入的工作。整个流程非常耗费人力,而我们所做的主要工作就是把其中重复性的劳动交给软件来完成,用软件方式解决一个跨系统的问题。而我今天的分享将结合财务工作中报销工作环节的实现和大家进行探讨。
首先,RPA 不适合小型企业。因为小型企业不涉及大量的重复性工作,所以,明确了这个前提:RPA 适合大型企业,集团型企业几乎都会做财务共享中心。在现实中,员工提交粘贴好的发票后,剩下的工作都需要财务共享中心来完成,在这个场景中为什么应用 RPA 是最合适的?RPA 传统做法是需要结构化数据,就这个需求而言,核对发票真实性,把电子版发票变成有用的信息,低效易错的手填发票,人工智能在很大程度上解决了这些繁琐的工作流程。
机器学习有RPA结合的工程实践
而我们现在努力解决的工作主要有三点:以获取结构化数据为前提、使流程高度标准化、其核心技术采用 GUI 的录制与回放。此方法基于非现实世界的目标检测和驱动,与此进行交互的不是人类而是系统,绝大多数情况下通过迁移的方法。
在获取结构化数据的过程中还存在一些技术难点。比如某些出租车发票上的字体,人眼可能也无法分辨清楚。我们又该如何做到呢?是否有一个通用的算法模型或神经网络可以直接解决?经过我们的研究发现,这还是一件有难度的事情。尤其是增值税专票的处理与增值税普通发票的处理都还存在着不同之处。到这里我们就知道,首先要做的就是先要对发票进行分类,而仅有类型的分类是不够的,还需要做具体内容的识别,如到底公司名称及金额。这些工作原来都是人工手动完成的,我们把整个流程在经过纸质化转化成电子化后进一步做了分解。
如何做发票的分类处理?首先要全程跟踪电子发票,这是软件系统就可以完成的工作,并不需要复杂的机器学习算法。接下来,发票类型决定了后续如何进行处理与训练。经过我们的实践发现,进行发票内容识别时,用同一个 OCR 模型并不能识别所有类型发票中的内容。比如,出租车发票是点阵击打形成的,这就是一个比较难处理的问题。在前期分类,各模型处理后,某个效果如果仍然不好,我们就会单独针对性的解决,不再做整体处理。在分类处理发票步骤中,我们主要使用 Fast-RCNN 模型,从时间角度来说更符合我们期望得到的效率。
目标检测之后,我们得到了更好的圈定范围,排除了那些无意义,会产生干扰的部分。我们没有找到一个通用数据集去训练模型,我们是自己在一个不大的数据集上实现的,效果还可以。但是,在这个过程中,也结合了其他的技术手段。我们在训练网络模型的时候发现了一些点,有时候彩色是有帮助的,有时候它也是一种干扰,反而用黑白色效果更好,所以我们把两个网络同时训练。在预测阶段转成彩色图或灰图,对比并选择更优效果。
上面谈到的主要是发票分类的问题,在实践过程中,我们还发现了一个不可忽视的重要问题——发票的数量。粘贴发票可以是单张也可以是多张,当单张的情况下,我们通过刚刚讲的一些方法来解决,但当不止一张的时候该如何去做?首先要对发票进行识别及切图,然后进行摆正、文字区域识别,文字内容识别等。我们得到的切图效果还是可以的,准确度达到了 90% 以上。而发票的检测,切分及识别更多是为了后续的工作。如果直接交给 OCR 系统实现的效果一般,无法分清普通发票和增值税发票的情况下,我们会把两张发票进行合并,但是后续也会带来一些隐患。最后,我们用了一个扫描二维码的功能,这是一个简单的步骤。我们对用二维码扫描得到的信息做分类,第一个字段目前没用,第二个字段表明发票类型。这里特别提到一点就是二维码信息的作用,除了提供了发票类型,在后续的一个场景中也起到了关键作用。
接下来,想和大家探讨的第二个大问题是关于数据集和模型训练。我们自己也有一些定位,一开始在训练效果不是很好的情况下,我们又加入了一些数据集重新训练,从 60% 提升至 80%多,我们也会根据结果不断的调整模型。
进入下一环节,涉及选择 SaaS 服务还是私有化方案。我个人更倾向于 SaaS 服务,相对成熟。但在这里需要考虑一个问题,发票报销涉及很多流程,很多信息会被泄露,通常建议使用 SaaS 模型,但一些特殊情况下必须考虑私有化方案。
OCR 识别中还需要讲到三个比较关键的问题:对稍微有倾斜的发票,OCR 效果不好,需要增加一个环节,先摆正;字体不清晰的情况下,先用场景类文字检测方法进行区域检测;文字识别过程涉及特殊字体时,进行针对性不同的处理。判断发票类型,调整等工作用传统的 CNN 就可以完成;检测文本我们用到的是 CTPN 模型。
我们还做了一个工作就是自建训练数据集,通过之前贴图我们获得了单张图,并自动把每张图旋转成 0 度、 90 度、180 度及 270 度。
未来,机器学习会融入各个行业,我们主要把机器学习的方法与工程进行结合与实践。机器学习与 RPA 结合的过程中,非结构化数据的结构化、智能的工作流、基于 NLP 及检测技术下的自动化,这三个工作我们都在实践,现在第一和第三个工作取得的效果还可以。未来,我们会在各个领域结合机器学习、比较成熟并且效果好的网络,我们也会特别关注先前工作为后续工作带来的启发。
采访
AI科技大本营:可以先介绍一下您自己和负责团队的情况吗?
郝振明:我在普元已经近 16、17 年的时间了。最早在公司是做 JAVAEE 的,后来公司业务需要移动产品,我就转到移动产品研发。最近,从 2014 年开始,我有 1/3 左右的精力在人工智能上,原因很简单,任何一个事物,在我们公司内部都不是立刻显现、被需求的,会经历一个孵化阶段。对我们团队而言,就是一个不断孵化的过程。我们在先进领域都是从不懂到开始学习,慢慢成长起来的。为什么关注人工智能?我认为,未来的设备可能不一定是移动智能手机,但一定从智能手机开始的。所以对我而言,这是一个切入点。未来,我是都会一直在这个方向走下去,更多的从公司业务需要出发,寻找个人的方向。
AI 科技大本营:您和您的团队目前的工作是公司面向 AI 的主要方向或业务突破口吗?
郝振明:我们有几条线,每条线路都会有。从我个人角度而言,我认为我们可能会取得的突破多一些。原因有几点:首先,我们进入比较早,大概在 2013、2014 年就开始尝试了。到了 2016、2017 年,不敢说做的怎么样,但至少是愿意和大家进行分享的。其次,我们也做了投入,未来很多场景都会有人工智能,而不是部分公司。公司也是认为“人工智能会融入到各个产品线”。
AI科技大本营:您公司和团队在做 AI 相关工作时有哪些思想和经验可以和大家分享一下吗?
郝振明:其实,在过去的几年里,我们在很多领域进行了不断地尝试与分享。去年,我做过一次分享,主要围绕 AI 如何与开发结合的相关问题。所以,除了大家都比较关注的基础层面的工作,我们其实更多关注如何在解决实际业务中结合 AI 。今天的分享中主要讲到的是 RPA,用简单易理解的方式来解释,就是通过自动化手段完成一些具有很多重复性劳动的业务与工作。主要讲到的财务报销环节。这里面包含很多重复性人力劳动,不仅耗时耗历,效率也不高。所以,基于这个场景出发,我们研发了自己的 RPA。但是在完整的技术解决方案中,我们也不是全部依赖 AI,我们发现,传统方法有可能取得更好的效果。所以,我们在实际工作中,如何与 AI 结合有两个主要观点:我们需要 AI 但不单独讲 AI ,我们更关注 AI 如何与实际业务场景结合;我们不会为了使用 AI 而用 AI,在 AI 真的有更好的发挥作用的时候结合 AI,最终为企业提供智能化的解决方案。
在这次在分享中我也讲到了我们的一些方法和思想。首先,我们都是从实际业务场景出发。对于我们来说,理论的创新,算法性能的提升,基础工具的研发等基础层面取得突破工作相比,我们更倾向不断丰富业务落地场景,在实际场景中解决问题。这也许不是用的最新的网络模型、算法就足够的。但是可以让企业可以具备更智能化的问题解决方法,对整个市场,对企业客户乃至每个职员都会产生影响,这也是我们在此方向上努力的原因。
于此同时,在我们的工程实践中,仍然会面临很多的挑战。比如在 RPA 就还存在很多问题,分享中我也提到了,RPA 必须需要结构化数据,我们在这方面也做了很多工作后,发现非结构化数据转化结构化数据时,人工智能的优势非常明显,在这个过程中我们用到了一些算法和模型。通过不断的实践,找到最适合的算法,在结合我们的算力和数据完成一个智能化的工作流程。在一些算法也不能很好的解决某些问题时,我们进行单独分析,加入一些辅助方法或环节。除了关注研究前沿,我们在现实业务工程化时一般会挑选一些相对成熟的算法或网络,但是我们不聚焦于某一种算法,而是聚焦于那些适合、可以在当前的场景下发挥更大的作用。
就像大家都比价熟悉的 OCR 技术,但我们在工程实践中就会发现,应用在特定,专业领域中会效果不一定一样的好。比如在 RPA 中,识别增值税发票内容时,当字太小,不清晰,套打走行等多种复杂情况同时存在时,如何运用 OCR 技术并取得良好的效果?所以,我们需要我们的人才专注在某一特定领域,解决实际问题。
公司层面,其实在不同领域都有进行尝试,无论是在开发阶段,还是应用阶段。不仅是技术的验证,我们努力结合每一个业务场景,专注落地。
AI科技大本营:您刚才提到的很多还是涉及 RPA 在财务报销环节的应用,是首先在这个环节落地的吗?这是主打场景,还是除此之外也有别的?
郝振明:是的,我们最先实践的场景是财务报销环节,而实现业务流程自动化以提到生产力也是财务机器人最先落地的场景之一。但是确切来说,我们不是为了做广泛智能才做这件事的,是因为有了实际的需要。RPA 在一般在集团型企业都会涉及,在大型企业财务工作中对这方面有非常实际的需求。所以,在这个解决方案中,我们通过寻找合适的技术,结合 AI 给企业提供更智能化,高效的业务解决方案。
我们在其他领域也做了很多工作,比如数据领域。作为一个技术型公司,技术是否为我所用是我们关注的重点。除了前沿技术,Paper,学术产业会议,都会进行跟踪学习。还会有专业的算法工程师专门针对与场景结合的可行,有效性的分析。如果说单独做一个人工智能平台,从多角度来看不是我们的定位。
AI科技大本营:这样的工作理念是从什么时候就确立的?
郝振明:我们大概在 2014、2015 年的时候开始关注这个领域。一开始这个市场非常热闹,而我们关注这个领域本身源于一个最大的困惑:我们会不会被淘汰?是这样的一种自我忧患意识促使我们不断地进行尝试。后来,我们发现,我们需要的是:商业模式的差异化。从自身角度来讲,我们并不是像一些企业那样,需要有专业团队,我们致力于人工智能,但是当时我们还不具备充分的条件,在未来成熟以后我们也会做这件事。
再后来,我们就会发现,其实还是应该从自身寻找我们需要什么,知道了需要什么就决定了我们要如何做。
现在大家也都在讨论,人工智能除了技术,场景在哪里?我们对人工智能是长期看好的,但是现在最大的问题是让更多的人利用人工智能。同时,我认为如果人工智能往上再走一个阶段,其实是广泛的应用。而广泛的应用也不仅仅局限于现在大家都熟悉的客服机器人,娱乐。未来的世界难道就是这样的吗?也是从这个角度出发,我们在寻找更多的场景,希望做更多的落地应用。在这里也是希望很多行业能加入,大家共同做出更多更落地的解决方案。建立一个真正的 AI 生态,需要基础的算法,优秀的人才和丰富的场景,实践的落地。
AI科技大本营:有一类企业会特别地去研究自己的算法或者是构建平台。你们想做的实际上是比在做更上一层的工作?据我了解咱们应该都是服务的中大型的企业,自己是否想过具体服务到每一个场景,还会有很多问题,比如数据不完备?该如何解决呢?
郝振明:是的,我们现在更多的是在一个领域里做一件事情,我们也在积累,从技术解决策略上说我们会用到迁移学习等方法。我认为现在人工智能是正在起势的一个过程。我可以给大家引用这样一个例子就很好理解,我在 2000 年左右做程序员,那个时候讲软件这个概念是不容易被理解的。大家如果现在来看程序员,发生了一个很大变化的过程,从一个专业的小领域到普世。回到你刚问的问题,现在一些企业做了很多基础的工作,并不代表能把所有的人工智能全部依赖于此建立起来。我们也会关注这些工作,但我们更关注如何使用。也不一定就是某个或某些企业可以做这些工作,当我们的诉求越来越多,就会出现我们的结合点。
第二个关于数据量大小的问题。现在很多研究和工作都是基于大数据算,就我个人观点而言,是会存在一些问题的,比如不够智能化,个性化。我们可以看到目前一些工作可能只做到了人工的 70 %-80% 的水平,从以往经验不容易被发觉,也许恰恰是大数据反向制约的,但是一定会有突破性的进展。其实可以理解成利与弊的关系,数据量特别大,更容易总结,但可能因为数据量过大,导致突破自身原有经验成为一件有难度的事情。在这方面我们也进行过一些尝试,例如,当数据量不是特别大的时候,会基于一些基础网络进行迁移。从我们的角度而言,关注小数据在工程化实践中的作用,可以尝试用来防止额外干扰,再通过专业模型聚焦我们的关注点。利用小数据形成一些智能化解决方案可以说也是我们的一个期望。但是,目前我们还没有找到一个很好的点,但是相信,未来小数据量不会成为制约的问题。至于一些已经相对成熟的技术,为什么我们自己也在独立做?关键也在于此,在工程化实践中,结合某一具体场景,会需要专门解决的一些问题。所以,我们需要的不止是一个通用技术,是针对特定领域的技术。这就需要在与工程化结合的时候,自己研发、改进算法或模型来寻求更好的解决方案。
AI科技大本营:从更高的层面而言,目前的这些工作如何帮助普元更好的赋能企业用户?
郝振明:这里有两个关键点:一个是自身的 know-how,一个是工程化。刚刚忽略的一个问题是:本身体系的延续性。通过技术本身,寻求技术,做技术的沉淀。
AI科技大本营:在未来的工作中面对不断的挑战有哪些措施?
郝振明:未来,我们期望是不是可以不仅局限于通用世界?从工程化阶段来看,我们需要等待成熟,因为在还不能做的很好的情况下,选择躲避一些问题,可能是更欠妥的做法。所以,除了技术角度,算法角度,我们还会结合工程方法,比如软件工程的方法来完成。通过这种方式突破我们自身或现在行业内的情况。尚未做的很好,也是我们在接下来的工作中努力尝试的。我个人而言,我不是一个科学家,我更像一个干活儿的。我需要用的知识,技术,工具,有专家的成果可以让我去尝试,但终有一个是我要瞄准的方向,从而挑选出一个适合我们的。
本文为 AI科技大本营原创文章,转载请联系微信 1092722531。