“人工智能” 还是 “人工智障”(1)

好吧,我又分裂了…今天是zartbot.AI在发文…居然那群学霸好友问是减数分裂还是有丝分裂…真是欺负单身狗的时候都那么的学术,服了你们了…… 还有人问为啥叫zartbot,其实它是一个合成词,zart来自德语“sehr zart und empfindlich”,而bot就是robot的缩写,以Z开头么,来自于某行业称某司为二流(第26个字母)的梗,其实只想混迹于人流中,做一个温柔的扫地机器人,自认二流才能争一流嘛, XD


回到今天的正题,其实很多时候我们对人工智能的期望,就如同我们的数学老师:

“人工智能” 还是 “人工智障”(1)

很长一段时间,作为一个数学系毕业的人,对于“人工智能”这样的词汇非常的排斥,其实从深度学习出现以前,对于我而言,无非就是几门概率统计/随机过程的课程罢了。所以是“人工智能”还是“人工智障”,
用好了就是“智能”,瞎搞就是“智障”。

接下来我先给大家戏说一下深度学习,然后再从图像处理/金融量化/网络安全几个实用场景来讲讲各位读者会更加清楚该如何使用。

内容很多,长文大家看着也累(其实是我写着累,大家不要戳穿我…),那么就分几章分开说吧,毕竟关注的人有些希望zartbot.AI和zartbot.Net一起谈谈网络AIOps,也希望zartbot.AI和zartbot.Fin谈谈量化交易隐约的嗅出点zartbot.AI渣男的味道….) 但是渣男一开始总有一个自我介绍吧… 那就先假不正经的概述一段吧(注意双重否定代表肯定,这是要分裂成zartbot.Linguistic的节奏么?有丝还是减数?…


1. 戏说机器学习/神经网络/深度学习
为什么是戏说,因为有一个显而易见的问题:


What’s the difference between
AI
and
ML
?
If it’s written in
Python
, It’s probably
machine learning
If it’s written in
PowerPoint
, it’s probably 
AI


一本正经的的书估计大家也没心思在微信里读,微信公号适合假不正经的调侃并且轻松的让一般人明白道理,正经的书推荐几本自己去看就行了。
我们继续来看假不正经的话题,没法用Python讲ML
(别看着简写就想歪…)
,因为没有Machine跑代码,那么我们就从如何学习(Learning)讲起吧,神经网络的本质就是“授人以鱼”,也就是模型训练的过程,俗语叫“炼丹”
本质上就是借助计算机虚拟化成一堆“鱼甲,鱼乙,鱼丙,鱿,鲐,鲇,鲸,鲉,伢,蠛,,<。)


1.1 曾经的专(砖)家系统
反正都是学习和训练,师者,传道授业解惑矣,为啥不一开始就找一堆学霸来当老师?毕竟名师出高徒啊,其实在很多年前还真有人干过,也就是九十年代风靡一时的“专家系统”,但是问题又来了,一系列靠专家制定的规则并不能涵盖系统的方方面面,另一方面,如何鉴定“专家”和“砖家” 又成了一项非常难的工作。突然有个不讲道理,胡编乱凑拼凑解题答案不讲解题过程逻辑的家伙“深度学习”登场了。专家们为了护住手上的砖,智能的到处诋毁那是一个黑盒甚至是个魔盒。特别是很多所谓的统计学家,好不容易搞懂随机微分方程,好不容易通过时间序列分析模型赚点零花钱却被一群计算机系的抢生意了,自然是不开心的呀~


1.2 传统的统计学习

其实我刚好夹在数学系和计算机系中间,以前靠计算机奥赛保送到某男子技术学校,然后脑子抽了任选专业读了数学系,说是为了祖国金融事业的未来? 其实最开始的ML模型大多数来自统计学的结论,例如最常见的:最小二乘法/KNN/SVM/PCA这些东西,这些模型通常属于线性判别模型, 在一些复杂边界的情况下很难做出Tradeoff。例如在量化交易领域最早就是非常简单粗暴的用历史的方差来衡量波动风险,后期渐渐地有一些时间序列分析,特别是GARCH Model一类的方法来衡量和预测风险, 而时间序列模型通常对于平稳要求很高, 非平稳序列处理也有难点,而且结果来看,很多时候也很难有很高的精确度。
了解统计学习当然就顺手贴两本书自己看吧…

怎么写到一半把自己弄得像个卖书的?经典的东西自然还是老老实实的读书写代码去吧。为什么要提传统的统计学习,一方面它的分析过程完全是白盒推导的,可信稳定,比如你做量化或者信贷分析,总不希望每次重新计算的结果都不一致吧。其实很多时候不要觉得传统的就是过时的,“我看着你们, 满怀敬意”


1.3 深度学习?CNN瞎扯篇

  深度学习逐渐逐渐让我觉得好奇的是一种特别的感觉“这娃瞎乱凑答案居然也能做对那么多题”,仔细看了看,实际上也就是那么回事。我们来换一个很不正经的话题阐述,假设你是一个不懂某个学科的监考老师,但是顺手要帮一个领导的小孩(学渣)作弊,你采取的办法是什么?

很简单啊,把考场里每个人的答案都看一下,找到相同度最高的答案告诉给哪个学渣,那么这就是CNN,例如有一张图片, 可能只有5*5的像素点, 但是呢要提取特征的话,这几个点用传统的方法求平均或者取最大最小值等,或者算方差好像都不太好解决, 那么此时CNN一类的方法,通过矩阵乘法来获取更多的信息,于是对于一个5*5的矩阵,可以利用一个3*3的卷积核构造成一个新的3*3的矩阵,

“人工智能” 还是 “人工智障”(1)

或者采用1×1或者5×5的卷积核来处理, 并且将这些计算好的东西变成一个新的数组,然后呢觉得数据多了就可以再来个最大最小值或者均值的过程,那么就成为池化(我又要吐槽这帮数学差的做CS的人总他妈的喜欢造名词)
我们把这样的cNN叫做“解题套路”, 然后有可能一种套路不管用,于是例如google的inception又把集中套路组合起来形成新的套路, 然后有了套路就可以照搬套路解题了,那么很简单的做法就是我把套路摆哪里, 然后用答案倒推到题干的过程(多么熟悉啊)并且同时让自己沿着这套路刷各种题,我们将其称为“训练”, 然后又找点“黄冈xx试卷”来做模拟考打分, 这就叫“测试”, 其实这样下来或许各位就明白了, 活生生的一场应试教育之路。所以数学系的很多人有些鄙视的就是这种靠刷题刷出来的学霸缺少些灵性罢了, 而这些灵性通俗的说法就是“模型的可解释能力”。
于是问题就来了,很多学数学的人对于一个“过去学的很好考的很棒的学霸”,未来能否举一反三或者持续保持较高的准确度都持有怀疑态度, 于是好事者就经常拿篡改题干的方法来调戏“学霸”, 于是有些人工智障的学霸就经常做错题了。于是有些做法就是在“套路”中添加套路, 例如ResNet,本质上就是在解题解到一半的时候,再把题干丢进去,或者前一步的中间过程丢进去,检查自己是不是做错题了。另一个做法就是整理错题集和故意在做对的题上改改题干让自己再做来校验自己的解题能力,于是CS的一些人又给这样的方法取了个名字叫“干(GAN)!”,是不是瞬间觉得学霸套路多了啊~,
然后发现考试成绩模拟卷做的很好,实际考试做的很差,又把套路的使用做些约束,例如正则约束, 然后每次的考题给的东西觉得影响大了,又来算个标准分,美其名曰Batch Normalization,
所以很多靠智商和悟性的数学系学生与生俱来对于这种解题机器有很大程度的反感和偏见, 而更多的偏见在于一些普通人本来没啥能力的,参加了个学霸辅导班(由于题变多了,而且刷题速度快了,而这些Caffe TF torch就跟培训机构一样)而且考试成绩有所提升,就蜂拥而上去刷题。。。到头来我真不明白有些人说“面对时代的洪流,相比嘲弄别人随波逐流,思考应该如何顺势而为,”这话是什么意思了。。别人靠读培训中心考上了清北复交,然后呢?就成功了?而对未来科研能力和社会贡献如何评价?至少人类的进步和心智的荣耀不是靠刷题刷出来的。


1.4 深度学习?RNN瞎扯篇

说完cNN再来吐槽一下RNN,相对于CNN有点像高考的理科讲究解题套路,而RNN有点像文科,讲究记忆和记忆顺序, 从空间结构上而言更加着重于记忆一些顺序的东西,当然这些东西表达能力,说实话这或许还有一丁点用处就是对于时间序列的处理, 传统的TSA中的ARMA ARCH model可能太过理性化了,而这些LTSM GRU BiRNN一类的东西处理时间序列的特征或许做的还真不错,毕竟这些东西死记硬背嘛, 不过做完又发现傻逼了,用这些东西预测又是一坨屎, 就像你让一个股民天天看k线,让他提取各种k线特征,神马双肩顶,神马W底,神马触底反弹,神马一飞冲天, 然后真让他拿钱照着买股票的时候, 一坨屎。。。


1.5 瞎扯总结

吐槽了这么多,其实并不是说反对DL,而是我们不要对现阶段的AI抱有太多的幻想,在规则明确的考试或者棋类或者竞技过程中,或者是例如产线工人这样的机械重复场景中,或许通过DL这些算法可以获得一个较为精确的结果, 而rNN这些语音识别领域也有作为, 毕竟它只需要记住“打开厕所蓝牙马桶”这种机械记忆的动作,或者一些机械的翻译工作。而对于自动驾驶、多人博弈,特别是很多关键领域错了就要死人的场景,DL或许还有太多的问题,这些问题就来自于我们对大量“照本宣科”的那类人的批判, 就像社会上常说的“读书读那么好有什么用”,本质上是同一类问题, 就是大多数用笨办法读辛苦书刷题的人并不能得到社会的认可。

记得三年前在票圈也发过类似的话:

”考虑未来的发展,DL下一步往何处走, 其实有些简单的习题训练框架本身是不赖的,但怎么弄好,其实一方面大量的做CS的人数学基础真的很差,毕竟精力有限,读了CS哪有那么多时间再数学多学几门,所以对于他们而言,所能使用的工具很少,简单地就是一些矩阵计算,微分求导,或者更弱鸡的求 mean/var/skew/kurt .. 数学工具的薄弱也不是那么好补的, 个人愚见或许代数拓扑、代数几何这些东西会对DL后一步如何简化计算并增加泛化能力,同时完成迁移学习等工作有非常重要的作用, 但是要搞懂这几门课吧,还需要十年的苦读,未必有人坐得起这个冷板凳。而当我们已经炒起来了AI泡沫后,把人工智能忽悠到了一个新的高度,大量的资本进入后,未来两三年发现实际上我们能够拿出的只是些common sense的东西或者“人工智障”类产品,虽然某些程度上减轻了人类生活的负担,但还未必能像我们忽悠的时候那样完全解放机械性的生活, 那么逐利的资本迟早有一天会撤出,留下一地鸡毛以及人工神经网络的第三次寒冬,更有甚者,或许是一个再也不可能有春天的严冬,winter is coming, 老老实实多学点东西过冬吧。“


2. 怎么使用“人工智能”

冬天总会过去的,但是有些人没能活过过去的那个冬天,而活下来的后浪们,也应该有点勇气,把传统的变成现代的,把经典的变成流行的,把学术的变成大众的。下面就从几个小景给大家看看人工智能的使用。当然你在此不会看到什么手写数字识别,金融欺诈分析这些老掉牙的或者是不接地气的东西,我更多的要说的是几个解决我们生活中需要大量琐碎的时间完成的重复性劳动。


2.1目标识别(Object Detection)

其实这是一个很简单的需求,同事们开车,需要在晚高峰的时候经常探出窗外看车是不是少了些,那么为啥不做个目标检测的AI呢?给同事们做个网页就好,买了一个Jetson Nano和一个海康的摄像头就可以开工了

摄像头可以直接使用restapi获取图像,然后传给Jetson直接做模型推理就好,目标检测有很成熟的模型,然后利用Tensorflow的框架也可以很容易的调用模型和GPU加速:

这部分的代码可以自己去下(https://github.com/ActiveState/gococo),推理的过程是参考的一个开源项目,然后使用Golang调用的TF,但是后端的数据流式处理引擎是某司的专利产品,就不多说了,
获取完了以后,扔到一个流计算引擎统计分析和产生WebUI一气呵成,于是同事们就可以轻松的监测到晚高峰的流量了。

2.2高分辨率(Super Resolutions)

有个前同事创业在做智能制造,前期就是定制化T-Shirt,前几日去拜访就顺手用自己的微信头像做了一件衣服。

很有趣的是,他家的喷绘精度非常高,老板给我了一个打印出来的,我发现问题在我给的头像分辨率非常低,所以模糊了

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

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


2.3 网络故障分析(Network Performance Assurance)

这一段就是zartbot.AI去调戏zartbot.Net做的,也就是所谓的AIOps

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

是不是一下子就省掉了大量的琐碎的运维工作时间,至于里面的模型,用了LightGBM或者XGBOOST做的决策树,其它的就无可奉告了。我只告诉你这些功能全部做到了路由器上,无论是低端的千元机到高端的1M USD的大机器,我可是第一个在路由器上直接玩神经网络的人哦~

而且我还是那个传说中的全栈工程师(zartbot.Front/ zartbot.Backend/zartbot.Net/ zartbot.AM/zartbot.Cook) ,我绝对不叫苦,还免费送AI(zartbot.AI)模型训练, 老板你们财务室还缺人不?zartbot.Fin可以做财务和当基金经理~


小小淘气一些,因为怕大家看累了,回到正题。
2.4 网络安全分析(Security Assurance)

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

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

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

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

2.5 异常检测

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

常见的实现是Facebook的Prophet:https://facebook.github.io/prophet/

而针对金融行业常用的就是ARIMA这样的模型计算自回归,具体可以参考下面这本书

一些较为简单的场景,特别是很多运维数据具有季节性周期时,还可以Seasonal Decompose一类的算法,分离趋势和周期性波动,对于系统容量预测和运维异常(观测残差)等非常有用,下图大概是我8年前做的一个实验

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

“人工智能” 还是 “人工智障”(1)》来自互联网公开内容,收录仅供学习使用,如侵权请联系删除。本文URL:https://www.ezixuan.com/971692.html

(0)
上一篇 2023年 1月 1日 下午3:59
下一篇 2023年 1月 1日 下午4:16