近期阅读了一篇论文《Rapid Deployment of Anomaly Detection Models for Large Number of Emerging KPI Streams》,这篇文章基于之前的 ROCKA 系统做了一些额外的工作。ROCKA 系统是用来做时间序列的实时聚类的,而这篇文章是在 ROCKA 系统的基础上增加了时间序列异常检测的功能。通常来说,时间序列异常检测可以使用有监督的方法来解决,参考 Opperentice 系统。而本篇文章使用了半监督学习的思路来解决异常检测的问题,下面来详细分析一下这篇文章的细节,本文的作者把这个系统称为 ADS(Anomaly Detection through Self-training)。
这次整理的就是清华大学裴丹教授所著的两篇与时间序列相关的论文。一篇是关于时间序列聚类的,《Robust and Rapid Clustering of KPIs for Large-Scale Anomaly Detection》;另外一篇文章是关于时间序列异常检测的,重点检测时间序列上下平移的,《Robust and Rapid Adaption for Concept Drift in Software System Anomaly Detection》。本文将会整理一下这两篇文章的关键技术点。
Robust and Rapid Clustering of KPIs for Large-Scale Anomaly Detection
从整个系统来看,离线模块需要做以下几件事情:首先需要收集一批时间序列数据,也就是所谓的 Raw Time Series Data(Raw),通过预处理模块,实施基线提取,再进行聚类的操作,获得相应的聚类结果和质心。在线模块同样也要做类似的事情:首先对于每一条新来的时间序列数据,也就是所谓的 New Time Series Data(Raw),通过预处理模块,实施基线提取,然后使用已经聚类好的离线模块来进行实时的分类。
与计算机视觉方向相比,自然语言处理方向(Natural Language Processing)在学校里面也有不少的教授从事相关研究。不过要想让计算机理解人类的语言可不是一件容易的事情。尤其是中文还拥有多音字,语义双关等情形,而且理解中文很可能还要基于上下文来前后推敲。如果和聊天机器人聊过就会发现,其实聊天机器人和人类的聊天给用户的感觉是完全不一样的。语音方向笔者不是很了解,也只是道听途说而已,在这里就不在赘述了。
机器学习
除了以上三个方向,人工智能的另外一个研究方向自然就是机器学习了。在周志华老师的教材《机器学习》中,无监督学习,有监督学习,半监督学习,强化学习等方向都已经在该教材中进行了详细的解释。貌似几年前强化学习这个方向也是不温不火,但是在 AlphaGo 崛起之后,深度学习和强化学习就已经开始进入了大多数人的视野。随着围棋被攻克之后,德州扑克AI,或者其他的游戏 AI 也被很多学者和大型游戏公司所关注。DeepMind 也在 2017 年开放了星际争霸的研究平台,今年无论是在 Dota2 还是星际争霸上,游戏 AI 相比之前都有了巨大的突破。
除了强化学习之下的游戏 AI 之外,其实机器学习一直在一个领域发挥着巨大的用处,那就是推荐系统。无论是广告推荐,YouTube 视频推荐,甚至今年非常火的抖音 APP,推荐系统在其中的作用都不容忽视。关于推荐系统的书其实有很多,笔者也没有一一读过,不过就近些年的发展状况来看,无论是在学术界还是工业界,从零到一搭建一套推荐系统已经不是壁垒,如何搭建一套结合业务场景的优秀推荐系统才是难题。而推荐系统中常用的各种模型,例如逻辑回归(logistic regression),SVD,ItemCF & UserCF,甚至深度神经网络,在各种开源框架之下(Spark,Tensorflow等),只要拥有足够的计算资源,训练出一个可以使用的模型已经没有太大的难度。难度在于算法工程师如何贴近业务并且理解业务,在此基础上如何使用机器学习算法将内容库里面的优质内容推荐给用户,而不引起用户的反感,点击率如何在合理的范围内进一步提升。搭建一套推荐系统已经不是难题,如何结合多种多样的推荐场景才是关键,怎么结合业务来使用推荐系统则是算法工程师需要思考的问题。
机器学习+安全业务
就笔者的个人经验来看,推荐系统或者游戏 AI 其实只是机器学习的一个应用领域。既然机器学习能够应用在推荐系统或者游戏 AI 上,那么为何不能够应用在别的领域上呢?
对于一些大型互联网公司而言,推荐系统能够给用户们带来足够优质的体验,游戏 AI 能够帮助玩家提升自己的技艺。但是在给用户带来优质体验的时候,总有一些黑产用户在伺机而动,通过 APP 的各种 bug 来寻找赚钱的机会,给正常用户带来各种各样的骚扰。在游戏中,有一些人使用了外挂等技术,破坏了游戏中的平衡。在金融行业中,一直都有黑产用户正在进行各种各样违法犯罪的事情,例如信用卡欺诈等,给正常用户带来了不少的损失。在社交网络中,有一些用户通过社交网络传播着各种各样的不良信息,无论是谣言,虚假广告还是各种各样的假冒伪劣产品宣传,都给正常用户带来了不好的体验。因此,安全业务一直是互联网公司和金融公司的重点业务,安全业务一直是保护着互联网公司能够正常运行的基石。各种各样的安全实验室在大型互联网公司里面并不罕见,也是必须要配备的力量。对于业务安全上,无论是盗号,刷帖,传播虚假消息等都是需要关注的对象。在黑产力量日益壮大的情况下,打击黑产的人力也越来越多。随着人力的增多,如何使用机器学习算法来进行人类经验的传承,或者说随着黑产技术的升级如何才能够尽快的提升互联网公司的黑产对抗能力,这些都是值得做的工作。除了互联网公司之外,银行等金融机构也需要进行信用卡的风控评级,打击信用卡盗刷,黑色产业的资金链条挖掘等。因此,银行等金融机构对于业务安全上面的要求有的时候可能比互联网公司还要严格。
在 2005 年左右,当年的手机还是 Nokia 的时代,移动端的娱乐方式并没有现在那么丰富。大家的娱乐方式通常来说就是聚在一起打扑克,或者在一起玩电脑游戏。当时比较风靡的单机游戏是暴雪公司开放的魔兽争霸,网络游戏也是该公司开发的魔兽世界。而大一的时候,绝大多数人还没有拥有自己的个人电脑,于是为了玩这些游戏通常都只能够去浦口大学门口的多瑙河网吧,因此一些人就出现了白天上课,晚上包夜的情况。也许是刚20岁出头的年纪身体比较好,到了30岁左右的时候,想通宵熬夜就是一件很困难的事情了。有趣的是,当时一个宿舍会有四个人,一旦有一个人开始打游戏,通常都会带动整个宿舍的人一起玩。
而学生的想象力总是无穷的,总能够挖掘身边无数的资源,变腐朽为神奇。除了浦口大学门口的多瑙河之外,其实学校内部也有机房。当年大一的时候,数学系总会开设 C++ 编程设计这门课,既然是编程课,那么就需要上机实验,因此玉辉楼的数学系机房就是一个还不错的环境。不过既然是机房,那么它的硬件设施就肯定没有外面的网吧好。但是,机房总是免费的,于是就有一些同学会选择在机房玩一些小游戏,当年的几十台机器还是能够择优选择出几台机器可以运行 Diablo II 的。
即使选择了一些合适的课题,也不能够让博士生从正面直接攻克它。因为最终的问题可能还是相对偏难一些,对刚进入博士阶段的 PHD 来说可能并不合适。在这种时候,需要采取循序渐进的策略。就拿笔者之前所研究的动力系统方向来举例,刚刚开始攻读博士的时候,尤其是在前两年,只需要做一个 Ergodic Theory and Dynamical Systems 这种级别的论文就可以了。因为这种时候需要的是稳定军心,让 PHD 能够有信心继续从事一些更难的课题。在博士生第三年至第五年的时候,尽量去做一个更难一些的题目,然后其博士论文的课题大致能够发表在 Communications in Mathematical Physics 这种级别上。这样的话,博士生寻找一个博士后岗位甚至一个教职都没有太大的问题。在找到了工作之后,通过会有两种选择,一是可以继续做之前的课题,保持一个持续的领先优势,二是可以做更难一些的问题。如果能够有持续的小论文产出,并且最终有一个大论文的话(例如发表在 Annals of Mathematics)上,基本上 Tenure 之路已经接近稳妥。整体来看,在博士生期间最好的策略是选择一个循序渐进的过程,而不是想一口气吃成一个胖子,给了一个超难的课题让博士生自生自灭。
新加坡国立大学(National University of Singapore)的 PHD Research Programme 的项目是其实是专为博士生量身定做的。虽然是博士生的项目,但是在刚入学的时候其实不能够被当做博士生,基本上和国内的硕士生没啥区别。因为 PHD Research Programme 里面有一项无法避免的内容,那就是修满一定的学分,而在不同的院系有着截然不同的修课标准。就数学系的博士毕业标准而言,那就是在四年时间内修满八门课,并且博士生要把 MA 5198 这门课修完。对于刚入学的博士生来说,除了修课之外,还有一个重要的任务,那就是尽快通过 Qualify Exam,因此几乎所有的 PHD 都会选择分析,代数,计算这三门课中的两门。
一般提到数学专业,绝大多数人的反应就是:“读完之后大概只能够当老师了吧?”有的人也会说:“读了数学专业,再去金融或者计算机专业会变得容易许多。”这一类的话笔者当时确实也听了不少。不过,当年还年轻,也没想那么多事情,就一门心思的想把数学学好,做自己喜欢做得事情,也就是所谓的 Follow My Heart。
当年在中学地理课本里面,就写着新加坡是一座花园城市。不过毕竟耳听为虚,眼见为实。当笔者从新加坡的机场走出来的时候,看到一棵有一颗高大的树木(请原谅我不知道它们叫什么树),樟宜机场航站楼里面的绿化情况。就清楚地知道了地理教材上所言非虚,“花园城市”果然名不虚传。从机场到 NUS 坐了一路地铁,但是从 Clementi 下车之后到 West Coast Plaza 的一路却是公交车,明显可以感受到新加坡的绿化工作相比其他城市好不少。除了某些时候由于邻国烧芭导致空气质量低下之外,整个新加坡的空气质量和环境还是十分赞的。
提到出行方面,在 NUS 的 Kent Ridge 地铁站还没有修好之前,大家都是通过公交车出行,要么在 S17 楼下坐 95 路公交车去 Buona Vista 地铁站,要么在 Central Library 坐 96 路公交车去 Clementi 地铁站,要么在 AYE 上面坐 197,198,963 直接去 Vivo City。不过新加坡的 Bus 质量都挺好的,坐起来也算比较舒服,毕竟是 Benz 的牌子。不过,自从地铁开通了之后,大家貌似都不怎么坐公交了。不过有的时候我还是会选择坐公交出行,毕竟在地面上还能够看看新加坡的风景,在地下就只能够看手机了。记得当年跟 RDD 同学还一起坐在双层 Bus 的二楼第一排一起看风景。
(图)新加坡的 Benz 公交
新加坡的住宅一般分成两种,一种是组屋,一种是公寓。不过自己从来没有住过公寓,基本上都是住在组屋。组屋一般来说比公寓的租金会低一点,不过只要是好一点的组屋,也不会特别便宜。除了在外租房之外,NUS 的宿舍也是非常不错的。一开始的时候,由于 Utown 还未建成,NUS 给博士生提供的宿舍是在 BoonLay 那边,所以有的同学每天都会坐学校提供的 Bus 往返学校和宿舍区。到了后来,UTown 建成了之后,博士生的宿舍一般就是 PGP 和 UTown 这两个宿舍群。一般来说,这两个宿舍群给大家提供的都是单人间的宿舍,只是略有不同而已。在 Prince George Park,每个房间就住一个人,只不过一层楼有十几个房间,大家公用一个大的浴室和卫生间。而在 UTown,则是一个四人间的屋子,每个人住一间屋子,然后公用卫生间和浴室。由于 PGP 有空调的屋子貌似都有独立的卫生间和浴室,所以会比 UTown 贵不少。不过,在都没有空调的前提下,UTown 的宿舍会比 PGP 的宿舍便宜一些。
(图)PGP 的单人间宿舍
在购物方面,最近的商场那应该就是 West Coast Plaza。由于新加坡一年到头都是夏天,所以我们只需要购买夏天的衣服就可以了。因此,West Coast Plaza 里面的 Nike Factory 店就成为了我的首选。一是 Nike 的衣服确实也还不错,二是那边的衣服确实相对便宜一点。除了 West Coast Plaza,Vivo City 是一个较大的购物广场,可以在里面买到更多的东西。无论是买日常的衣服,还是其他东西,或者来这里吃饭,都是不错的选择。不过整体来说,自己来 Vivo City 的次数还是相对少,毕竟笔者的活动范围有限,不愿意跑太远的路程。(未完待续)
在做 XX 推荐项目的过程中,了解到了数据才是整个机器学习项目的基石,如果数据的质量不佳,那就需要进行数据的预处理,甚至推动开发人员去解决数据上报的问题。通常来说,要想做好一个推荐项目,除了特征工程和算法之外,最重要的就是数据的核对。当时的经验是需要核对多方的数据,那就是算法离线计算出来的结果,线上计算出来的结果,真实产品中所展示的结果这三方的数据必须要完全一致,一旦不一致,就需要复盘核查,而不是继续推进项目。在此期间,踩过无数的数据的坑,因此得到的经验就是一定要反复的核查数据。
2016:从零到一
站在巨人的肩膀上,才能看得更远。-—学习推荐系统
“站在巨人的肩膀上,才能看得更远。”到了 2016 年的 2 月份,除了 XX 推荐项目的首页个性化调优算法之外,还开启了另外一个小项目,尝试开启首页的 tab,那就是针对不同的用户推荐不同的物品。这个小项目简单一点的做法就是使用 ItemCF 或者热传导传播的算法,在用户收听过某个节目之后,就给用户推荐相似的节目。这种场景其实在工业界早就有了成功的案例,也不算是一个新的场景。就好比与用户在某电商网站上看中了某本书,然后就被推荐了其他的相关书籍。之前也写过一篇推荐系统的简单算法“物质扩散算法”,推荐给大家参考一下。至于 ItemCF 和热传导算法的相关内容,会在后续的 Blog 中持续完善。
在这种情况下,外部引进技术是不可能了,只能够靠自研,合作的同事主要是业务运维和运营开发。当时第一个接触的智能运维项目就是哈勃的多维下钻分析,其业务场景就是一旦发现了成功率等指标下跌之后,需要从多维的指标中精准的发现异常,例如从运营商,省份,手机等指标中发现导致成功率下跌的原因,这就是经典的根因分析。这一块在调研之后发现,主要几篇文章可以参考,综合考虑了之后撰写了一份资料,那就是“根因分析的探索”。PS:除了哈勃多维下钻之外,个人感觉在 BI 智能商业分析中,其实也可以是这类方法来智能的发现“为什么DAU下跌?”“为什么收入没有达到预期”等问题。
1. 论文中的方法:找到一些形状怪异的函数作为目标函数,需要寻找这些函数的全局最大值或者全局最小值。除了全局的最大最小值点之外,这些函数也有很多局部极值点。例如 Rastrigin 函数(Chapter 6,Example 6.1,Search and Optimization by Metaheuristics)
其中, 或者 Easom 函数(Chapter 2,Example 2.1,Search and Optimization by Metaheuristics)