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
相关推荐
nju_spy9 分钟前
ToT与ReAct:突破大模型推理能力瓶颈
人工智能·大模型·大模型推理·tot思维树·react推理行动·人工智能决策·ai推理引擎
AI-智能9 分钟前
别啃文档了!3 分钟带小白跑完 Dify 全链路:从 0 到第一个 AI 工作流
人工智能·python·自然语言处理·llm·embedding·agent·rag
y***866943 分钟前
C机器学习.NET生态库应用
人工智能·机器学习
deng12041 小时前
基于LeNet-5的图像分类小结
人工智能·分类·数据挖掘
OpenAnolis小助手1 小时前
直播预告:LLM for AIOPS,是泡沫还是银弹? |《AI 进化论》第六期
人工智能
我一身正气怎能输1 小时前
游戏大厂A*寻路优化秘籍:流畅不卡顿
人工智能·游戏
johnny2332 小时前
AI工作流编排平台
人工智能
百***35483 小时前
DeepSeek在情感分析中的细粒度识别
人工智能
Qzkj6663 小时前
从规则到智能:企业数据分类分级的先进实践与自动化转型
大数据·人工智能·自动化
weixin79893765432...4 小时前
React + Fastify + DeepSeek 实现一个简单的对话式 AI 应用
人工智能·react.js·fastify