一元函数 # Introduction

大多数人上一次看到微积分这个词,应该还是在大一高数课上,“导数”是机器学习中非常重要的概念,尤其是对于深度学习,没有偏导数就没法训练网络。随便看一篇机器学习论文或者深度学习框架的文档,你都会看到里面充斥着微积分的计算式,并且很多式子都涉及线性代数和多元微分的结合体:矩阵微积分(matrix calculus)。

如果你想要真正理解神经网络的内部逻辑,或者阅读论文时不想被烦人的公式卡住,你就必须掌握矩阵微积分。

所谓的“训练一个神经网络”,就是选择合适的权重参数$$w$$和偏置参数b,使得神经网络的输出是我们想要的结果。训练过程,就是求损失函数的最小值。怎么求这个最小值呢?通常使用梯度下降及其变形算法,比如SGD,SGD with momentum,Adam。这些算法都需要计算损失函数对于参数w和b的偏导数。

假设神经网络只有一个神经元,我们使用平方差损失函数:

此时求梯度很容易,就是多元函数求偏导数。

实际的神经网络包含很多层,此时涉及多元函数对向量求偏导数。这就是本文要讲的:矩阵微积分。

一元函数求导法则

一元函数:输入是一个变量,输出是常数。

一元函数f(x)的求导法则:

此时,通常把$$\frac{d}{dx}f(x)$$简写为$$f'$$或者$$f'(x)$$。

你可以把$$\frac{d}{dx}$$看做某种计算符。

多元函数求偏导数

多元函数:输入是n个变量,输出是常数。

神经网络可不是一元函数$$f(x)$$,我们来看稍微复杂的多元函数$$f(x,y)$$。此时我们不求导数,而是求偏导数。偏导数符号是$$\frac{\partial}{\partial x}$$。对于一元函数,$$\frac{\partial}{\partial x}$$等同于$$\frac{d}{dx}$$。

多元函数求偏导和向量微积分(vector calculus)有啥区别呢?很简单,偏导数是针对于某个变量而言的,而向量微积分是针对所有变量而言的,就是函数的梯度。

矩阵微积分

求一个多元函数的偏导数属于向量微积分,求多个多元函数的偏导数就是矩阵微积分。

results matching ""

    No results matching ""