互利科技CEO林坦:机器学习在日志数据中的应用

机器,该如何进行信息交换?所交换的信息,又是什么样子的?人工智能如何运用在机器的信息处理上?机器最终可否实现自我修复?

人类通过语言交流,人体内部依靠细胞交换信息。而机器,该如何进行信息交换?所交换的信息,又是什么样子的?人工智能如何运用在机器的信息处理上?机器最终可否实现自我修复?

数据分析网

结构化数据与非结构化数据

我们经常接触到一些数据,主要分两种,一种是结构化数据,另一种是非结构化数据。

结构化数据如商品叫什么名字,价格是多少,被评多少星,用户评论是什么等等,这些大家可以很方便的去查找,或者删除。密密麻麻乱七八糟的东西一般是非结构化的数据,一般是比较难以阅读,由机器内部产生的大量的数据。

这个世界上80%都是非结构化数据。

数据分析网

一般结构化数据是可以用二维表关系来表示,也就是传统的关系型数据库里储存的数据;半结构化数据是介于结构化数据和非结构化数据之间,可以用数和图的结构表示出来;非结构化数据是散乱的一团没有固定的数据结构可以表达的那部分数据。

日志数据

一个比较典型的非结构化数据是日志数据,我们没有办法直接从中获取有效信息,但却离不开它,因为它包含了大量的信息,记录了每台机器的一举一动。比如说一条访问日志包含了哪台机器访问过我们,具体访问时间是什么时候,具体访问的请求是获得资源、还是删除资源,访问的状态是什么等等。

数据分析网

这些日志数据能做什么?最典型的是安全、商业洞察和运维。安全,比如说有黑客攻击。商业洞察,比如说做用户画像,运维,比如说提高系统的性能以及查找宕机原因。

安全场景:每个网站基本上都有登录系统,假如一个人重复尝试利用某个账号登陆,且尝试的速度非常快,我们如何判断他到底是人为的在正常访问重试密码,还是有黑客在利用程序破解密码呢?而日志会给我们很多线索,包括尝试的速度,以及来自于哪些IP地址。

业务场景:比如说做行为分析,像黑色星期五或者淘宝双十一,有大量人下订单,后台需要增加很多服务器。那大概要增加多少台,则需根据往年的历史数据判断,这些数据都在日志里面,根据这些数据分析,大概预估出一个需要扩充的台数,保证高峰期可以平稳运行

再比如说服务器宕机,越大企业损失越严重,像亚马逊这样的网站,每宕机一分钟损失15万美元左右,如果能利用好日志数据,快速定位出问题原因,每年对亚马逊节省的成本也是不计其数的。

日志数据的挑战

想利用好这些数据并不是那么容易,一是数据来源多样,可以来自服务器,也可以来自数据库,还可以来自于中间件,操作系统等。产生的不同的日志,都需要解析成有意义的信息。

二是数据格式问题。非结构化数据没有办法像数据库的表一样很简单的表达出关系。当我们访问一个系统的时候,它具体要访问系统里面的哪些部分,包含了非常多的信息。每层的信息结构都是不一样的。假如说现在出问题了,我们需要把信息关联起来,得从最顶层开始,从App程序到中间件一层一层关联信息,最终才能找到可能真正出问题的地方。

分布式灾难

另外一点就是我们现在大量的使用云计算和分布式的系统。这些分布式系统在设计之初,就假设这个系统一定会出问题。为什么?当时是想把一堆便宜的机器堆起来,变成一个云,而这些便宜的机器比较容易出故障,但可以很容易的替换,所以设计之初,就进行了大容量错的设计。

分布式系统内部非常复杂,比纽约地铁图还要复杂。一个点出了问题,问题并不来自于本机,而是可能要绕好几台机器,才能找到到底哪里产生了异常,以及异常产生的真正原因。

解决日志问题

我们做了一套这样的系统,这个系统有几块功能,把数据结构化,抽取有意义的字段,同时也结构化的数据做了索引,可以使用户根据任意关键字去搜索相关信息,加强对信息的利用。让使用非机构化数据就像我们平时用Google搜索文字一样简单。

数据分析网

另外是做可视化,人看图的速度永远比看信息快,所以一眼大概能看出这里面的信息呈现什么样的趋势。

再者把这些数据经过计算和处理,全部变成相对可读的信息,并把有用的信息全部做了结构化和自动抽取,这样利用这些信息会容易很多。

但是还是有一些问题,之前说过,这个世界80%都是非结构化数据,即便做了这么一套工具,虽然增强了信息的关联性和利用率,但数量并没有减少,人还是无法把这些信息阅读完。怎样解决这样的问题?

所以我们是用了机器学习中的算法,机器学习比较典型的是监督性学习和非监督性学习。我们想利用能把相似的日志归拢到一起,是不是就可以大大的精简信息的数量?另外一方面就是训练数据和测试数据。归拢完的信息也需要一个机制去验证是不是正确,就好像我们平时学习一样,老师教我们做一些题,再出一些考试检验我们学的是不是对,我们再根据考试的结果去不断提高。所以同样我们也需要数据去验证这个信息是否真的准确。

大家可以看到,相似信息全部是聚好类,用星号表示。结果到底对不对?可能还是有问题。所以我们有一个操作是人进行反馈,可以上下投票,当你觉得这个信息精准,你就往上投票,当你觉得不对,往下投票,可能下次出现的时候,又是不同的排序顺序。当数据量越大,用户使用越多的情况下,它的信息会越来越准确,体现了一个学习的过程。

机器学习除了可以做到对日志数据的精简,还可以做很多其它事。比如现在如果系统出现问题,无论是安全问题也好,还是运维问题,或业务问题。对于企业来说,他们不希望出现这种情况,没什么可以补回来,只能说预防下一次。但是如果通过这些机器的算法,能通过历史的类似信息总结规律去实时响应升值预测一些问题,会比事后解决问题要有效的多。

当大家看AlphaGo和李世石比赛,都觉得AlphaGo很厉害,但是也有人开玩笑地说厉害是厉害,拔电源就可以了。虽然事实上并不是拔电源那么简单,但是也说明一个问题,机器学习方面有很强的计算能力,它并没有自我保护的措施。

像科幻片《终结者》,它也不是无敌的,但是它知道怎么自我保护,知道把自己修复好。如果有一天AI真的出现,要满足的条件之一,就是它不光计算能力很强,也要有自我保护能力。正像机器人三定律,不违反前两条情况下,AI应该自我保护。

最终我们希望达到一个目的,就像刚才说的,机器可以自我修复。比如说我们现在出了问题,很多时候是人作为主角去尝试修复,或者去利用这些数据,而机器只是作为辅助人的操作,做一些流程化的事。之所以这样,原因之一就是可能性太多太复杂。比如说出现一个问题,这个机器可能内部会有上千种可能的原因,导致出现这个问题,而机器自身没法判断。像我们刚才做的,如果能把这些可能的原因归结到,可能只剩三四种,比如刚才看的1000多页的信息,归结到三页,三页里面,可能只有三四种是真正导致机器出问题的原因,机器是不是可以尝试修复自己?机器的反应速度和执行速度要比人快得多,如果他们可以做到自我保护以及修复,当再出现有黑客攻击,机器是不是可以自己把数据库备份,然后再恢复。如果有攻击,我是否能够自动把攻击来源切断,能不能达到这样的目的。

我觉得机器学习的本质和人一样,是一个学习的过程,所以如果机器真有这种能力,它可以通过大量的实战,出问题之后的实战尝试做自我修复。所以最终我们希望达到机器能自我修复的程度,但是真正想实现还很远,希望有一天可以达到。

关于作者:

林坦 互利科技(Hooli Tech)创始人兼CEO

毕业于Rose-Hulman Institude of Technology计算机专业,毕业后曾就职美国Amazon总部负责全球订单系统以及存储系统,后去硅谷创业公司Kifi负责推荐系统。现为互利科技创始人做日志数据管理与分析平台,希望可以帮助工程师和企业创造出更大的价值。

本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。

(0)
小胖的头像小胖编辑
上一篇 2016-05-24 09:00
下一篇 2016-05-24 18:33

相关文章

关注我们
关注我们
分享本页
返回顶部