一、正则化(Regularization)

1、正则化的作用

在机器学习中,正则化是相对于过拟合出现的一种特征选择的方法。在机器学习算法中使用的Loss项为最小化误差,而最小化误差是为了让我们的模型拟合我们的训练数据,此时,若参数过分拟合我们的训练数据就会形成过拟合的问题,而规则化参数的目的就是为看防止我们的模型过分拟合我们的训练数据。此时,我们会在Loss项之后加上正则项以约束模型中的参数:

其中,为损失函数项,为正则项。

2、正则化的种类

正则化的方法主要有两种:

  1. L1正则
  2. L2正则

其中,L1正则和L2正则的形式如下:

  1. L1正则:
  2. L2正则:

其中,为大于0的常数。

3、两种正则化的区别

在很多讲解正则化的材料中都会有如下的一张图

(图片来自:http://www.zhihu.com/question/20700829)

左图是L2正则,右图为L1正则。当模型中只有两个参数,即时,L2正则的约束空间是一个圆,而L1正则的约束空间为一个正方形,这样,基于L1正则的约束会产生稀疏解,如图所示,即图中某一维()为0。而L2正则只是将参数约束在接近0的很小的区间里,而不会正好为0。对于L1正则产生的稀疏解有很多的好处,如可以起到特征选择的作用,因为有些维的系数为0,说明这些维对于模型的作用很小。

二、OWL-QN算法的思想

1、L1正则的特点

对于带有L1正则的函数

对于,若其符号确定后(即确定变量所在的象限(Orthant)),函数即为线性函数,此时的函数是可导的函数。

2、OWL-QN算法的思想

基于以上L1正则的特点,微软提出了OWL-QN(Orthant-Wise Limited-Memory Quasi-Newton)算法,该算法是基于L-BFGS算法的可用于求解L1正则的算法。简单来讲,OWL-QN算法是指假定变量的象限确定的条件下使用L-BFGS算法来更新,同时,使得更新前后变量在同一个象限中(使用映射来满足条件)。

三、OWL-QN算法的具体过程

在OWL-QN算法中,为了使得更新前后的变量在同一个象限中,定义了一些特殊的函数,用于求解L1正则的问题。

1、伪梯度(pseudo-gradient)

其中,

我们重新定义下上述的伪梯度函数:

其中,。注意上述的伪梯度函数,有下式成立:

这样就保证了在处取得的方向导数是最小的。

2、映射

有了函数的下降的方向,接下来必须对变量的所属象限进行限制,目的是使得更新前后变量在同一个象限中,定义函数:

上述函数直观的解释是若在同一象限则取,若两者不在同一象限中,则取0。

3、线搜索

上述的映射是防止生成的新的点的坐标超出象限,而对坐标进行的一个约束,具体的约束的形式如下:

其中,是更新的公式,表示的是所在的象限,具体形式如下:

表示的是伪梯度下降的方向,其具体形式为:

其中,。选择的方式有很多种,前面也介绍了一些,在OWL-QN中,使用了一种backtracking line search的变种,具体如下:选择常数,对于使得满足:

4、算法流程

参考文献

[1] Scalable Training of L1-Regularized Log-Linear Models

优化算法——OWL-QN相关推荐

  1. 从 SGD 到 Adam —— 深度学习优化算法概览 各种优化器 重点

    20210701 https://blog.51cto.com/u_15064630/2571266 [机器学习基础]优化算法详解 详细 https://blog.csdn.net/u01338501 ...

  2. 梯度优化算法Adam

    最近读一个代码发现用了一个梯度更新方法, 刚开始还以为是什么奇奇怪怪的梯度下降法, 最后分析一下是用一阶梯度及其二次幂做的梯度更新.网上搜了一下, 果然就是称为Adam的梯度更新算法, 全称是:自适应 ...

  3. PyTorch-Adam优化算法原理,公式,应用

    概念:Adam 是一种可以替代传统随机梯度下降过程的一阶优化算法,它能基于训练数据迭代地更新神经网络权重.Adam 最开始是由 OpenAI 的 Diederik Kingma 和多伦多大学的 Jim ...

  4. 梯度下降优化算法概述

    本文原文是 An overview of gradient descent optimization algorithms,同时作者也在 arXiv 上发了一篇同样内容的 论文. 本文结合了两者来翻译 ...

  5. Adam那么棒,为什么还对SGD念念不忘 (1) —— 一个框架看懂优化算法

    机器学习界有一群炼丹师,他们每天的日常是: 拿来药材(数据),架起八卦炉(模型),点着六味真火(优化算法),就摇着蒲扇等着丹药出炉了. 不过,当过厨子的都知道,同样的食材,同样的菜谱,但火候不一样了, ...

  6. 梯度下降优化算法综述与PyTorch实现源码剖析

    现代的机器学习系统均利用大量的数据,利用梯度下降算法或者相关的变体进行训练.传统上,最早出现的优化算法是SGD,之后又陆续出现了AdaGrad.RMSprop.ADAM等变体,那么这些算法之间又有哪些 ...

  7. Adam那么棒,为什么还对SGD念念不忘 (3)—— 优化算法的选择与使用策略

    在前面两篇文章中,我们用一个框架梳理了各大优化算法,并且指出了以Adam为代表的自适应学习率优化算法可能存在的问题.那么,在实践中我们应该如何选择呢? 本文介绍Adam+SGD的组合策略,以及一些比较 ...

  8. 一个框架看懂优化算法之异同 SGD/AdaGrad/Adam

    Adam那么棒,为什么还对SGD念念不忘 (1) -- 一个框架看懂优化算法 机器学习界有一群炼丹师,他们每天的日常是: 拿来药材(数据),架起八卦炉(模型),点着六味真火(优化算法),就摇着蒲扇等着 ...

  9. 支持向量机SVM序列最小优化算法SMO

    支持向量机(Support Vector Machine)由V.N. Vapnik,A.Y. Chervonenkis,C. Cortes 等在1964年提出.序列最小优化算法(Sequential ...

  10. ubuntu之路——day8.1 深度学习优化算法之mini-batch梯度下降法

    所谓Mini-batch梯度下降法就是划分训练集和测试集为等分的数个子集,比如原来有500W个样本,将其划分为5000个baby batch,每个子集中有1000个样本,然后每次对一个mini-bat ...

最新文章

  1. how to come in an investnent bank team
  2. c# xml文件新增同级节点_[C#.NET 拾遗补漏]08:强大的LINQ
  3. 测试点2错的来:1033 旧键盘打字 (20分)
  4. 错误C4996:'std :: _Copy_impl'
  5. mysql 64位 8.0.11_mysql8.0.11 在windows64安装 步骤
  6. 神经网络训练3次就准确率不变_1组高效徒手训练,6个动作每周3-5次,帮你在家高效率燃脂增肌!...
  7. 干货分享|安全测试起航之旅 1
  8. 【maven】idea maven slf4j : StackOverflowError
  9. idea在java文件中查找_Java开发工具IntelliJ IDEA使用源代码系列教程(四):在文件中搜索目标...
  10. el如何获取复选框的值_element ui 表格提交时获取所有选中的checkbox的数据
  11. 为PHP添加swoole异步并行扩展
  12. vant在cell中加表格_在vant 中使用cell组件 定义图标该图片和位置操作
  13. 软件需求规格说明书范例
  14. 邮箱地址采集的10个经典方法
  15. VMware新建虚拟机步骤图解
  16. LTE 中的CQI,PMI,RI上报机制
  17. linux下读取ntfs数据,在Linux中读取NTFS分区上的数据
  18. 如何更改layui弹出层样式
  19. 美国搜索市场之战 微软终于战胜雅虎
  20. elementui from表单提交_vue+element-ui el-form表单验证及提交验证

热门文章

  1. 关于电脑双屏后,微信截屏会黑屏,且截屏范围不全的问题解决方法
  2. java接口的作用和意义_Java接口的作用与意义
  3. CP1E-N30DR-A拆机图片
  4. 北京络捷斯特物流系统(四)
  5. office 里的链接如何显示成图片_微软Office文档 | Office小程序介绍(一)
  6. dice系数 交叉熵_一文搞懂交叉熵损失
  7. 玩转QQ群营销、群排名、群演戏,打造自己的流量“鱼塘”
  8. 求温度分布的matlab,铜芯电缆温度分布MATLAB计算模型
  9. android ble 蓝牙绑定流程,android BLE蓝牙开发
  10. 奔驰c语言控制系统使用方法,奔驰C200L灯光使用方法,C200L灯光开关图解说明