
接下来我先给大家戏说一下深度学习,然后再从图像处理/金融量化/网络安全几个实用场景来讲讲各位读者会更加清楚该如何使用。内容很多,长文大家看着也累(其实是我写着累,大家不要戳穿我...),那么就分几章分开说吧,毕竟关注的人有些希望zartbot.AI和zartbot.Net一起谈谈网络AIOps,也希望zartbot.AI和zartbot.Fin谈谈量化交易(隐约的嗅出点zartbot.AI渣男的味道....) 但是渣男一开始总有一个自我介绍吧... 那就先假不正经的概述一段吧(注意双重否定代表肯定,这是要分裂成zartbot.Linguistic的节奏么?有丝还是减数?...)
怎么写到一半把自己弄得像个卖书的?经典的东西自然还是老老实实的读书写代码去吧。为什么要提传统的统计学习,一方面它的分析过程完全是白盒推导的,可信稳定,比如你做量化或者信贷分析,总不希望每次重新计算的结果都不一致吧。其实很多时候不要觉得传统的就是过时的,“我看着你们, 满怀敬意”
深度学习逐渐逐渐让我觉得好奇的是一种特别的感觉“这娃瞎乱凑答案居然也能做对那么多题”,仔细看了看,实际上也就是那么回事。我们来换一个很不正经的话题阐述,假设你是一个不懂某个学科的监考老师,但是顺手要帮一个领导的小孩(学渣)作弊,你采取的办法是什么?
很简单啊,把考场里每个人的答案都看一下,找到相同度最高的答案告诉给哪个学渣,那么这就是CNN,例如有一张图片, 可能只有5*5的像素点, 但是呢要提取特征的话,这几个点用传统的方法求平均或者取最大最小值等,或者算方差好像都不太好解决, 那么此时CNN一类的方法,通过矩阵乘法来获取更多的信息,于是对于一个5*5的矩阵,可以利用一个3*3的卷积核构造成一个新的3*3的矩阵,

说完cNN再来吐槽一下RNN,相对于CNN有点像高考的理科讲究解题套路,而RNN有点像文科,讲究记忆和记忆顺序, 从空间结构上而言更加着重于记忆一些顺序的东西,当然这些东西表达能力,说实话这或许还有一丁点用处就是对于时间序列的处理, 传统的TSA中的ARMA ARCH model可能太过理性化了,而这些LTSM GRU BiRNN一类的东西处理时间序列的特征或许做的还真不错,毕竟这些东西死记硬背嘛, 不过做完又发现傻逼了,用这些东西预测又是一坨屎, 就像你让一个股民天天看k线,让他提取各种k线特征,神马双肩顶,神马W底,神马触底反弹,神马一飞冲天, 然后真让他拿钱照着买股票的时候, 一坨屎。。。
吐槽了这么多,其实并不是说反对DL,而是我们不要对现阶段的AI抱有太多的幻想,在规则明确的考试或者棋类或者竞技过程中,或者是例如产线工人这样的机械重复场景中,或许通过DL这些算法可以获得一个较为精确的结果, 而rNN这些语音识别领域也有作为, 毕竟它只需要记住“打开厕所蓝牙马桶”这种机械记忆的动作,或者一些机械的翻译工作。而对于自动驾驶、多人博弈,特别是很多关键领域错了就要死人的场景,DL或许还有太多的问题,这些问题就来自于我们对大量“照本宣科”的那类人的批判, 就像社会上常说的“读书读那么好有什么用”,本质上是同一类问题, 就是大多数用笨办法读辛苦书刷题的人并不能得到社会的认可。
记得三年前在票圈也发过类似的话:
”考虑未来的发展,DL下一步往何处走, 其实有些简单的习题训练框架本身是不赖的,但怎么弄好,其实一方面大量的做CS的人数学基础真的很差,毕竟精力有限,读了CS哪有那么多时间再数学多学几门,所以对于他们而言,所能使用的工具很少,简单地就是一些矩阵计算,微分求导,或者更弱鸡的求 mean/var/skew/kurt .. 数学工具的薄弱也不是那么好补的, 个人愚见或许代数拓扑、代数几何这些东西会对DL后一步如何简化计算并增加泛化能力,同时完成迁移学习等工作有非常重要的作用, 但是要搞懂这几门课吧,还需要十年的苦读,未必有人坐得起这个冷板凳。而当我们已经炒起来了AI泡沫后,把人工智能忽悠到了一个新的高度,大量的资本进入后,未来两三年发现实际上我们能够拿出的只是些common sense的东西或者“人工智障”类产品,虽然某些程度上减轻了人类生活的负担,但还未必能像我们忽悠的时候那样完全解放机械性的生活, 那么逐利的资本迟早有一天会撤出,留下一地鸡毛以及人工神经网络的第三次寒冬,更有甚者,或许是一个再也不可能有春天的严冬,winter is coming, 老老实实多学点东西过冬吧。“
2. 怎么使用“人工智能”
冬天总会过去的,但是有些人没能活过过去的那个冬天,而活下来的后浪们,也应该有点勇气,把传统的变成现代的,把经典的变成流行的,把学术的变成大众的。下面就从几个小景给大家看看人工智能的使用。当然你在此不会看到什么手写数字识别,金融欺诈分析这些老掉牙的或者是不接地气的东西,我更多的要说的是几个解决我们生活中需要大量琐碎的时间完成的重复性劳动。
其实这是一个很简单的需求,同事们开车,需要在晚高峰的时候经常探出窗外看车是不是少了些,那么为啥不做个目标检测的AI呢?给同事们做个网页就好,买了一个Jetson Nano和一个海康的摄像头就可以开工了
摄像头可以直接使用restapi获取图像,然后传给Jetson直接做模型推理就好,目标检测有很成熟的模型,然后利用Tensorflow的框架也可以很容易的调用模型和GPU加速:


2.2高分辨率(Super Resolutions)
有个前同事创业在做智能制造,前期就是定制化T-Shirt,前几日去拜访就顺手用自己的微信头像做了一件衣服。
很有趣的是,他家的喷绘精度非常高,老板给我了一个打印出来的,我发现问题在我给的头像分辨率非常低,所以模糊了

但是大量的场景是客户通常觉得有趣的图经过多次传播分辨率都变得很低,常见的计算数学学到的插值方法都效果不好,那么为什么不探索一下AI呢?随手搜了一些模型,找几个现成的调一下参,搞定~左边是原图,中间是原图放大,右边是AI处理的。

其实很多时候我们需要面对的问题是如何把这些模型顺利的插入到整个生产的环节中,以及如何使得一般的老百姓能够像在百货商店里那样随心所欲的选择AI模型使用,这才是我们一些云提供商需要考虑的,也就所谓的AutoML。例如好朋友做的 第四范式 就是非常典型的一个公司。当然阿里云也有PAI一样的套件,国外的三家云更加成熟一些, 具体的ML怎么落地的文我以后专门来写一个,因为这里面如何实现有争议。
这一段就是zartbot.AI去调戏zartbot.Net做的,也就是所谓的AIOps

本质上机器学习的主要就是解决两类问题:分类(Classification)和回归(Regression),对于网络管理员而言,通过回归分析可以对网络状态进行一个分数度量,而分类则是通过决策树等一系列算法自动推理出故障源并分析出故障原因,只贴个图。


与以往的破坏行为不同,现在网络安全的最大威胁来自于勒索,常见的做法是让受控主机和C&C(Command and Control,简称C2)主机进行通信并接受控制,勒索的触发都需要涉及如何和C2通信。C2自然会是那种过街老鼠,东躲西藏,通常的做法是按照某种特定的算法生成一个DNS域名,通过查询获得地址,例如wannacry所采用的域名。

那么是否能够通过深度学习来学会这些域名规则呢?我们把Alexa的前100M个网站作为白名单, 360等网站收集的数据作为黑名单,来训练一个模型就行了啊


如上图所示,白名单在左,黑名单在右,完全转换成一串数字了吧。训练很简单LSTM炼丹就好了。参数都不用多调整。

这样一台能够自动发现Malicious Host的路由器就诞生了,所有的功能都可以在路由器上完成,DNS报文DPI,完了送模型推理,发现问题直接下ACL封禁~ 当然还有一种办法就是买某司的OpenDNS服务,自带了这些功能~

其实各行各业用的最多的便是异常检测和预测性检验/预测性运维,对于一些传感器的参数进行异常预测,例如金融中高频交易常见的对异常订单的预测,这些地方可以使用传统的时间序列分析,当然也有现代的方法就是RNN去拟合。

常见的实现是Facebook的Prophet:https://facebook.github.io/prophet/
而针对金融行业常用的就是ARIMA这样的模型计算自回归,具体可以参考下面这本书
一些较为简单的场景,特别是很多运维数据具有季节性周期时,还可以Seasonal Decompose一类的算法,分离趋势和周期性波动,对于系统容量预测和运维异常(观测残差)等非常有用,下图大概是我8年前做的一个实验

嗯,就这样吧,zartbot.AI的首篇登场了,下一步可能会接着写一些如何进行数据流式计算和异构计算的东西, 主要是解释一下最近在读的几本书




