高效“炼丹”必备技能:一文实现深度学习数学原理入门,还有吴恩达老师亲授课程

来源:量子位

贾浩楠 发自 凹非寺

量子位 报道 | 公众号 QbitAI

哪个程序员不想高效“炼丹”?

尤其是深度学习算法开发人员,追求模型结构优化和提高编程效率是永远的目标。

但是,如果只做代码“搬运工”,不了解神经网络背后的数学原理,很难对项目有深刻全面的理解,debug反而会更难、耗时更长。

就以深度学习中常用的神经网络来说,典型模型包括多层感知机(DLP)、卷积神经网络(CNN)、循环神经网络(RNN)等等,不同的项目,对神经网络的调参需求也不相同。

下面的深度学习数学基础详解,以DLP为例,你读完后会对它的数学基础有全面的了解,并且熟悉用数学解释算法的基本思路。

除了DLP,文末还一并为你准备了RNN、CNN数学原理,以及吴恩达老师的AI数学基础课程。

一文实现AI数学基础入门,还在等什么?

多层感知机的数学表达

多层感知机的数学表达分为4个部分:学习算法、参数初始化、激活函数、优化函数。

学习算法

神经网络的学习过程可以看做是参数的权重在网络中经历的不同回归,也就是说我们的算法是要找出一个使参数得到最佳输出的回归方法,由此我们定义一个目标函数:损失函数L(loss function);还有一个参数J,它是训练集真实与估计值的量化表示。

我们通过正向和反向传播两种方法来使J最小化,学习算法可以表示为:

正向传播:

其中m是训练集的大小,i是参数在网络中的迭代次数,y是模型的输出,θ是模型参数。

反向传播:

参数初始化

零初始化:使所有参数的权重和偏差都为零。

随机初始化:不断将随机噪音赋值给参数。如果噪音过大,可能会造成某些激活函数溢出,并影响到后续的梯度计算。

Xavier方法:取值于正态分布的中心变量:

Glorot方法:同样取值于正态分布,方法不同。

激活函数

激励函数的功能是选择在网络中被传递的具体参数,更深一层的理解是,允许网络中被有效激活的神经元传递训练数据。

一下是一些常用的激活函数:

优化函数

风险,是神经网络中全部数据集的损失,是我们需要优化的对象,定义为:

其中,X是一个可观测的连续空间中,与Y有关的元素,p(X,Y)是在这一空间中观察到点(X,Y)的边缘概率。

经验风险

在没有全部数据集,或全部数据集过大的情况下,我们不考虑参数分布情况,仅将风险估计的范围限定在一个有代表性的数据集上,这种情况下,损失函数可以表示为:

m是代表数据集的大小。

于是可以得出:

梯度下降法

我们需要构造一个可微凸函数J,其任何一个局部的最小值都是整个函数的最小值,那么求这个函数的最小值就相当于解一个方程∇J(θ)=0,设它的解为θ⋆,于是我们得到:

学习率递减

实践证明,随着数据迭代次数增加,模型会逐渐降低学习率。现在已经有许多成熟地描述学习率递减的公式。

优化函数还包含输入优化、网络数据丢失正则化、反向传播正则化等,限于篇幅将链接放在文末。

其他有关深度学习的数学基础的参考链接

DLP中的其他优化函数,以及参数正向、反向传播时损失函数详细推推导过程

https://www.ismailmebsout.com/deep-learning/

除了DLP,其他神经网络RNN、CNN等也有详细的数学表达推导过程

CNNhttps://www.ismailmebsout.com/Convolutional%20Neural%20Network%20-%20Part%201/

RNNhttps://www.ismailmebsout.com/recurrent-neural-networks/

PC4f5X

文章作者信息...

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐