国家建设工程注册管理中心网站,山东恒正建设有限公司 网站,广告投放优化师,邯郸网站建设为什么第二周没有呢……因为刚换老师#xff0c;自学要适应一段时间。
本课程作者之后的学习目标是#xff1a;实操代码#xff0c;至少要将作者参加数学建模中用到的数据处理方法都做一遍。
首先#xff0c;作者复习一下李宏毅老师的两节课程。 机器学习概述
机器学习就…为什么第二周没有呢……因为刚换老师自学要适应一段时间。
本课程作者之后的学习目标是实操代码至少要将作者参加数学建模中用到的数据处理方法都做一遍。
首先作者复习一下李宏毅老师的两节课程。 机器学习概述
机器学习就是让机器帮我们找一个函数而这个函式其实就是类神经网络这个函式的输入可以是向量、矩阵和序列。 矩阵往往用于表示图像。 语音往往可以被表示为序列。 输出可以是数值regression、类别classification(提供给机器几个类别选项让机器帮忙选择)、txt/image用于机器学习的structured learning让机器去创造事物 其中pm2.5浓度预测就属于数值型regression的机器学习类型。 机器学习的过程
函式定义
写出一个带有未知参数的函式/模型(Model)先猜测一下f的数学式到底长什么样子。其中Model被称为机器学习的模型 被称为feature即特征w被称为权重b被称为偏置。
这样的猜测需要一定的domain knowledge有一定的经验。但猜测不一定是对的需要回过头来修正这个猜测w和b。 Loss定义
定义Loss也是一个function输入是Model里面的参数即L(b,w)。我们一开始给参数赋一定的初值Loss输出的值代表当前设定的参数的值的好坏。 其中y^真实值叫做labele表示每次预测值与实际值的误差。L和误差e正相关越大表示参数越不好。这个误差可以有很多种表示法比如差绝对值差平方等。 代价函数有可能是一条波浪线(在二维中表示)也可以随着自变量相关因子的增多其函数也变为高维的、无法可视化展示的复杂函数。 不断测试参数的值给出不同参数的L值的情况上图使用色温和等高线展示了L的值在模型选择中尽量使用Small L。越偏蓝色系其值越小。
Optimization 第三步本质上就是找到最好的一组w和b使L最小。用w*,b*表示。
Gradient Descent梯度下降方法
选取一个参数算它与Loss值的函数 首先要寻找一个初始点w0最好使用特定算法使得初始值位置更优然后计算L对w的微分是多少根据微分正负移动w尽量使得微分越来越接近于0。
这个移动速率取决于ηη表示学习速率人为定义设置能够影响w参数的移动步长在机器学习中人为可以设定的参数被称为hyperparameter超参数超参数优化是我们进行的重要的步骤。
当然这个Loss可以是任何形状取决于一开始的loss函数的定义。 当前方法有两种方式停止步进其一是迭代次数达到一开始认为设定的某一上限另一种表示找到导数为0的点了但很明显如图这个不是最小的Loss点 后续改进
考虑到课程中的数据在每周具有周期性所以x1这样的feature只能体现与前一天播放数据的关系不如增加特征的数量为7天这样能够更好地反映出规律再将其增加到28天、56天得到下面关于训练集和测试集的L值 可以得知在一定的范围内Model函式的feature越多模型的拟合预测效果越佳。但往往会出现效果停滞等情况这是为什么呢
其实在上图中Model都是y关于x的线性模型即Linear Model线性模型是具有局限性的往往不可能通过一条直线很好地预测现实生活的数据关系。
如何绘制非线性的model呢以红色model为例它属于piecewise linear curve即分段线性函数每个自区间上的函数都是线性函数。它本质上只由常数和一组蓝色折线函数Hard Sigmoid组成。 即使是超出分段线性函数的model也能通过插值函数进行拟合 所以只要我们有足够多的蓝色Function就能组合成任何形状的函数model曲线。
如何写出蓝色的Function呢
方法一通过sigmoid函数逼近 sigmoid函数的形状和c/b/w取值有关通过不断变化三者的取值来选取合适的sigmoid曲线即 所以想要拟合非线性函式就把原来的bwx1换成b所有sigmoid函数之和注意上图只是考虑x1这一个feature如果考虑多个feature就把wx1换成相应的即可 i表示sigmoid函数的数量或者可以理解为标号id。 其实就是把整个函数分成多个线性段每个线性段通过sigmoid函数去拟合而每个线性段都有可能和每个特征有关所以对于每个线性段都结合权重与特征进行表示。 利用线性代数的知识表示成如上形式。这个r不是sigmoid函数sigmoid需要将取负再改变一些用a表示 根据函式的参数得到Loss后使用梯度下降法得到最优解。
方法二通过ReLU函数逼近 将两条ReLU合并就能生成一个Hard Sigmoid也就是之前的蓝色Function用于拟合非线性Model的。
无论是Sigmoid还是ReLU在机器学习中都属于一类函数Activation function 激活函数。 深度神经网络 a向量是Model的参数是众多激活函数(Sigmoid/ReLU/...)组成的。我们可以进一步改进这个a将a作为新的输入分配新的权值、偏置和激活函数形成a‘。只要能优化结果让Loss更小那么就选取新的a作为函式的参数本质上就是超参数不断迭代改进的过程。不断加深网络的层数layer就形成了深度神经网络。
这些Sigmoid或者ReLU可以被称为神经元Neuron很多的Neuron就叫做Neuron Network。每层神经元叫做隐藏层所有隐藏层构成了深度学习Deep Learning的基础。 梯度下降 Gradient Descent梯度下降是一种常用的优化算法用于求解机器学习模型中的参数。它通过迭代的方式不断更新参数以最小化目标函数的值。 基本步骤
1. 初始化参数选择初始参数值作为算法的起点。
2. 计算损失函数的梯度计算目标函数损失函数对于每个参数的偏导数即参数的梯度。这可以通过反向传播算法来实现。
3. 更新参数根据参数的梯度和学习率步长更新参数的值。梯度乘以学习率表示每次迭代时参数的更新量。
4. 重复迭代重复执行步骤2和步骤3直到满足停止条件例如达到最大迭代次数或参数变化很小。 梯度下降的核心思想是沿着梯度的反方向更新参数以逐步接近损失函数的最小值。
常见的梯度下降算法
此外还有几种变体的梯度下降算法包括批量梯度下降Batch Gradient Descent、随机梯度下降Stochastic Gradient Descent和小批量梯度下降Mini-batch Gradient Descent 1.批量梯度下降BGD在每次迭代中使用所有训练样本来计算梯度和更新参数。这种方法的计算量较大但能够更准确地估计梯度。最原始形式。 2.随机梯度下降SGD在每次迭代中随机选择一个样本来计算梯度和更新参数。这种方法的计算量较小但参数更新的方向可能更不稳定。 3.小批量梯度下降MBGD在每次迭代中随机选择一小部分样本称为mini-batch来计算梯度和更新参数。这种方法综合了批量梯度下降和随机梯度下降的优点通常是最常用的梯度下降算法。也称为最速下降法 每次更新一次参数叫做一次Update每遍历一次训练集叫做一次epoch 梯度下降是机器学习中常见的优化算法之一广泛用于线性回归、逻辑回归、神经网络等模型的参数优化过程中。
梯度下降的痛点并不是Local Minimum陷于局部最优解而是步长的选择如果过大会错过最优解。 梯度下山的优化算法
1.AdaGrad适应性梯度算法根据历史梯度信息动态调节学习率。经常更新的参数学习率就小一些不经常更新的参数学习率就大一些。但是在训练深度网络时可能会导致学习率过早和过量地减小。
2.RMSProp均方根传递优化动态学习率为了解决 AdaGrad 在训练深度网络时的问题。它使用梯度的移动平均来调整学习率有助于防止学习率单调下降。
3.AdaDelta不需要设置学习率这有助于限制累积的历史信息量。
4.Adam自适应矩估计算法目前最适合优化结合了 Momentum模拟动量和RMSProp第一阶段估计了梯度的均值第二阶段估计了梯度的无偏方差有助于自适应地调整学习率。
5.Momentum动量模拟物体运动时的惯性使梯度下降过程更快、更稳定。