TF2.0学习NOTE5: 探索解析 过拟合/欠拟合
程序员文章站
2022-07-13 11:27:31
...
对模型的训练的准确性, 会先达到峰值, 然后下降.
模型训练的目的: 使模型能够适用于大部分泛化测试数据, 并保持较高的准确率.
"名词解析"
"模型数据较少时, 使用正则化等技术, 限制了模型可以存储的信息的数据量和类型,如果网络只能记住少量模式,
那么优化过程将迫使它专注于最突出的模式,这些模式有更好的泛化性"
1. 过拟合: 模型训练时间过长, 训练数据较少;
2. 欠拟合: 模型设置不够强大, 过度正则化以及无足够长时间训练模型;
3. 正则化: 向原始模型引入额外信息,以便防止过拟合和提高模型泛化性能的一类方法的统称;
1. 防止过度拟合的策略
- 添加权重正则化
L1 正则化, 其中增加的成本与权重系数的
绝对值
成正比(即与权重的“L1范数
”成正比).
L2 正则化, 其中增加的成本与权重系数值的
平方
成正比(即与权重的平方“L2范数
”成正比)。L2正则化
在神经网络中也称为权值衰减
。不要让不同的名称迷惑你:权重衰减在数学上与L2正则化是完全相同的.
## 在tf.keras训练中, 将权重正则化实例作为关键字参数传递给层来添加权重正则化;
l2_model = keras.models.Sequential([
keras.layers.Dense(16, kernel_regularizer=keras.regularizers.l2(0.001),
activation='relu', input_shape=(NUM_WORDS,)),
keras.layers.Dense(16, kernel_regularizer=keras.regularizers.l2(0.001),
activation='relu'),
keras.layers.Dense(1, activation='sigmoid')
])
"代码中的l2(0.001)表示: 该层的权重矩阵中的每个系数都会将0.001 * weight_coefficient_value**2添加到网络的总损失中"
- 丢弃正则化Dropout
## 1. dropou会在每一层随机的丢弃一些单元, 且仅在训练期间使用, 不用于测试阶段;
## 2. 在训练时, 因为每一个特征都有被丢弃, 所以整个网络不会偏向于某个特征, 所以你能够起到减轻过拟合的作用;
dpt_model = keras.models.Sequential([
keras.layers.Dense(16, activation='relu', input_shape=(NUM_WORDS,)),
keras.layers.Dropout(0.5), ## Dropout
keras.layers.Dense(16, activation='relu'),
keras.layers.Dropout(0.5),
keras.layers.Dense(1, activation='sigmoid')
])
拓展: 还有两个重要的方法为:
数据增强和批量标准化
上一篇: 洛谷 P1003 铺地毯
下一篇: KNN(K近邻算法)