【深度学习入门基础】一、从线性代数和微积分的角度看神经网络
【深度学习入门基础】从深度学习和微积分的角度看神经网络这是深度学习入门系列文章,我们企图用最简洁的语言、最干净的表达,让读者快速获取到他所想要的。本系列文章持续更新。一些网上能查到的基础知识,诸如激活函数有哪些等,不再介绍。导言大多数介绍深度学习的资料,一开始就从生物神经元、轴突、树突、刺激等等讲起,本来很简单的东西,却被介绍得云里雾里。本文将从矩阵乘法和导数的角度入手,让你一下子 get 到什么
【深度学习入门基础】从线性代数和微积分的角度看神经网络
这是深度学习入门系列文章,我们企图用最简洁的语言、最干净的表达,让读者快速获取到他所想要的。本系列文章持续更新。一些网上能查到的基础知识,诸如激活函数有哪些等,不再介绍。
导言
大多数介绍深度学习的资料,一开始就从生物神经元、轴突、树突、刺激等等讲起,本来很简单的东西,却被介绍得云里雾里。本文将从矩阵乘法和导数的角度入手,让你一下子 get 到什么是神经网络。
矩阵乘法看神经网络
问题是这样一个问题:假设有一个列向量 x\mathbf{x}x,希望它通过一个“黑箱子”的操作之后,出来的向量和另外的一个等长度的已知向量 y\mathbf{y}y 尽可能地“接近”,如何衡量“接近”?且听稍后介绍。
这里的“黑箱子”就是一个网络,它可以简单地理解为矩阵乘向量的嵌套,即:
F(x):=σ(An[⋯(A3[σ(A2[σ(A1x+b1)]+b2)]+b3)]+bn) F(\mathbf{x}):=\sigma(A_n[\cdots (A_3[\sigma(A_2[\sigma(A_1\mathbf{x}+\mathbf{b_1})]+\mathbf{b_2})]+\mathbf{b_3})]+\mathbf{b_n}) F(x):=σ(An[⋯(A3[σ(A2[σ(A1x+b1)]+b2)]+b3)]+bn)
这里的 A1、A2…AnA_1、A_2…A_nA1、A2…An 是参数矩阵,里面的元素都是一些未知的参数,这里的 b1、b2…bn\mathbf b_1、\mathbf b_2… \mathbf b_nb1、b2…bn 是参数列向量。Ai,bi,i=1,⋯ ,nA_i, \mathbf{b}_i, i=1,\cdots,nAi,bi,i=1,⋯,n 的规模总是让上式是合理的。σ\sigmaσ 是一个函数,人们喜欢称之为激活函数,它作用于一个向量表示分别作用于向量的每个分量。Ai,biA_i, \mathbf{b}_iAi,bi 中元素都是未知量,我们统称为参数。
举个简单的例子。令 A=[w1,w2]A = [w_1,w_2]A=[w1,w2]。取激活函数为 sigmoid 函数:
σ(z)=11+e−z \sigma(z)=\frac{1}{1+e^{-z}} σ(z)=1+e−z1
那么,F(x)=σ(Ax+b)F(\mathbf{x}) = \sigma(A\mathbf{x}+b)F(x)=σ(Ax+b),这就是逻辑回归的输出形式。逻辑回归就是一种最简单的神经网络。
微积分视角看训练
由上可知,F(x)F(\mathbf{x})F(x) 本质上就是一个含参的表达式,神经网络训练要做的事情就是调整参数,使得对于已知的 x\mathbf{x}x 和 y\mathbf{y}y,F(x)F(\mathbf{x})F(x) 和 y\mathbf{y}y 尽可能地近。度量向量之间的远近有很多种度量,比如欧式距离:
L(A1,A2,⋯ ,An,b1,⋯ ,bn):=∣∣F(x)−y∣∣ \mathcal{L} (A_1,A_2,\cdots,A_n,\mathbf{b}_1,\cdots,\mathbf{b}_n):= || F(\mathbf{x}) - \mathbf{y} || L(A1,A2,⋯,An,b1,⋯,bn):=∣∣F(x)−y∣∣
∣∣⋅∣∣|| \cdot ||∣∣⋅∣∣ 表示向量 2 范数。我们也称 $\mathcal{L} $ 为损失函数。显然,这里的 L\mathcal{L}L 只是一个关于参数的函数,优化上称之为目标函数,我们想做的就是关于这个函数的参数极小化目标函数。
给定一个目标函数,我们要关于参数极小化它,这是一个无约束优化问题,在数值上有很多求解方法,神经网络采用梯度下降。梯度下降的步长,被人们称为“学习率”。
要用梯度下降,就要求损失函数的梯度,梯度是由目标函数对各个参数求导组成的一个向量,所以,L\mathcal{L}L 需要对各个参数求导。F(x)F(\mathbf{x})F(x) 的表达式可以看出,不同层的参数之间存在嵌套关系,微积分告诉我们,复合类型的函数求导,需要用到链式法则,链式法则在神经网络上的应用,人们喜欢称之为“反向传播”。
上面提到的仅仅是一组输入输出的情况,当有多组输入输出 {xi,yi,i=1,2,⋯ ,N}\{\mathbf x_i,\mathbf y_i, i = 1,2,\cdots,N\}{xi,yi,i=1,2,⋯,N} 的时候,我们如此定义损失函数:
L(A1,A2,⋯ ,An,b1,⋯ ,bn):=12∑i=1N∣∣F(xi)−yi∣∣2 \mathcal{L} (A_1,A_2,\cdots,A_n,\mathbf{b}_1,\cdots,\mathbf{b}_n):= \frac{1}{2}\sum_{i=1}^N || F(\mathbf{x}_i) - \mathbf{y}_i ||^2 L(A1,A2,⋯,An,b1,⋯,bn):=21i=1∑N∣∣F(xi)−yi∣∣2
训练的优化过程和上述是一致的。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)