机器学习_12_梯度下降法、拉格朗日、KKT

文章目录

  • 1 梯度下降法
    • 1.1 导数、梯度
    • 1.2 梯度下降法
    • 1.3 梯度下降法的优化思想
    • 1.4 梯度下降法的调优策略
    • 1.5 BGD、SGD、MBGD
      • 1.5.1 BGD、SGD、MBGD的区别
  • 2 有约束的最优化问题
  • 3 拉格朗日乘子法
    • 3.1 拉格朗日乘子法理解
    • 3.2 对偶问题
  • 4 KKT条件
    • 4.1 KKT条件理解
    • 4.2 KKT公式理解
    • 4.3 KKT条件总结
  • 5 高中距离知识回顾

1 梯度下降法

1.1 导数、梯度

  • 导数:一个函数在某一点的导数描述了这个函数在这一点附近的变化率,也可以认为是函数在某一点的导数就是该函数所代表的曲线在这一点的切线斜率。导数值越大,表示函数在该点处的变化越大。
  • 梯度:梯度是一个向量,表示某一函数在该点处的方向导数沿着该方向取的最大值,即函数在该点处沿着该方向变化最快,变化率最大(即该梯度向量的模);当函数为一维函数的时候,梯度其实就是导数。

在这里插入图片描述

1.2 梯度下降法

  • 梯度下降法(Gradient Descent, GD)常用于求解无约束情况下凸函数(ConvexFunction)的极小值,是一种迭代类型的算法,因为凸函数只有一个极值点,故求解出来的极小值点就是函数的最小值点
    在这里插入图片描述

1.3 梯度下降法的优化思想

  • 梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向,所以梯度下降法也被称为“最速下降法”。梯度下降法中越接近目标值,变量变化越小。计算公式如下:

  • α被称为步长或者学习率(learning rate),表示自变量x每次迭代变化的大小。

  • 收敛条件:当目标函数的函数值变化非常小的时候或者达到最大迭代次数的时候,就结束循环。
    在这里插入图片描述

1.4 梯度下降法的调优策略

由于梯度下降法中负梯度方向作为变量的变化方向,所以有可能导致最终求解的值是局部最优解,所以在使用梯度下降的时候,一般需要进行一些调优策略:

  • 学习率的选择:学习率过大,表示每次迭代更新的时候变化比较大,有可能会跳过最优解;学习率过小,表示每次迭代更新的时候变化比较小,就会导致迭代速度过慢,很长时间都不能结束;
  • 算法初始参数值的选择:初始值不同,最终获得的最小值也有可能不同,因为梯度下降法求解的是局部最优解,所以一般情况下,选择多次不同初始值运行算法,并最终返回损失函数最小情况下的结果值;
  • 标准化:由于样本不同特征的取值范围不同,可能会导致在各个不同参数上迭代速度不同,为了减少特征取值的影响,可以将特征进行标准化操作。

1.5 BGD、SGD、MBGD

在这里插入图片描述

1.5.1 BGD、SGD、MBGD的区别

  • 当样本量为m的时候,每次迭代BGD算法中对于参数值更新一次,SGD算法中对于参数值更新m次,MBGD算法中对于参数值更新m/n次,相对来讲SGD算法的更新速度最快;
  • SGD算法中对于每个样本都需要更新参数值,当样本值不太正常的时候,就有可能会导致本次的参数更新会产生相反的影响,也就是说SGD算法的结果并不是完全收敛的,而是在收敛结果处波动的;
  • SGD算法是每个样本都更新一次参数值,所以SGD算法特别适合样本数据量大的情况以及在线机器学习(Online ML)。

2 有约束的最优化问题

最优化问题一般是指对于某一个函数而言,求解在其指定作用域上的全局最小值问题,一般分为以下三种情况(备注:以下几种方式求出来的解都有可能是局部极小值,只有当函数是凸函数的时候,才可以得到全局最小值):

  • 无约束问题:求解方式一般求解方式梯度下降法、牛顿法、坐标轴下降法等;
  • 等式约束条件:求解方式一般为拉格朗日乘子法
  • 不等式约束条件:求解方式一般为KKT条件

在这里插入图片描述

3 拉格朗日乘子法

拉格朗日乘子法就是当我们的优化函数存在等值约束的情况下的一种最优化求解方式;其中参数α被称为拉格朗日乘子,要求α不等于0
在这里插入图片描述

3.1 拉格朗日乘子法理解

  • 数学证明 https://wenku.baidu.com/view/ac56710e2e3f5727a5e962a7.html
    在这里插入图片描述

3.2 对偶问题

在优化问题中,目标函数f(x)存在多种形式,如果目标函数和约束条件都为变量x的线性函数,则称问题为线性规划;如果目标函数为二次函数,则称最优化问题为二次规划;如果目标函数或者约束条件为非线性函数,则称最优化问题为非线性优化。每个线性规划问题都有一个对应的对偶问题。对偶问题具有以下几个特性:

  • 对偶问题的对偶是原问题;
  • 无论原始问题是否是凸的,对偶问题都是凸优化问题;
  • 对偶问题可以给出原始问题的一个下界;
  • 当满足一定条件的时候,原始问题和对偶问题的解是完美等价的 。

4 KKT条件

KKT条件是泛拉格朗日乘子法的一种形式;主要应用在当我们的优化函数存在不等值约束的情况下的一种最优化求解方式;KKT条件即满足不等式约束情况下的条件 :

在这里插入图片描述

4.1 KKT条件理解

  • 可行解必须在约束区域g(x)之内,由图可知可行解x只能在g(x)<0和g(x)=0的区域取得;
    • 当可行解x在g(x)<0的区域中的时候,此时直接极小化f(x)即可得到;
    • 当可行解x在g(x)=0的区域中的时候,此时直接等价于等式约束问题的求解。

在这里插入图片描述

  • 当可行解在约束内部区域的时候,令β=0即可消去约束。
  • 对于参数β的取值而言,在等值约束中,约束函数和目标函数的梯度只要满足平行即可;而在不等式约束中,若β≠0,则说明可行解在约束区域的边界上,这个时候可行解应该尽可能的靠近无约束情况下的解,所以在约束边界上,目标函数的负梯度方向应该远离约束区域朝无约束区域时的解,此时约束函数的梯度方向与目标函数的负梯度方向应相同;从而可以得出β>0。

在这里插入图片描述

4.2 KKT公式理解

在这里插入图片描述

4.3 KKT条件总结

在这里插入图片描述

5 高中距离知识回顾

参考资料:https://wenku.baidu.com/view/d26d2ba39e31433239689374.html

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/448159.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【甲方安全建设】DevOps初体验

文章目录 前言传统的开发方式&#xff1a;Docker-解决环境问题 DevOps-CI/CD走向流水线Jenkins工作流程Git拉取代码Maven构建打包通过SSH连接后端服务器 实现效果 DevSecOps-安全赋能关于安全平台漏洞扫描漏洞预警TODO 前言 临近春节&#xff0c;笔者经过半年北漂&#xff0c;…

Flutter 应用服务:主题、暗黑、国际化、本地化 - app_service库

Flutter应用服务 主题、暗黑、国际化、本地化 app_service库 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/det…

TensorFlow2实战-系列教程6:猫狗识别3------迁移学习

&#x1f9e1;&#x1f49b;&#x1f49a;TensorFlow2实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 猫狗识别1 数据增强 猫狗识别2------数据增强 猫狗识别3------迁移学习 1、迁移学习 …

【linux】校招中的“熟悉linux操作系统”一般是指达到什么程度?

这样&#xff0c;你先在网上找一套完整openssh升级方案&#xff08;不是yum或apt的&#xff0c;要源码安装的&#xff09;&#xff0c;然后在虚拟机上反复安装测试&#xff0c;直到把他理解了、背下来。 面试的时候让你简单说说linux命令什么的&#xff0c;你就直接把这个方案…

uniapp中echart实例

1&#xff0c;自定义仪表盘 797_1706772047 index.vue import { useGaugeStore } from "/stores/utils"; const { currentValueEndAngle, currentSplitNumber } storeToRefs(useGaugeStore() ); const gaugeStore useGaugeStore();const wenduGauge ref<chart…

抖音老阳叭叭叭分享的temu蓝海项目优势有哪些?

在市场竞争日益激烈的今天&#xff0c;寻找一个具有发展潜力的蓝海项目已成为众多创业者的共同目标。近日&#xff0c;老阳分享了一个名为Temu的蓝海项目&#xff0c;引发了广泛关注。那么&#xff0c;这个项目究竟有何优势&#xff0c;能让人们对它青睐有加呢?以下几个方面将…

2024美国大学生数学建模C题网球运动中的势头详解思路+具体代码

2024美国大学生数学建模C题网球运动中的势头详解思路具体代码 E题数据已更新&#xff0c;做E题的小伙伴推荐看看博主的E题解析文章。那么废话不多说我们继续来做C题。 赛题分析 我们先阅题&#xff1a; 在2023年温布尔登男单决赛中&#xff0c;20岁的西班牙新星卡洛斯阿尔卡…

Linux 常用命令行

Linux (Ubuntu) 常用操作命令行 1. 打开终端&#xff1a;ctrl alt t; 2. 清屏&#xff1a;clear; 3. 进入目录&#xff1a;cd path;[/ 根目录&#xff1b;./ 当前目录&#xff1b;../ 上一级] 4. 返回上一级目录: cd ..; 5. 显示工作路径: pwd; 6. 列表显示文件、文件夹&…

【FPGA VerilogModelsim】 8bitBCD码60计数器

可私信获取整个项目文件 8bit 即有8位二进制 BCD码 ,全称Binary-Coded Decimal,简称BCD码或者二-十进制代码 利用四位二进制(0000-1111)16个中选择10个作为十进制0-9; 常见的BCD码是8421码 本项目使用两组BCD码(每组4bit,共8bit,故称为8bitBCD)(高位0-5,低位0-9…

定义HarmonyOS IDL接口

HarmonyOS IDL简介 HarmonyOS Interface Definition Language&#xff08;简称HarmonyOS IDL&#xff09;是HarmonyOS的接口描述语言。HarmonyOS IDL与其他接口语言类似&#xff0c;通过HarmonyOS IDL定义客户端与服务端均认可的编程接口&#xff0c;可以实现在二者间的跨进程…

深度学习入门笔记(四)函数与优化方法

深度学习有三大部分 模型表征(包括模型设计、网络表示等)模型评估(上一篇文章提到的准确召回和损失函数等)优化算法(模型如何学习或更新)本节我们就来介绍模型是如何学习或更新的。 4.1 损失函数 模型的学习,实际上就是对参数的学习。参数学习的过程需要一系列的约束,…

JavaScript基础五对象 内置对象 Math.random()

内置对象-生成任意范围随机数 Math.random() 随机数函数&#xff0c; 返回一个0 - 1之间&#xff0c;并且包括0不包括1的随机小数 [0, 1&#xff09; 如何生成0-10的随机数呢&#xff1f; Math.floor(Math.random() * (10 1)) 放大11倍再向下取整 如何生成5-10的随机数&…