丢弃法
- 动机:一个好的模型需要对输入进行扰动
- 使用有噪音得数据等价于Tikhonov正则
- 丢弃法:在层之间加入噪音
- 无偏差地加入噪音(加入噪音之后,期望不变)
- 正则项只在训练中使用:他们影响的是模型参数的更新,在预测/推理过程中,丢弃法直接返回输出
- 总结
- 丢弃法将一些输出项随机置0来控制模型的复杂度
- 常作用在多层感知机的隐藏层的输出上
- 丢弃的概率是控制模型复杂度的超参数
代码讲解
class Net(nn.Module):
def __init__(self,num_inputs,num_outputs,num_hiddens1,num_hiddens2,is_training=True):
super(Net,self).__init__()
self.num_inputs = num_inputs
self.training = is_training
self.lin1 = nn.Linear(num_inputs,num_hiddens1)
self.lin2 = nn.Linear(num_hiddens1,num_hiddens2)
self.lin3 = nn.Linear(num_hiddens2,num_outputs)
self.relu = nn.ReLU()
def forward(self,X):
H1 = self.relu(self.lin1(X.reshape((-1, self.num_inputs))))
if self.training == True:
H1 = dropout_layer(H1,dropout1)
H2 = self.relu(self.lin2(H1))
if self.training == True:
H2 = dropout_layer(H2,dropout2)
out = self.lin3(H2)
return out
数值稳定性
- 梯度爆炸和梯度消失问题,常发生在深度模型中
- 如何让训练更加稳定
- 将乘法变加法:ResNet、Lstm
- 归一化
- 合理的权重初始和激活函数
- 让每层的方差是一个常数
- 让每层的输出和梯度都看作随机变量
- 让它们的均值和方差都保持一致
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律