jax可微分编程的笔记(7)

2024-02-29 05:12
文章标签 笔记 编程 微分 jax

本文主要是介绍jax可微分编程的笔记(7),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

jax可微分编程的笔记(7)

第七章 优化算法

从优化理论的整体框架来看,任何优化问题都可以被分解为
模型的建立,损失函数的构造以及优化算法的选取这三个部分。
其中优化算法的具体形式,又依赖于步长下降方向和终止条件
的选取。

对于多维函数的极值问题,如果参数间存在不等式形式的线性
约束,我们可以使用著名的单纯形法加以求解。如果优化参数
间存在任意的非线性的不等式约束,则还有增广拉格朗日乘子法
等算法可供选择。

7.1 下降算法概要

模型,损失函数,和优化器是优化问题的三个重要组成部分。
而下降算法是优化器的核心所在。

数学上的收敛性是算法正确的基本前提,而终止条件则是
将数学讨论转化为程序代码的必要条件。

7.1.1 下降算法的数学表达

在深度学习中,这里的待优化函数通常为经验风险函数或者是
带有正则项的结构风险函数。

在强化学习中,人们基于环境给出的奖励来更新智能体的一系列
价值函数;在物理学中由于任何实际体系都会自发地趋于能量最小
的状态,这里的待优化函数同样可以是体系的能量(参考第9章中
的案例);在控制理论中,待优化函数亦柯以是真值和设定值之间的
差距。

模型是一个含有待定参数的待优化函数。
损失函数用于判断一个模型是否能正确地刻画输入数据的规律。
优化器通过最小化损失函数,确定模型中待定的参量。

7.1.2 步长的选择

选取学习率的条件有充分下降条件,曲率条件,沃尔夫条件,
和强沃尔夫条件。

7.1.3终止条件的选择

下降算法常用的终止条件有最大迭代次数,梯度大小,绝对
优化量,相对优化量。

上述4种可能的终止条件并不是相互独立的,在实际的代码书写中
它们可以以任何合理的方式相互组合。

7.1.4 下降方向

负梯度是函数在当前的领域内下降最快的方向。
在绝大多数的情况下,最速下降法和共轭梯度法会用于大型
稀疏矩阵线性方程组的迭代求解中。

7.1.5 共轭梯度法

共轭梯度法是对最速下降法的一种优化。在确定步长时,
两者是一样的,两者的不同之处在搜索方向的选取上。

7.2 一阶优化算法

对于一阶优化算法而言,程序中只涉及对待优化函数一阶
导数的计算。算法有动量法,自适应算法等。

7.2.1 动量法

当模型中的参数较多,即使尝试在每一步迭代时近似地确定
线搜索法的最优步长,算法的计算代价也将显得过于高昂。
在大多数情况下,如果仅根据函数f的局部性质而选取远大
于1的步长,则在函数f本身的形式较为复杂时,这样的优化
算法也显得过于激进,出于这样的考虑,在大多数描述步长的
超参数远小于1,并令其取值在优化过程中尽量保持不变(或者
改变较为缓慢)

在上述的假设下,大多数深度学习中的优化算法,都能与一个
特定的动力学问题联系起来。

从数学角度来看,动量法选用梯度在时间尺度上的泄漏平均值,
来取代局域的梯度,以执行参数的更新参数β在这里成为泄漏
平均值中的衰减因子。特别的,在β=0时,动量法参数之间的递
推关系将退化为经典的梯度下降算法。

在概率论中,如果体系未来的演化仅依赖于体系在当前时刻的
状态,与体系演化的历史无关,则称这样的过程具有马尔可夫性质。

例如对于中国象棋来说,棋局未来走向与对弈双方达到当前局面
的走子方式无关,因此中国象棋的棋局具有全局马尔可夫性质。
而对于围棋来说,如果棋规要求“着子后不能使对方面临出现过的
局面”,那么围棋的棋局不再具有马尔可夫性质。通常而言,马尔
可夫性质对于随机过程来说是一个较强的假设。


7.2.2 自适应算法

动量法在对参数进行更新时,对所有的参数采用相同的学习率,
对一些常见的特征快速收敛,对于不常见特征则迟迟无法收敛。
这种不平衡的问题,催生出自适应次梯度法(AdaGrad)

对AdaGrad而言,凸优化问题上确实可以是有较好的表现的,
遗憾的是,实际问题中的大多数待优化函数,通常是非凸的。
为了解决这个问题,Geoff Hinton将指数滑动平均值引入
参数s的更新过程,从而解决了学习率单调减小的问题,与
相对应的优化器被称为RMSProp优化器(Root Mean Square Propagation)

这篇关于jax可微分编程的笔记(7)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/757668

相关文章

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

Go Playground 在线编程环境

For all examples in this and the next chapter, we will use Go Playground. Go Playground represents a web service that can run programs written in Go. It can be opened in a web browser using the follow

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

函数式编程思想

我们经常会用到各种各样的编程思想,例如面向过程、面向对象。不过笔者在该博客简单介绍一下函数式编程思想. 如果对函数式编程思想进行概括,就是f(x) = na(x) , y=uf(x)…至于其他的编程思想,可能是y=a(x)+b(x)+c(x)…,也有可能是y=f(x)=f(x)/a + f(x)/b+f(x)/c… 面向过程的指令式编程 面向过程,简单理解就是y=a(x)+b(x)+c(x)

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2