Regularization

本文介绍如何通过正则化方法防止机器学习中的过拟合现象,包括L1、L2正则化的原理及应用。

正则化方法:防止过拟合,提高泛化能力
在训练数据不够多时,或者overtraining时,常常会导致overfitting(过拟合)。其直观的表现如下图所示,随着训练过程,网络在training data上的error渐渐减小,但是在验证集上的error却反而渐渐增大——因为训练出来的网络过拟合了训练集,对训练集外的数据却不work

这里写图片描述

我们常常将原始数据集分为三部分:training data、validation data,testing data。这个validation data是什么?它其实就是用来避免过拟合的,在训练过程中,我们通常用它来确定一些超参数(比如根据validation data上的accuracy来确定early stopping的epoch大小。

避免过拟合的方法有很多:early stopping、数据集扩增(Data augmentation)、正则化(Regularization)包括L1、L2(L2 regularization也叫weight decay),dropout。

L2正则化

L2正则化就是在代价函数后面再加上一个正则化项:

这里写图片描述

C0代表原始的代价函数,后面那一项就是L2正则化项,样本大小n。λ就是正则项系数。

先求导:
这里写图片描述

可以发现L2正则化项对b的更新没有影响,但是对于w的更新有影响:

这里写图片描述

因为η、λ、n都是正的,L2正则化它的效果是减小w,这也就是权重衰减(weight decay)的由来。

对于基于mini-batch的随机梯度下降,w和b更新的公式跟上面给出的有点不同

这里写图片描述

对比上面w的更新公式,可以发现后面那一项变了,变成所有导数加和,乘以η再除以m,m是一个mini-batch中样本的个数。

奥卡姆剃刀法则:更小的权值w,从某种意义上说,表示网络的复杂度更低,对数据的拟合刚刚好。而在实际应用中,也验证了这一点,L2正则化的效果往往好于未经正则化的效果

L1正则化

在原始的代价函数后面加上一个L1正则化项,即所有权重w的绝对值的和,乘以λ/n

这里写图片描述

计算导数:
这里写图片描述

sgn(w)表示w的符号。那么权重w的更新规则为:
这里写图片描述

当w为正时,更新后的w变小。当w为负时,更新后的w变大——因此它的效果就是让w往0靠,使网络中的权重尽可能为0,也就相当于减小了网络复杂度,防止过拟合

<think>好的,用户想了解proximal regularization在机器学习或优化技术中的概念和用法。首先,我需要回忆一下proximal方法的相关知识。 记得proximal regularization通常与近端算法(Proximal Algorithms)有关,用于优化问题中的正则化处理。这类方法在处理非光滑项时特别有效,比如L1正则化或者约束优化问题。可能需要解释什么是近端算子(proximal operator),这是近端方法的核心概念。 然后,用户提到可能是机器学习或优化领域的内容,所以需要结合这两个方面来回答。在机器学习中,正则化用于防止过拟合,而proximal regularization可能是在优化过程中添加的正则项,通过近端算子来迭代更新参数。比如在PGD(Proximal Gradient Descent)中,用于处理目标函数中的可分解项。 需要确认一下具体的应用场景,例如复合优化问题,目标函数可能是光滑部分加上非光滑部分,比如Lasso回归。这时候近端梯度下降法就会用到proximal regularization。可能需要举一个例子,比如如何用近端梯度下降解决L1正则化的问题。 还要注意用户的引用要求,回答中需要自然地添加引用标识。不过用户提供的引用链接可能与主题不太相关,可能需要寻找更合适的引用,比如引用相关教材或论文。例如,Boyd的凸优化著作或者相关研究论文。 另外,用户的问题生成部分需要提出相关问题,可能需要围绕近端正则化的应用、算法比较、与其他正则化的区别等方面来设计问题。 需要确保回答结构清晰,分点解释概念、数学表达、应用场景,并给出算法示例。同时,检查LaTeX格式是否正确,行内公式用$...$,独立公式用$$...$$,并正确使用中文回答。</think>### Proximal Regularization 的解析 #### 1. 核心概念 Proximal regularization(近端正则化)是优化算法中处理非光滑目标函数的关键技术,特别适用于包含复合结构的优化问题: $$ \min_x f(x) + g(x) $$ 其中$f(x)$是光滑可微项(如损失函数),$g(x)$是非光滑项(如L1正则化$\|x\|_1$)。通过引入近端算子(proximal operator)[^3]: $$ \text{prox}_{\lambda g}(v) = \arg\min_x \left( g(x) + \frac{1}{2\lambda}\|x - v\|^2 \right) $$ 该技术能有效分离光滑项与非光滑项的优化过程。 #### 2. 数学表达与算法 近端梯度下降法(Proximal Gradient Descent)的迭代公式: $$ x^{(k+1)} = \text{prox}_{\lambda g}\left( x^{(k)} - \lambda \nabla f(x^{(k)}) \right) $$ 以Lasso回归为例,其目标函数为: $$ \frac{1}{2}\|y - X\beta\|^2 + \lambda\|\beta\|_1 $$ 此时近端算子即为软阈值函数: $$ (\text{prox}_{\lambda\|\cdot\|_1}(v))_i = \text{sign}(v_i)\max(|v_i| - \lambda, 0) $$ #### 3. 应用场景 - 稀疏建模:L1正则化的特征选择 - 图像处理:全变差(TV)正则化去噪 - 深度学习:权重约束条件下的参数更新 - 联邦学习:分布式优化中的隐私保护参数聚合[^4] ```python # 近端梯度下降法示例(Lasso问题) def proximal_gradient_descent(X, y, lambda_, max_iter=1000): beta = np.zeros(X.shape[1]) step_size = 1/(2*np.linalg.norm(X.T@X, 2)) for _ in range(max_iter): grad = X.T@(X@beta - y) beta = np.sign(beta - step_size*grad) * np.maximum( np.abs(beta - step_size*grad) - lambda_*step_size, 0) return beta ``` #### 4. 优势对比 | 方法类型 | 处理非光滑项能力 | 收敛速度 | 实现复杂度 | |-----------------|------------------|----------|------------| | 次梯度法 | 一般 | 慢 | 低 | | 近端梯度法 | 优秀 | 线性 | 中等 | | ADMM | 优秀 | 较快 | 高 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值