知识的传授从来不是一件简单的事情,特别是向初学者、行外人进行传道授业解惑,必须深入浅出。教育是引导,我们中国人常说“开而不达”,意思就是要开启一个人,而不是帮他达到,是激发他对某一件的兴趣、或者是对未来的理想,然后激励他以行之有效的方法去达成自己的目标。因此作为在健身和人工智能领域都略有知识与经验的我来说,认为有必要与大家分享一下自己的一些小见解,帮助你在健身房可以和别人谈AI,也可以在敲代码的时候和别人聊健身。正如我之前所说,开而不达,希望这篇文章可以帮助有需要的人开启各自对不同领域新的认知。
在开始之前,先对名词做一下必要的解释。这篇文章中的“健身”主要是以健体运动(bodybuilding)为主,而拿来与健身作为比较的,是AI领域中的机器学习部分,包括了传统的统计机器学习与深度学习、强化学习、迁移学习等等。
虽然机器学习不是AI完全问题,就好像撸铁并非等于健身的全部一样,但这并不妨碍我们管中窥豹。
既然讨论两件事物的相关性,那么必定它们需要有一定的内在联系,不严谨地总结来说,两者几乎有相似的步骤:学习-计划-训练-恢复-循环迭代-验证-保持-憧憬明天。
学习之初:基本认知
俗话说“健身先健脑”,纵然你可以凭一腔热血开始跑步、俯卧撑、仰卧起坐,可以很有激情的开始、也会以大吃一顿结束。然而没有基础知识或者健身常识,你所做的努力尽管并非白费,但一定是以事倍功半的方式,说不定增肌变成了增肥、减肥减掉了“大姨妈”,到头来还会损坏膝盖、颈椎,甚至是腰椎。
就像AI的机器学习一样,大可以网上先找一段python代码或者预训练好的模型自己捣鼓一番,除了有可能增加学习兴趣之外,并无太大的用处,有可能还会让人产生已经获得知识的错觉。
AI是一门科学,健身也是一门科学,在没有学习其理论知识并作思想准备之前,盲目的投入极有可能在之后遇到挫折时使人快速地放弃,因为你不知道问题出在了哪里,甚至还会带来运动伤害、对新事物的挫折感以及对学习及生活的倦怠。
可能话说得有些严重,但学习基础知识的过程是必要的。例如对健身来说,你要知道分类的方法有很多,取决于你的目的是什么。有有氧运动和无氧运动,有器械锻炼和非器械锻炼,有局部锻炼和组合锻炼,有增肌、塑性、减脂、保持之分,也有大重量、长间隔与小重量、短间隔之分,肌肉的锻炼甚至还分力量、围度、耐力等不同的锻炼方式。以增肌为例,肌肉不是在锻炼的过程中生长的。锻炼的过程只是负责将肌纤维撕裂,以提供肌肉生长的空间,并产生必要的生长素,运动后通过正确的饮食来补充必要的碳水、蛋白质与脂肪(饱和与不饱和脂肪)来补充肌肉生长需要的营养,配合以充足的睡眠来提供肌肉生长所需的时间(当然肌肉生长的原理非常复杂,这里不表,可以自行百度)。所以大家常说,健身这件事,三分练、七分吃、还有九十分靠睡。
反过来对学习AI的人士来说,我们首先要清楚目前时代的技术所造就的AI不是万能的,甚至可以说是相当“低智”的。机器学习的方法作为AI领域发展最快的技术之一,它教会机器的并非自我思考而是绝对的服从与执行,构建的机器学习模型只是按照人类“投喂”给它的数据,不需要特别的程序编写,就可以自我学习到一种特定模式识别的能力。这种模式可以是识猫、识狗、识人,甚至是看图说话、看图讲故事、即兴写诗等,但这一切都不代表今天的机器拥有了自我思考的能力、拥有了自我肯定或否定的高阶思想、更不代表TA们产生了自我意识,而且,在将来很长一段时间内不会拥有。
今天的AI,不严谨的说是一种模拟与模仿智能,是尽量学着“拷贝不走样”,虽然大多数时候以今天在产业界的应用来说,想“不走样”也是很难的,因此我们在考虑和设计一个AI能力或尝试用机器学习技术去解决一个难题时,首先要考虑的不是用什么算法或模型,而是这个问题有没有解,如果对人来说也是无解的问题(无解不是效率问题),那么在这个时代就不能奢望AI可以代替。但就算在这个阶段还相当的“低智”,AI已经实际帮助人类在很多产业应用上大幅度的降本增效、开花结果,例如人脸识别之于安防、车辆识别之于交通,语音语义之于客服,AI甚至还可以保护环境、保护动物、保护驾驶员减少交通事故,而且以一种极有效率的方式,甚至已经有相关的岗位因为AI的出现与能力的成熟不得不取消,这似乎是进步的革命对于旧世界带来的一种必然。
制定计划:认清目标
在学习了两门学科的基础知识之后,就是制定计划了。
对于健身来说,要明确自身运动的目标,是增肌、塑性、保持还是减脂。如果是增肌,还要分是力量型的还是健美型的。这两者的共性是要保证每天摄入的卡路里热量要大于消耗的,即造成热量盈余。如果是力量型的,可能要选择大重量、长间隙、少组数的方式进行锻炼;如果是健美型的,可能要选择渐进大重量、中等间隙、多组数的方式进行锻炼,持续不断对肌肉进行较高强度的刺激;如果是耐力性的,例如长跑、长距离游泳等,则可能要选择中等重量、短间隙、多组数的方式来对锻炼肌肉耐力。接下去是如何设计训练时间与部位,通常以周为单位。如果一周内一个部位只锻炼一次,可能无法造成足够的刺激与生长,导致下一周的运动水平无法快速地增长,通俗来说就是练得不够;如果同一个部位锻炼的次数过多,距离上一次锻炼的时间过近,则身体不能很好的恢复,处于长期疲劳的状态,无法生成足够的生长激素还有可能在疲劳的状态下因为盲目地上重量导致运动伤害。一旦出现了损伤,你失去的可能就不是一两天的锻炼日了,这也是健身人士最不愿看到的,通常我们叫锻炼过度。不过你只要没有举铁举到吐的经历,一般普通人不用担心运动过度,反而锻炼不足是时常发生在我们具备顽固惰性的普通人身上的事情。还好在健身这件事上,我们有大量的“先验经验”可供参考。例如有人喜欢胸背腿+有氧四天一循环,也有人喜欢胸背腿肩+手臂的五天一循环,在每天的锻炼中加上核心运动、小肌群锻炼与高强度短间隙的有氧运动(HiiT)。
这些都和你的健身目标有关,也因人的接受程度不同而不同,而且也不是死规矩。如同吃药,人的身体有耐药性一样的,锻炼的时间长了(通常指过了三个月的“新手福利期”),身体对锻炼的重量、时间、方式产生了习惯,运动效果就会进入所谓的“平台期”,这个时候就需要加大重量、减少休息时间或者更换不同的动作、运动计划来打破身体的惯性、打破“平台期”。因此,健身的计划也是一门学问。
对于AI领域来说,计划阶段通常是决定性的。
首先明确AI需要达成的目标是什么,为了达成目标的过程是否是可解的,确定是一个分类问题、回归问题、搜索问题还是聚类或其他问题,这决定了之后AI技术的选择。例如如果是传统的机器学习,首先可以确定的是使用模型的种类,分类模型如决策树、随机森林、GBDT,回归模型如线性可分问题的线性回归(实际场景非常少)、逻辑回顾等,还有许多聚类模型。
其次是非常非常重要的特征工程计划,因为不同的模型对特征工程的要求也不一样。特征工程通常包括特征构建、特征提取、特征选择。例如我们现在有一个预测客户购买行为的AI目标,首先可以认为这是一个分类问题,最后输出的结果无非是这个客户会买或者不会买的零和结果。在这个命题下,特征构建就是构建如同性别、年龄段、教育背景、资产水平等与这个客户相关的特征;特征提取就是为了让这些特征对最终分类的结果有更好、更直观的贡献,把基础特征提取为组合的特征,例如大龄青年、钻石王老五、年轻有为等;有时候你会发现可以描述一个人的特征特别多,但不是每个人的生命都是那么精彩,这就造成了特征空间的稀疏性,对模型分类的结果与效果都不利,这个时候就需要特征选择的过程来机器筛选一些真正对结果有帮助的特征,像“上厕所是否刷抖音”这种特征对这个人是否会购买地铁上盖的房子可能一点关系都没有,理应去掉,所以通常利用特征对结果的相关性进行特征的选择(当然还有许多其他方法,暂且不表)。在以前的机器学习领域,广泛流行的一句话是“数据和特征决定了模型的上限,而模型、算法与参数等只是帮助逼近这个上限而已”,可见特征工程的重要程度了。
不过当前是深度学习,或者说是深度神经网络(Deep Neuro Network)算法的时代,DNN对特征工程并没有非常高的要求,而且DNN的专业人员其考虑问题的方法、设计方案的方式也会与传统的攻城狮、程序猿非常不同。他们考虑的执行计划不会跳出DNN的框架,是CNN(卷积神经网络)问题,还是RNN(循环神经网络)问题,用几层DNN,CNN/RNN是否要变种,输入是什么,输出又在哪一层上(并非所有的DNN应用输出都是在输出层,很多使用隐藏层的结果输出),是否要拼接多个DNN来完成任务等,例如在语音识别(Automatic Speech Recognition)技术中关于语音特征提取的部分,就会有使用CNN(卷积神经网络)+LSTM(长短期记忆网络)+DNN(深度神经网络)(CLDNN)的方式,最近火热的Google BERT(Bidirectional Encoder Representations from Transformers-Transformers的双向编码表示,这是一种新的语言表示模型)语言模型就是链接、镶嵌了多个不同类型的DNN变成了一个新的算法模型。与健身一样,还好在这个领域先前的探索者给我们提供了许多“先验经验”以开源代码或结构的方式提供给后来的实践者,像CNN领域的LeNet、AlexNet、ResNet、VGG、GoogleNet等(这些都是各大前辈与名企构建出来的不同的深度神经网络模型,并通常以该网络的特性或开发者本身来命名。一次次模型的迭代都基于上一次模型的先验经验进行改良创新,准确率越来越高、性能越来越强,充分说明了罗马并非一日建成、登月并非一日之功),还有各种成熟的RNN、Attention机制(注意力机制)帮助我们处理各种各样的问题,当然要想效果好,在实际应用当中还需要我们自己动手去做调整与优化。
因此健身与AI都需要进行计划,制定行动目标、设计详细方案。
基础设施
健身的初学者可以足不出户就可以体验到锻炼的乐趣,移动互联网时代跟着手机APP就可以做些有氧和无重器械的无氧运动,比如Keep,当然还可以选择像瑜伽垫、瑞士球、小重量哑铃、弹力带等在家就可以使用的轻器械。
有条件的人士可以选择健身房,健身房里的器械全面:固定器械可以有效为无法找准发力部位或姿势不稳定的人士提供高效的局部健体、做到更有效的顶峰收缩,自由运动区的杠铃、哑铃、牧师椅、史密斯机等也会涵盖较广的健身姿势和动作,更不说有氧区常见得跑步机、椭圆机、登山机、划船机等,是大多数减脂女生的首选。更有条件的可以去更专业的健体房,请私人教练,上团操课、健美课以及所谓的拉伸课等。
和健身一样,AI领域的基础设施已经很完善,不需要重复造轮子。
在AI领域现在除了初学者跟着教材会写一些基础的算法代码(常用python)外,很少开发者会从底层功能从头做起,通常会在常用的资源库(library)里面选用合适的已经成型的代码进行上层应用,例如skicit-learn、Spark ML等(常见的机器学习开发库),或者针对成熟的算法架构进行有针对性的改进,例如集成学习、增加隐藏层、更换损失函数/激励函数、调整参数、重构softmax等。一种常用的更有效率的做法就是使用算法框架,例如tensorflow、caffe、digits、PyTTorch等,可以使AI模型的构建非常有效率,在调度层也不是从头手写,而是利用K8S、基于yarn的Gaia等调度工具。对于初学者有条件的可以去各类AI学习类平台学习MOOC的课程,例如Udacity、Coursera等,费用也是上千甚至上万,可不比几年的健身卡便宜。
在说说实操中的机器学习、特别是深度神经网络的模型训练,异常耗费计算资源,没有几块、几十块GPU显卡很多时候是搞不定海量数据的,这也是深度学习的特点,它不像传统机器学习需要大量的特征工程,特别是免去了手动特征提取的麻烦,是允许机器学习使用特征的同时,也学习如何提取特征,换句话说,是教机器学习如何学习。而GPU显卡现在的市场价格,那就堪比健身房里的1对1私教课程。
欲先攻其事必先利其器,针对不同的目的、不同的起步与不同的环境(经济)条件,健身与AI一样,都要选择适合自己的“基础设施”。
训练-恢复-循环迭代
制定了计划、选好了工具,接下来就是撸起袖子开干了。健身的训练与AI的训练都是需要时间的、都是需要忍耐的、都是有困难需要克服的。健身需要的时间通常以月计、以年计,需要忍耐的是身体对高糖(高GI食物)、高脂食物的渴望、对酒精烟草的依赖,需要克服的是身体的抵抗与天生的惰性。管住嘴、迈开腿,要认清的一点是,健身本来就是反人性的。
AI的训练是要好些,通常以次、以日计。虽然不用自己练,是让机器练,但仍要对着屏幕忍受心中对结果无比期望又患得患失的煎熬,仍要克服在多次三番结果不如人意之时想删库跑路的冲动。
恢复,是训练之后毕竟的过程,你的身体需要恢复,你的大脑也需要恢复,大概也只有机器不需要恢复的了,只是费些电。身体没有休息好就硬上锻炼,不但容易造成运动伤害,也没有留足足够的时间让肌肉纤维在之前撕裂的缝隙中生长出来,反而不利于“肌肥大”的健身目标之一。
另一方面对于AI构建,如果你的脑子没有休息好,不但会“短路”,更会消磨你的创造力,会让你固执地陷进某一胶着的境地而自不知,思维定式是创造性工作最可怕的敌人、是技术改进道路上虚掩的泥潭与没有井盖的黑洞。
身体休息好了、脑子思路清醒了,我们就要开始下一个回合了!健身过程中,有所谓的“新手福利期”,通常指前三个月甚至半年。由于身体从不锻炼到开始锻炼,身体的各部位为了适合增长的运动需求,会开始出现“增加自身的能力”的诉求,导致人的状态会走出原来的“舒适区”,运动能力快速提升,无论是增肌还是减脂,效果都会很明显。
然而当你的身体适应了当前的运动状态,那么再用原来的健身计划就无法让身体产生更多的“不适应“,就会进入所谓平台期。为了翻越平台期,有经验的健身人士通常会选择更高效、更不同的锻炼方法,让身体找回之前不适应的感觉:更大的训练容量、更少的组间休息或更多的组合锻炼等。这也是为什么组合动作例如平板卧推、引体向上、深蹲等一直受到大家青睐的原因之一:大肌群、部位多、够刺激。
要记住,由于本能的原因,在这条路上,你的身体是需要“新鲜感”的。
我们回到AI领域,在一次训练完成、测试完成之后,通常我们会看到模型的测试指标如何如何,例如混淆矩阵中的召回率、准确率(精度),ROC曲线(Receiver Operating Characteristic-接收者操作特征),AUC值(Area Under the Curve-ROC曲线下的面积)等,在性能领域例如响应时间、QPS(Queries Per Second-每秒查询率)、满足并发数等。
没有最准、只有更准,没有最快、只有更快,更快更高更强同样适用于AI领域。算法专家们苦苦研究底层原理、优化模型参数、设计算法改进,可能只为下一次训练后的模型测试结果有0.01%的提高。精益求精的工匠精神也许是我们之前忽略的,但是渐渐被更多人所追求的,让大脑离开“舒适区”,不断改进创新,为的就是让明天的人工智能多一份“智能”、少一份“人工”。
例如前段时间Google发布的BERT[1]模型,在自然语言理解领域绝对是里程碑式的工作。我们不能说BERT模型是从0到1的原始创新,但绝对是借鉴了之前各种算法模型的经验与教训,经由很强撮合能力的团队站在前人的肩膀上所做的一次成功的集成创新,而其带来的轰动可以表达为:正所谓“一切过往,皆为序章”,沉积了有五年之久的自然语言处理NLP领域,开启了新的篇章。
验证
这世上大多数事情终究会有“证明”、“验证”的过程,所谓“是骡子是马拉出来遛遛”。这也是在哲学上那三个“终极问题”:我是谁、我从哪来、我要到哪去的具象反映之一。人活一世,总要证明些什么,证明自己活过、证明自己来过。在健身界有一种说法是说,健身的最终目的并不是为了要和别人比,而是要和昨天的自己去比,每一天要活得更好。
如果说健身是为了证明给自己看,那么或许创造AI是人类为了证明给人类自身以及人类之上那个从未露面的“主宰”看,纵使我们由你创造,现在我们也有能力赋予这冰冷的机器以人类的智能,就像你赋予人类以认知的能力一样,最终使得我们更像你一样……那在健身界最好的验证自己的方法,就应该是照镜子、称体重、测体脂了吧,毕竟这是看得见的改变。当然,更专业的办法也有,就是参加专业的比赛,拿到名次,让世界认识你,只不过那是谈何容易的事情。
在AI领域也有各种比赛、各种数据集、各种开源项目等待着各个算法团队去参与、去拿名次、去刷分。所谓刷分,就是在公开竞赛或者数据集上通过测试自己的模型来达到某一准确率而名扬天下的做法,例如团队A在某个公开的数据集上做算法模型的测试[2],验证自己的模型对对象的识别率能有99%,那么团队B就会竭尽全力做到99.1%,同竞技体育一样,没人会记得第二名。
副作用
不用提“是药三分毒”,凡事都会有些副作用。健身与AI从业者的相同点就是“痛”。训练过后的肌肉酸痛,是肌肉轻微炎症的一种表现,是肌纤维撕裂的证明,是训练出身体成长空间的证明,也是你挥洒汗水之努力的证明。
构建AI模型带来的隐隐的“偏头痛”,这个就不好说了,或许是脑细胞死亡的表现、或许是大脑皮层沟壑加深的过程、亦或许只是你在封闭的房间里呆的时间过长,大脑缺氧的表现。无论如何,都是一种“痛并成长”的证明,应该不是坏事。
两者也倒有不同之处。生物学家说,运动会让人体产生多种化学物质,其中就有“内啡肽“和”多巴胺“[3]。内啡肽在药理学上有大脑自我制造的类吗啡物质之意,可想而知其代表着愉悦和欣快感,也是保持年轻的秘诀;而多巴胺这种脑内分泌物和人的情欲、感觉有关,它传递兴奋及开心的信息。还有什么能产生多巴胺的呢,香烟中的尼古丁,以及爱情。内吗啡的止痛效果让你暂时忘却现实的疾苦,多巴胺则让你激动兴奋,犹如初恋。还有什么比这更好的组合呢。
反观人工智能,AI的形成过程中断然是不会产生什么激素的,一个成功的AI算法、模型、应用可能会给创造者带去莫大的成就感,但同时造成的副作用可能就是其他人类的“失业”。
这并非危言耸听。效率低下且重复作业的岗位正在逐渐消失,无论是用“眼”的,用“耳”的,还是用“口”的,甚至原本某些“走心”的活儿也慢慢被各种AI应用所取代,同传、速记、客服、质检,这里不一一举例,但可以预见的是,如果你的事业或者工作在将来不能触动到人们的内心世界,引起情感上的共鸣,那可能就会被机器所代替,只是时间长短而已。
这也是为什么近年来那么多从业者、大公司,包括政府有关部门一直在呼吁要重视AI的道德及伦理问题,要让AI“可知、可控、可用、可靠”,要制定AI相关的法律法规,以防在不远的将来AI成为人类的“普罗米修斯”。
可能有些朋友还不知道,时至今日,AI领域的深度神经网络以及其他一些机器学习算法,其可解释性的问题,仍是各组织想要解决的问题之一。
保持
健身与AI其实上手的门槛都不高。健身新手可以通过几组简单的深蹲开始自己的多巴胺之旅,次日同样可以感受到来自肌肉的“呼喊”。AI新手利用python简单的几句代码就可以实现一个线性回归,开启AI路上的“Hello World!”。
然而尽管门槛很低,但如同这世间的许多事,“坚持”才是难能可贵的特质。对健身来说,无论问哪一个运动大拿,他们都会告诉你有太多次想要放弃、有太多次想要为自己寻找借口而错过一次训练,特别是在获得感以年为单位的情况下,它不像打怪掉宝那样可以获得及时的反馈,也不像食欲那样很容易被满足,身体一寸一寸的改变如同你眼角的细纹只会慢慢地浮现,罗马不是一天建成的,所以才显得难能可贵。
健身,特别是以终身健体为目标的各位,在开始前最好就有对未来的直视,这并非一份工作、一项任务,一旦选择前行,就会成为一种生活方式。
想要成为AI大拿,付出的努力与坚持自不必说。而就拿AI模型来说,也是有“保质期”的,其期限通常与“消费者或管理层的善变”有关。由于时间对于人类世界来说,仍是单向的,只有从过去到未来这一种方向,因此模型的训练都是基于过去的数据,训练完成通过验证上线运行。
过去的数据代表着消费者过去的行为、企业组织过去的业务流程、社会机器过去的通识,我们所做的仅是教会模型以过去的经验去判断未来,如同我们人类一样。
只要人类无法预测未来,机器同样不能,所以今天我们讨论的是“人工智能”,而并非“神工智能”,不要奢望AI无所不知。今天在业界常说的预测模型,或许存在歧义,应当说其实是一种“预判模型”,以过去判当下。
所以如果消费者的行为喜好、企业的流程业务、乃至这个社会通识常识发生了变化,模型的预判就不准了。通常来说以前一个模型训练完毕,可以保持个三个月或者半年之类,我们需要做的就是在模型的全生命周期管理中监控其表现,如果发生了下滑低于设定的阈值,那么就要“投喂”更多更新的数据给它,进行所谓的“模型教育”,让其表现恢复到业务需要。
然而现代社会的发展加速度越来越大,大多数模型以周为单位进行更新,以月为单位进行重构,为了保持模型的有效性,我们需要建立起“数据准备-数据投喂-模型训练-模型验证-模型发布-模型监控-模型更新优化”的闭环,并尽量使这个流程中的节点工作自动化。
这里就提出了两种需求,一种是平台级的AI产品,不仅是一种AI应用,更是帮助使用者管理AI建设闭环的平台服务,并将AI服务进一步拓展,出现了类似模型集市、模型继承(类似面向对象编程中函数的继承)等概念与功能;另一种是像Google的AutoML所做的那样,将人的工作减少到只要输入数据,就能自动产生出一个AI模型完成特定的任务,自动化的过程包括了算法的选择、参数的调优、模型的检测等等一系类步骤。
健身的保持会使之成为一种生活方式,为了AI效果的保持则催生出了新的产品与服务。
明天
本无意写成万字长文,但发觉要说得挺多,为了尽可能说明问题,难免唠叨几句。新年的伊始总是适合对未来展开憧憬的时刻,我认为随着人们对健康生活的愈发重视,参与到健身运动(无论是fitness还是body building)中的人会愈来愈多;而AI产业虽然似乎过了嗷嗷待哺的阶段,但仍处在一个咿呀学语、蹒跚学步的年纪,我们有充分的理由去期待这两件事未来的发展。
一个是为自己,一个是为世界。