作者 | 子白

从2012年“大数据”概念兴起到2016年人工智能大热,已经四五年时间了,该看的热闹看到了,该爆炒的话题炒够了,该沉淀的也沉下来了。现在越来越多的人已经放下质疑,相信这一届 AI 确实靠谱,该找找门道了。最近好多关注 AI 的公众号都发表了文章谈数学学习的问题,这就真的上道了。如果你是技术人员,特别是程序员,想成为 AI 工程师,那么只要你稍微花点时间研究一下 AI 的门道,就会意识到,主要的拦路虎是数学。如果你看到有人说什么不懂数学也能搞 AI,那你可能要警惕,因为这很可能是一种误导。

一定要认识到一点,数据科学、机器学习、DT、AI,whatever,不管你叫什么,它不是 IT 行业中又一项新技术,而是一个新行业。马云说 IT 时代结束了,DT 时代开始了,有点标题党,但大意是对的。

我们要充分认识到,这不是一次 paradigm shift(范式转换)。游戏没变,规则变了,那是 paradigm shift,连游戏都变了,那就是 game shift 了。比如说,对于商业来说,互联网是一次 game shift,但对于 IT 行业来说,从企业网 C/S 架构走向互联网 Web 架构,平台变了,工具变了,协议变了,模式变了,赚钱的规则也变了,但事情的本质没变,还是在网络上构造商业管理和通讯系统。所以面向对象是 paradigm shift,敏捷是 paradigm shift,Web 是 paradigm shift,移动互联网开发是 paradigm shift。而 AI 不是 paradigm shift,是 game shift。

新行业有新玩法。AI 跟 IT 技术的主要差别是什么?简单的说,就是 AI 对数学要求较高,对编程要求较低,而 IT 开发对于编程要求高,特别是对编程经验要求高,但对数学要求不高。

“大学工科数学三板斧”

说一个秘密,全世界的程序员两千万,大多数手持大学学历,外行人以为他们的数学都得要好,但其实大部分人对于大学数学三板斧微积分、线性代数和概率统计的记忆已经基本清零。除了专业从事有关领域的底层技术开发人员,大多数程序员、架构师、软件工程师、项目经理甚至相当多的 CTO,对于什么方向导数和梯度、函数项级数的一致收敛、魏尔斯特拉斯定理、拉格朗日乘数法、矩阵特征值与特征向量、矩阵二次型、多维随机变量条件分布之类的大学数学基本概念,实际已经陌生如听天书了。这无可指责,因为这些东西在实际产品设计、系统开发和运维当中根本用不着。他们必须将主要精力投入到“广义计算机语言”的学习当中,适应所谓“热门驱动开发(Hype Driven-Development)”,包括一门又一门最新最火的编程语言,一个又一个网络协议,成百上千的 API 用法,各种框架、平台、数据库、操作系统和浏览器的方言、怪癖甚至陷阱,还有设计模式、架构模式、版本管理、build system、container、DevOps,等等等等,内容实在是太繁杂了,变化实在是太多了,风潮转换实在是太快了,耗费精力实在是太大了。哪有时间搞没用的东西?连算法都只是在准备跳槽刷题时才需要认真对待的,数学?一边凉快去吧。

“三板斧之后”

然而搞 AI 就完全是另一回事,关键是数学。大学工科数学?那只是一个基础,想再搞懂 AI 的那些基本的算法和思想,你不但需要把这三板斧基础打扎实,而且还需要学习矩阵分析和凸优化。这只是一个入门,想要在这个领域有点建树,你可能还需要在随机过程、泛函分析、微分流形、数值分析和优化理论等领域进一步深造。想要搞机器人学或自动驾驶?还得研究微分方程、运动学、动力学。毫不夸张的说,在 AI 学习的入门阶段,数学是主要的攻坚对象,任何胸有大志的 AI 学习者都不要幻想绕过数学。

可能正是因为数学是一只拦路虎,最近我们看到了不少鸡汤文章出来安慰说数学不好也可以学 AI。这些文章,大多只是标题党,你以为他给你指了一条方便法门,其实打开一看,只不过是舒缓你的畏难情绪,推荐几本寓教于乐的数学书,给你做做心理按摩,本质上还是一句话:想搞 AI,就得把数学拿下。但是很多人现在看文章只看标题啊,所以就产生了幻想,是不是不学数学也能搞 AI呢?有没有可能把数学都交给封装好的框架和程序库,我只做调用和调试的工作呢?未来会不会达到 AI 工具化、AI 工具傻瓜化的程度呢?

AI 工具化可能性是有的,而且是必然,趋势很明显。比如著名的机器学习框架 scikit-learn,把多种机器学习算法包装成他们所说的“黑盒子”,使用时只需要选择算法,设置合适的参数进行初始化,然后灌数据训练模型,得到模型以后就可以进行分析和预测了,大多数复杂性都被包装在后面。而现在当红的深度学习,这个趋势更加明显。在张重生所著的《深度学习——原理与应用实践》一书中,作者援引周志华教授的一段话,吐槽当前深度学习现状说:

“有点幽默,但很朴实,深度学习现在差不多就是民工活,调来调去,刷来刷去。文章发得飞快,貌似热闹,但有多少是能沉淀下来的实质真进展、真原理、真算法、真技术,又有多少是换个数据就不靠谱了的蒙事撞大运?既缺乏清澈干净的内在美感,又不致力于去伪存真、正本清源,只图热闹好看,迟早把 arXiv 变成废纸堆。”

通过这段吐槽,我们侧面了解到深度学习这个领域当前的局面,极少人做核心理论研究,一小部分人开发框架和程序库,大多数人只是把黑盒子拿来刷参数、攒论文。我们从正面的意义上来理解这件事情,这恰恰表明深度学习的工具化做得比较好,初步形成了一个金字塔模型。专家们批评的,只不过是现在很多金字塔底层的“深度学习民工”在利用 AI 的热潮和外界对这个领域的不了解沽名钓誉,导致某些 AI 人士所说的“深度学习泡沫”。批评归批评,这个人员分布结构是合理的,AI 工具化是有效的。

所以,是的,机器学习和 AI 领域的软件工具也会逐渐走向成熟,也会像黑盒子一样把很多复杂性包装起来,把很多今天需要较深数学理解才能做到的事情简化为调参。但是这是否就能让我们得出结论说,未来的 AI 工程师可以不懂数学呢?

当然不能。首先,数学不过关的人在 AI 这个圈子里是无法参与交流的,或者说得直白一点,是被人瞧不起的,根本无法被接纳成为AI 圈子里的人。其次,数学不过关而只能调参数的人,实践当中并不好用。我接触过几个 AI 创业企业,他们都疯狂的缺人,但是对于不懂数学只会使用工具的“人才”,他们却大门紧闭。什么原因?沟通效率低,出活慢,遇到问题无法解决,一句话,“不好用”。第三,即便是调参这件事情本身,懂不懂数学也是有很大差别的。因为调参是一个跟自己较劲的过程,不断地划分训练数据集和验证数据集,调整参数,追求更高的准确率,又要防范过拟合,一遍又一遍,本身就是非常繁琐和枯燥的工作。如果你数学不过关,对参数的意义和相关关系理解不深,方向感不强,只能半随机的去刷参数,那么工作的单调性和烦琐性还会大大上升,很难坚持到做出好的模型来。

就这三点,决定了不懂数学的“AI框架调参工”不会是一个令人向往的工作。我绝不相信一个年轻人满怀 AI 梦想走进这个行业,会满足于做一个“以其昏昏使人昭昭”的调参工。

所以,结论已经很清楚,想搞 AI,数学必须过关。一切与这个结论有冲突的说法,都是耍流氓。

当然,请注意我在这里说的是“数学必须过关”,只要求过关,并不是要求你为了搞 AI 而先要变成一个数学家,那既不现实也不必要。为什么只要求过关呢?为什么不是数学越棒越好呢?因为 AI 要在数学上形成重大的突破,可能是十年甚至几十年一遇的。今天机器学习中有效的数学方法,绝大多数都是几十年前做出来的成果。因此做 AI 工程,重点是充分理解、熟练掌握和运用这些成熟的数学工具,尊重分工,把数学领域的创新交给数学家和应用数学家。

机器学习学者张志华教授曾经说过:“搞好机器学习,关键是数学,但你又不能把机器学习变成搞数学,那样就漫无边际了。”数学浩瀚如海,神灵通天,我们还是要敬畏数学之神,不要毫无目标、不计成本的扩大数学的钻研,而是要把握好度。对于绝大多数 AI 工程师来说,还是应该以机器学习为主导,对于其中涉及的数学知识形成理解,打牢基础,突出重点,适度拓宽,这就算过关了。以后根据主攻方向,随用随学,急用先学,这样就可以了。

数学过关以后,还得懂编程语言、系统架构、数据库、异构平台上的高性能计算,要成为一个优秀的 AI 工程师,这些都得通。吴恩达就说过,深度学习的前沿是高性能计算。因为数学的进展是可遇而不可求的,而软硬件的进步是线性的甚至指数的,是一趟快车。你想冲在前沿,得搭上这趟快车。如果你只是数学好,编程和工程化能力不行,所能做的事情就比较有限,需要一个强有力的工程团队来支持你。实际上,我就知道一些学院派的 AI 人士,他们的数学背景很好,但是编程玩得不溜,下面的学生又不给力,只能封闭在“数学—Matlab—论文” 这个三角里,对他们来说,编程成了一个障碍。

但是对于一个有一定经验的程序员而言,编程是优势。前不久,我向一个在国内 AI 界有点名气的新锐 AI 科学家了解情况,他们手上的深度学习项目使用 Python 和 C++ 语言开发,都是基于开源的深度学习框架,但自己的工程师也要做相当程度的调整和改进。那么他们对于工程师编程语言的掌握程度有多高的要求呢?Python 语言不需要自己设计 class,就更不用提什么 decorator, metaclass, asyncio 了,C++ 只要求看懂框架代码当中核心的部分,只有很少的人需要去修改 C++ 代码。这里头真正有点挑战的,是要熟练掌握 Python 标准库和一些流行包中的 API 用法,快速完成数值计算、数据清洗、数据可视化等工作,这是需要时间去熟悉和掌握的。但有经验的人知道,这些可以边做边熟悉,不是什么硬约束。如果你在“城头变幻大王旗”的开发界混过几年,转行搞 AI,你的编程能力绝对是下山猛虎,完全不必担心。你真正要过的,就是数学关。只要你过了数学这关,后面将数学理解、工具框架、数据资源和应用结合起来形成正向循环,就可以一步一步的攀爬 AI 的高峰了。

https://www.toutiao.com/a6662649835272798728/

AI Insight:放弃幻想,搞 AI 必须过数学关相关推荐

  1. 都2020年了,在校学生还值得继续转行搞AI吗

    在2016年前,在校学生圈中有一个比较热的词叫"转CS",也就是其他专业的转学计算机(也就是学习写代码,找计算机相关工作),而2016年后,基本就不怎么说"转CS&quo ...

  2. 别人以为搞AI的高大上,我却觉得自己是个骗子

    2021-03-13 13:12:45 金磊 贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 搞机器学习的你,是否有过这种经历? 当别人看你工作,桌上2.3台显示器,满屏的代码,不禁惊呼 ...

  3. 我玩《王者荣耀》、斗地主、打麻将,但我是正经搞AI的北大教授

    金磊 梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 一位导师下载好了<王者荣耀>,还鼓励她的博士生们去玩一玩. 真的很难想象,这种"名场面"就真真儿的发生 ...

  4. 上班4年“武功”全废,想跳槽却被HR嘲讽,这位搞AI的硕士小哥心态崩了

    金磊 贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 搞机器学习的你,是否有过这种经历? 当别人看你工作,桌上2.3台显示器,满屏的代码,不禁惊呼: 哇!这个人看起来好厉害的样子! 但实 ...

  5. AI开发者大会之AI学习与进阶实践:2020年7月3日《如何转型搞AI?》、《基于AI行业价值的AI学习与进阶路径》、《自动机器学习与前沿AI开源项目》、《使用TensorFlow实现经典模型》

    AI开发者大会之AI学习与进阶实践:2020年7月3日<如何转型搞AI?>+<无行业不智能:基于AI行业价值的AI学习与进阶路径>.<自动机器学习与前沿AI开源项目> ...

  6. 【华为云技术分享】华为专家亲述:如何转型搞 AI?

    前言 参考塞缪尔. 约翰逊(18 世纪英国文学评论家.诗人,著有<英语大辞典>.<莎士比亚集>)的思路,"当一个人厌倦了学习技术,那他肯定也厌倦了 IT 行业,因为只 ...

  7. AI 没让人类失业,搞 AI 的人先失业了

    最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 "这里写我跑路的消息实在太夸张了." 王葱葱哼笑 ...

  8. 最强绘图AI:一文搞定Midjourney(附送咒语)

    最强绘图AI:一文搞定Midjourney(附送咒语) Midjourney官网:https://www.midjourney.com 简介 Midjourney是目前效果最棒的AI绘图工具.访问Mi ...

  9. 马云:搞AI严防叶公好龙;李彦宏:不拥抱AI的公司会死掉

    雷刚 发自 西岸艺术中心 量子位 出品 | 公众号 QbitAI 2018世界人工智能大会今天在上海开幕. 这场大会的主办单位包括:国家发改委.科技部.工信部.网信办.中国科学院.中国工程院.上海市人 ...

最新文章

  1. Python3中PyMongo使用举例
  2. 只看到了别人28岁退休,背后的期权知识你知道吗?
  3. 官方资源帖!手把手教你在TensorFlow 2.0中实现CycleGAN,推特上百赞
  4. 【Qt】QModbusDeviceIdentification类
  5. 计组—浮点数表示和运算
  6. java面向_java是面向什么的语言?
  7. IDEA Servlet页面报错
  8. 为什么前端工程师很难找?
  9. 【干货】2020年陆奇最新万字演讲:世界新格局下的创业创新机会.pdf(附下载链接)...
  10. 笔记本电脑黑屏但还在运作怎么办
  11. java框架--springmvc --ajax-json-upload/download+maven+ DES/MD5 请求加密
  12. 关于bat安装与卸载服务脚本
  13. 小甲鱼C语言1-22讲笔记(指针和数组)
  14. 配置全局使用的scss样式公用样式函数(后台框架整体颜色改变)
  15. 《linux核心应用命令速查》连载五:atq:显示目前使用at命令后待执行的命令队列...
  16. C# 自定义控件,日期时间选择输入插件
  17. Python编程:从入门到实践(课后习题:第6章 字典)
  18. 【周赛总结】第196场周赛——全一子矩阵,交换k次的最小整数
  19. Unity大场景数据加载及优化方案
  20. 【BAT】修改指定的文件名称为系统当前日期

热门文章

  1. 人工压缩算法--定常原始变量不可压缩N-S方程
  2. 在投资的不确定性中寻找确定性(二)
  3. Windows 日志分析
  4. 微信商户号商家转账到零钱v3接口证书生成步骤
  5. python的集合和字典
  6. 知识焦虑时代如何进行学习
  7. 火爆的在线知识付费,能否缓解你的知识焦虑
  8. editplus安装破解和网盘文件连接制作
  9. leetcode 416. 分割等和子集
  10. 华硕服务器主板怎么装系统,华硕主机板安装系统时BIOS怎么设定