C2W1 深度学习的实践层面
吴恩达深度学习C2W1 深度学习的实践层面
- 如何配置训练集、验证集、测试集
- 如何分析偏差、方差,如何处理高偏差or高方差or高偏差和高方差共存的问题
- 如何在神经网络中应用不同形式的正则化(正则化解决高方差过拟合问题)
- L2正则化
- dropout
- 其他正则化(数据扩增、early stopping)
- 加快神经网络训练速度的技巧(归一化输入)
- 梯度检验(调试后向传播是否正确)
编程作业
1、初始化参数
不同的初始化方法可能导致性能最终不同
随机初始化有助于打破对称,使得不同隐藏层的单元可以学习到不同的参数。
初始化时,初始值不宜过大。
He初始化搭配ReLU激活函数常常可以得到不错的效果。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22# GRADED FUNCTION: initialize_parameters_he
def initialize_parameters_he(layers_dims):
"""
Arguments:
layer_dims -- python array (list) containing the size of each layer.
Returns:
parameters -- python dictionary containing your parameters "W1", "b1", ..., "WL", "bL":
"""
np.random.seed(3)
parameters = {}
L = len(layers_dims) - 1 # integer representing the number of layers
for l in range(1, L + 1):
### START CODE HERE ### (≈ 2 lines of code)
parameters['W' + str(l)] = np.random.randn(layers_dims[l], layers_dims[l - 1]) * np.sqrt(2 / layers_dims[l - 1])
parameters['b' + str(l)] = np.zeros((layers_dims[l], 1))
### END CODE HERE ###
return parameters
2、正则化
解决过拟合(高方差)
L2正则化(“权重衰减”:权重被改变到较小的值)
compute_cost_with_regularization(A3, Y, parameters, lambd)
计算代价函数时增加正则化项
backward_propagation_with_regularization(X, Y, cache, lambd)
权重矩阵的梯度计算要加上正则化项的导数
若 λ 过大,可能导致高偏差
dropout正则化
forward_propagation_with_dropout
instead offorward_propagation
.backward_propagation_with_dropout
instead ofbackward_propagation
.
正则化只用于训练,不要在测试中使用