赞
踩
全文总结于哔哩大学的视频:李宏毅2020机器学习深度学习(完整版)国语
2020版课后作业范例和作业说明在github上:点击此处
李宏毅上传了2020版本的机器学习视频和吴恩达的CS229机器学习相比,中文版本的机器学习显得亲民了许多,李宏毅的机器学习是英文的ppt+中文讲解,非常有利于大家入门。吴恩达的CS229中偏向于传统机器学习(线性回归、逻辑回归、Naive Bayes、决策树、支持向量机等),李宏毅2020版本的机器学习中除了最前面的回归、分类,后面更多篇幅涉及卷积神经网络(CNN)、循环神经网络(RNN)、强化学习(RL)等深度学习的内容。
博客内容多为转载。结合哔哩大学的视频观看效果更佳。
越复杂的model,在testing data上的error未必越低。
error来自两个地方:
f_star是f_hat的一个估测值,f_star可能不等于f_hat,距离可能来自于bias,也可能来自于variance方差
估测变量x的mean均值(假设变量x的均值为μ,方差为σ^2):
先sample N个点,将其算平均值m,一般都不等于x的均值μ
但是计算m的期望值,会正好等于μ
N越大,分布越集中;N越小,分布越分散
估测x的σ^2
重点图如下,便于理解
错误来自于bias(瞄准的位置)和variance(枪的性能),理想情况是二者都小/没有。
点越集中,方差越小;离中心越远,偏差越大。
平行时空,抓到不同的宝可梦
不同宇宙中,找到的f*是不同的
在100个平行的宇宙中,各抓取10个宝可梦,都去找一个f*
100个不同的w和b
简单模型:很集中,variance很小
复杂模型:散布分散,variance很大
原因:简单模型受不同data影响较小
靶心代表理想的函数,目标结果。
实验结果如下:
黑线代表:靶心位置;
红线代表:做5000次实验每一次找出的f*都不一样,model也不一样;
蓝线代表:将这5000次f*平均后
f
ˉ
\bar f
</span><span class="katex-html"><span class="base"><span class="strut" style="height: 1.02566em; vertical-align: -0.19444em;"></span><span class="mord accent"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.83122em;"><span class="" style="top: -3em;"><span class="pstrut" style="height: 3em;"></span><span class="mord mathdefault" style="margin-right: 0.10764em;">f</span></span><span class="" style="top: -3.26344em;"><span class="pstrut" style="height: 3em;"></span><span class="accent-body" style="left: -0.08333em;">ˉ</span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height: 0.19444em;"><span class=""></span></span></span></span></span></span></span></span></span></p>
下图的解释:
model是一个function set,使用一个范围表示function set。最好的function也只能从function set里选出来。
而一个简单的model的space很小,又可能没有包含target,所以无论如何sample,平均起来都不可能得到target。
复杂的model,space很大,他的function set包含了target,只不过可能无法找出那个target,因为每次给的training data不一样,如果散布在target附近的,则只要平均起来就可能得到
f
ˉ
\bar f
</span><span class="katex-html"><span class="base"><span class="strut" style="height: 1.02566em; vertical-align: -0.19444em;"></span><span class="mord accent"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.83122em;"><span class="" style="top: -3em;"><span class="pstrut" style="height: 3em;"></span><span class="mord mathdefault" style="margin-right: 0.10764em;">f</span></span><span class="" style="top: -3.26344em;"><span class="pstrut" style="height: 3em;"></span><span class="accent-body" style="left: -0.08333em;">ˉ</span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height: 0.19444em;"><span class=""></span></span></span></span></span></span></span></span></span></p> </li></ul>
如下图,其中
简单model:大bias,小variance
复杂model:小bias,大variance
error来自bias(红线)和variance(绿线),蓝色线是二者共同造成的影响
如何知道目前是bias大还是variance大?
解决方法:
bias大:
f
^
\hat{f}
</span><span class="katex-html"><span class="base"><span class="strut" style="height: 1.15232em; vertical-align: -0.19444em;"></span><span class="mord accent"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.95788em;"><span class="" style="top: -3em;"><span class="pstrut" style="height: 3em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right: 0.10764em;">f</span></span></span><span class="" style="top: -3.26344em;"><span class="pstrut" style="height: 3em;"></span><span class="accent-body" style="left: -0.08333em;">^</span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height: 0.19444em;"><span class=""></span></span></span></span></span></span></span></span></span>,所以可以考虑加入更多的feature、更高的次数。(增加data没有效果)</li></ul>
variance大:
在bias和variance中权衡,选择一个模型可以平衡两种error,使得总error最小。
但是不可以做的事情是:利用自己手上已有的testing set来选择最好的模型的时候,选出来的模型在真正的testing data上,未必是最好的模型
testing set有自己的bias:数据采集的偏差。除非你的testing set比较好地代表了总体分布,否则实际使用时Err一定会变差
正确做法: 交叉验证cross validation
若不相信某次分trin和test的数据集,可以分好多次,即,N折交叉验证N-fold Cross Validation
把最好的效果的model用在最后的testing test
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。