感知机随机梯度和梯度下降法区别

85 篇文章 1 订阅

一、随机梯度下降的随机近似【背景】:

      既然是随机近似,则顾名思义,肯定是用近似方法来改善梯度下降时候的时间复杂度问题。

      一般梯度下降法采用:∂E/∂wi=∑(h(x)-y)*(xi) 的时候∑耗费了大量的时间,特别是在训练集庞大的时候

      所以猜想,如果把求和去掉如何,即变为∂E/∂wi=(h(x)-y)*(xi)。(也可以是总体样本中随机抽取少量样本)

      幸运的是,猜想成立了。

二、只是要注意一下标准的梯度下降和随机梯度下降的【区别】:

    1.标准下降时在权值更新前汇总所有样例得到的标准梯度,随机下降则是通过考察每次训练实例来更新。

    2.对于步长 η的取值,标准梯度下降的η比随机梯度下降的大。

    因为标准梯度下降的是使用准确的梯度,理直气壮地走,随机梯度下降使用的是近似的梯度,就得小心翼翼地走,怕一不小心误入歧途南辕北辙了。

    3.当E(w)有多个局部极小值时,随机梯度反而更可能避免进入局部极小值中。

三、以感知机为典型代表,其学习算法就是随机梯度下降算法!

感知机是二分类器,背景结构如下:

     1.给定许多组数据(xi, yi),x(向量)为输入,yi为输出。设计一个线性函数y=h(x)去拟合这些数据。

     2.感知机:感知机(perceptron)为二类分类的线性分类模型。 输入为实例的特征向量,输出为实例的类别, 取+1 和 -1 二值。


           随机选取一个误分类点(xi,   yi), 即模型yi* h(x) = yi*(w0*x0 + w1*x1+b<=0 ,对w, b进行更新:

            w  <——   w - η * (-yixi)

            b  <——    b - η * (-yi)                 式中η(0 < η <= 1)是步长,在统计学习中又称为学习率(learning rate)

感知机学习算法是误分类驱动的,具体采用随机梯度下降,实质是误分类点位于分离超平面的错误一侧时,则调整w,b,使得分离超平面向该误分类点的一侧移动,以减少该误分类点于超平面的距离,直至超平面越过该误分类点,使其正确分类。

感知机采用不同的初始值得到最后的模型不同,同时也会影响迭代次数,但是无论经过多少次迭代总是可以有限次样本分类。

四、随机梯度实现感知机分类C代码

#include<stdio.h>
 #include <stdlib.h>

  int main()
 {
            double x[3][2] = { { 3, 3 }, { 4, 3 }, { 1, 1 } };//{x0,x1}
   double y[4] = { 1, 1, -1 };
   double w[2] = { 0, 0 };//初始为零向量
   double b = 0;
   int j;
   const double n = 1;        //步长 

while (1)
{
   for (j = 0; j<3; j++)
{
   if (y[j] * (w[0] * x[j][0] + w[1] * x[j][1] + b) <= 0)//每次只选其中一个样本作为学习,有一个不满足分类就立刻跳出
   break;
}
   if (j < 3)
{
       for (int k = 0; k<2; k++)
       w[k] += n * y[j] * x[j][k]; //这里是关键,更新学习参数
       b += n * y[j];
}
   else      //所有样本都满足,学习完毕
  break;
       printf("%d :%lf,%lf %lf\n", j, w[0], w[1], b);

}
system("pause");
   return 0;

}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值