机器学习|AI Insight:放弃幻想,搞 AI 必须过数学关( 三 )


机器学习学者张志华教授曾经说过:“搞好机器学习 , 关键是数学 , 但你又不能把机器学习变成搞数学 , 那样就漫无边际了 。 ”数学浩瀚如海 , 神灵通天 , 我们还是要敬畏数学之神 , 不要毫无目标、不计成本的扩大数学的钻研 , 而是要把握好度 。 对于绝大多数 AI 工程师来说 , 还是应该以机器学习为主导 , 对于其中涉及的数学知识形成理解 , 打牢基础 , 突出重点 , 适度拓宽 , 这就算过关了 。 以后根据主攻方向 , 随用随学 , 急用先学 , 这样就可以了 。
数学过关以后 , 还得懂编程语言、系统架构、数据库、异构平台上的高性能计算 , 要成为一个优秀的 AI 工程师 , 这些都得通 。 吴恩达就说过 , 深度学习的前沿是高性能计算 。 因为数学的进展是可遇而不可求的 , 而软硬件的进步是线性的甚至指数的 , 是一趟快车 。 你想冲在前沿 , 得搭上这趟快车 。 如果你只是数学好 , 编程和工程化能力不行 , 所能做的事情就比较有限 , 需要一个强有力的工程团队来支持你 。 实际上 , 我就知道一些学院派的 AI 人士 , 他们的数学背景很好 , 但是编程玩得不溜 , 下面的学生又不给力 , 只能封闭在“数学—Matlab—论文” 这个三角里 , 对他们来说 , 编程成了一个障碍 。
【机器学习|AI Insight:放弃幻想,搞 AI 必须过数学关】但是对于一个有一定经验的程序员而言 , 编程是优势 。 前不久 , 我向一个在国内 AI 界有点名气的新锐 AI 科学家了解情况 , 他们手上的深度学习项目使用 Python 和 C++ 语言开发 , 都是基于开源的深度学习框架 , 但自己的工程师也要做相当程度的调整和改进 。 那么他们对于工程师编程语言的掌握程度有多高的要求呢?Python 语言不需要自己设计 class , 就更不用提什么 decorator, metaclass, asyncio 了 , C++ 只要求看懂框架代码当中核心的部分 , 只有很少的人需要去修改 C++ 代码 。 这里头真正有点挑战的 , 是要熟练掌握 Python 标准库和一些流行包中的 API 用法 , 快速完成数值计算、数据清洗、数据可视化等工作 , 这是需要时间去熟悉和掌握的 。 但有经验的人知道 , 这些可以边做边熟悉 , 不是什么硬约束 。 如果你在“城头变幻大王旗”的开发界混过几年 , 转行搞 AI , 你的编程能力绝对是下山猛虎 , 完全不必担心 。 你真正要过的 , 就是数学关 。 只要你过了数学这关 , 后面将数学理解、工具框架、数据资源和应用结合起来形成正向循环 , 就可以一步一步的攀爬 AI 的高峰了 。