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
相关推荐
2501_93614604几秒前
YOLOv26鱼类目标检测与识别实现
人工智能·yolo·目标检测
AI 菌1 分钟前
DeepSeek-OCR v2 解读
人工智能·大模型·ocr·多模态
朴实赋能4 分钟前
2026年运营革命:新型AI驱动跨境电商矩阵解决方案
人工智能
lywybo10 分钟前
【开源】赛博报社技术剖析:如何零成本使用AI大模型
人工智能·开源
迈火10 分钟前
Facerestore CF (Code Former):ComfyUI人脸修复的卓越解决方案
人工智能·gpt·计算机视觉·stable diffusion·aigc·语音识别·midjourney
qwy71522925816310 分钟前
7-获取局部图像
人工智能·opencv·计算机视觉
70asunflower10 分钟前
Zotero论文阅读标记颜色框架
人工智能·学习·考研
云草桑11 分钟前
.net AI开发05 第九章 新增 RAG 文档处理后台服务 RagWorker 及核心流程
人工智能·ai·.net·rag·qdrant
Testopia13 分钟前
AI编程实例 - 基于时间序列分析的工厂设备预测性维护
人工智能·ai编程·#人工智能学习·#时间序列分析
Agentcometoo14 分钟前
2026 AI 元年:为什么 AI 正在成为基础设施,而非创新工具
人工智能·智能体来了·ai元年·2026ai元年