一、正则化
1、正则化的理解
当模型的复杂度>>数据的复杂度时,会出现过拟合现象,即模型过度拟合了训练数据,其泛化能力变差。为此,会通过数据增强、降维、正则化等方法防止模型过拟合。
式子里面,前者为损失函数,后者为正则化项。
从数学角度理解,以线性回归为例,其损失函数为:
可以得到:
需要对
对于
若以
求导:
解得:
2、L1 正则化(Lasso Regression) 与 L2 正则化(岭回归,Ridge Regression )
神经网络中,参数
3、L1 正则化的稀疏性
TODO...画图啊。。。好麻烦。。。有空在更
4、Dropout
值得注意的是,对于某一神经元的输入
""" inverted dropout(反向随机失活): 推荐实现方式. 在训练的时候drop和调整数值范围,测试时不用任何改变. """ p = 0.5 # 激活神经元的概率. p值更高 = 随机失活更弱 def train_step(X): # 3层neural network的前向传播 H1 = np.maximum(0, np.dot(W1, X) + b1) U1 = (np.random.rand(*H1.shape) < p) / p # 第一个dropout mask. /p 即为缩放,保证期望相同 H1 *= U1 # drop! H2 = np.maximum(0, np.dot(W2, H1) + b2) U2 = (np.random.rand(*H2.shape) < p) / p # 第二个dropout mask. /p 即为缩放,保证期望相同 H2 *= U2 # drop! out = np.dot(W3, H2) + b3 # 反向传播:计算梯度... (略) # 进行参数更新... (略) def predict(X): # 前向传播时模型集成 H1 = np.maximum(0, np.dot(W1, X) + b1) # 预测不用缩放了 H2 = np.maximum(0, np.dot(W2, H1) + b2) out = np.dot(W3, H2) + b3
5、提前终止(Early Stopping)
我愿称之为懒人必备正则化方法,简单且有效。
在训练模型的后期,经常会出现训练集上的
6、多任务学习(Multi-task)
多任务学习是通过合并几个任务从而提高泛化能力的方式,可以视作对参数施加了软约束。当模型的一部分被多个任务共享时,这部分将被约束为更好的值,前提是共享的任务合理,会提高模型的泛化能力。
这部分好像没什么好说的,现在大部分的
7、数据增强、添加噪声等
数据增强基本是在写大部分
本文作者:Abyss_J
本文链接:https://www.cnblogs.com/abyss-130/p/17293042.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步