误差种类及来源
测量学中,真值X
减去测量值Li
被称为误差(观测误差):
Δ
i
=
L
i
−
X
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad Δ_i=L_i-X
Δi=Li−X
误差可分为:
1、粗差
Δ
c
Δ_c
Δc
2、系统误差
Δ
x
Δ_x
Δx
3、 偶然误差
Δ
o
Δ_o
Δo
偶然误差的特点就是,当观测次数无限时,误差均值为0:
lim
n
→
∞
Δ
1
+
Δ
2.......
+
Δ
n
)
n
=
lim
n
→
∞
[
Δ
o
]
)
n
=
0
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad \lim_{n\to \infty}\frac{\Delta 1+\Delta 2.......+\Delta n)}{n}= \lim_{n\to \infty}\frac{[\Delta_o])}{n}=0
limn→∞nΔ1+Δ2.......+Δn)=limn→∞n[Δo])=0
当然,这些今天的重点,我们知道误差
Δ
=
Δ
c
+
Δ
x
+
Δ
o
Δ=Δ_c+Δ_x+Δ_o
Δ=Δc+Δx+Δo就够了。
观测精度
中误差通常用来衡量精度:
m
=
±
[
Δ
2
]
)
n
=
0
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad m= \pm \sqrt{\frac{[\Delta^2])}{n}}=0
m=±n[Δ2])=0
误差正向传播
正向传播
是一个已知各项变量测量误差推求函数变换后的总误差的过程。
设
Z
Z
Z是独立变量
X
1
,
X
2
…
…
X
n
X_1,X_2……X_n
X1,X2……Xn的函数:
Z
=
f
(
X
1
,
X
2
…
…
X
n
)
Z=f(X_1,X_2……X_n)
Z=f(X1,X2……Xn)
假设中误差为
m
z
m_z
mz各变量的观测误差为
m
1
,
m
2
…
…
m
n
m_1,m_2……m_n
m1,m2……mn,我们便可以通过各变量的观测值中误差来推求出函数的中误差:
设
:
X
i
=
L
i
−
Δ
i
设:X_i=L_i-\Delta_i
设:Xi=Li−Δi
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad
其中
L
i
L_i
Li为观测值,
Δ
i
\Delta_i
Δi为误差
则函数
Z
Z
Z为:
Z
=
f
(
L
1
−
Δ
1
,
L
2
−
Δ
2
…
…
L
n
−
Δ
n
)
Z=f(L_1-\Delta_1,L_2-\Delta_2……L_n-\Delta_n)
Z=f(L1−Δ1,L2−Δ2……Ln−Δn)
对其进行泰勒展开,取前两项:
f
(
x
)
=
f
(
x
0
)
+
f
′
(
x
0
)
(
x
−
x
0
)
f(x)=f(x0)+f'( x0)(x- x0)
f(x)=f(x0)+f′(x0)(x−x0)有:
Z
=
f
(
L
1
,
L
2
…
…
L
n
)
−
(
∂
f
∂
X
1
Δ
1
+
(
∂
f
∂
X
2
Δ
2
…
…
(
∂
f
∂
X
n
Δ
n
)
Z=f(L_1,L_2……L_n)-(\frac{\partial{f}}{\partial{X_1}}\Delta_1+(\frac{\partial{f}}{\partial{X_2}}\Delta_2……(\frac{\partial{f}}{\partial{X_n}}\Delta_n)
Z=f(L1,L2……Ln)−(∂X1∂fΔ1+(∂X2∂fΔ2……(∂Xn∂fΔn)
所以函数
Z
Z
Z的中误差为:
Δ
z
=
(
∂
f
∂
X
1
Δ
1
+
(
∂
f
∂
X
2
Δ
2
…
…
(
∂
f
∂
X
n
Δ
n
)
\Delta_z=(\frac{\partial{f}}{\partial{X_1}}\Delta_1+(\frac{\partial{f}}{\partial{X_2}}\Delta_2……(\frac{\partial{f}}{\partial{X_n}}\Delta_n)
Δz=(∂X1∂fΔ1+(∂X2∂fΔ2……(∂Xn∂fΔn)
当然,这只是观测一次,当观测多次时,我们能推出如下表格:
函数名称 | 函数式 | 中误差传播公式 |
---|---|---|
倍数函数 | Z = A X Z=AX Z=AX | m Z = ± A m m_Z=\pm Am mZ=±Am |
和差函数 | Z = X 1 ± X 2 … … ± X 2 Z=X_1\pm X_2……\pm X_2 Z=X1±X2……±X2 | m Z = ± m 1 2 + m 2 2 … … + m n 2 m_Z=\pm \sqrt{m_1^2+m_2^2……+m_n^2} mZ=±m12+m22……+mn2 |
线性函数 | Z = A X 1 ± A X 2 … … ± A X 2 Z=AX_1\pm AX_2……\pm AX_2 Z=AX1±AX2……±AX2 | m Z = ± A 1 2 m 1 2 + A 2 2 m 2 2 … … + A n 2 m n 2 m_Z=\pm \sqrt{A_1^2m_1^2+A_2^2m_2^2……+A_n^2m_n^2} mZ=±A12m12+A22m22……+An2mn2 |
误差反向传播
反向传播
是一个已知函数变换后的总误差推求各项变量误差的过程。
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad
假设如上测量过程,我们以A为起点(设高度为0)沿箭头方向测
当我们到B点时,高度增加了
D
a
b
=
+
5
c
m
D_ab=+5cm
Dab=+5cm,高度为
L
b
=
0
+
D
a
b
=
5
c
m
L_b=0+D_ab=5cm
Lb=0+Dab=5cm
到c点时,高度增加了
D
b
c
=
−
3
c
m
D_bc=-3cm
Dbc=−3cm,高度为
L
c
=
L
b
+
D
b
c
=
2
c
m
L_c=L_b+D_bc=2cm
Lc=Lb+Dbc=2cm
回到A点时,高度增加了
D
c
a
=
−
3
c
m
D_ca=-3cm
Dca=−3cm,高度为
L
a
=
L
c
+
D
c
a
=
1
c
m
L_a=L_c+D_ca=1cm
La=Lc+Dca=1cm。
所以在A点时出问题了,高度既是0又是1,这就是测量误差导致的,我们可以用如下方法纠正误差:
总误差 Δ Z = 0 − 1 = 1 c m \Delta_Z=0-1=1cm ΔZ=0−1=1cm,求 A B AB AB段误差为 Δ 1 = ? c m \Delta_1=?cm Δ1=?cm, B C BC BC段误差为 Δ 2 = ? c m \Delta_2=?cm Δ2=?cm, C A CA CA段误差为 Δ 3 = ? c m \Delta_3=?cm Δ3=?cm
我们可以将总误差平均到各段路程中去:
总路程:
S
=
3
+
4
+
5
=
12
m
S=3+4+5=12m
S=3+4+5=12m,则:
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad A B AB AB段误差为 Δ 1 = S a b S Δ Z = 3 Δ Z 12 c m \Delta_1=\frac{S_ab}{S}\Delta_Z=\frac{3\Delta_Z}{12}cm Δ1=SSabΔZ=123ΔZcm
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad B C BC BC段误差为 Δ 2 = S b c S Δ Z = 4 Δ Z 12 c m \Delta_2=\frac{S_bc}{S}\Delta_Z=\frac{4\Delta_Z}{12}cm Δ2=SSbcΔZ=124ΔZcm
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad C A CA CA段误差为 Δ 3 = S c a S Δ Z = 5 Δ Z 12 c m \Delta_3=\frac{S_ca}{S}\Delta_Z=\frac{5\Delta_Z}{12}cm Δ3=SScaΔZ=125ΔZcm
然后对测量值进行修正 ( X i = L i − Δ i ) (X_i=L_i-\Delta_i) (Xi=Li−Δi):
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad B B B点高度 X b = L b − Δ 1 = ( 0 + 5 − 3 12 ) c m X_b=L_b-\Delta_1=(0+5-\frac{3}{12})cm Xb=Lb−Δ1=(0+5−123)cm
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad C C C点高度 X c = X b − Δ 1 = 5 − 3 − ( 3 12 + 4 12 ) c m X_c=X_b-\Delta_1=5-3-(\frac{3}{12}+\frac{4}{12})cm Xc=Xb−Δ1=5−3−(123+124)cm
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad A A A点高度 X a = X c − Δ 1 = 5 − 3 − 1 − ( 3 12 + 4 12 + 5 12 ) = 0 c m X_a=X_c-\Delta_1=5-3-1-(\frac{3}{12}+\frac{4}{12}+\frac{5}{12})=0cm Xa=Xc−Δ1=5−3−1−(123+124+125)=0cm
这样我们就解决了测量上误差不闭合的问题。不过测量中,我们所用到的函数是简单的和差函数 D = D a b + D b c + D c a D=D_ab+D_bc+D_ca D=Dab+Dbc+Dca。
神经网络中,我们用的是向量函数的误差传播:
假设只有一层神经元:
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad
o
u
t
→
=
f
(
A
X
→
)
\overrightarrow{out}=f(A\overrightarrow{X})
out=f(AX)
其中我们的A是一个齐次坐标变换矩阵。为了简化分析,我们采用两个神经元组成一层:
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad
我们可以写成二维向量函数形式:
[
O
1
O
2
]
=
f
(
[
w
11
w
21
w
12
w
22
]
∗
[
x
1
x
2
]
+
[
b
1
b
2
]
)
\begin{bmatrix} O_1 \\ O_2 \\ \end{bmatrix}=f(\begin{bmatrix} w11& w21 \\ w12&w22 \\ \end{bmatrix}*\begin{bmatrix} x_1 \\ x_2 \\ \end{bmatrix}+\begin{bmatrix} b_1 \\ b_2 \\ \end{bmatrix})
[O1O2]=f([w11w12w21w22]∗[x1x2]+[b1b2])
也可以写成三维向量式:
[
O
1
O
2
O
3
]
=
f
(
[
w
11
w
21
b
1
w
12
w
22
b
2
0
0
1
]
∗
[
x
1
x
2
x
0
]
)
\begin{bmatrix} O_1 \\ O_2 \\ O_3 \end{bmatrix}=f(\begin{bmatrix} w11& w21 &b1\\ w12&w22 &b2\\ 0&0&1 \end{bmatrix}*\begin{bmatrix} x_1 \\ x_2 \\ x_0 \end{bmatrix})
⎣⎡O1O2O3⎦⎤=f(⎣⎡w11w120w21w220b1b21⎦⎤∗⎣⎡x1x2x0⎦⎤)
那么问题就来了,随便丢了一个权重矩阵A,得到了输出向量,我们该怎么修正权重。
我们可以把输出进行单独分析,比如,只分析
O
1
O_1
O1的输出和目标差了多少,假设目标值(真值)为
O
b
O_b
Ob,那么误差为:
Δ
o
=
O
1
−
O
b
\Delta_o=O_1-O_b
Δo=O1−Ob
很显然:
O
1
=
f
(
w
11
∗
x
1
+
w
21
∗
x
2
+
b
1
∗
x
0
)
O_1=f(w11*x_1+w21*x_2+b1*x_0)
O1=f(w11∗x1+w21∗x2+b1∗x0)
我们为了方便分析,拆分为如下两个函数:’
u 1 = w 11 ∗ x 1 + w 21 ∗ x 2 + b 1 ∗ x 0 u_1=w11*x_1+w21*x_2+b1*x_0 u1=w11∗x1+w21∗x2+b1∗x0;
O 1 = f ( u ) O_1=f(u) O1=f(u);
函
数
u
1
函数u_1
函数u1是简单的线性函数,做误差传播分析很容易
函
数
O
1
函数O_1
函数O1是非线性函数,误差传播势必需要用微分求导:
Δ O 1 = Δ f ( u ) = Δ f ( u ) Δ u ∗ Δ u = f ′ ( u ) ∗ Δ u \Delta O_1=\Delta f(u)=\frac{ \Delta f(u)}{\Delta u}*\Delta u=f'(u)*\Delta u ΔO1=Δf(u)=ΔuΔf(u)∗Δu=f′(u)∗Δu;
Δ u 1 = Δ w 11 ∗ x 1 + Δ w 21 ∗ x 2 + Δ b 1 ∗ x 0 \Delta u_1=\Delta w11*x_1+\Delta w21*x_2+\Delta b1*x_0 Δu1=Δw11∗x1+Δw21∗x2+Δb1∗x0;
假设我们使用的传递函数为
s
i
g
m
o
i
d
sigmoid
sigmoid函数,那么
O
1
=
f
(
u
)
=
1
1
+
e
−
u
O_1=f(u)=\frac{1}{1+e^-u}
O1=f(u)=1+e−u1,导数为
f
′
(
u
)
=
f
(
u
)
(
1
−
f
(
u
)
)
f'(u)=f(u)(1-f(u))
f′(u)=f(u)(1−f(u))
所以:
Δ
O
1
=
f
′
(
u
)
∗
Δ
u
=
f
(
u
)
(
1
−
f
(
u
)
)
∗
(
Δ
w
11
∗
x
1
+
Δ
w
21
∗
x
2
+
Δ
b
1
∗
x
0
)
\Delta O_1=f'(u)*\Delta u=f(u)(1-f(u))*(\Delta w11*x_1+\Delta w21*x_2+\Delta b1*x_0)
ΔO1=f′(u)∗Δu=f(u)(1−f(u))∗(Δw11∗x1+Δw21∗x2+Δb1∗x0)
即:
Δ
O
1
=
f
′
(
u
)
∗
x
1
∗
Δ
w
11
+
f
′
(
u
)
∗
x
2
∗
Δ
w
21
+
f
′
(
u
)
∗
x
0
∗
Δ
b
1
)
\Delta O_1=f'(u)*x_1*\Delta w11+f'(u)*x_2*\Delta w21+f'(u)*x_0*\Delta b1)
ΔO1=f′(u)∗x1∗Δw11+f′(u)∗x2∗Δw21+f′(u)∗x0∗Δb1)
我们令
K
i
=
f
′
(
u
)
∗
x
i
K_i=f'(u)*x_i
Ki=f′(u)∗xi,改写为
Δ
O
1
=
K
1
∗
Δ
w
11
+
K
2
∗
Δ
w
21
+
K
0
∗
Δ
b
1
)
\Delta O_1=K_1*\Delta w11+K_2*\Delta w21+K_0*\Delta b1)
ΔO1=K1∗Δw11+K2∗Δw21+K0∗Δb1)
很显然,
Δ
O
1
\Delta O_1
ΔO1不仅仅和
w
11
w11
w11相关,就像前面测量中的误差不仅仅由一段距离产生,但是前面我们能通过按距离平差的方式将误差平均到各段中去,这里并没有距离之类的参考信息进行平差.
或者假设我们可以假设:总路程:
S
=
K
1
+
K
2
+
K
3
S=K_1+K_2+K_3
S=K1+K2+K3
那么:
Δ
w
11
=
1
S
∗
Δ
O
1
∗
K
i
)
\Delta w11=\frac{1}{S}*\Delta O_1*K_i)
Δw11=S1∗ΔO1∗Ki)
当我们令 α = 1 S \alpha=\frac{1}{S} α=S1时,我们可得 Δ w 11 = α ∗ Δ O 1 ∗ K i \Delta w11=\alpha *\Delta O_1*K_i Δw11=α∗ΔO1∗Ki
所以我们在神经网络中可以这么更新的权重的:
w
i
⟵
w
i
−
α
∗
Δ
O
1
∗
K
i
w_i\longleftarrow w_i-\alpha*\Delta O_1*K_i
wi⟵wi−α∗ΔO1∗Ki
当然,我们这里使用的误差是测量值减真值,但大部分机器学习中误差是真值减去测量值,即如下:
E
=
O
t
−
O
E=O_t-O
E=Ot−O
其中
O
t
O_t
Ot是用来教学的教师数据,
O
O
O才是实际输出,所以和本文中的更新刚好相反:
w i ⟵ w i + α ∗ Δ O ∗ K i w_i\longleftarrow w_i+\alpha*\Delta_O*K_i wi⟵wi+α∗ΔO∗Ki