神经网络基础:DNN、CNN、RNN、RvNN、梯度下降、反向传播 | 您所在的位置:网站首页 › 迷你世界人物皮肤图片男生帅气版 › 神经网络基础:DNN、CNN、RNN、RvNN、梯度下降、反向传播 |
在介绍神经网络之前,首先介绍一下神经元模型。 神经元模型可以描述为这样的一张图: DNN,前馈神经网络,网络中神经元分属于不同的层,整个网络中无反馈,信号从输入层向输出层单向传播,可用一个有向无环图表示 。 在有监督训练中,我们有给定的实例 ( x i , y i ′ ) (x^i, {y^i}') (xi,yi′),那么很自然地,我们会想到列方程来求解参数,但是当参数个数很多时,给定的实例个数可能会小于参数个数,这样,方程法将无法求解参数。 所以,我们通过另一种方式来进行参数求解——迭代调参:通过调整参数,让模型输出递归性地逼近标准输出。 在神经网络中,我们往往用迭代调参的方法进行参数求解。 很明显,在调参的过程中会有三个最基本的问题: 1.参数的初始值是什么? 2.怎么调参数? 3.要把参数调到什么程度才算结束? 对于第一个问题,方法很简答:随便设置参数初值。 因为参数值在迭代过程中是可调的,所以初始值并不重要(实际上还是会对模型效果有些影响的,在后面的多极值点函数问题中会提到),因此,可以随意设置。 对于后两个问题,一般来说,迭代调参方式分为两个步骤: 1.定义目标函数(损失函数):将问题转化为极值问题。 2.优化目标函数:用调参的方式求目标函数的极值,以此来确定参数。 这样,我们既解决了如何调整参数的问题,也确定了调参什么时间结束。 为了反应模型输出对真实结果的拟合程度,很自然地会想到利用模型输出结果 y i y^i yi与真实结果 y i ′ {y^i}' yi′之间的误差定义目标函数。 损失函数,也就是我们所说的目标函数,常记作 C ( θ ) C(θ) C(θ)或 L ( θ ) L(θ) L(θ),我们的问题也就定义成了:求解 m i n C ( θ ) minC(θ) minC(θ),使得模型输出与真实结果之间的误差最小。 损失函数有很多,交叉熵函数是较为常用的一种,对损失函数感兴趣的朋友可以自行百度了解~ 现在,目标函数定义好了,索性将其表示为 L ( θ ) L(θ) L(θ),我们的问题和目标都已经很清晰了: 已知 L ( θ ) L(θ) L(θ),求 m i n L ( θ ) minL(θ) minL(θ) 我们将其描述为“优化目标函数”过程,也就是上面所说的步骤二:利用迭代调参的方式逼近我们的目标。 这种迭代调参的方法就是大名鼎鼎的梯度下降法。 梯度下降法背后的数学原理是泰勒公式: 假如函数 h ( x ) h(x) h(x)在 x = x 0 x = x_0 x=x0附近无限可微,那么利用泰勒展开可以写为: h ( x ) = ∑ k = 0 ∞ h ( k ) ( x 0 ) k ! ( x − x 0 ) k h(x) = \sum_{k=0}^∞\frac{h^{(k)}(x_0)}{k!}(x-x_0)^k h(x)=k=0∑∞k!h(k)(x0)(x−x0)k = h ( x 0 ) + h ′ ( x 0 ) ( x − x 0 ) + h ′ ′ ( x 0 ) 2 ! ( x − x 0 ) 2 + . . . =h(x_0)+h'(x_0)(x-x_0)+\frac{h''(x_0)}{2!}(x-x_0)^2+... =h(x0)+h′(x0)(x−x0)+2!h′′(x0)(x−x0)2+... 那么,当 x x x与 x 0 x_0 x0无限接近时,上式可以写为: h ( x ) ≈ h ( x 0 ) + h ′ ( x 0 ) ( x − x 0 ) h(x)≈h(x_0)+h'(x_0)(x-x_0) h(x)≈h(x0)+h′(x0)(x−x0) 不失一般性: h ( x 1 ) = h ( x 0 ) + h ′ ( x 0 ) ( x 1 − x 0 ) h(x_1)=h(x_0)+h'(x_0)(x_1-x_0) h(x1)=h(x0)+h′(x0)(x1−x0) 由于我们的目标是求解函数 h ( x ) h(x) h(x)的极小值(在这里我们将 h ( x ) h(x) h(x)看作目标函数),那么每次选取的 h ( x i ) h(x_i) h(xi)的值要比上一次的 h ( x i − 1 ) h(x_{i-1}) h(xi−1)更小,即: h ( x i ) ; h ( x i − 1 ) h(x_i);h(x_{i-1}) h(xi) |
CopyRight 2018-2019 实验室设备网 版权所有 |