【深度学习入门基础】从线性代数和微积分的角度看神经网络
这是深度学习入门系列文章,我们企图用最简洁的语言、最干净的表达,让读者快速获取到他所想要的。本系列文章持续更新。一些网上能查到的基础知识,诸如激活函数有哪些等,不再介绍。
导言
大多数介绍深度学习的资料,一开始就从生物神经元、轴突、树突、刺激等等讲起,本来很简单的东西,却被介绍得云里雾里。本文将从矩阵乘法和导数的角度入手,让你一下子 get 到什么是神经网络。
矩阵乘法看神经网络
问题是这样一个问题:假设有一个列向量 ,希望它通过一个“黑箱子”的操作之后,出来的向量和另外的一个等长度的已知向量
这里的“黑箱子”就是一个网络,它可以简单地理解为矩阵乘向量的嵌套,即:
这里的 是参数矩阵,里面的元素都是一些未知的参数,这里的 是参数列向量。 的规模总是让上式是合理的。 是一个函数,人们喜欢称之为激活函数,它作用于一个向量表示分别作用于向量的每个分量。
举个简单的例子。令 。取激活函数为 sigmoid 函数:
那么,,这就是逻辑回归的输出形式。逻辑回归就是一种最简单的神经网络。
微积分视角看训练
由上可知, 本质上就是一个含参的表达式,神经网络训练要做的事情就是调整参数,使得对于已知的 和 , 和 尽可能地近。度量向量之间的远近有很多种度量,比如欧式距离:
表示向量 2 范数。我们也称 $\mathcal{L} $ 为损失函数。显然,这里的
给定一个目标函数,我们要关于参数极小化它,这是一个无约束优化问题,在数值上有很多求解方法,神经网络采用梯度下降。梯度下降的步长,被人们称为“学习率”。
要用梯度下降,就要求损失函数的梯度,梯度是由目标函数对各个参数求导组成的一个向量,所以, 需要对各个参数求导。
上面提到的仅仅是一组输入输出的情况,当有多组输入输出 的时候,我们如此定义损失函数:
训练的优化过程和上述是一致的。