1.前言                                a.对于工程问题,一般描述为:从一些测量值(观测量)x 中估计参数 p?即x = f(p),                              其中,x为测量值构成的向量,参数p为待求量,为了让模型能适应一般场景,这里p也为向量.                              这是一个函数求解问题,可以使用Guass-Newton法进行求解,LM算法是对Newton法的改进.…
最小二乘法的概念 最小二乘法的目标:求误差的最小平方和,对应有两种:线性和非线性. 线性最小二乘的解是closed-form即x=(A^T A)^{-1}A^Tb, 而非线性最小二乘没有closed-form,通常用迭代法求解. 最小二乘法的方法有 迭代法,即在每一步update未知量逐渐逼近解,可以用于各种各样的问题(包括最小二乘),比如求的不是误差的最小平方和而是最小立方和. 梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以) 高斯-牛顿法是另一种经常用于求解非线性最小二…
摘录的一篇有关求解非线性最小二乘问题的算法--LM算法的文章,当中也加入了一些我个人在求解高精度最小二乘问题时候的一些感触: LM算法,全称为Levenberg-Marquard算法,它可用于解决非线性最小二乘问题,多用于曲线拟合等场合. LM算法的实现并不算难,它的关键是用模型函数 f 对待估参数向量p在其邻域内做线性近似,忽略掉二阶以上的导数项,从而转化为线性最小二乘问题,它具有收敛速度快等优点.LM算法属于一种"信赖域法"--所谓的信赖域法,此处稍微解释一下:在最优化算法中,都是…
周志华机器学习BP改进 试设计一个算法,能通过动态调整学习率显著提升收敛速度,编程实现该算法,并选择两个UCI数据集与标准的BP算法进行实验比较. 1.方法设计 传统的BP算法改进主要有两类: - 启发式算法:如附加动量法,自适应算法 - 数值优化法:如共轭梯度法.牛顿迭代法.Levenberg-Marquardt算法 (1)附加动量项 这是一种广泛用于加速梯度下降法收敛的优化方法.其核心思想是:在梯度下降搜索时,若当前梯度下降与前一个梯度下降的方向相同,则加速搜索,反之则降速搜索. 标准BP算…
早前写了一篇关于A*算法的文章:<算法:Astar寻路算法改进> 最近在写个js的UI框架,顺便实现了一个js版本的A*算法,与之前不同的是,该A*算法是个双向A*. 双向A*有什么好处呢? 我们知道,A*的时间复杂度是和节点数量以及起始点难度呈幂函数正相关的. 这个http://qiao.github.io/PathFinding.js/visual/该网址很好的演示了双向A*的效果,我们来看一看. 绿色表示起点,红色表示终点,灰色是墙面.稍浅的两种绿色分别代表open节点和close节点:…
高斯牛顿法: function [ x_ans ] = GaussNewton( xi, yi, ri) % input : x = the x vector of 3 points % y = the y vector of 3 points % r = the radius vector of 3 circles % output : x_ans = the best answer % set up r equations r1 = @(x, y) sqrt((x-xi(1))^2+(y-y…
DQN 算法改进 (一)Dueling DQN Dueling DQN 是一种基于 DQN 的改进算法.主要突破点:利用模型结构将值函数表示成更加细致的形式,这使得模型能够拥有更好的表现.下面给出公式,并定义一个新的变量: \[ q(s_t, a_t)=v(s_t)+A(s_t, a_t) \] 也就是说,基于状态和行动的值函数 \(q\) 可以分解成基于状态的值函数 \(v\) 和优势函数(Advantage Function)\(A\) .由于存在: \[ E_{a_{t}}[q(s_t,…
           1.牛顿法应用范围                          牛顿法主要有两个应用方向:1.目标函数最优化求解.例:已知 f(x)的表达形式,,求 ,及g(x)取最小值时的 x ?,即                                                           由于||f(x)||通常为误差的二范数,此时这个模型也称为最小二乘模型,即.                                              …
JVM探究 面试题: 请你弹弹你对JVM的理解?Java8虚拟机和之前的变化更新? 什么是OOM?什么是栈溢出StackOverFlowError?怎么分析 JVM的常用调优参数有哪些? 内存快照如何抓取,怎么分析Dump文件?知道吗? 弹弹JVM中类加载器你的认认识?rt-jar ext application 视频教程 https://www.bilibili.com/video/BV1iJ411d7jS?p=2&spm_id_from=pageDriver JVM的位置 JVM的体系结构…
Java中  Set 和 List 集合  的contains()方法,检查数组链表中是否包含某元素检查数组链表中是否包含某元素,使用 Set 而不使用 List  的原因是效率问题, 前者的 set.contains()方法 实现的复杂度是O(1). 而后者 list.contains()方法 实现的复杂度是O(n) List特点: 元素有放入顺序,元素可重复 , Set特点: 元素无放入顺序,元素不可重复( 注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的…