Regression
Case Study ->Pokemon
Gradient的定义:
将对参数的偏微分,排列成一个向量.
Gradient Descent 的不足:
对于存在Local optimal的模型的处理不佳.
但是Linear Regression的模型是convex的,所以不存在local optimal的情况.
##关于模型训练结果的分析
How’s the result?
因为我们更想得到的是generalization的结果,所以我们最关心的是error on new data(testing data) instead of training data itself.
Training data上看起来更准一点就说明model更准了吗?
过拟合与交叉验证.
How can we do better?
Selecting another Model
重新设计模型:
原model:
$y=b+wx_{cp}$;
现在的model:
$y=b+w_1x_{cp}+w_2x_{cp}^2$;
How can we do more better?
$y=b+w_1x_{cp}+w_2x_{cp}^2+w_3x_{cp}^3$
对于三次和二次在pokemon例子上的比较
Slightly better.
什么是“好的”model?
对于宝可梦模型,我们先后使用了1次2次…4次进行拟合,我们发现,随着模型的复杂度上升,我们的error on training data确实在下降,但是我们的error on testing da ta 却反而上升了.
显然,当$w_4=0$时,三次模型所涵盖的表达都可以用4次模型的model表达出来.
Overfitting
为什么复杂model在training data上得到这么好的结果,而在testing上的error这么可怕呢?
比如不是选择复杂的model,而是选择一个合适的model.
Let’s collect more data
What are the hidden factors?
进化后物种的影响仍是很大的.
所以刚才的model本身就不好.
Back to Step1.
Redesign the Model
不同的物种,不同的linear func
可以用一种更奇妙的函数表示形式,将之前有if的式子表示成带信号处理(i.e.“是”即1,“不是”即0);
当我们的输入$x_s=Pidgey$时,其即$y=b_1.1+w_1x_{cp}$
Are there any other hidden factors?
把我们想到的factor 以后 都back to step 1.
如何处理overfitting?
Regularization
重新定义我们的loss function,把knowledge放进去进行Redesign.
$Loss:y=b+\sum w_ix_i$;
这里面这个求和是把种类不同考虑进去了。
$L=\sum_n(\hat{y}^n-(b+\sum w_ix_i))^2+\lambda\sum(w_i)^2$
对于正则项:我们期待一个越小的$w_i$这个function越好.
参数接近0时:
平滑
平滑是什么意思?
输入有变化时,整体的变化对输入的变化是 不敏感的.
$y=b+\sum w_ix_i$;
如果我们的输入变化$\Delta x$,那么相应的,我们的输出变化,$w_i\Delta x_i$.
$w_i$越接近0,function越平滑
为什么我们喜欢平滑的function?
因为当我们的输入被噪声所干扰时,一个平滑的function会被噪声有很小的影响.
$\lambda$越大,代表考虑regularization的smooth正则项的影响力越大.
我们喜欢平滑的function,但我们不喜欢太平滑的function.
最平滑的function是一条水平线.
为什么在正则项中没有加上b?
在做regularization是不需要考虑bias一项的.
bias是作为常数项只是函数的上下移动而已.
Conclusion
对于我们没有得到的data,即在testing data中没有包含的测试数据.
我们的最终建模系统是”Underestimate?””Overestimate”?
Following lectures :validation