机器学习中的过拟合、欠拟合及通用工作流程
1. 过拟合与欠拟合:Dropout技术
在神经网络训练中,过拟合和欠拟合是常见的问题。为了解决过拟合,Dropout是一种非常有效且常用的正则化技术。它由Geoff Hinton和他在多伦多大学的学生开发。
Dropout的原理是在训练过程中,随机“丢弃”(将其设置为零)某一层的部分输出特征。例如,对于一个给定的输入样本,某一层通常会返回向量[0.2, 0.5, 1.3, 0.8, 1.1],应用Dropout后,这个向量可能会随机出现一些零元素,如[0, 0.5, 1.3, 0, 1.1]。丢弃率是被置零的特征比例,通常设置在0.2到0.5之间。
在测试时,不会丢弃任何单元,但会将该层的输出值按丢弃率进行缩放,以平衡训练时和测试时活跃单元数量的差异。以下是使用Numpy实现Dropout的代码示例:
import numpy as np
# 训练时
layer_output *= np.random.randint(0, high=2, size=layer_output.shape)
# 测试时
layer_output *= 0.5
也可以在训练时同时完成这两个操作,测试时保持输出不变,这也是实际中常用的实现方式:
layer_output *= np.random.randint(0, high=2, size=layer_output.shape)
layer_output /= 0.5
超级会员免费看
订阅专栏 解锁全文
475

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



