使用随机梯度算法对高斯核模型进行最小二乘学习法

 

使用随机梯度算法对线性模型进行最小二乘学习法的算法流程:

  1. θ以适当的初值。

  2. 随机选择一个训练样本(例如,选择顺序为212937_CTlU_2723343.png的训练样本(212937_bUyW_2723343.png212937_x09H_2723343.png))。

  3. 对于选定的训练样本,采用使其梯度下降的方式,对参数θ进行更新。

                                     212937_HrY6_2723343.png

在这里,212937_szsQ_2723343.png是名为学习系数的无穷小正标量,表示梯度下降的步幅。212938_sqJ0_2723343.png是顺序为212938_y7YX_2723343.png的训练样本相对应的训练平方误差的梯度,表示梯度下降的方向。

                                     212938_QXsP_2723343.png

  4.直接解212938_pTr6_2723343.png达到收敛精度为止,重复上述②、③步的计算。

对于下式的高斯核函数模型:

                                           214147_uVCp_2723343.png

                                       214147_ljfl_2723343.png

下文显示了与其相对应的最小二乘学习法的随机梯度算法的运用实例。

将训练样本数n设定为50,高斯核带宽h 设定为0.3。在这个例子中,从随机、任意的初始值开始学习,经过1000次迭代计算,基本得到了近似的函数结果。

 

下面是这个例子的MATLAB程序源代码。

n=50;N=1000;
x=linspace(-3,3,n)';
X=linspace(-3,3,N)';
pix=pi*x;
y=sin(pix)./(pix)+0.1*x+0.05*randn(n,1);

hh=2*0.3^2;t0=randn(n,1);e=0.1;
for o=1:n*1000
    i=ceil(rand*n);
    ki=exp(-(x-x(i)).^2/hh);
    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,1,N)'-2*X*x'/hh);
F=K*t;

figure(1);
clf;hold on;axis([-2.8 2.8 -0.5 1.2]);
plot(X,F,'g-');
plot(x,y,'bo');


程序运行的结果如下:

转载于:https://my.oschina.net/magicalee/blog/693951

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值