您的位置:首页 > 其它

机器学习 李宏毅 L3-Regression

2018-01-26 14:35 597 查看

模型介绍

进化前pokemon的各种特征,一只pokemon为xx,包括了战斗力xcpxcp、输入的pokemon的状态xsxs、hp值xhpxhp、重量xwxw、高度xhxh,以上为输入的特征;输出为pokemon进化后的CP值。

回归过程

根据第一讲介绍,第一步为找到模型,也就是对应的函数集合,本讲对应的模型为 y=b+w⋅xy=b+w⋅x,其中yy为进化后的CP值。而ww和bb可以为不同值,这对应了不同的函数,构成了function set,也就是前面所说的模型,而这些函数数量为无穷多个,有些是合理的,有些是不合理的。上述模型为典型的线性模型(Linear model),ww为weight,bb为bias。



第二步为收集资料,评估模型函数集合中各函数的Goodness。

采用上标表示数据的序号,即存在各种不同的pokemon状态(x1,x2,...,xN)(x1,x2,...,xN),对应的进化后CP值为(y1,y2,...,yN)(y1,y2,...,yN)。具体的数据集见参考资料Pokemon数据集,可以利用数据可视化工具进行显示。

为了衡量各函数的Goodness,需要计算另外的一个函数,loss function,其输入为模型中的函数,输出为衡量值(how bad the function is),即loss function中包含了model中函数f(xcpn)f(xcpn),这也对应着实际的预测输出量。将函数带入,则可以得到各变量对应的损失函数,也就是需要优化的函数。该过程如下图所示:

L(f)=∑n=1N(y^n−f(xcpn))2(1)(1)L(f)=∑n=1N(y^n−f(xcpn))2



针对部分情况,可以通过手段将loss function可视化,例如下图中各点均代表了一个function,其中颜色代表了loss function的大小。



接下来就主要是解决如何找到最小的loss function, 这里对应的参数值就是loss function里面的自变量值,符合

w∗,b∗=argminw,b∑n=1N(y^n−(b+w⋅xncp))2(2)(2)w∗,b∗=argminw,b∑n=1N(y^n−(b+w⋅xcpn))2

第一个优化算法为Gradient descent,此为一阶最优化算法,可以找到函数的局部最小值(极小值,这是GD的第一个问题: stuck at local minima or at saddle point),例如更新ww的步骤如下,其中ηη称为learning rate。该过程不断重复,直到微分形式的值为0,也就是达到了极值点。

w1←w0−ηdLdw|w=w0(3)(3)w1←w0−ηdLdw|w=w0

w2←w1−ηdLdw|w=w1(4)(4)w2←w1−ηdLdw|w=w1

对于本例子,存在两个优化参数,将两个参数排成一个vector,即∇L∇L,过程如下图所示。如果仅有两个参数,则可以绘制loss function的等高线图,∇L∇L指向等高线的法线负方向。对于∇L∇L,其值与局部的下降速度有关,当等高线密集则∇L∇L的数值较大,对应图上则跳动的距离较长。



更一般地,使用θθ代表参数集合,对于实际情况,并不能保证每次迭代完成后,Loss fuction均会降低,这是一个相对较大的问题。

第三个问题是,当函数存在plateau的情况,如下图所示,则损失函数最优化得到的参数集合与最优值相差很远。但是对于linear regression来说,其loss function为convex,则出现前述问题的可能性不大。如果model较为复杂,则需要考虑以上三个问题。

对于Linear regression,可以采用链式法则(chain rule)进行求梯度操作。



回归的缺陷及解决方法

同样,为了能够实现更好的拟合,可以定义更加复杂的linear model(参数对于输出是否为Linear),例如定义如下,这同样也是一个linear model。同样的,也可以使用更高次的linear model去拟合,最终可能会导致过拟合的情况。过拟合指的是测试数据结果与训练数据结果相差过大的情况。其原因是高次复杂模型会包含低次模型,因此对于训练数据的误差而言只会越来越小,需要选择对于测试数据集最小的model。

y=b+w1⋅xcp+w2⋅x2cp(5)(5)y=b+w1⋅xcp+w2⋅xcp2

解决overfitting的方法包括 collect more data(可能会发现一些隐藏的属性会影响输出),例如在数据足够多的情况下,可以发现预测CP值会与pokemon的种类有关,如下图所示。接下来,可以通过引入If条件,区别对待不同的pokemon,定义不同的种类,引入δδ函数。



还有一种方式是通过regularization解决过拟合。如下图所示,较小的w意味着function较为平滑,也就是对于输入变化产生的输出变化较小。这基于一个假设:较为平滑的函数更有可能描述实际情况。

λλ需要人工干预,没有考虑bias(不需要考虑,加上后意味着需要x限制bias较小,对于本问题没什么帮助)。后续则需要人工干预λλ,确定最合适的值。实际上,加上限制项,会发现training data的loss function越来越大,但是对于测试数据而言则会存在一个较优值。





本讲结论



可参考资料和网址

Pokemon数据集

Gradient descent网页资料
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习