Building可视库
一起做些更酷的事吧!
关注
梯度下降法又称为最速下降法,是求解无约束优化问题最简单和最古老的方法之一。
大概意思就是:在脑海中想象一下,你站在一座山上,怎么找到最快下山的方法,这时你当然会朝着最陡峭的方向前进,到达一个点后,再次朝着陡峭的方向下山,从而循环这些步骤,到达山脚。
图片来自于网络
梯度下降法的解题步骤:
step1: 选取初始点x(0),指定计算精度ϵ>0,令k=0;
step2: 计算‖∇f(x(k))‖,若结果小于ϵ,则停止迭代,输出x(k)作为近似最优解,否则step3 ;
step3: 取迭代方向向量dk=−∇f(x(k));
step4: 由线搜索技术确定步长因子λk;
step5: 令x(x+1)=x(k)+λdk, k=k+1 转step1.
MATLAB程序实现:
先介绍几个函数:syms,diff,subs.
syms:定义符号变量的函数.
diff:求偏导数的函数.
subs:用数字/符号替换符号.
norm(A):返回向量A的2范数,也就是欧氏距离
solve:这个命令用来求解符号方程、方程组等.
A:创建函数脚本:steep.m
B:主函数,以求解f=(x1^2)/3+(x2^2)/2为例:计算精度为0.001,起始点(3,2),结果如下:迭代5次,最优解为ender。
梯度下降法的缺点:
靠近极小值可能会"之字形"地下降,出现锯齿状,这时收敛速度会减慢。
最后,这篇推文算是小库Q对《优化与决策》今天上课的内容进行简单的总结和程序扩展,也算是开始对算法理解迈出了一小步,好啦,这里是Building可视库,我们下期再见。
拓展阅读:
程序思维 | 结构矩阵分析与MATLAB实现
图文 | 小库Q
编辑 | 小库Q