正向传播推导
第i个样本
输入
x
(
i
)
x^{(i)}
x(i),通过计算得到
z
(
i
)
z^{(i)}
z(i),然后再使用sigmoid函数得到预测值
y
^
(
i
)
\hat y^{(i)}
y^(i),我们需要判断
y
^
(
i
)
\hat y^{(i)}
y^(i)与实际值y的关系。
第一,先判断维度,
x
(
i
)
x^{(i)}
x(i)(nx1),w(nx1),
z
(
i
)
z^{(i)}
z(i)(1x1),
y
^
(
i
)
\hat y^{(i)}
y^(i)(1x1)。
接着,我们来计算
z
(
i
)
z^{(i)}
z(i)=
(
x
1
(
i
)
w
1
+
x
2
(
i
)
w
2
+
⋯
+
x
n
(
i
)
w
n
)
+
b
(x_{1}^{(i)}w_1+x_{2}^{(i)}w_2+\dots+x_{n}^{(i)}w_n)+b
(x1(i)w1+x2(i)w2+⋯+xn(i)wn)+b=
(
w
1
,
w
2
,
…
,
w
m
)
(
x
1
(
i
)
x
2
(
i
)
.
.
.
x
n
(
i
)
)
+
b
(w_1,w_2,\dots,w_m)\begin{pmatrix} x_{1}^{(i)}\\ x_{2}^{(i)}\\ .\\.\\.\\\\ x_{n}^{(i)} \end{pmatrix} +b
(w1,w2,…,wm)⎝⎜⎜⎜⎜⎜⎜⎜⎜⎜⎛x1(i)x2(i)...xn(i)⎠⎟⎟⎟⎟⎟⎟⎟⎟⎟⎞+b。
其中,b是实数,python中有广播功能,能使b扩展到与前式相同的维度并计算。
向量化(从个别到整体)
为了与上面做区别,字母大写。
Z
=
(
w
1
,
w
2
,
…
,
w
m
)
(
x
11
x
21
…
x
m
1
x
12
x
22
…
x
m
2
.
.
.
.
.
.
.
.
.
x
1
n
x
2
n
…
x
m
n
)
+
b
=
w
T
X
+
b
Z=(w_1,w_2,\dots,w_m)\begin{pmatrix} x_{11}& x_{21} &\dots & x_{m1}\\ x_{12} & x_{22} &\dots & x_{m2}\\ .& . & &.\\ .& . & &.\\ .& .& &.\\ x_{1n}& x_{2n} &\dots & x_{mn}\\ \end{pmatrix} +b=w^TX+b
Z=(w1,w2,…,wm)⎝⎜⎜⎜⎜⎜⎜⎛x11x12...x1nx21x22...x2n………xm1xm2...xmn⎠⎟⎟⎟⎟⎟⎟⎞+b=wTX+b
Y
^
=
δ
(
Z
)
=
s
i
g
m
o
i
d
(
Z
)
=
(
y
^
(
1
)
,
y
^
(
2
)
,
…
,
y
^
(
m
)
)
\hat Y=\delta(Z)=sigmoid(Z)=(\hat y^{(1)},\hat y^{(2)},\dots,\hat y^{(m)})
Y^=δ(Z)=sigmoid(Z)=(y^(1),y^(2),…,y^(m))
此处使用sigmoid函数将预测值
y
^
\hat y
y^分布在0~1之间,即二分法。
判断向量维度
上面的维度是单个样本的维度,下面的维度是m个样本中向量的维度;在矩阵运算中,维度尤其重要,后面判断转置和累和都是基于矩阵维度。
X(nxm),其中n是特征,m是样本,w(nx1),b实数(1x1),Z(1xm),
Y
^
\hat Y
Y^(1xm)。
将原始数据进行整合
吴恩达老师提供了训练集和测试集,其中,train_data_org=(129,64,64,3)–>(129,64x64x3)–>(129,12288)->
(
129
,
12288
)
T
−
>
(
12288
,
129
)
(129,12288)^{T} ->(12288,129)
(129,12288)T−>(12288,129)。
其中,给出的训练集数据格式是129个样本,64x64的宽高,3原色(红、绿、蓝),我们需要将后面三位数相乘作为特征,然后再转置得到特征x样本即nxm。
接下来处理标签,train_labels_org=(129,)–>(1,129)。
其中,给出的训练集数据格式是129个样本,我们需要使用numpy库将其转换为需要的格式。
反向传播推导
第i个样本
依旧使用这幅图片,我们令a=
y
^
(
i
)
=
δ
(
z
(
i
)
)
=
1
1
+
e
−
z
(
i
)
\hat y^{(i)}=\delta(z^{(i)})=\frac{1}{1+e^{-z^{(i)}}}
y^(i)=δ(z(i))=1+e−z(i)1。其中,
x
i
x_i
xi(nx1),w(nx1),
z
(
i
)
z^{(i)}
z(i)(1x1),
y
^
(
i
)
\hat y^{(i)}
y^(i)(1x1),b实数(1x1)。
由前向传播函数得,Z=
w
T
X
+
b
w^TX+b
wTX+b。其中,X(nxm),w(nx1),b(1x1),Z(1xm),
Y
^
\hat Y
Y^(1xm),A(1xm)。
损失函数
loss function:对一个样本中计算预测值和实际值的差距。L(a,y)= − y l o g 10 a − ( 1 − y ) l o g 10 ( 1 − a ) -ylog_{10}a-(1-y)log_{10}(1-a) −ylog10a−(1−y)log10(1−a)。
代价函数
costs function:对m个样本中的w和b累加和后求均值。J(a,y)=J(w,b)= − 1 m ∑ i = 1 m [ y ∗ l o g a + ( 1 − y ) ∗ l o g ( 1 − a ) ] -\frac{1}{m}\sum_{i=1}^m[y*loga+(1-y)*log(1-a)] −m1∑i=1m[y∗loga+(1−y)∗log(1−a)]。
梯度下降法(实则是多元函数求微分)
∂
L
(
a
,
y
)
∂
w
=
∂
L
(
a
,
y
)
∂
a
∂
a
∂
z
∂
z
∂
w
\frac{\partial L(a,y)}{\partial w}=\frac{\partial L(a,y)}{\partial a}\frac{\partial a}{\partial z}\frac{\partial z}{\partial w}
∂w∂L(a,y)=∂a∂L(a,y)∂z∂a∂w∂z
∂
L
(
a
,
y
)
∂
b
=
∂
L
(
a
,
y
)
∂
a
∂
a
∂
z
∂
z
∂
b
\frac{\partial L(a,y)}{\partial b}=\frac{\partial L(a,y)}{\partial a}\frac{\partial a}{\partial z}\frac{\partial z}{\partial b}
∂b∂L(a,y)=∂a∂L(a,y)∂z∂a∂b∂z
其中,
∂
L
(
a
,
y
)
∂
a
=
−
y
a
−
(
1
−
y
)
(
−
1
)
1
−
a
\frac{\partial L(a,y)}{\partial a}=-\frac{y}{a}-\frac{(1-y)(-1)}{1-a}
∂a∂L(a,y)=−ay−1−a(1−y)(−1)
∂
a
∂
z
=
−
e
−
z
(
−
1
)
(
1
+
e
z
)
2
=
e
−
z
(
1
+
e
z
)
2
=
1
1
+
e
z
1
+
e
z
−
1
1
+
e
z
=
a
(
1
−
a
)
\frac{\partial a}{\partial z}=-\frac{e^{-z}(-1)}{(1+e^z)^2}=\frac{e^{-z}}{(1+e^z)^2}=\frac{1}{1+e^z}\frac{1+e^z-1}{1+e^z}=a(1-a)
∂z∂a=−(1+ez)2e−z(−1)=(1+ez)2e−z=1+ez11+ez1+ez−1=a(1−a)
所以,
∂
L
(
a
,
y
)
∂
a
∂
a
∂
z
=
a
−
y
\frac{\partial L(a,y)}{\partial a}\frac{\partial a}{\partial z}=a-y
∂a∂L(a,y)∂z∂a=a−y
最后,
∂
L
(
a
,
y
)
∂
w
=
(
a
−
y
)
x
−
−
>
x
(
a
−
y
)
;
∂
L
(
a
,
y
)
∂
b
=
a
−
y
−
−
>
n
p
.
s
u
m
(
a
−
y
)
\frac{\partial L(a,y)}{\partial w}=(a-y)x-->x(a-y);\frac{\partial L(a,y)}{\partial b}=a-y-->np.sum(a-y)
∂w∂L(a,y)=(a−y)x−−>x(a−y);∂b∂L(a,y)=a−y−−>np.sum(a−y)
做点解释,前面采用微积分中的链式求导法则来算,后面根据维度做变换,
∂
L
(
a
,
y
)
∂
w
\frac{\partial L(a,y)}{\partial w}
∂w∂L(a,y)维度是nx1,
∂
L
(
a
,
y
)
∂
b
\frac{\partial L(a,y)}{\partial b}
∂b∂L(a,y)维度是1x1,a-y维度是1x1。
向量化(从个别到整体)
∂
L
(
A
,
Y
)
∂
w
=
X
(
A
−
Y
)
−
−
>
X
(
A
−
Y
)
T
\frac{\partial L(A,Y)}{\partial w}=X(A-Y)-->X(A-Y)^T
∂w∂L(A,Y)=X(A−Y)−−>X(A−Y)T
∂
L
(
A
,
Y
)
∂
b
=
A
−
Y
−
−
>
n
p
.
s
u
m
(
A
−
Y
)
\frac{\partial L(A,Y)}{\partial b}=A-Y-->np.sum(A-Y)
∂b∂L(A,Y)=A−Y−−>np.sum(A−Y)
其中,A-Y的维度是1xm。
W
=
W
−
α
1
m
X
(
A
−
Y
)
W=W-\alpha\frac{1}{m}X(A-Y)
W=W−αm1X(A−Y)
b
=
b
−
α
1
m
n
p
.
s
u
m
(
A
−
Y
)
b=b-\alpha\frac{1}{m}np.sum(A-Y)
b=b−αm1np.sum(A−Y)
J
(
w
,
b
)
=
−
1
m
n
p
.
s
u
m
[
Y
l
o
g
A
+
(
1
−
Y
)
l
o
g
(
1
−
A
)
]
J(w,b)=-\frac{1}{m}np.sum[YlogA+(1-Y)log(1-A)]
J(w,b)=−m1np.sum[YlogA+(1−Y)log(1−A)]
其中,J(w,b)维度是1xm,里面均是点乘(矩阵对应位置相乘)。