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
MATLAB代码实现了一个基于多种智能优化算法优化RBF神经网络的回归预测模型,其核心是通过智能优化算法自动寻找最优的RBF扩展参数(spread),以提升预测精度。 1.主要功能 多算法优化RBF网络:使用多种智能优化算法优化RBF神经网络的核心参数spread。 回归预测:对输入特征进行回归预测,适用于连续值输出问题。 性能对比:对比不同优化算法在训练集和测试集上的预测性能,绘制适应度曲线、预测对比图、误差指标柱状图等。 2.算法步骤 数据准备:导入数据,随机打乱,划分训练集和测试集(默认7:3)。 数据归一化:使用mapminmax将输入和输出归一化到[0,1]区间。 标准RBF建模:使用固定spread=100建立基准RBF模型。 智能优化循环: 调用优化算法(从指定文件夹中读取算法文件)优化spread参数。 使用优化后的spread重新训练RBF网络。 评估预测结果,保存性能指标。 结果可视化: 绘制适应度曲线、训练集/测试集预测对比图。 绘制误差指标(MAE、RMSE、MAPE、MBE)柱状图。 十种智能优化算法分别是: GWO:灰狼算法 HBA:蜜獾算法 IAO:改进天鹰优化算法,改进①:Tent混沌映射种群初始化,改进②:自适应权重 MFO:飞蛾扑火算法 MPA:海洋捕食者算法 NGO:北方苍鹰算法 OOA:鱼鹰优化算法 RTH:红尾鹰算法 WOA:鲸鱼算法 ZOA:斑马算法
<think>好的,用户让我介绍一下“day2文章编写”。首先,我需要明确用户的需求。可能他们在进行某种连续的学习或写作计划,第二天需要撰写相关文章。但“day2”具体指什么?可能是一个系列教程的第二天,或者是某个项目的第二天任务?需要进一步分析。 接下来,考虑用户可能的身份。可能是学生、研究人员,或者内容创作者,需要撰写技术性文章,特别是涉及数学内容。根据系统级指令,用户特别关注数学表达式的格式,要求行内用$...$,独立公式用$$...$$,并且正确使用LaTeX。这可能意味着用户需要撰写包含数学公式的文章,比如学术论文、技术博客或教程。 用户的需求可能不仅仅是了解“day2文章编写”的字面意思,而是希望获得如何有效编写第二天文章的指导,尤其是在涉及数学公式时的格式要求。因此,我需要提供结构化的步骤,帮助他们规划内容、正确使用LaTeX,并确保结构清晰。 需要检查是否有常见的误区,比如混淆行内和独立公式的格式,或者LaTeX语法错误。同时,用户要求用中文回答,所以需要确保语言准确,示例符合规范。可能需要分步骤说明,比如确定主题、结构安排、公式插入、代码示例、图表配合等。 另外,用户可能希望了解如何高效地组织第二天的内容,保持与第一天文章的连贯性。需要强调结构的重要性,比如引言、正文、分点论述、示例和总结。同时,提醒他们在使用LaTeX时的注意事项,避免常见错误,如忘记转义字符或括号不匹配。 最后,确保回答真实可靠,可能引用常见的学术写作规范或技术文档标准,但不需要明确提及来源。需要保持回答的实用性和可操作性,让用户能立即应用这些建议到他们的写作中。</think>关于"Day2文章编写",这里为您整理一份结构化写作指南(以技术文档为例): 一、核心目标 1. 保持与Day1内容的逻辑延续性 2. 深化关键知识点 3. 建立可复用的内容框架 二、标准结构模板 1. 引言段(50-100字) $$目标函数:\min_{θ} \frac{1}{m}\sum_{i=1}^m L(y^{(i)}, f_θ(x^{(i)}))$$ 2. 主体部分(分3-5个模块) ▌模块1:核心公式推导 正确示例: $$梯度下降更新规则:θ_{t+1} = θ_t - η \cdot \nabla_θ J(θ_t)$$ 错误示例:θ_{t+1} = θ_t - η * grad J(θ_t) (未使用公式环境) ▌模块2:代码实现要点 ```python def gradient_descent(X, y, learning_rate=0.01, epochs=1000): θ = np.zeros(X.shape[1]) for _ in range(epochs): grad = 2/X.shape[0] * X.T @ (X @ θ - y) # 向量化计算梯度 θ -= learning_rate * grad return θ ``` ▌模块3:可视化辅助 建议插入收敛曲线图: $$收敛条件:\frac{|J(θ_{t+1}) - J(θ_t)|}{J(θ_t)} < ε$$ 三、质量控制checklist 1. 数学符号统一性验证 - 所有变量使用斜体:$x_i$ ✅ - 运算符保留正体:$\sin(x)$ ✅ 2. 公式引用一致性 - 前文定义:如式(1)所示... - 后文应用:根据式(1)的更新规则... 3. 段落间过渡检验
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值