梯度下降
sigmod 函数:
σ
=
1
1
+
e
−
x
\sigma = \tfrac{1}{1+e^{-x}}
σ=1+e−x1
sigmod 的导数为:
σ
′
=
σ
(
x
)
(
1
−
σ
(
x
)
)
\sigma^{'} = \sigma(x)(1-\sigma(x))
σ′=σ(x)(1−σ(x))
推导该公式:
σ
′
=
∂
∂
x
1
1
+
e
−
x
=
e
−
x
(
1
+
e
−
x
)
−
2
=
1
1
+
e
−
x
⋅
e
−
x
1
+
e
−
x
=
σ
(
x
)
(
1
−
σ
(
x
)
)
\begin{aligned} \sigma^{'} &= \frac{\partial}{\partial x}\frac{1}{ 1+e^{-x}}\\&=\frac{e^{-x}}{({1+e^{-x}})^{-2}}\\&=\frac{1}{1+e^{-x}}\cdot\frac{e^{-x}}{1+e^{-x}}\\&=\sigma(x)(1-\sigma(x)) \end{aligned}
σ′=∂x∂1+e−x1=(1+e−x)−2e−x=1+e−x1⋅1+e−xe−x=σ(x)(1−σ(x))
sigmoid 小结
优点
- sigmoid 是使用范围最广的一类激活函数,具有指数函数形状,它在物理意义上最为接近生物神经元。
- (0, 1) 的输出还可以被表示作概率,或用于输入的归一化,代表性的如Sigmoid交叉熵损失函数。
- sigmoid函数连续,光滑,严格单调,以(0,0.5)中心对称,是一个非常良好的阈值函数。
- 当x趋近负无穷时,y趋近于0;趋近于正无穷时,y趋近于1;x=0时,y=0.5。当然,在x超出[-6,6]的范围后,函数值基本上没有变化,值非常接近,在应用中一般不考虑。
- Sigmoid函数的值域范围限制在(0,1)之间,我们知道[0,1]与概率值的范围是相对应的,这样sigmoid函数就能与一个概率分布联系起来了。
缺点
- 最明显的就是饱和性。其两侧导数逐渐趋近于0 具有这种性质的称为软饱和激活函数。由于在后向传递过程中,sigmoid向下传导的梯度包含了一个 f′(x)因子(sigmoid关于输入的导数),因此一旦输入落入饱和区,f′(x) 就会变得接近于0,导致了向底层传递的梯度也变得非常小。此时,网络参数很难得到有效训练。这种现象被称为梯度消失。一般来说, sigmoid 网络在 5 层之内就会产生梯度消失现象。
- sigmoid函数的输出均大于0,使得输出不是0均值,这称为偏移现象,这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。
误差公式
如果有m个样本点, 标记为
x
(
1
)
,
x
(
2
)
,
.
.
.
,
x
(
m
)
x^{(1)}, x^{(2)}, ..., x^{(m)}
x(1),x(2),...,x(m),
误差公式为:E =
−
1
m
∑
i
=
1
m
(
y
(
i
)
l
n
(
y
^
(
i
)
)
+
(
1
−
y
(
i
)
)
l
n
(
1
−
y
^
(
i
)
)
)
-\frac{1}{m}\sum_{i=1}^m\left(y^{(i)}ln(\hat y^{(i)}) + (1-y^{(i)})ln(1-\hat y^{(i)}) \right)
−m1∑i=1m(y(i)ln(y^(i))+(1−y(i))ln(1−y^(i)))
预测函数:
y
^
(
i
)
=
σ
(
W
x
(
i
)
+
b
)
\hat y^{(i)} = \sigma(Wx^{(i)} + b)
y^(i)=σ(Wx(i)+b)
误差的偏导数
我们的目标是计算E ,在单个样本点x时的梯度即偏导数, 其中x包含n个特征
即x=(
x
1
,
x
2
,
.
.
.
,
x
n
x_1, x_2, ..., x_n
x1,x2,...,xn)
∇
E
=
(
∂
∂
w
1
E
,
.
.
.
,
∂
∂
w
n
E
,
∂
∂
b
E
)
\nabla E =\left(\frac{ \partial}{\partial w_1}E,... ,\frac{ \partial}{\partial w_n}E, \frac{ \partial}{\partial b}E \right)
∇E=(∂w1∂E,...,∂wn∂E,∂b∂E)
先计算
∂
∂
w
j
y
^
\frac{ \partial }{\partial w_j}\hat y
∂wj∂y^
∂
∂
w
j
y
^
=
σ
(
W
x
+
b
)
(
1
−
σ
(
W
x
+
b
)
)
⋅
∂
∂
w
j
(
W
x
+
b
)
=
y
^
(
1
−
y
^
)
⋅
∂
∂
w
j
(
W
x
+
b
)
=
y
^
(
1
−
y
^
)
⋅
∂
∂
w
j
(
w
1
x
1
+
w
2
x
2
+
⋯
+
w
n
x
n
+
b
)
=
y
^
(
1
−
y
^
)
⋅
x
j
\begin{aligned} \frac{ \partial }{\partial w_j}\hat y &=\sigma(Wx+b)(1-\sigma(Wx+b))\cdot \frac{\partial}{\partial w_j}(Wx+b)\\ &=\hat y(1-\hat y)\cdot \frac{\partial}{\partial w_j}(Wx+b)\\ &=\hat y(1-\hat y)\cdot \frac{\partial}{\partial w_j}(w_1x_1+ w_2x_2+ \cdots + w_nx_n +b)\\ &=\hat y(1-\hat y)\cdot x_j \end{aligned}
∂wj∂y^=σ(Wx+b)(1−σ(Wx+b))⋅∂wj∂(Wx+b)=y^(1−y^)⋅∂wj∂(Wx+b)=y^(1−y^)⋅∂wj∂(w1x1+w2x2+⋯+wnxn+b)=y^(1−y^)⋅xj
现在计算
∂
∂
w
j
E
\frac{\partial}{\partial w_j}E
∂wj∂E
∂ ∂ w j E = ∂ ∂ w j [ − y l n ( y ^ ) − ( 1 − y ) l n ( 1 − y ^ ) ] = − y ∂ ∂ w j ( l n y ^ ) − ( 1 − y ) ∂ ∂ j l n ( 1 − y ^ ) = − y ⋅ 1 y ^ ⋅ ∂ ∂ w j y ^ − ( 1 − y ) ⋅ 1 1 − y ^ ⋅ ∂ ∂ w j ( 1 − y ^ ) = − y ⋅ 1 y ^ ⋅ y ^ ( 1 − y ^ ) ⋅ x j − ( 1 − y ) ⋅ 1 1 − y ^ ⋅ y ^ ⋅ ( 1 − y ^ ) ⋅ ( − 1 ) ⋅ x j = − y ( 1 − y ^ ) ⋅ x j + ( 1 − y ) y ^ ⋅ x j = − ( y − y ^ ) x j \begin{aligned} \frac{\partial}{\partial w_j}E &=\frac{ \partial }{\partial w_j}\left [-yln(\hat y) - (1-y)ln(1-\hat y) \right]\\&=-y\frac{\partial}{\partial w_j}(ln\hat y) - (1-y)\frac{\partial}{\partial j}ln(1-\hat y)\\&=-y\cdot\frac{1}{\hat y}\cdot\frac{\partial}{\partial w_j}\hat y - (1-y)\cdot\frac{1}{1-\hat y}\cdot\frac{\partial}{\partial w_j}(1-\hat y)\\&=-y\cdot\frac{1}{\hat y}\cdot\hat y(1-\hat y)\cdot x_j - (1-y)\cdot\frac{1}{1-\hat y}\cdot\hat y\cdot(1-\hat y)\cdot(-1)\cdot x_j\\&= -y(1-\hat y)\cdot x_j + (1-y)\hat y \cdot x_j \\&= -(y - \hat y)x_j \end{aligned} ∂wj∂E=∂wj∂[−yln(y^)−(1−y)ln(1−y^)]=−y∂wj∂(lny^)−(1−y)∂j∂ln(1−y^)=−y⋅y^1⋅∂wj∂y^−(1−y)⋅1−y^1⋅∂wj∂(1−y^)=−y⋅y^1⋅y^(1−y^)⋅xj−(1−y)⋅1−y^1⋅y^⋅(1−y^)⋅(−1)⋅xj=−y(1−y^)⋅xj+(1−y)y^⋅xj=−(y−y^)xj
类似地E对b求偏导的公式为: ∂ ∂ b E = − ( y − y ^ ) \frac{\partial}{\partial b}E = -(y-\hat y) ∂b∂E=−(y−y^)
总结为:
∇
E
=
−
(
y
−
y
^
)
(
x
1
,
x
2
,
⋯
,
x
n
,
1
)
\nabla E = -(y-\hat y)(x_1, x_2, \cdots, x_n, 1)
∇E=−(y−y^)(x1,x2,⋯,xn,1)
梯度实际上是标量乘以点的坐标, 标量就是标签与预测之间的差别, 这意味着,
如果标签与预测接近(即点分类正确), 梯度将很小。
梯度下降步骤
减去误差函数的梯度与学习速率的乘积,按如下方式更新:
w
i
′
←
w
i
−
α
[
−
(
y
−
y
^
)
x
i
]
w_i^{'} \leftarrow w_i - \alpha[-(y- \hat y)x_i]
wi′←wi−α[−(y−y^)xi]
简写为:
w
i
′
←
w
i
+
α
(
y
−
y
^
)
x
i
w_i^{'} \leftarrow w_i + \alpha(y- \hat y)x_i
wi′←wi+α(y−y^)xi ,
类似地
b
′
←
b
+
α
(
y
−
y
^
)
b^{'} \leftarrow b + \alpha(y- \hat y)
b′←b+α(y−y^)
注意: 我们取的误差的平均值,所以要添加
1
m
⋅
α
\frac{1}{m}\cdot\alpha
m1⋅α
而不是
α
\alpha
α,由于
α
\alpha
α为常量,为了简化起见,我用
α
\alpha
α
来表示学习速率
1
m
⋅
α
\frac{1}{m}\cdot\alpha
m1⋅α。