目标:搭建L层神经网络
数据集介绍
同第二周,猫的图片64*64的三通道图
具有神经网络思维的Logistic回归
模型搭建
每一层神经网络 都是 由两部分组成
- 线性部分 Z l = W l A l − 1 + b l Z^{l} = W^{l}A^{l-1} + b^{l} Zl=WlAl−1+bl
- 激活部分
A
l
=
a
c
t
i
v
a
t
e
(
Z
l
)
A^{l} = activate(Z^{l})
Al=activate(Zl)
( l l l表示层数)
(输出层为第0层)
其中,由于是二分类神经网络,所以第1~L-1层使用ReLU激活函数,第L层使用Sigmoid激活函数
初始始化参数
注:返回的W是已经转置的过的
W.shape = (当前层的神经元数,上一层的神经元数)
前向传播
前向传播,对于第1~L-1层,
线性部分:
Z
[
l
]
(
i
)
=
W
[
l
]
A
[
l
−
1
]
(
i
)
+
b
[
l
]
(
i
)
Z^{[l](i)} = W^{[l]}A^{[l-1](i)} + b^{[l](i)}
Z[l](i)=W[l]A[l−1](i)+b[l](i)
激活部分:
A
[
l
]
(
i
)
=
R
e
L
U
(
Z
[
l
]
(
i
)
)
A^{[l](i)} = ReLU(Z^{[l](i)})
A[l](i)=ReLU(Z[l](i))
第L层,激活部分 激活函数不同
激活部分:
A
[
L
]
(
i
)
=
S
i
g
m
o
i
d
(
Z
[
L
]
(
i
)
)
A^{[L](i)} = Sigmoid(Z^{[L](i)})
A[L](i)=Sigmoid(Z[L](i))
计算成本
使用的是【交叉熵】成本函数
损失函数:
L
(
A
(
i
)
,
Y
(
i
)
)
=
−
Y
(
i
)
log
(
A
[
L
]
(
i
)
)
−
(
1
−
Y
(
i
)
)
log
(
1
−
A
[
L
]
(
i
)
)
L(A^{(i)},Y^{(i)}) = -Y^{(i)}\log(A^{[L](i)}) - (1-Y^{(i)})\log(1-A^{[L](i)})
L(A(i),Y(i))=−Y(i)log(A[L](i))−(1−Y(i))log(1−A[L](i))
成本函数:
J
=
1
m
∑
i
=
1
n
L
(
A
[
L
]
(
i
)
,
Y
(
i
)
)
J = {1 \over m} \sum_{i=1}^n L(A^{[L](i)},Y^{(i)})
J=m1i=1∑nL(A[L](i),Y(i))
反向传播
先借图

在反向传播,对于第1~L-1层,我们依旧分两部分,分别求其激活部分和线性部分
激活部分:
d Z [ l ] = d A [ l ] g ′ ( Z [ l ] ) dZ^{[l]} = dA^{[l]} g'(Z^{[l]}) dZ[l]=dA[l]g′(Z[l])
线性部分:
d
W
[
l
]
=
∂
L
∂
W
[
l
]
=
1
m
d
Z
[
l
]
⋅
A
[
l
−
1
]
T
dW^{[l]}= {\partial L \over \partial W^{[l]}} = {1 \over m}dZ^{[l]} \cdot A^{[l-1]T}
dW[l]=∂W[l]∂L=m1dZ[l]⋅A[l−1]T
d b [ l ] = ∂ L ∂ b [ l ] = 1 m ∑ i = 1 m d Z [ l ] ( i ) db^{[l]} = {\partial L \over \partial b^{[l]}} = {1 \over m} \sum_{i=1}^m{dZ^{[l](i)}} db[l]=∂b[l]∂L=m1i=1∑mdZ[l](i)
d A [ l − 1 ] = ∂ L ∂ A [ l − 1 ] = W [ l ] T ⋅ d Z [ l ] dA^{[l-1]} = {\partial L \over \partial A^{[l-1]}} = W^{[l]T} \cdot dZ^{[l]} dA[l−1]=∂A[l−1]∂L=W[l]T⋅dZ[l]
总结:
传入第
l
l
l层的
d
A
[
l
]
dA^{[l]}
dA[l]之后,经过激活部分得到
Z
[
l
]
Z^{[l]}
Z[l],再经过线性部分得到
A
[
l
−
1
]
,
W
[
l
]
,
b
[
l
]
A^{[l-1]},W^{[l]},b^{[l]}
A[l−1],W[l],b[l]
对于第L层,由于激活函数不同,且dAL是 成本函数的导数,略微特殊处理
d
A
L
=
−
Y
A
L
+
1
−
Y
1
−
A
L
dAL = - {Y \over AL} + {1-Y \over 1-AL}
dAL=−ALY+1−AL1−Y
更新参数(梯度下降)
W [ l ] = W [ l ] − α d W [ l ] W^{[l]} = W^{[l]} - \alpha ~dW^{[l]} W[l]=W[l]−α dW[l]
b [ l ] = b [ l ] − α d b [ l ] b^{[l]} = b^{[l]} - \alpha~db^{[l]} b[l]=b[l]−α db[l]
结果
一个4层的神经网络
layers_dims = [12288, 20, 7, 5, 1] # 4-layer model
第 0 次迭代,成本值为: 0.715731513413713
第 100 次迭代,成本值为: 0.6747377593469114
第 200 次迭代,成本值为: 0.6603365433622127
第 300 次迭代,成本值为: 0.6462887802148751
第 400 次迭代,成本值为: 0.6298131216927773
第 500 次迭代,成本值为: 0.606005622926534
第 600 次迭代,成本值为: 0.5690041263975134
第 700 次迭代,成本值为: 0.519796535043806
第 800 次迭代,成本值为: 0.46415716786282285
第 900 次迭代,成本值为: 0.40842030048298916
第 1000 次迭代,成本值为: 0.37315499216069026
第 1100 次迭代,成本值为: 0.30572374573047106
第 1200 次迭代,成本值为: 0.26810152847740837
第 1300 次迭代,成本值为: 0.23872474827672654
第 1400 次迭代,成本值为: 0.20632263257914718
第 1500 次迭代,成本值为: 0.17943886927493605
第 1600 次迭代,成本值为: 0.1579873581880163
第 1700 次迭代,成本值为: 0.14240413012274492
第 1800 次迭代,成本值为: 0.12865165997888675
第 1900 次迭代,成本值为: 0.1124431499816437
第 2000 次迭代,成本值为: 0.08505631034982422
第 2100 次迭代,成本值为: 0.05758391198616691
第 2200 次迭代,成本值为: 0.044567534546991264
第 2300 次迭代,成本值为: 0.03808275166600256
第 2400 次迭代,成本值为: 0.034410749018419895
准确度为: 0.9952153110047847
准确度为: 0.78
比第二周(只用一层单个结点的线性回归)的准确率70%提高了8%

预测失败的图片分析


模型往往表现欠佳的几种类型的图像包括:
- 猫身体在一个不同的位置
- 猫出现在相似颜色的背景下
- 不同的猫的颜色和品种
- 相机角度
- 图片的亮度
- 比例变化(猫的图像非常大或很小)
505

被折叠的 条评论
为什么被折叠?



