大家好,我是一个初学AI的产品狗,曾经做过2年的Java开发,有一定的技术功底。所以一直以来,在学习AI知识的道路上,我一直都是技术和产品知识并行推进,将自己定位成一个可以和开发人员无缝对接的产品经理。
前段时间,和团里上海的朋友们一起报名参加了一个AI相关的线下活动。活动的讲师提到了一个在此前学习AI知识的过程中很少听到、但总觉得一定会出现的词语:在线机器学习。颇感兴趣,因此从产品的角度浅学研究了一下,并总结成文字分享出来,供大家学习。
什么是在线机器学习技术
通常情况下,我们训练机器学习模型的流程是这样的:有做一个Demo的想法,第一步首先是分析目的和需求,想想这个Demo属于什么问题,要达到什么效果。第二步准备训练数据,做基本的数据清洗。第三步是特征工程,这个属于脏活累活,需要耗费很大的精力,如果特征工程做的好,那么,后面选择什么算法其实差异不大,反之,不管选择什么算法,效果都不会有突破性的提高。第四步,是跑算法,通常情况下,可以把所有能跑的算法先跑一遍,看看效果,分析一下precesion/recall和f1-score,看看有没有什么异常,如果没有异常,那么就进行下一步,选择一两个跑的结果最好的算法进行调优。调优后再跑一边算法,看结果有没有提高,如果没有就检查特征、数据和模型是否选择上有问题。这样反复来几遍,不断循环,最后代码上线,改bug。
静态数据模型开发流程可以看出,常规的机器学习模型训练,几乎都是在离线情况下进行的,用事先准备好的数据训练模型,训练完成后将模型上线,并收集模型的使用数据,来进行下一步的调整。
在线机器学习流程而在线机器学习,顾名思义,就是将模型学习的整个过程搬到线上,与数据流并行,一边流通数据,一边更新模型。与传统机器学习的训练方式不同,在线机器学习将跑算法模型、得出结果、参数调优、更新模型四件事搬至线上。工作流程变为开发者首先确定该需求需要使用在线机器学习技术来满足,第二步是确定好模型框架,第三步使用离线数据进行模型的冷启动,第四部是将模型上线投入使用。模型在上线后将会通过源源不断的实时数据进行再清洗、再训练、比对模型、更替模型的工作。
在线机器学习技术相关算法
由于我的主要方向是产品,技术知识并不厚实,所以也不敢多妄言,这里算法主要以简要介绍为主,不做推导分析。在线机器学习技术因为处理的数据存在特殊性,算法也有所区别于传统机器学习算法。在线机器学习算法处理的数据,具有动态性、无序性、无限性、突发性和体积大等特点。首先,大批量的数据源源不断地涌入,将这类数据完全存储下来几乎不可能。其次,数据具有时间属性,带有强烈时间特征; 训练样本和测试样本的分布可能不同、样本的特征可能随时间变化( 增加或者缺失) 、同时可能有新的类别产生,呈现动态变化的特点。这样一类数据分布动态变化的问题给机器学习带来一些深刻的变化和挑战。目前在线学习自提出以来已经发展出许多算法及其变种,根据模型是线性还是非线性模型,将在线学习算法分为两大类: 在线线性学习算法和基于核的在线学习算法。
2.1 在线线性学习算法
2.1.1 感知器算法
感知器( Perceptron) 是最经典的在线学习二分类算法,它通过错误驱动,首先初始化一个权重W0、截距b,然后每次分错样本时,就用这个样本改变权重以及截距b。其实就是构造了一个分类超平面。这种算法有一定的局限性,首先它只能将数据分为两类,其次数据必须是线性可分的。
2.1.2 在线被动-主动算法
大家可能对于凸优化模型具有全局最优解又便于实现和验证的特点有所了解,而在线被动-主动算法就是一种典型的基于凸优化模型的在线学习算法.在线被动-主动算法的核心思想是基于一个样本的支持向量机,将支持向量机最大间隔的约束转化成寻找与当前分类器最近邻的约束。它的更新规则是当新来数据没有误差的时候,该算法被动更新,即不更新;当新来数据产生误差的时候,算法主动更新,即投影到现有分类器最近邻的位置。
2.1.3 在线稀疏解算法(RDA)
随着压缩感知技术的兴起,L1范式的最小正则化得到进一步关注.其中一个著名的模型是LASSO。L1范式最小化时,其最优值仅能在边界上获得(即不会选取某些坐标轴),因此可以获得稀疏解。在线稀疏解算法属于梯度下降类型的方法,这类型的方法的优点是精度比较高,并且TG、FOBOS也能在稀疏性上得到提升,但是RDA却从另一个方面进行在线求解,并且有效提升了特征权重的稀疏性。
2.2 非线性在线学习算法
2.2.1 核感知器算法
核感知器是应用核函数 的思想推广线性感知器算法,构造出基于 核函数的非线性感知器,从而有效地提高了算法的 分类能力。
2.2.2 固定缓冲器的核在线学习算法
基于核函数的在线学习算法存在一个问题,随着样本增多,有效集合中支持向量的个数会不断增大.若样本的个数是无穷,则该集合中支持向量的个数趋于无穷.核在线梯度下降法解决此问题的做法是通过截取法把核系数特别小的值设为0。此外,学术界特别提出了各种固定缓冲器的方法来处理这个问题。
典型的固定缓冲器的核在线学习算法,包括随机固定缓冲器的感知器法、遗忘法和投影法.
随机固定缓冲器的感知器法在每轮将分类出错的新样本加入有效集合中,当固定缓冲器饱和的时候,该方法随机把缓冲器中的一个样本剔除,换入当前新来的样本。遗忘法是在每轮以常数值衰减核函数的系数,当 固定缓冲器饱和时,把对应核函数系数最小的值移除。投影法则在新来样本产生误差时会更新判定函数,并将其判定函数投影到原空间获得新的判定函数。若2个函数之间的变化不大,则设置当前函数为投影后的新函数;若二者变化超过阈值,则将新样本加入激活集合中。上述非线性模型在线学习算法的特点是以不同 角度改进固定缓冲器下核函数系数的更新方式,并得到相应的理论保证。
在线机器学习相关架构
科普常见的在线机器学习算法,主要是为了让产品经理多一个角度来理解在线机器学习技术,有的人可能懂业务,但是不明白如何用技术去落地,因为对技术没有概念。架构就是我要讲的另一个角度,架构和算法不同,它更加易于理解,可以不懂水泥是什么成分,但一栋房子有几层几根柱子总归是能一目了然。常见的在线学习架构根据数据流动的方向分为三种,分别是瀑布流架构、并行响应架构、实时更新模型混合架构。
3.1 瀑布流架构
瀑布流架构中的信息是单向流动的,从发生地到完成地呈现瀑布般从上到下的流动,有时会进行分叉和汇总。在该架构中,在线机器学习主要体现在偏后台的应用中,它不注重及时给用户反馈,而更重视对实时数据的处理。
瀑布流架构的主要组成部分上图是一个典型的瀑布流系统,主要由数据流入、处理队列、处理单元、数据库、行动执行队列和行动执行单元组成。这里处理队列和行动队列的存在是为了在任务完成速度小于任务生成速度的时候缓冲系统的压力。
瀑布流式机器学习架构的思想类似于修筑水坝,数据流入的速度在一天之中的不同时刻会不停的发生改变,所以必须修建蓄水池,也就是分布式队列,来对到达的数据和产生的行动进行缓冲,以保证机器学习处理单元的稳定运行。
同样的,为了能够及时完成所有的处理人物,在高峰时段不造成任务赛车的情况,往往会在一天之中为机器学习处理单元和行动执行单元对应安排不同数量的服务器。像阿里云的弹性伸缩服务就可以达到这种优化资源配置的效果。
3.2 并行响应架构
并行响应架构主要用于解决在低延迟要求下大量使用机器学习模块的情况。在多用户大量任务同时到达,并且需要在极短的时间内做出响应时,往往需要通过配置服务器集群来快速响应和反馈。这类集群中每一台服务器上都会布置有相同的机器学习模型以实现相应的操作。
并行响应架构的主要组成部分其原理主要在于利用负载均衡将机器学习处理任务均匀的分配到集群服务器上,同时对于数据处理、记录等不需要高效实时处理的任务,通过分布式队列进行缓冲和异步处理。
3.3 实时更新模型混合架构
上面两个架构都主要侧重于实时反馈和对请求进行处理,而实时更新模型混合架构,则重在能够快速的更新机器学习模型,对环境做出反应。这种实时更新的架构往往都会用在最关键的场景当中。例如对冲基金,很多对冲基金利用机器学习模型在很短的时间内对金融市场走势进行预测。由于多方竞争,市场环境往往瞬息万变,必须不断实时更新模型才能保证长期收益。
实时更新模型混合架构的主要组成部分实时更新模型混合架构,实际上是瀑布流架构和并行前端架构混搭而成的一个闭环。一方面具有并行前端架构对请求做出快速响应的能力,另一方面又具有瀑布流架构的实时建模能力。而与其他两个最大的不同在于其具有自动化的模型部署单元,可以实时的自动化部署模型。
在线机器学习的应用场景
对于产品来说,技术是用来利用的,没有高低之分,只有是否合适。在AI领域,机器学习也好,深度学习也罢,能够用最简单的方式实现需求的,就是最优解。而站在在线机器学习技术的角度,我们需要反推需求,也就是思考,这双43码的鞋到底适合什么脚。
通常来说,在线机器学习技术在应对数据流量大、数据时效性差、需要即时反馈的场景中有其独特的优势。而这一类场景,在运营式的传统行业当中较为多见。例如证券交易、银行、电信、超市等传统行业会产生大量流数据。分析这类数据有利于发现异常事件、业务的流向,提高仓储、物流效率等。
比如在金融银行领域的日常运营过程中,往往会产生大量数据,这些数据的时效性常常较短.因此,金融银行领域是大数据流式计算最典型的应用场景之一,也是大数据流式计算最早的应用领域.在金融银行系统内部,每时每刻都有大量的往往是结构化的数据在各个系统间流动,并需要实时计算;同时,金融银行系统同其他系统也有着大量的数据流动,这些数据不仅有结构化数据,也会有半结构化和非结构化数据.通过对这些大数据的流式计算,发现隐含于其中的内在特征,可帮助金融银行进行实时决策。
而在互联网领域中,搜索引擎提供商们往往会在反馈给客户的搜索页面中加入点击付费的广告信息。插入什么广告、在什么位置插入这些广告才能得到最佳效果,往往需要根据客户的查询偏好、浏览历史、地理位置等综合语义进行决定。而这种计算对于搜索服务器而言往往是大量的即时搜索请求,其特点就是数据计算的时效性极短,需要保证极低的响应时间。
总结
在线机器学习技术属于比较前沿的底层技术,目前国内可以查到的资料并不多,但据我所知,在国外已经有许多大厂将这种技术投入到了实际的生产当中,比如跟群里小伙伴们一起参加讲座时,就发现了Twitter的广告部门就利用了这种技术实现了用户的精准投放。不过现阶段在线机器学习在算法和架构层面都还比较复杂,属于初期实践,即便是Twitter这样的大厂,在提升效率时,还是采用的扩充硬件的方式来解决的。在将来,这种情况必然会得到转变。
而在对在线机器学习技术的了解过程当中,结合自动化的理念,愈发的觉得由计算机自动抽取数据、清洗数据、训练、比对、更新模型将会是平台类产品的发展方向。一方面可以节省平台类产品的人力成本,另一方面在提高了平台类产品的自适应性,使其具备高效率、易维护的特点,且有理论保证误差范围的优势,在面向动态数据的实时处理领域,具有不可替代的地位。
网友评论