随笔分类 -  数值计算

摘要:数值计算:前向和反向自动微分(Python实现)自动微分技术(称为“automatic differentiation, autodiff”)是介于符号微分和数值微分的一种技术,它是在计算效率和计算精度之间的一种折衷。自动微分不受任何离散化算法误差的约束,它充分利用了微分的链式法则和其他关于导数的性质来准确地计算它们。我们可以选择定义一种新的数据类型来存储[u,u′]和[v,v′]这类数对。我们可以在这些数对上定义一种代数运算,这些代数运算编码了一些经典的操作。 阅读全文
posted @ 2022-12-28 16:03 orion-orion 阅读(556) 评论(0) 推荐(1) 编辑
摘要:数值优化:经典随机优化算法及其收敛性与复杂度分析对于更复杂的模型(比如神经网络)和更复杂的优化方法(比如二阶方法),确定性优化方法的计算量会更大。那么如何解决这个问题呢?统计方法能给我们很大的帮助。虽然大数据的数据量和数据维度都很大,但我们可以通过对样本和维度进行随机采样来得到对更新量的有效估计或者替代。相应地,从确定性优化算法出发,我们可以开发出各种随机优化算法,如随机梯度下降法、随机坐标下降法、随机方差缩减梯度法、随机(拟)牛顿法等。注意,对于随机优化算法而言,收敛性分析与确定性算法不同,需要针对算法中的随机采样取期望。 阅读全文
posted @ 2022-06-22 21:11 orion-orion 阅读(2997) 评论(0) 推荐(2) 编辑
摘要:数值优化:经典二阶确定性算法与对偶方法我们在上一篇博客中主要介绍了单机数值优化中一些经典的一阶确定性算法,本篇文章我们将会介绍二阶确定性算法和对偶方法。牛顿法的基本思想是将目标函数在当前迭代点处进行二阶泰勒展开,然后最小化这个近似目标函数。如果该海森矩阵是正定的,则问题的最优值在特定处取到,牛顿法将其做为下一时刻的状态。 阅读全文
posted @ 2022-06-14 21:24 orion-orion 阅读(774) 评论(0) 推荐(0) 编辑
摘要:数值优化:经典一阶确定性算法及其收敛性分析我们在上一篇博客中介绍了数值优化算法的历史发展、分类及其收敛性/复杂度分析基础。本篇博客我们重点关注一阶确定性优化算法及其收敛性分析。梯度下降法的基本思想是:最小化目标函数在当前迭代点处的一阶泰勒展开,从而近似地优化目标函数本身。具体地,对函数 𝑓:ℝ𝑛→ℝ ,将其在第 t 轮迭代点 𝑤𝑡处求解最小化问题。梯度下降法有两个局限,一是只适用于无约束优化问题,二是只适用于梯度存在的目标函数。投影次梯度法可以解决梯度下降法的这两个局限性。 阅读全文
posted @ 2022-06-11 22:24 orion-orion 阅读(1443) 评论(0) 推荐(0) 编辑
摘要:数值优化:算法分类及收敛性分析基础不同的优化算法采用不同的方法对目标函数进行优化,以寻找最优预测模型。其中最重要的两个特性就是收敛速率和复杂度。优化算法最初都是确定性的,不过近年来随着机器学习中数据规模的不断增大,优化问题复杂度不断增高,原来越多的优化算法发展出了随机版本和并行化版本。依据算法在优化过程中所利用的是一阶导数信息还是二阶导数信息,还可把优化算法分为一阶方法和二阶方法。 阅读全文
posted @ 2022-06-09 10:08 orion-orion 阅读(1462) 评论(0) 推荐(1) 编辑
摘要: 数值分析:最小二乘与岭回归(Pytorch实现)我们在学习数值线性代数时,学习了当方程的解存在时,如何找到Ax=b的解。但是当解不存在的时候该怎么办呢?当方程不一致(无解)时,有可能方程的个数超过未知变量的个数,我们需要找到第二可能好的解,即最小二乘近似。这就是最小二乘法的数值计算视角。 阅读全文
posted @ 2022-02-12 19:01 orion-orion 阅读(1854) 评论(2) 推荐(1) 编辑
摘要:数值优化:一阶和二阶优化算法(Pytorch实现)最优化问题指的是找出实数函数的极大值或极小值,该函数称为目标函数。 由于定位f(x)的极大值与找出-f(x)的极小值等价,在推导计算方式时仅考虑最小化问题就足够了。极少的优化问题,比如最小二乘法,可以给出封闭的解析解(由正规方程得到)。然而,大多数优化问题,只能给出数值解,需要通过数值迭代算法一步一步地得到。按照不同分类标准,可分为有约束和无约束优化、线性和非线性规划、 凸优化和非凸优化等。 阅读全文
posted @ 2021-10-17 20:41 orion-orion 阅读(1904) 评论(0) 推荐(0) 编辑
摘要:数值分析:矩阵奇异值分解及其应用(Numpy实现)矩阵的奇异值分解在矩阵分析中有大量应用,特别适用于压缩目的的矩阵分析。奇异值分解还充分应用于数据降维,即将数据投影到低维空间。在推荐系统中,奇异值分解可用于得到用户和物品的隐向量,不过传统奇异值分解不适用于解决大规模稀疏矩阵的矩阵分解,此时梯度下降法成为了矩阵分解的主要方法,这部分内容我们会在推荐系统专栏中进行讲解。 阅读全文
posted @ 2021-10-16 22:58 orion-orion 阅读(1976) 评论(0) 推荐(0) 编辑
摘要:数值分析:幂迭代和PageRank算法(Numpy实现)计算矩阵特征值是一个经典数值计算问题,而很多相关方法都是基于幂迭代的基。如该思想的一个复杂版本被称为QR算法,可以计算出典型矩阵所有的特征值。幂迭代的动机是与矩阵相乘可以将向量推向主特征值向量的方向,其在工业界的一大应用就是PageRank算法。PageRank算法作用在有向图上的迭代算法,收敛后可以给每个节点赋一个表示重要性程度的值,该值越大表示节点在图中显得越重要。 阅读全文
posted @ 2021-10-14 11:28 orion-orion 阅读(1166) 评论(2) 推荐(1) 编辑