【AI】数学基础——最优化理论

从本质上讲,人工智能的目标就是最优化,在复杂环境中与多体交互中做出最优决策。

几乎所有的人工智能问题都会归结为一个优化问题

  • 在线性搜索中,确定寻找最小值时的搜索方向需要使用目标函数的一阶导数和二阶导数
  • 置信域的思想是先确定搜索步长,再确定搜索方向

4.1 基本概念

目标函数(评价函数):要实现最大化/最小化的函数

  • 目标函数可以看做是连续的山脉,最优化的过程就是判断顶峰的位置,并找到到达顶峰路径的过程

最优化理论研究的问题是:

  • 判定给定目标函数的最大值(最小值)是否存在
  • 找到令目标函数取到最大值(最小值)的数值。

大多数最优化问题都可以通过使目标函数最小化解决

  • 最大化问题可以通过使 − f ( x ) -f(x) f(x) 最小化实现

4.1.1 最优化目标

理想情况下,最优化算法的目标是 找到全局最小值

  • 全局最小值:全局最小值比定义域内所有其他点的函数值都小
  • 局部极小值:局部极小值只比所有邻近点的函数值都小

当目标函数的输入参数较多、解空间较大时,绝大多数的实用算法都不能满足全局搜索对计算复杂度的要求,因而只能求出局部极小值。

在AI领域,只要目标函数取指足够小,就可以把这个值当做全局最小值实用,作为对 性能和复杂度的折衷

4.1.2 分类

根据约束条件的不同,最优化问题可以分为无约束优化(unconstrained optimization)和约束优化(constrained optimization) 两类。

  • 无约束优化:对自变量 x x x 的取值没有限制
  • 约束优化:对自变量 x x x 的取值限制在特定的集合内,即需要满足一定的约束条件

4.2 约束优化问题

4.2.1 线性规划问题

在有限的成本约束下取得最大的收益,通过拉格朗日算子可以将含有 n n n 个变量和 k k k 个约束条件的问题转化为含有 n + k n+k n+k 个变量的无约束优化问题。
L ( x , y , λ ) = f ( x , y ) + λ φ ( x , y ) L(x,y,\lambda)=f(x,y)+\lambda\varphi(x,y) L(x,y,λ)=f(x,y)+λφ(x,y)
从数学意义上讲,由原目标函数和约束条件共同构成的拉格朗日函数与原目标函数有共同的最优点集和共同的最优目标函数值,从而保证了最优解的不变形

4.3 无约束优化问题

4.3.1 线性搜索方法

先确定方向,再确定步长

梯度下降法

沿目标函数值下降最快的方向寻找最小值,方向为梯度的反方向

单个样本梯度下降法

梯度

当输入为数值,目标函数的图像为二维空间上的曲线,梯度为导数的反方向

当输入为向量,目标函数的图像就变成了高维空间上的曲面,梯度为垂直于曲面等值线并指向函数值增加方向的方向向量。

梯度下降

要让目标函数以最快下降,就是要让自变量在负梯度方向上移动——多元函数沿其负梯度方向下降最快

步长 :每次更新 f ( x ) f(x) f(x) x x x 的变化值

  • 较小的步长会导致收敛过程较慢
  • f ( x ) f(x) f(x) 接近最小值点时,步长太大会导致迈过最小值点

在梯度下降法中,步长选择的整体规律是逐渐变小

多样本梯度下降法

批处理模式

计算每个样本上目标函数的梯度,再将不同样本的梯度进行求和,求和的结果作为本次更新中目标函数的梯度。

在批处理模式中,每次更新都要遍历训练集中所有样本,因而运算量比较大

随机梯度下降法

每次更新中只使用一个样本,下一次更新再使用另一个样本,在不断迭代中实现对所有样本的遍历

梯度下降法分析

梯度下降法只用到了目标函数的一阶导数

  • 一阶导数描述的是目标函数如何随输入的变化而变化

  • 二阶导数提供了关于目标函数的曲率信息

    曲率影响的是目标函数的下降速度

    曲率为正,目标函数会比梯度下降法预期下降的更慢

    曲率为负,目标函数则会比梯度下降法预期下降的更快

只能利用目标函数的局部性质,因而难免盲目的搜索,导致收敛过慢

  • 通过一阶导数,可以获知目标函数可能在多个方向上都有增加的导数,意味着下降的梯度有很多种选择。但不同选择的效果有好有坏

  • 但无法获取导数的变化信息,即无法得知导数长期为负的方向

牛顿法

将二阶导数引入优化过程,得到的典型方法就是牛顿法

将目标函数泰勒展开成二阶近似形式,再对近似形式求导并令其为0,得到的向量为下降最快的方向

  • 相较梯度下降法,牛顿法下降速度快

4.3.2 非线性搜索——置信域方法

先确定步长,以步长为参数划定一个区域,再在这个区域内寻找最快大的下降方法

算法过程:

  1. 设置 置信域半径 s s s ,并在以当前点为中心、 s s s 为半径的封闭圆球形区域作为 置信域

  2. 在置信域内寻找目标函数的二次近似模型的最优点,最优点与当前点的距离就是 备选位移

  3. 在备选位移上,

    如果目标函数的二次近似产生了充分下降,就将当前点移动到计算出的最优点,并以此规则迭代,适当增加 s s s

    如果目标函数的近似下降不明显,则说明步长太大,需要缩小 s s s 并重新计算备选位移

    直到满足备选位移

4.3.3 非地毯式搜索——启发式算法

核心思想:优生劣汰的生存法则,并在算法中增加了选择和突变等经验因素

智能程度高的表现在于善用启发式策略,不用经过大量搜索也能解决问题

  • 生物进化——遗传算法

  • 统计物理中固体结晶过程——模拟退火算法

  • 低等动物产生集群智能——蚁群算法

  • 大脑中神经元竞争和协作的机制——人工神经网络

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微服务·架构组件之注册与发现

引言 微服务架构在现代软件开发中越来越受欢迎,它通过将系统拆分为多个小型、自治的服务来提高可维护性、可扩展性和灵活性。然而随着服务数量的增多,服务之间的通信何发现变得更加复杂。本报告旨在深入探讨微服务中的注册与发现,介绍其背景…

NRF52832一主多从ble_app_multilink_central

下载官方SDK后打开路径:nRF5SDK153059ac345\nRF5_SDK_15.3.0_59ac345\examples\ble_central\ble_app_multilink_central\pca10040\s132\arm5_no_packs 下的工程文件,确定把log开启 编译后下载完程序(要下载协议栈,这里用6.1.1的)&#xff0c…

对于论文Semi-Supervised Classification with Graph Convolutional Networks,小白的学习理解

参考笔记:论文笔记:Semi-Supervised Classification with Graph Convolutional Networks_hongbin_xu的博客-CSDN博客 论文笔记:SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS_semi supervised classification_饮冰l的博…

Linux CentOS安装抓包解包工具Wireshark图形化界面

1.Wireshark介绍 Wireshark 是一个开源的网络协议分析工具,它能够捕获和分析网络数据包,提供深入的网络故障排除、网络性能优化和安全审计等功能。它支持跨多个操作系统,包括 Windows、macOS 和 Linux。 2.Wireshark主要使用方法 捕获数据…

K8S容器OOM killed排查

背景 数据服务平台南海容器k8s设置的内存上限2GB,多次容器被OOM killed。 启动命令 java -XX:MaxRAMPercentage70.0 -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath/apps/logs/ ***.jar排查过程 1 当收到实例内存超过95%告警时,把jvm进程堆dump下…

htmx-使HTML更强大

‍本文作者是360奇舞团开发工程师 htmx 让我们先来看一段俳句: javascript fatigue: longing for a hypertext already in hand 这个俳句很有意思,是开源项目htmx文档中写的,意思是说,我们已经有了超文本,为什么还要去使用javascr…

三、原型模式

一、什么是原型模式 原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效&a…

模拟实现应用层协议

模拟实现应用层协议 文章目录 模拟实现应用层协议应用层再谈协议 序列化和反序列化 网络版计算器自定义协议利用Json进行序列化和反序列化json库的安装条件编译 应用层 应用层(Application layer)是OSI模型的第七层。应用层直接和应用程序接口并提供常见…

Unity 状态机

Enemy状态以及切换图 程序架构 接口 public interface IState {void OnEnter(); //进入状态时void OnUpdate();//执行状态时void OnExit(); //退出状态时 }接口实现及状态切换类 public class IdleState : IState {private FSM manager;private Parameter parameter;public…

开源且强大的网络嗅探分析工具——Wireshark

Wireshark是一款强大的开源网络协议分析工具,旨在帮助用户深入了解网络通信的细节。通过捕获、解析和展示网络数据包,Wireshark能够帮助工程师诊断问题、优化性能,以及解决各种网络难题。无论是深入分析还是快速调试,Wireshark都是…

C++ 多重继承

所谓多重继承就是一个儿子有好几个爹&#xff0c;然后一个人继承了这几个爹的财产。只需注意构造顺序即可&#xff0c;反正析构的顺序也是一样的。 #include <iostream> #include <string.h> using namespace std;class base_a { public:base_a(const char *str){…

华硕笔记本摄像头倒置怎么办?华硕笔记本摄像头上下颠倒怎么调整

笔记本电脑相较于台式电脑&#xff0c;更易携带&#xff0c;解决了很大一部分人的使用需求。但是笔记本电脑也存在很多不足&#xff0c;比如华硕笔记本电脑就经常会出现摄像头倒置的错误&#xff0c;出现这种问题要如何修复呢&#xff1f;下面就来看看详细的调整方法。 华硕笔记…

opencv 案例05-基于二值图像分析(简单缺陷检测)

缺陷检测&#xff0c;分为两个部分&#xff0c;一个部分是提取指定的轮廓&#xff0c;第二个部分通过对比实现划痕检测与缺角检测。本次主要搞定第一部分&#xff0c;学会观察图像与提取图像ROI对象轮廓外接矩形与轮廓。 下面是基于二值图像分析的大致流程 读取图像将图像转换…

C/C++ 个人笔记

仅供个人复习&#xff0c; C语言IO占位符表 %d十进制整数(int)%ldlong%lldlong long%uunsigned int%o八进制整型%x十六进制整数/字符串地址%c单个字符%s字符串%ffloat&#xff0c;默认保留6位%lfdouble%e科学计数法%g根据大小自动选取f或e格式&#xff0c;去掉无效0 转义符表…

LeetCode第6~10题解

CONTENTS LeetCode 6. N 字形变换&#xff08;中等&#xff09;LeetCode 7. 整数反转&#xff08;中等&#xff09;LeetCode 8. 字符串转换整数-atoi&#xff08;中等&#xff09;LeetCode 9. 回文数&#xff08;简单&#xff09;LeetCode 10. 正则表达式匹配&#xff08;困难&…

Flutter 混合开发调试

针对Flutter开发的同学来说&#xff0c;大部分的应用还是Native Flutter的混合开发&#xff0c;所以每次改完Flutter代码&#xff0c;运行整个项目无疑是很费时间的。所以Flutter官方也给我们提供了混合调试的方案【在混合开发模式下进行调试】&#xff0c;这里以Android Stud…

VUE笔记(四)vue的组件

一、组件的介绍 1、组件的作用 整个项目都是由组件组成 可以让代码复用&#xff1a;相似结构代码可以做成一个组件&#xff0c;直接进行调用就可以使用&#xff0c;提高代码复用性 可以让代码具有可维护性&#xff08;只要改一处&#xff0c;整个引用的部分全部都变&#xf…

Java8实战-总结17

Java8实战-总结17 引入流流操作中间操作终端操作使用流 小结 引入流 流操作 java.util.stream.Stream中的Stream接口定义了许多操作。它们可以分为两大类。再来看一下前面的例子&#xff1a; List<String> names menu.stream() //从菜单获得流 .filter(d -> d.get…

SpringBoot - Google EventBus、AsyncEventBus

介绍 EventBus 顾名思义&#xff0c;事件总线&#xff0c;是一个轻量级的发布/订阅模式的应用模式&#xff0c;最初设计及应用源与 google guava 库。 相比于各种 MQ 中间件更加简洁、轻量&#xff0c;它可以在单体非分布式的小型应用模块内部使用&#xff08;即同一个JVM范围…

xml和json互转工具类

分享一个json与xml互转的工具类&#xff0c;非常好用 一、maven依赖 <!-->json 和 xm 互转</!--><dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.3</version></dependency&g…
最新文章