查看原文
其他

漂亮的皮囊与有趣的灵魂——论游泳健身与人工智能的共性(上)| 腾研识者

火雪挺 腾讯研究院 2020-10-25

编者按

作为一个热爱健身也热爱AI的家伙,看到这样一篇正(da)本(kai)清(nao)源(dong)的稿件,我无疑是兴奋的。一直希望能有融汇贯通的跨界稿件出现。不过由于专业所限,跨界可能都是相近的领域发生,像Ai和健身如此风马牛不相及的两者,本期腾研识者火雪挺能够通过自己的理解消化,将二者的内核解读给大众实属不易。

本文从认知-计划-训练-恢复-循环迭代-验证-保持-憧憬等方面找到了训练AI与锻炼身体之间的方法论共性,正如作者所言,可以帮助你在健身房侃侃AI,也可以在敲代码时秀秀肌肉。

作者 | 火雪挺 腾讯CSIG资深架构师

知识的传授从来不是一件简单的事情,特别是向初学者、行外人进行传道授业解惑,必须深入浅出。教育是引导,我们中国人常说“开而不达”,意思就是要开启一个人,而不是帮他达到,是激发他对某一件的兴趣、或者是对未来的理想,然后激励他以行之有效的方法去达成自己的目标。因此作为在健身和人工智能领域都略有知识与经验的我来说,认为有必要与大家分享一下自己的一些小见解,帮助你在健身房可以和别人谈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一样,都要选择适合自己的“基础设施”。

-- 未完待续--


我好看吗?

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存