1、数学给我带来的心理阴影
我上高中时老师就教导“学好数理化,走遍天下都不怕!”,那时候数学学得好,就能够被老师表扬,被女生崇拜,被其他男生的家长喜爱。
而我是极度厌恶数学的,因为我的数学很差,数学思维也很差,而且更悲催的是我周边的几个关系好的同学又都是数学高手,这更增加了我的自卑感。我记得从解析几何到线性代数,再到微积分我被一路暴击。后来工作了,终于不用学数学、考数学了。后来我找了一份以体力为主,智力为辅的工作,远离数学后我的自卑感也慢慢得到缓解。
多年后,我回忆那几个数学高手的同学,我总结了一下“数学好”的三层境界
-
第一层“做题高手型”
同学A,老师曾经说,如果没有文科他应该可以考上顶级学校。他能做到各种数学题都只是送分题,后来他上大学就靠给人补习数学题就能收入颇丰。现在凭借着强悍的数学技能,他这15年一直是“不仅仅是500强公司”里最牛的代码大师。
-
第二层“活学活用型”
同学B,这位老大不仅仅数学题做得好,还能把对数学理解的优势发挥到工作生活各个方面。毕业后他用深厚的数学底子死磕量子力学,潜心中国半导体事业,立志做出中国的量子芯片。另外,他在我们朋友圈中一直被封为股神,因为他总能计算出股票下跌到多少“ XXX股跌到28.99可以买入”,我问他怎么知道的?他一本正经的说“当然是算出来的啊”,听到这个我的敬佩之情就油然而生。但是他有没有赚到钱我一直不知道,反正我每次问他借钱他都说手头紧。
-
第三层“意识流型”
同学C,他在高中时就觉得高中就是浪费时间,这些知识太弱了。我在为数学题抓头发时,他走过来说求个导不就行了么,然后就飘走了。那时候有本叫《苏大》的红色封面的数学习题集,我那时要完成一页习题要花整个周日的时间,一页上面写的密密麻麻的。而他因为看小说耽误了写作业,交作业前,他就用铅笔写了几个字“由柯西不等式得”,基本每题都是这样,然后就交了。我当时想“太好了,老班削死你”,但是,老班却深沉的表扬C同学“他对数学的理解已经进入了意识流状态,天才”。后来我发现,他副业是数学竞赛,主业是给女生写小说,小说有村上春树代笔的感觉,20多年过去了,我还经常拿出来读读,体会小说字里行间里的数学意识流。
回忆了这三个好学生,我也照照镜子,看看数学差生。我是一个拉低朋友圈智商平均值的角色,就是数学中的“极小值”,你看看我身边这三个“人才、鬼才、天才”都没能帮我提高。数学差的危害太大了,上学成绩垫底,只能看成别人上好学校;工作中做项目立项汇报没有数学表达思维,老板就骂我“你写个立项PPT就是做语文题,你不会做数学题”;最悲催的是辛苦工作十几年攒了一些钱,身体不好了一冲动想回家,算算存款,觉得好像省着点够花了,立马离职!结果冲动离职后,发现自己计算存款可用年限时,小数点位置搞错了,只好赶紧跑出来继续找工作,哎
讲完这些,同学们,作为理工男如果你们和ABC同学一样,有好的数学思维,就能做人生赢家,否则就和我一样,这么晚还要写公众号。
2、人工智能的数学基础
我们回到人工智能的学习上。首先,今天各种人工智能技术归根到底都建立在数学模型之上,学习数学知识是必须的。其次,离开学校后,我们终于不要为了考试而学习了,抛开考题,以学习和应用人工智能技术为目标,我们可以把更多的精力投入在这些事情上 — 理解数学知识点,把知识点串联到自己的知识体系中,再以数学思维去理解人工智能的工具和行为。
学习人工智能必备哪些数学基础知识?包括线性代数、微积分、概率论、最优化理论等等。
(1)线性代数
线性代数是人工智能的基础,处处都离不开向量和矩阵的使用,线性代数提供了⼀种看待世界的抽象视角,万事万物都可以被抽象成某些特征的组合,并在由预置规则定义的框架之下以静态和动态的方式加以观察。
以向量为例,我们常说一个组织必须形成合力,才能把事情做好,“方向”是至关重要的。数学上用来描述带有“方向的数字”的工具就是向量;而那些只需要关心数值,不关心方向的数量被称为标量。看下图,要形成合力就必须方向一致,即便方向不能完全一样,彼此之间方向的夹角也需要尽可能地小。理解了数的方向性,我们就可以理解“做事情要聚焦”,比如像硬十这样的创业公司,如果什么事情都想做,力量不仅分散,而且彼此会产生矛盾,努力就抵消了。
再说说矩阵运算,矩阵是人们构建出来的一种工具,利用这种工具我们能够让计算从单个处理变成批处理,我们人工智能每一个过程都离不开巨大量的矩阵运算。
(2)微积分
微分是我们从函数的宏观趋势把握每一个点细节变化的工具;而梯度是多变量函数的微分,说明了如何在有大量不确定性中找到前进方向的方法,具体讲就是往坡度最高的方向努力。
积分能把握每一个细节对最后整体的影响,如下图,若速度是一个随着时间不断变化的函数,忽快忽慢,那么在这样的速度下走过的距离就需要考虑每一时刻的动态变化了。在没有积分这个工具之前只能通过平均值计算,大致了解累积效应,但是估计得非常不准确。有了积分,就能做更加准确的推算了。
(3)最优化理论
人工智能的核心目标就是最优化,在复杂环境中做出最优决策,最优化就是求一个函数的最大值或最小值。回顾历史,在伽利略和开普勒那个年代,人们就在物理学和天文学中遇到很多最优化问题了,比如计算行星运动的近日点和远日点距离、弹道的距离、望远镜透镜曲率和放大倍数的关系等等。这时就需要系统地解决最优化问题,而不能单靠一些技巧。天才的牛顿是如何求解最大值的呢?他的伟大之处在于,他不像前人那样,将最优化问题看成是若干数量比较大小的问题,而看成是研究函数动态变化趋势的问题。
牛顿对比抛物线和它的导数(虚的直线),发现了曲线达到最高点的位置,就是切线变成水平的位置,或者说导数变为0的位置。他不是直接解决那些很难的问题,而是把比较数大小的问题,变成了寻找函数变化拐点的问题,后一个问题要比前一个好解决。将这两个问题等同起来,需要发明一种工具,这就是导数。有了导数,求最大值问题就变成了解方程的问题。
(4)概率论
概率论也是人工智能研究中必备的数学基础,是我们讲述揭示不确定性世界规律的数学分支。从18世纪末到19世纪,像法国的伯努利、拉普拉斯和泊松等人,德国的高斯,以及俄罗斯的切比雪夫和马尔可夫等人,都对概率论的发展有很大的贡献。经过他们共同的努力,概率论的基础理论逐渐建立,很多实际的问题也得到了解决。比如拉普拉斯,他定义了什么是概率,以及它该如何计算,用“概率”的概念来描述由随机性这种自然属性导致的结果不确定性。
3、“学会学习再学习”
人工智能涉及到非常广泛的知识域,因为要学习的东西太多,很容易让人发慌,实际应用中面对很多个模型时也很容易迷失。所以打好基础尤为关键,总结起来就是这几条
(1)数学是基础:我们今天讨论过的微积分、线性代数、概率与统计这些是非常重要而且必要的数学基础。很难相信不懂什么是高斯分布可以用贝叶斯方法做推理,不懂线性代数可以理解高维空间流形,不懂微积分可以理解反向传播,和不懂优化能理解SVM。这些必要的数学基础要花大量的时间去学习。当然就像我们这节课里反复强调的一样,学习方法和我们上学时要所有变化,不要专注于解题,而是多花精力去理解。
(2)编程是手段:懂了理论就要实践,而代码是我们实现我们算法的唯一路径,我们无法用代码正确表述我们的理论模型就没法很好应用这门技术。
(3)英文是内功:这门学科发展快,大部分文献是英文的,代码的解释也是英文的,英文好会让你学习的能力事半功倍,追到前沿。
最后回到今天的主题数学,像我这样数学基础薄弱的同学,为了能够成为一名合格的人工智能工程师,也决心要加油学习