MATLAB多元函数梯度下降法找最小值-梯度演示-绘制梯度方向

如果海森矩阵 在所有可能的参数值上都是正定 的,则该函数是凸的;函数将呈现为光滑的碗状,使得训练过程相对简单。存在单 一的全局最小值,不会有局部最小值或鞍点

沿着梯度方向,函数变化最快。

x,y点的更新:x和y每次更新一点点,z根据公式可以计算出一个新的坐标点,但新的z不一定落在f(x,y)上,除非x,y的变化非常非常小。为了演示梯度的方向,我们将变化调大一些。

原理:

如果进行梯度下降,可以找到全局最优点。

程序:梯度下降版

Matlab 复制代码
clear;
syms x y;
z= x^2+y^2; % 定义函数
u=linspace(-10,10,100);
v=linspace(-10,10,100);
[U,V]=meshgrid(u,v);
z_value = subs(z, {x, y}, {U, V}); 
plot3(U,V,z_value,'g')
xlabel('X')
ylabel('Y')
zlabel('Z')
hold on;
dz_dx=diff(z,x);
dz_dy=diff(z,y);
learning=0.01;
epoch = 200;
Init_x=10;
Init_y=10;
for i=1:epoch
    dzx=subs(dz_dx,{x,y},{Init_x,Init_y});
    dzy=subs(dz_dy,{x,y},{Init_x,Init_y});
    z1=subs(z, {x, y}, {Init_x,Init_y});
    New_x=Init_x-learning*dzx;
    New_y=Init_y-learning*dzy;
    New_z=z1-learning*dzy-learning*dzx;%绘制箭头使用
   
    
    x1=[Init_x New_x];
    y1=[Init_y New_y];
    Z1=[z1 New_z];
    if(mod(i,10)==0)
    plot3(x1,y1,Z1,'r-')
    scatter3(New_x,New_y,New_z,'b>')
    hold on;
    end
    Init_x=New_x;
    Init_y=New_y;
    
end

程序:显示梯度方向版

为了更好的让大家看每一次迭代的梯度方向,所以在这一版中绘制了梯度的方向。

Matlab 复制代码
clear;
syms x y;
z= x^2+y^2; % 定义函数
u=linspace(-10,10,100);
v=linspace(-10,10,100);
[U,V]=meshgrid(u,v);
z_value = subs(z, {x, y}, {U, V}); 
plot3(U,V,z_value,'g')
xlabel('X')
ylabel('Y')
zlabel('Z')
hold on;
dz_dx=diff(z,x);
dz_dy=diff(z,y);
learning=0.01;
epoch = 200;
Init_x=10;
Init_y=10;
for i=1:epoch
    dzx=subs(dz_dx,{x,y},{Init_x,Init_y});
    dzy=subs(dz_dy,{x,y},{Init_x,Init_y});
    z1=subs(z, {x, y}, {Init_x,Init_y});
    New_x=Init_x-learning*dzx;
    New_y=Init_y-learning*dzy;
    %New_z=z1-learning*dzy-learning*dzx;%绘制箭头使用
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%梯度方向绘制
    if(mod(i,10)==0)
    New_x1=Init_x-3;
    New_y1=Init_y-3;
    New_z1=z1-3*dzy-3*dzx;
    x1=[Init_x New_x1];
    y1=[Init_y New_y1];
    Z1=[z1 New_z1];
    plot3(x1,y1,Z1,'r-')
    scatter3(New_x1,New_y1,New_z1,'b>')
    hold on;
    end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    Init_x=New_x;
    Init_y=New_y;
    
end
相关推荐
张较瘦_1 小时前
[论文阅读] 人工智能 + 软件工程 | 需求获取访谈中LLM生成跟进问题研究:来龙去脉与创新突破
论文阅读·人工智能
一 铭2 小时前
AI领域新趋势:从提示(Prompt)工程到上下文(Context)工程
人工智能·语言模型·大模型·llm·prompt
顾道长生'3 小时前
(Arxiv-2025)通过动态 token 剔除实现无需训练的高效视频生成
计算机视觉·音视频·视频生成
麻雀无能为力5 小时前
CAU数据挖掘实验 表分析数据插件
人工智能·数据挖掘·中国农业大学
时序之心5 小时前
时空数据挖掘五大革新方向详解篇!
人工智能·数据挖掘·论文·时间序列
.30-06Springfield6 小时前
人工智能概念之七:集成学习思想(Bagging、Boosting、Stacking)
人工智能·算法·机器学习·集成学习
说私域7 小时前
基于开源AI智能名片链动2+1模式S2B2C商城小程序的超级文化符号构建路径研究
人工智能·小程序·开源
永洪科技7 小时前
永洪科技荣获商业智能品牌影响力奖,全力打造”AI+决策”引擎
大数据·人工智能·科技·数据分析·数据可视化·bi
shangyingying_17 小时前
关于小波降噪、小波增强、小波去雾的原理区分
人工智能·深度学习·计算机视觉
书玮嘎8 小时前
【WIP】【VLA&VLM——InternVL系列】
人工智能·深度学习