视频教程的总结和一些自行补充的内容,旨在尽量的理解其原理。html
本文持续更新地址:我的博客机器学习面试基础知识 & 扩展-01面试
在忽略噪声的状况下,泛化偏差可分解为误差、方差两部分。算法
---摘自《机器学习》,周志华网络
分类器函数
Train set error | 1% | 15% | 15% | 0.5% |
---|---|---|---|---|
Dev set error | 10% | 16% | 30% | 1% |
status | high variance | high bias | high bias & high variance | low bias & low variance |
high Bias 意味着模型的分类效果很差,high Variance 意味着模型每每过拟合,不能很好的泛化。性能
咱们一般这样利用这两个参数调整咱们的神经网络,其中部份内容会在本文的后面进一步探讨。学习
上图从左到右分别是欠拟合、合适的拟合和过拟合三种状况。测试
整个训练过程实际上是模型复杂度和过拟合之间的一个权衡,以下图优化
如何应对过拟合?我以前的一篇译文提到过:译文
结合前文中提到的误差和方差,咱们有如下经验:
也就是:
regulation
)- 主要是L1和L2正则化Dropout
- 随机将某些神经元的权重初始化为零回到交叉验证,根据切分的方法不一样,交叉验证分为下面三种:
所谓的简单,是和其余交叉验证方法相对而言的。首先,咱们随机的将样本数据分为两部分(好比: 70%的训练集,30%的测试集),而后用训练集来训练模型,在测试集上验证模型及参数。接着,咱们再把样本打乱,从新选择训练集和测试集,继续训练数据和检验模型。最后咱们选择损失函数评估最优的模型和参数。
又称(S-Folder Cross Validation),和第一种方法不一样,S折交叉验证会把样本数据随机的分红S份,每次随机的选择S-1份做为训练集,剩下的1份作测试集。当这一轮完成后,从新随机选择S-1份来训练数据。若干轮(小于S)以后,选择损失函数评估最优的模型和参数。
又称(Leave-one-out Cross Validation),它是第二种状况的特例,此时S等于样本数N,这样对于N个样本,每次选择N-1个样原本训练数据,留一个样原本验证模型预测的好坏。此方法主要用于样本量很是少的状况。
为了得到性能良好的神经网络,网络定型过程当中须要进行许多关于所用设置(超参数)的决策。超参数之一是定型周期(epoch)的数量:亦即应当完整遍历数据集多少次(一次为一个epoch)若是epoch数量太少,网络有可能发生欠拟合(即对于定型数据的学习不够充分);若是epoch数量太多,则有可能发生过拟合(即网络对定型数据中的“噪声”而非信号拟合)。
早停法背后的原理其实不难理解:
每一个epoch结束后(或每N个epoch后):
将测试性能最优的模型做为最终网络模型
最优模型是在垂直虚线的时间点保存下来的模型,即处理测试集时准确率最高的模型。
其中,中止条件能够是下面这三条
正则化 是结构风险最小化策略的实现,是在经验风险上加一个正则化项(regularizer)或惩罚项(penalty term)
通常来讲,监督学习能够看作最小化下面的目标函数:
regulation
,字面意思是调整修正,也就是调整上图中出现应对过拟合L0范数表示向量中全部非零元素的个数
定义:
定义:L2
范数是指向量各元素的平方和而后求平方根。咱们让L2范数的规则项||W||2最小,可使得W的每一个元素都很小,都接近于0,但与L1范数不一样,它不会让它等于0,而是接近于0。
使部分神经节点w
的权重下降为零,从而简化网络,将上图中图3中转换为图1,结果是variance
下降,bias
增长。
视频讲解: 2:30
优化问题:把 w
的解限制在黄色区域内,同时使得经验损失尽量小。
这也致使L2相对较为稳定,L1能够产生更多稀疏解。
Dropout是指在模型训练时随机让网络某些隐含层节点的权重不工做,不工做的那些节点能够暂时认为不是网络结构的一部分,可是它的权重得保留下来(只是暂时不更新而已),由于下次样本输入时它可能又得工做了。
基于 CIFAR-10 dataset 的实验
结果演示:
100代码的简单神经网络代码:pycharm
关于激活函数做用的直观解释:知乎回答:异或
连接:TensorFlow