| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 李宏毅《机器学习》| 回归 -> 正文阅读 |
|
[人工智能]李宏毅《机器学习》| 回归 |
目录 一、定义输入特征 x,通过找到的函数function输出数值Scalar 应用举例:
二、模型步骤step1:模型假设,选择模型框架(线性模型)1. 一元线性模型即模型为单个输入特征,线性模型假设为 2. 多元线性模型即模型为多个输入特征,线性模型假设为 其中表示输入的多个特征,表示各输入特征的权重,b表示偏移量 图中为进化前的CP值,表进化后的CP值,即输出的Scalar,所代表的是真实值 ?上图为10组数据在二维图中的展示,每一个点代表输入进化前的CP值和进化后的CP值 step2:模型评估,判断模型的好坏(损失函数)我们可以将损失函数(Loss Function)理解成函数的函数,输入的是一个function,输出的是该function不好的程度。对于本例,使用距离即计算进化后的CP值与模型预测的CP值之间的的差值来判定模型的好坏,即计算的和,和越小,该模型越好。 ?和b在二维坐标图中的情况如下图所示,图中每一个点代表一个function,颜色代表根据所定义的损失函数该function效果好坏的程度。点所处的区域颜色越红越靠近图片下方,代表代表该function的效果越差。 step3:模型优化,筛选最优的模型(梯度下降)最终需要找到使得损失函数的值达到最小的,下图展示的即为该模型中的最优化问题。 我们使用梯度下降法(Gradient Descent)求解该问题,该方法的优点在于只要损失函数可微分,则该问题就可求解。 梯度下降(Gradient Descent)先从最简单的只有一个参数入手,定义 ?穷举所有可能值,并代入损失函数中求不同下的损失。随机选取一个初始的,计算在时的微分(即切线斜率),若小于0(即图中所示情况),说明左边的损失较高,右边损失较低,我们需要寻找使得损失函数达到最小的,所以此时应该增大的值;反之,应减小的值。 寻找下一个时应该增大或减小的量取决于两个因素,一个是在时微分的大小,微分的绝对值越大,代表该点损失函数的值越大,切线越陡峭,则“迈出的步长”也应该越大;另一个是事先指定的常数项,即学习率(Learning Rate),越大,则“迈出的步长”的幅度即参数更新的幅度越大,学习的速度就越快。 如下图所示,通过该方法找到的是当前的最小值,但可能并不是全局的最小值(取决于损失函数是否为凸函数,后续更新说明)。 引入2个模型参数和b时, 过程与上述单个参数类似,在这里求微分需要做的是求偏微分。 梯度下降推荐最优模型的过程如下图所示? ?每一条等高线代表损失函数的值,越靠近中心蓝色的部分代表损失函数越小。红色箭头代表等高线的法线方向。 梯度下降法目前存在的问题: 三、模型验证训练集的平均误差 ?测试集的平均误差,这才是我们真正关心的 四、模型优化选择更复杂的模型进行优化,如使用一元二次方程,此时训练集平均误差为15.4,测试集平均误差为18.4 五、过拟合(Over Fitting)当使用更高次方的模型更进一步优化时,模型平均误差却更大了,模型效果变差。 将每个模型结果视为一个集合,5次方模型4次方模型3次方模型,所以在4次方模型中找到的最佳模型,肯定不会比5次方模型中找到的更差? ?3次方以上的模型,已经出现了过拟合的现象: 六、步骤优化将Pokemons种类通过颜色区分,会发现Pokemons种类是隐藏得比较深的特征,不同Pokemons种类影响了进化后的CP值的结果 step1:合并模型? ?通过对Pokemons种类的判断,将 4个线性模型合并到一个线性模型中? ?此时训练集和测试集的平均误差如下 step2:输入更多特征将血量(HP)、重量(Weight)、高度(Height)等特征加入模型 ?但更多特征和input,数据量没有明显增加,可能仍旧导致overfitting step3:加入正则化项(Regularization)越小,则function越平滑,function输出值与输入值相差不大。b的值接近0 ,对曲线的平滑越没有影响。 平滑的function对输入较不敏感,当数据中含有噪音时,一个平滑的function受到的影响较小。在很多应用场景中并不是越小模型越平滑越好,但经验值告诉我们越小大部分情况下都比较好。 越大,代表考虑smooth越多,找到的function越平滑,越倾向于考虑本来的数值,考虑error越少,此时在训练集上的平均误差越大,但是在测试集上的误差却可能较小。所以我们希望找到一个较为平滑的function,但是又希望不要太大。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 22:50:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |