图解机器学习第二部分第三章——使用随机梯度下降算法对高斯核模型进行最小二乘学习法
【代码】图解机器学习第二部分第三章——使用随机梯度下降算法对高斯核模型进行最小二乘学习法。
·

n =50;%50 个节点
N=1000;%1000 个节点
x=linspace(-3,3,n)';%在 -3 到 3 上找 50 个节点
pix=pi*x;% π * x
y=sin(pix)./(pix)+0.1*x+0.05*randn(n,1);%通过函数f(x) 得到 y。
X=linspace(-3,3,N)';%在 -3 到 3 上找 1000 个节点 去拟合这 50 个节点
hh = 2 * 0.3^2;% 控制高斯核函数的局部作用范围:0.3
t0 = randn(n,1);%随机化 50 个参数值
e = 0.1;% 梯度下降的步幅
%参数训练
for o = 1:n*1000 %循环 50000 次
i=ceil(rand*n); % 随机选择一个训练样本。ceil函数:朝正无穷方向取整
ki = exp(-(x-x(i)).^2/hh); % 将这 50 个随机参数放入高斯核模型
t = t0 - e * ki * (ki' * t0 - y(i)); % 随机梯度下降
if norm(t-t0)<0.000001, break, end % 直到参数达到收敛精度为止
t0 = t;
end
K = exp(-(repmat(X.^2,1,n)+ repmat(x.^2',N,1)-2*X*x')/hh);
F = K*t;
figure(1);
clf;
hold on;
axis([-2.8 2.8 -0.5 1.2]);% X 轴的范围是-2.8 ~ 2.8。Y 轴的范围是 -0.5 ~ 1.2
plot(X,F,'g-');
plot(x,y,'bo');
解释:
n 和 N 定义了节点的数量,分别是 50 和 1000。
x 和 X 使用 linspace 函数在 -3 到 3 之间均匀生成节点。
pix 是 pi 与 x 的乘积。
y 是通过将 sin(pix) 除以 pix 加上一些噪声得到的目标函数的值。
hh 控制高斯核函数的局部作用范围,设定为 0.3。
t0 是一个包含初始随机参数值的向量。
e 是梯度下降算法的步幅。
for 循环用于迭代参数学习过程,循环次数为 50000 次。
在每次迭代中,随机选择一个索引 i,将对应的 x(i) 放入高斯核模型,得到向量 ki。
使用随机梯度下降法更新参数向量 t0,其中 ki' * t0 - y(i) 是损失函数的梯度。
if norm(t - t0) < 0.000001, break, end 用于判断参数向量是否收敛,如果收敛则跳出循环。
K 是高斯核矩阵,通过计算两组节点之间的高斯核函数值得到。
F 是通过使用参数向量 t 对输入 X 进行预测得到的函数值。
figure(1) 创建一个新的图形窗口。
clf 清空当前图形窗口。
hold on 命令用于保持图形窗口的当前图形,并在其上绘制新的图形。
axis 函数设置坐标轴的范围。
plot(X, F, 'g-') 绘制拟合曲线,颜色为绿色。
plot(x, y, 'bo') 绘制原始数据点,颜色为蓝色的圆点。
通过这段代码,使用随机梯度下降算法对高斯核模型进行最小二乘学习法,以拟合给定的数据,并将结果绘制在图形窗口中,以展示数据拟合效果。

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)