深度学习与人工智能领域主要的门槛有编程能力,需要有很好的逻辑思维和编程经验;还需要有扎实的数学基础,能够看懂相关的理论;同时计算机基础知识也需要掌握;最后还要了解相关学科的知识,比如计算机视觉领域的图像处理知识等。
下面主要介绍数学方面的掌握内容:
线性代数。想要学习深度学习, 你第一个需要理解透彻的学问是线性代数。 为什么? 因为深度学习的根本思想就是把任何事物转化成高维空间的向量, 强大无比的神经网络, 说来归齐就是无数的矩阵运算和简单的非线性变换的结合。 这样把图像啊, 声音啊这类的原始数据一层层转化为我们数学上说的向量。 什么image to vector, word to vector 这些, 都在说的一件事情就是这类数学转化, 不同类型(我们通常称为非结构化数据)的数据最终成为数学上不可区分的高维空间的向量,所谓万类归宗。 线性代数,就是对于这一类高维空间运算做的默认操作模式,可谓上帝的魔术之手。
以下是关于线性代数的一些个人总结:
线性空间 容纳运动的一个对象集合
线性变换规定了对应空间的运动。
向量是客观存在的一组数,它的位置和大小都有它特定的意义,表示在对应坐标系(基)下的大小。如果基改变(对应左乘一个矩阵)那么向量就会变化(相当于在另外一个基下面进行了一次测量然后对应单位矩阵下再进行一次测量得到的结果)。
矩阵是线性空间里变换的描述形式。也可以看成是一组基的描述。
基可以看成是线性空间里的坐标系 。
矩阵与向量乘法的代数意义是对一个向量进行线性变换;几何意义是使一个向量进行运动;还代表一个坐标系,在该坐标系下度量为a,在单位坐标系下度量为b,所以Ha=b;还可以代表一组基。
矩阵的行列式:只有方阵有行列式,如果不是方阵呢,那么我们可以通过补0让他变成方阵,然后发现行列式为0。矩阵M的行列式实际上是组成M的各个向量按照平行四边形法则搭成一个n维立方体的体积。
矩阵与矩阵的乘法,从变换的角度来看,M*N代表把组成坐标系N中的每一个向量施加M变换(结合矩阵与矩阵乘法的运算规则,相当于赋予不同的权重)。从运动的角度来想是对矩阵N的 每个基向量表示的坐标系进行变换。对坐标系施加变换的方法,就是让表示那个坐标系的矩阵与表示那个变化的矩阵相乘。
相似矩阵就是同一个线性变换的不同的描述矩阵。
A
=
P
−
1
B
P
A=P^{-1}BP
A=P−1BP
概率论。下一个我们需要讲解的是什么呢? 概率论基础 。 概率论事整个机器学习和深度学习的语言 , 因为无论是深度学习还是机器学习所做的事情是均是预测未知。 预测未知你就一定要对付不确定性。 整个人类对不确定性的描述都包含在了概率论里面。概率论你首先要知道的是关于概率来自频率主义和贝叶斯主义的观点, 然后你要了解概率空间这一描述描述不确定事件的工具, 在此基础上, 熟练掌握各类分布函数描述不同的不确定性。我们最常用的分布函数是高斯, 但是你会发现高斯是数学书里的理想, 而真实世界的数据, 指数分布和幂函数分布也很重要, 不同的分布对机器学习和深度学习的过程会有重要的影响,比如它们影响我们对目标函数和正则方法的设定。懂得了这些操作, 会对你解决一些竞赛或实战里很难搞定的corner case大有裨益。 一个于概率论非常相关的领域-信息论也是深度学习的必要模块,理解信息论里关于熵,条件熵, 交叉熵的理论, 有助于帮助我们了解机器学习和深度学习的目标函数的设计, 比如交叉熵为什么会是各类分类问题的基础。
微积分。微积分和相关的优化理论算是第三个重要的模块吧,线性代数和概率论可以称得上是深度学习的语言,那微积分和相关的优化理论就是工具了。 深度学习, 用层层迭代的深度网络对非结构数据进行抽象表征, 这不是平白过来的,这是优化出来的,用比较通俗的话说就是调参。 整个调参的基础,都在于优化理论, 而这又是以多元微积分理论为基础的。这就是学习微积分也很重要的根源。
优化。机器学习里的优化问题,往往是有约束条件的优化,所谓带着镣铐的起舞 , 因此拉格朗日乘子法就成了你逃不过的魔咒。
经常使用的监督学习可以看做最小化下面的目标函数:
w
∗
=
a
r
g
min
w
∑
i
L
(
)
w^*=arg \min_w \sum_i L()
w∗=argwmini∑L()