「李宏毅机器学习」学习笔记-Regression
Regression:Output a scalar。
Regression可以用于预测股票市场、无人驾驶、推荐系统,最重要的是可以预测宝可梦(我更习惯于叫神奇宝贝)的CP值,宝可梦将会在李老师课程中出现多次,当然,本节课就是用这个例子讲解。
Step 1:Model
所谓的Model就是a set of function。在这个例子中,我们可以把function写成$ y = b + w \cdot x_{cp} $,因为$b$跟$w$可以带入各种值,所以function有无穷多个。这个model我们称之为Linear model:$ y = b +\sum w_i \cdot x_i $ ($w_i$:weight,$b$:bias)。
Step 2:Goodness of Function
首先准备好training data。
我们需要使用Loss Function衡量function的效果好坏。
Loss Function $L$: Input:a function,output:how bad it is
此时,可以如下定义Loss Function:
将Loss Function可视化绘图,图上每个点就是一个function,图上蓝色代表loss value很小,红色代表loss value很大。
Step 3:Best Function
可以用线性代数迅速求得解。还可以使用更general的方法,能够用在各种不同的task上,这个方法就是Gradient Descent。
Gradient Descent首先随机选取初始值,然后计算此处切线的斜率,斜率如果小于0,如图上小猴子位置,显然切线左边高右边低,此时应该把参数向右边移以减少Loss的值。如果斜率大于0,说明切线左边低右边高,应该把参数向左边移以减少Loss的值。
learning rate控制学习速度的快慢。
有时候经过多次迭代会停在local minima,不是我们想要的global minima,所以不同的随机会得到不同的结果,很看人品。
当有两个参数的时候,Gradient Descent的过程如上图所示。
Gradient Descent可视化过程如上图所示。颜色代表Loss的值,越深代表值越小。
参数如果走到一个saddle point(鞍点),Gradient Descent也会停下来。
公式推导
How’s the results?
可以看出,在Testing Data的error略大于Training Data的error。
Selecting another Model
越复杂的model在训练集上的error越小。
Overfitting
一个比较复杂的model并不一定总是在testing data上给我们比较好的performance。
Overfitting就是model在training data上表现很好,在testing data上表现不好。
应对Overfitting的方法:
收集更多的数据。
以前的模型有一些隐藏的因素没有考虑进去。所以我们需要重新设计一番。
根据宝可梦种类采用不同的function
Regularization
我们使用新的Loss Function:
使用这个Loss Function找到的最好的function不止可以让$L$最小,同时还要是$w$很小的function。$w$很小的Function意味着Function是smooth(平滑)的。
我们相信在多数的状况下,smoother function更像是正确的function。
$\lambda$设置的大一些,找到的function就会越smooth。
从上图中可以发现,$\lambda$越大,Training Error越大。
我们希望选到smooth function,但是不要too smooth。
选择$\lambda$,获得最好的model。
如果本博文对您有帮助,可以赞助支持一波博主~
推荐阅读
- 本文链接:https://blueschang.github.io/2018/10/30/「李宏毅机器学习」学习笔记-Regression/
- 版权声明:本博客所有文章除特别声明外,均采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 许可协议。转载请注明出处!