(二十三)梯度下降-python数据分析与机器学习实战(学习笔记)

文章原创,最近更新:2018-05-23

1.梯度下降原理
2.梯度下降方法对比
3.学习率对结果的影响
课程来源: python数据分析与机器学习实战-唐宇迪

1.梯度下降原理


什么叫梯度下降?
梯度下降,也就是说沿着梯度的反方向走下降的最快。什么是梯度,如果是一维度的数据,把梯度理解为导数即可。如果是多维度的数据,梯度是各个维度的偏导数。



整理u的梯度就是(yz,xz,xy+2z) ,yz,xz,xy+2z 分别为维度x方向,y方向,z方向的偏导数。
何谓梯度下降:


在某一点x,可以求出对应的y值。此时如何改变x,然后不停地迭代求出y的最小值?此时的策略就可以用梯度下降。
具体含义就是沿着当前点x的梯度负方向走一步,步长设置为α,当前点x的梯度为dx,那么新的点x新=x-α*dx 不停地迭代改变x就可以走到最低点,求出y的值,如何跳出循环呢?
两种办法,具体如下:
方法一:可以设置指定的迭代次数,比如迭代10000次默认到达了最低点.
方法二:可以求出当前x点的y值,再次求出下一次x新对应的y值,这两个值相差如果小于指定的某个阈值,比如是0.00005,那么也认为到达了最小值。
举个例子吧:
y=(x-1)2+10
min(y)? 大家一眼就看出x=1 时y最小为10
那么如何用梯度下降来求解呢?
算法步骤:
随机选择一个初始点x
设置走路的步长α=0.01(比如)
设置循环次数(跳出条件)
循环内求当前x的梯度dx=2* (x-1)
更新x的值x=x-α*dx
代码如下:


import numpy as np
import math

#y=(x-1)**2+10
x=5
i=0
a=0.01
while (i<5000):
    dx=2*(x-1)
    x=x-a*dx
    i=i+1
print(x)

输出结果如下:

runfile('C:/Users/Administrator/Desktop/12.py', wdir='C:/Users/Administrator/Desktop')
1.0000000000000053

可以看到,代码中设置5000次迭代,初始x选取5,经过5000次梯度下降更新迭代,x的值达到了1,基本到了最低点
这个就是一个梯度下降的流程与代码,大家理解一下,想一下如何能理解,α代表你走路的步长,可大可小可设置,dx代表当前点的梯度,减法负号代表梯度负方向,原来位置为x,下一位置x新=原来位置x减去当前点的梯度乘以步长α,不断更新,最后就会走到最低点。
以上就是梯度下降法基本原理,不知道大家清楚了没?
学习参考链接:今天分享一个梯度下降法的案例,带领你入门理解编程思想

2.梯度下降方法对比

  • 批量梯度下降

计算损失函数的时候,需要综合考虑所有的样本.每个样本都参与计算.这样的话,样本的计算量就会超级大.如果计算量非常大的话,很难进行一个迭代.

优点:准确性非常高.
缺点:速度非常慢.

  • 随机梯度下降

因为批量梯度下降速度那么慢,有没有更快的方法呢?比如一次选出一个样本,这一个叫随机梯度下降.

优点:速度超级快.
缺点:有可能是离群点数据,会使得效果不好,但不一定都朝着收敛的方向.

  • 小批量梯度下降

因为样本算整体太多了,算一个就太少了.小批量梯度下降就取一部分的数据.相当于对数据进行洗牌,每10个就拿出来,计算函数的损失值.

一般情况下,用小批量梯度下降的比较多.

3.学习率对结果的影响

在求梯度的时候,求的是偏导,梯度下降是求方向以及沿着这个方向进行更新.然而进行方向更新的时候,更新多大呢?通常把更新的幅度叫做步长.通常把步常叫做学习率.不同学习率对结果的影响.

如果学习率非常大的情况下,对结果影响非常大,会使迭代的过程中不平稳.有可能略过了最低点,而达到了一个极值点.这就是学习率过大而产生的后果.

那么学习率不能非常大,那稍微小一点点可以么?通常情况下,设置学习率稍微小一些是没多大的问题的.学习率小相当于一步步的慢慢走.这样导致的后果是迭代的速度非常慢,但是能保证前进的方向是对的.

学习率都是通过较小的学习率取而代之较大的迭代次数.这个就是比较常用的方案.用小的学习率进行学习,并且用大的迭代次数进行迭代.

那么学习率小是小到什么样的程度呢?如果小的学习率是以0.01为开始,如果还没有进行一个收敛,最好的方法是再减小,可以设置为0.001.

可以在学习率在开始大步方向走,但是接近山谷的时候,慢慢往下出溜.其实学习率是可以发生变动的.比如0-10000之间迭代可以设置学习率为0.01,然后10000-20000之间的迭代可以设置学习率为0.005,然后20000-100000的时候迭代可以设置学习率为0.001.

刚开始的时候可以设置学习率稍微大一些,逐渐随着学习率的迭代慢慢进行减小.这个就是对学习率常见的措施.

右边的学习率图进行了总结,高的学习率是非常差的,使得结果非常的不好.通常很少使用比较大的学习率.而小的学习率,看起来可以,但是迭代非常的慢.一般情况下先找个适中的,一般先找0.01来试.如果不行,再将学习率设置为更小一些.

之前有学习率小批度下降,那么小批量下降小到多大呢?通常指定成2的倍数,16,32,64,128这些数都是非常常见的.那为什么又是2的倍数呢?其实任意的一个值都是可以的,但是2的倍数看起来更舒服一些.所以一般小批量下降一般是32,64,128.批处理数量一般是能多大就选多大,只有大的数据才能满足你的容忍程度,这样才能是数据的容忍程度更高一些.一般64的批处理数量就足够了.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,776评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,527评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,361评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,430评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,511评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,544评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,561评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,315评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,763评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,070评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,235评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,911评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,554评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,173评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,424评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,106评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,103评论 2 352

推荐阅读更多精彩内容