深度学习第一步:定义模型
线性模型
模型偏置:模型无法模拟真实状态的限制性。
所有分段线性函数都等于常数加上一组函数的总和。
Sigmoid function: 增加了非线性的特点
s
i
g
m
o
i
d
(
b
+
w
x
1
)
=
1
1
+
e
−
(
b
+
w
x
1
)
sigmoid(b+wx_{1}) = \cfrac{1}{1 + {e^{-(b+wx_{1}) } }}
sigmoid(b+wx1)=1+e−(b+wx1)1
为了能让模型更好的贴合真实情况,通常需要更多未知参数来调整已有的模型,所以采用sigmoid函数的集合来表示模型,即:
将表示真实曲线的线性函数:
y
=
b
+
w
x
1
y=b+wx_{1}
y=b+wx1
变为:
y
=
c
⋅
s
i
g
m
o
i
d
(
b
+
w
x
)
y=c\cdot sigmoid\left ( b+wx \right )
y=c⋅sigmoid(b+wx)
当使用一组sigmoid方程来阶段性表达真实曲线时,形式如下:
y
=
b
+
{
c
1
s
i
g
m
o
i
d
(
b
1
+
w
1
x
1
)
c
2
s
i
g
m
o
i
d
(
b
2
+
w
2
x
2
)
c
3
s
i
g
m
o
i
d
(
b
3
+
w
3
x
3
)
y=b+\left\{\begin{matrix} c_{1}sigmoid\left ( b_{1}+w_{1}x_{1} \right ) \\ c_{2}sigmoid\left(b_{2}+w_{2}x_{2}\right) \\ c_{3}sigmoid\left(b_{3}+w_{3}x_{3} \right) \end{matrix}\right.
y=b+⎩⎨⎧c1sigmoid(b1+w1x1)c2sigmoid(b2+w2x2)c3sigmoid(b3+w3x3)
这个线性方程组可以整理为:
y
=
b
+
∑
i
c
i
s
i
g
m
o
i
d
(
b
i
+
∑
j
w
i
j
x
j
)
y= b+\sum_{i}^{} c_{i} sigmoid\left ( b_{i}+\sum_{j}^{} w_{ij} x_{j} \right )
y=b+i∑cisigmoid(bi+j∑wijxj)
此时如果用**r**来表示sigmoid括号中的值,那么可以得到:
r
1
=
b
1
+
w
11
x
1
+
w
12
x
2
+
w
13
x
3
r
2
=
b
2
+
w
21
x
1
+
w
22
x
2
+
w
23
x
3
r
3
=
b
3
+
w
31
x
1
+
w
32
x
2
+
w
33
x
3
\begin{matrix} r_{1}=b_{1}+w_{11}x_{1}+w_{12}x_{2}+w_{13}x_{3} \\ r_{2}=b_{2}+w_{21}x_{1}+w_{22}x_{2}+w_{23}x_{3} \\ r_{3}=b_{3}+w_{31}x_{1}+w_{32}x_{2}+w_{33}x_{3} \end{matrix}
r1=b1+w11x1+w12x2+w13x3r2=b2+w21x1+w22x2+w23x3r3=b3+w31x1+w32x2+w33x3
通过矩阵的方式计算可表示为:
[
r
1
r
2
r
3
]
=
[
b
1
b
2
b
3
]
+
[
w
11
w
12
w
13
w
21
w
22
w
23
w
31
w
32
w
33
]
[
x
1
x
2
x
3
]
\begin{bmatrix} r_{1}\\ r_{2}\\ r_{3} \end{bmatrix} =\begin{bmatrix} b_{1}\\ b_{2}\\ b_{3} \end{bmatrix} +\begin{bmatrix} w_{11} &w_{12}&w_{13}\\ w_{21} &w_{22} &w_{23}\\ w_{31}&w_{32}&w_{33} \end{bmatrix} \begin{bmatrix} x_{1}\\ x_{2}\\ x_{3} \end{bmatrix}
r1r2r3=b1b2b3+w11w21w31w12w22w32w13w23w33x1x2x3
即:
r
=
b
+
w
x
r= b+wx
r=b+wx
所以当用a来表示sigmoid方程时,可得:
a
=
s
i
g
m
o
i
d
(
r
)
=
1
1
+
e
−
r
a=sigmoid\left(r\right)=\cfrac{1}{1+ e^{-r } }
a=sigmoid(r)=1+e−r1
如果用希腊字母sigma表示sigmoid函数,那么就有:
a
=
σ
(
r
)
a=\sigma\left(r\right)
a=σ(r)
用线性代数的矩阵来表示上述函数,即为:
y
=
b
+
c
T
a
y=b+c^{T}a
y=b+cTa
合并之后为:
y
=
b
1
+
c
T
σ
(
b
2
+
w
x
)
y=b_{1} +c^{T} \sigma \left ( b_{2} +wx \right )
y=b1+cTσ(b2+wx)
其中,**x**为函数的特征,**b1**为未知参数,**b2**为向量。
最后对于上述参数b1、w、b2、c,都用希腊字母Theta来表示,并进行后续优化。
深度学习第二步:从训练数据中定义损失
损失(Loss)
损失是将所有的估测值和真实值之间的差距总和,即为:
L
=
1
N
∑
n
e
n
L=\frac{1}{N}\sum_{n}e_{n}
L=N1n∑en
随机找到一组初始数值
θ
0
\theta ^{0}
θ0 然后对每一个未知参数都计算对L的微分之后再集合起来,组成一个向量**g**梯度:
g
=
[
∂
L
∂
θ
1
∣
θ
=
θ
0
∂
L
∂
θ
2
∣
θ
=
θ
0
⋮
]
g=\begin{bmatrix} \frac{\partial L}{\partial \theta _{1}}|\theta =\theta ^{0} \\ \frac{\partial L}{\partial \theta _{2}}|\theta =\theta ^{0} \\ \vdots \end{bmatrix}
g=∂θ1∂L∣θ=θ0∂θ2∂L∣θ=θ0⋮
向量g还可以写成:
g
=
▽
L
(
θ
0
)
g=\bigtriangledown L\left(\theta ^{0}\right)
g=▽L(θ0)
参数Theta的更新
θ 1 ⟵ θ 0 − η g \theta ^{1}\longleftarrow \theta ^{0} - \eta g θ1⟵θ0−ηg
sigmoid函数与ReLU
ReLU:修正线性单元(Rectified Linear Unit)
f
(
x
)
=
m
a
x
(
0
,
x
)
f\left(x\right)=max\left(0,x\right)
f(x)=max(0,x)
当输入值为负时,函数返回值为0,当输入值为正时,函数返回值为输入值本身,此时梯度恒为1。
ReLU函数的优点:
函数简单,提升网络整体效率
缓解梯度消失的问题
缺点:
输入值为负时,函数恒为0,神经网络无法学习(死亡ReLU)。 解决方案:使用变体Leaky ReLU: f ( x ) = m a x ( 0.01 x , x ) f\left(x\right)=max\left(0.01x,x\right) f(x)=max(0.01x,x)
由于两个ReLU函数才能等效于一个sigmoid,所以使用ReLU函数来表示模型的时候,
y
=
b
+
∑
i
c
i
s
i
g
m
o
i
d
(
0
,
b
i
+
∑
j
w
i
j
x
j
)
y=b+\sum_{i}^{}c_{i}sigmoid\left(0,b_{i}+\sum_{j}^{}w_{ij}x_{j}\right)
y=b+i∑cisigmoid(0,bi+j∑wijxj)
可以表示为:
y
=
b
+
∑
2
i
c
i
m
a
x
(
0
,
b
i
+
∑
j
w
i
j
x
j
)
y=b+\sum_{2i}^{}c_{i}max\left(0,b_{i}+\sum_{j}^{}w_{ij}x_{j}\right)
y=b+2i∑cimax(0,bi+j∑wijxj)
在深度学习的过程中,每一个函数被称为神经元,通过改变权重得到新参数的学习网络就被称为神经网络。
深度学习第三步: 参数优化
在优化过程中要防止过拟合现象出现。
过拟合:当算法与其训练数据过于接近甚至完全吻合时,就会发生过拟合,这会导致模型无法根据训练数据以外的任何数据做出准确的预测或结论。
版权归原作者 砂糖橘吐司 所有, 如有侵权,请联系我们删除。