Day10: Gradient Descent

本文深入探讨了梯度下降算法在机器学习中的应用,包括解析解与最优化问题的关系,介绍了梯度下降的基本原理,如调整学习率、时间衰减的学习率、Adagrad等技巧,以及批量、小批量和随机梯度下降的区别。此外,还讨论了特征缩放的重要性,并给出了数学上的简要证明。

学习地址:李宏毅机器学习
参考博客:herosunly
在给定的函数空间中求解最佳函数,本质上是一个最优化问题,即求损失函数最小值对应的参数,然后将参数对应得到最佳函数。一种方法式解析解,但在机器学习中更加常用的是利用梯度下降求最小值。
若想深入学习梯度下降,可学习paper:An overview of gradient decent optimization algorithms,地址[1] [2]
1.梯度下降回顾
在这里插入图片描述
θ j i \theta_j^i θji的上标表示第i组参数,下标表示该组参数的第j个值
在这里插入图片描述
2. 梯度下降的Tips
2.1调整学习率
下图是参数和损失值的曲线。若learning rate选取得很小(蓝色),loss需要很长时间才能达到;选取large learning rate(绿色)和非常大的学习率(黄色)会出现图中的情况。
在这里插入图片描述
因此,必须选区合适的学习率实现红色曲线的效果。
2.1.1时间衰减的学习率
时间衰减的学习率指的是随着时间增加,学习率逐渐减小。
在这里插入图片描述
2.1.2 Adagrad
核心思想:时间衰减后除以之前偏导平方和的平方根。
在这里插入图片描述
在这里插入图片描述
公式化简后的Adagrad:
在这里插入图片描述
简化后,分子与分母作用看起来相反:
在这里插入图片描述
直观解释
在这里插入图片描述
更为正式的解释:
在这里插入图片描述
最好的情况是:踏出的步伐和微分大小成正比。但需要讨论多个函数时,
在这里插入图片描述
通过二阶导数和一阶导数可以更快地接近最低点
在这里插入图片描述
2.2 随机梯度下降
根据计算梯度的样本个数,可分为批量梯度下降(全部样本)、小批量梯度下降(batch个数的样本)、随机梯度下降(单个样本)。
在这里插入图片描述
在这里插入图片描述
2.3特征缩放
特征缩放分为两种方法:归一化和标准化
举例:input两个特征
x 2 x_2 x2远大于 x 1 x_1 x1,使两者分布近似
在这里插入图片描述
归一化前后的对比结果,若未进行归一化,则
在这里插入图片描述
下图为标准化的表达式:
Feature Scaling
在这里插入图片描述
3.梯度下降理论
3.1可适用的范围
下列命题并不是恒成立的,比如遇到鞍点或者极值点(但不是最小值点)

在这里插入图片描述
3.2 数学简要证明
梯度下降的方法如下图所示:每次在一个小的邻域内得到最小值,然后行进到最小值点。
在这里插入图片描述
3.2.1 泰勒公式
在这里插入图片描述
阶次越高,则和 f ( x ) f(x) f(x)越接近。
在这里插入图片描述
多元变量的泰勒公式表示和近似表示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将公式进行变换后:
在这里插入图片描述
得到最终的梯度下降公式:
在这里插入图片描述

  • 作业
    归一化就是把不同维度的数据,通过缩放,设置为0到1之间
    feature scaling的计算顺序:先计算平均数和方差,结果是数值减去平均数后,再除以方差 x i r ← x i r − m i δ i x_i^r\leftarrow\frac{x_i^r-m_i}{\delta_i} xirδixirmi
你现在是一个从事广告推广行业多年的产品经理,参与过dsp、ssp等系统的设计和开发。 现在有一个新的业务场景要求你采用合适的算法进行实现。 需求如下:系统内记录了每个广告位每个小时的填充率(0~1之间的小数)、曝光率(0~1之间的小数)、点击率(0~1之间的小数),现需要采用合适的算法构建数据模型,通过这些历史数据训练得到一个ctr预测数据模型,模型预测时输入广告位当前小时的填充率、曝光率来预测点击率,得到一个0~1之间的小数。请你根据要求设计和实现。 注意事项: 1、使用Golang语言,并做好注释和阐述。 2、预测时输入广告位、填充率、曝光率, 3、示例数据中的填充率、曝光率、点击率做了百分比处理。 4、给出评估模型相关的函数。 5、推荐的使用的一些库以简化过程 github.com/gonum/matrix/mat64 gonum.org/v1/gonum/optimize gonum.org/v1/gonum/optimize/functions gonum.org/v1/gonum/optimize提供的梯度下降算法 // GradientDescent implements the steepest descent optimization method that // performs successive steps along the direction of the negative gradient. type GradientDescent struct { // Linesearcher selects suitable steps along the descent direction. // If Linesearcher is nil, a reasonable default will be chosen. Linesearcher Linesearcher // StepSizer determines the initial step size along each direction. // If StepSizer is nil, a reasonable default will be chosen. StepSizer StepSizer // GradStopThreshold sets the threshold for stopping if the gradient norm // gets too small. If GradStopThreshold is 0 it is defaulted to 1e-12, and // if it is NaN the setting is not used. GradStopThreshold float64 ls *LinesearchMethod status Status err error } 示例数据如下: media_app_id,slot_id,week_of_month,day_of_month,day_of_week,hour_of_day,ftr,itr,ctr 7210,9321,4,23,4,10,0.0423370,100.0000000,100.0000000 7210,9321,4,23,4,9,0.0074338,0.0000000,0.0000000 7210,9321,4,23,4,8,0.0351617,50.0000000,0.0000000 7210,9321,4,23,4,7,0.0239621,25.0000000,0.0000000 7210,9321,4,23,4,6,0.0224628,40.0000000,50.0000000 7210,9321,4,23,4,5,0.0375536,42.8571434,0.0000000 7210,9321,4,23,4,4,0.0261097,40.0000000,0.0000000 7210,9321,4,23,4,3,0.0224618,33.3333321,0.0000000 7210,9321,4,23,4,2,0.0228380,33.3333321,100.0000000 7210,9321,4,23,4,1,0.0403904,16.6666660,0.0000000 7210,9321,4,23,4,0,0.0000000,0.0000000,0.0000000 7210,9321,4,22,3,23,0.0830026,32.7272720,5.5555553 7210,9321,4,22,3,22,0.0908501,42.8571434,0.0000000 7210,9321,4,22,3,21,0.0251971,28.5714283,50.0000000 7210,9321,4,22,3,20,0.0556818,36.0000000,11.1111107 7210,9321,4,22,3,19,0.0609422,40.0000000,0.0000000 7210,9321,4,22,3,18,0.0093234,33.3333321,0.0000000 7210,9321,4,22,3,17,0.0271407,50.0000000,25.0000000 7210,9321,4,22,3,16,0.0932724,35.4838715,0.0000000 7210,9321,4,22,3,15,0.0000000,0.0000000,0.0000000 7210,9321,4,22,3,14,0.0125368,100.0000000,0.0000000 7210,9321,4,22,3,13,0.0248336,40.0000000,0.0000000 7210,9321,4,22,3,12,0.0234951,0.0000000,0.0000000 7210,9321,4,22,3,11,0.0407643,50.0000000,25.0000000 7210,9321,4,22,3,10,0.0833456,11.7647057,0.0000000 7210,9321,4,22,3,9,0.0203929,0.0000000,0.0000000 7210,9321,4,22,3,8,0.0000000,0.0000000,0.0000000 7210,9321,4,22,3,7,0.0000000,0.0000000,0.0000000 7210,9321,4,22,3,6,0.0117364,50.0000000,0.0000000 7210,9321,4,22,3,5,0.0182033,25.0000000,0.0000000 7210,9321,4,22,3,4,0.0250752,33.3333321,0.0000000
11-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值