反向传播算法和梯度下降算法是神经网络的核心算法。
导数与梯度
导数本身是标量,没有方向,但是导数表征了函数值在某个方向Δ𝒙的变化率。在这些任意Δ𝒙方向中,沿着坐标轴的几个方向比较特殊,此时的导数也叫做偏导数(Partial Derivative)。对于一元函数,导数记为𝑑𝑦/𝑑𝑥;对于多元函数的偏导数,记为𝜕𝑦/𝜕𝑥1,𝜕𝑦/𝜕𝑥2, …等。偏导数是导数的特例,也没有方向。
梯度下降算法:𝜃′ = 𝜃 − 𝜂 ∗ ∇ℒ
梯度上升算法:𝜃′ = 𝜃 + 𝜂 ∗ ∇ℒ
其中向量(∂ℒ/∂𝜃1,∂ℒ/∂𝜃2,∂ℒ/∂𝜃3, …∂ℒ/∂𝜃𝑛)叫做函数的梯度(Gradient),它由所有偏导数组成,表征方向,梯度的方向表示函数值上升最快的方向,梯度的反向表示函数值下降最快的方向。
导数常见性质
基本函数的导数
常用导数性质
激活函数导数
Sigmoid 函数导数
Sigmoid 函数表达式:
Sigmoid 函数的导数表达式:
Sigmoid 函数的导数曲线如图 7.2 所示
ReLU 函数导数
ReLU 函数的表达式:𝑅𝑒𝐿𝑈(𝑥) ≔ 𝑚𝑎𝑥(0, 𝑥)
ReLU 函数的导数表达式:
ReLU 函数的导数曲线如图 7.3 所示
LeakyReLU 函数导数
LeakyReLU 函数的表达式:
LeakyReLU 函数的导数表达式:
LeakyReLU 函数的导数曲线如图 7.4所示
Tanh 函数梯度
tanh 函数的表达式:
tanh 函数的导数表达式:
tanh函数的导数曲线如图 7.5所示
损失函数梯度
均方差函数梯度
均方差损失函数表达式为:
均方差的导数可以推导为:
交叉熵函数梯度
Softmax梯度
Softmax 函数的表达式:
Softmax 函数的梯度推导稍复杂,但是最终的结果还是很简洁的:
交叉熵梯度
交叉熵损失函数的表达式:
交叉熵损失 函数的梯度:
全连接层梯度
单个神经元梯度
对于采用Sigmoid 激活函数的神经元模型,它的数学模型可以写为
全连接层梯度
链式法则
反向传播算法