hung-yi lee

it2025-01-12  6

文章目录

本节目的解决过程损失函数解损失函数(by梯度下降) 改进模型矫枉过正解决方案 本课结论

本节目的

找到这样一个函数,输入宝可梦当前的CP(Combat Point)值,得到它进化后的CP值。

解决过程

损失函数

函数的函数:衡量一个函数的好坏(参数决定函数,即衡量一组参数的好坏),输出越大越不好 其中y加一个小尖帽是实际的数值 找一个f使得L(f)最小,能使L(f)最小的f记作f*,f对应的参数是w和b*。 这里用梯度下降来解左边的方程,注意,并不是梯度下降只有该用途。

解损失函数(by梯度下降)

梯度下降的原理(以只有一个参数w的损失函数为例) 背景:暴力穷举的效率低,怎么办? ①选择一个w0作为起点(可以是随机可以不是) ②当前点的斜率是正的,则减小w;反之增加x(我们希望L(w)越小越好) ③具体增加或减少多少,取决于 i)现在的斜率绝对值,现在的斜率的绝对值越大,说明越陡峭,增量越大 ii)学习率 eta Learning rate越大,增量越大(学习速度快) 重复②③w0更新为w1,再更新为w2……(每次减去学习率×微分)

但是,解得的可能只是局部最小值,不是全局最小值。 不过这在回归当中不是个问题。下面考虑两个参数的损失函数。 原理一样,全微分变成偏微分。 梯度下降的梯度其实就是 更新参数过程 下面这幅图中颜色越冷表示损失函数的值越小。 但是梯度下降方法似乎有个让人担心的地方——起点选的不对,也许会走的局部最小值点。但实际不会,因为这是个convex,没有局部最小值,随便从哪个起点开始,都会到全局最小值点。(左边是设想,右边是实际)

偏微分具体求法 结果 发现得到的最好的那个线性函数也不能拟合所有训练集所有实例。再抓10只,发现拟合测试集(真正关心的)的效果还可以。 如何做得更好?->引入二次模型

改进模型

矫枉过正

过拟合 overfitting 想拟合得更好,不断增加函数的次数直到…… 上一个Average Error是在训练集上,但是在训练集上,发现结果很离谱 比较不同次数的函数,只看训练集的图,理论上可以找到一个function,使average error越来越低,但是如果结合测试集上的average error来看呢? 结论:不是越复杂的函数,在测试集上结果越好。我们要选最合适的而不是最复杂的模型。 当收集更多的宝可梦,发现还有一个影响CP值的隐藏因素——宝可梦的物种。将不同物种用不同颜色标注。 说明最开始的Model选择就是错误的,需要改进,改进结果如下 按照刚才的方法,最终结果如何?

解决方案

初衷-把一些之前没考虑到的因素加进去,重新定义模型 增加Regularization项(正则化) 改变Loss函数,希望w更小 这样输出对输入就越不敏感,函数更光滑 输入的delta x在输出中表现为w*delta x

为什么希望不敏感? 抵抗噪声干扰的能力更强 改变Lambda的大小,Lambda越小,regularization项的影响力越小, Lambda越大,函数越光滑,对输入越不敏感,结果如下图所示 原因是:Lambda越大,越倾向于考虑w本来的值,考虑error就越少,故训练集上的error是上升了 结论:我们倾向比较平滑的函数,因为对结果不怎么敏感,但是过于平滑,想象一条水平线,什么也干不成。反而在测试集上得到一个糟糕的结果。 到底 how smooth 最好? 问题转化为调整Lambda。

做regularization不需要考虑偏置b。

本课结论

1)宝可梦进化后的CP值和进化前的CP值与物种有很大关系。 2)提到了梯度下降方法,之后会讲原理和技巧。theory and tips 3) overfitting 和它的一个解决方案regularization

最新回复(0)