机器学习渴望
明月几时有.
语音信号处理,机器学习,深度学习
展开
-
23 解决偏差和方差问题(23 Addressing Bias and Variance)
下面是解决偏差和方差问题最简单的原则:如果是可避免的高偏差,则增大模型(比如:给神经网络增加层或神经元)如果是方差很高,则给训练集添加更多数据如果你可以无限制地扩大网络,增加训练数据,就可以在很多机器学习问题上做的很好。实际上因为训练大型的模型速度很慢,所以扩大模型最终导致计算问题。你也可能在获取更多数据的问题上精疲力竭。(即使在因特网上,关于猫的图片数量也是有限的!)不同的...原创 2018-12-05 17:25:02 · 281 阅读 · 0 评论 -
29 绘制训练集上的损失曲线(29 Plotting training error)
当训练集增大时,开发集(测试集)损失应该降低,但是训练集损失会增大。用一个例子展示这种效果:假如训练集只有2个样本:一个猫图片,一个非猫图片,对于算法来说很容易记得这两个样本,从而在训练集上获得0%的错误率。即使两个样本的标签都错了,对于算法来说还是很容易记住这些标签。(注:标签错了,算法记住错的标签,训练集上分类错误率也为0)。现在假设训练集有100个样本,其中少量样本的标签是错误的,或者一...原创 2018-12-17 16:09:28 · 4080 阅读 · 0 评论 -
30 解释学习曲线:偏差很高(30 Interpreting learning curves_ High bias)
假设开发集损失曲线是这样的:我们之前说过,如果开发集损失曲线变成了水平的,增加数据并不能获得期望的性能。但是很难确切地推断出红色曲线应该长成什么样子。如果开发集很小,曲线中可能有噪音就更加不能确定曲线的样子了。假设我们将训练集损失加到上图中:现在可以绝对确定增加数据本身并不足以改善算法性能。为什么会这样?回忆一下我们之前的两个发现:随着我们增加训练数据,训练集损失只会更高。因此,...原创 2018-12-17 16:06:05 · 405 阅读 · 0 评论 -
31 解读学习曲线:其他的例子(31 Interpreting learning curves_ Other cases)
有如下学习曲线:这图是高偏差,高方差,还是两者具有?蓝色的训练损失曲线相对较低(对于绿色线),红色的开发集损失比蓝色线高很多,因此此图代表低偏差,高方差。增加训练数据量可以减少红色线和蓝色线直接的间距。现在看下面的曲线:这一次,训练集误差比期望水平要高很多,开发集误差比训练集误差大很多,因此该图代表高偏差,高方差,需要寻求一种能同时减少偏差和方差的算法。...原创 2018-12-17 16:00:39 · 753 阅读 · 0 评论 -
28 诊断偏差和方差:学习曲线 (28 Diagnosing bias and variance_ Learning curves)
我们已经知道一些方法可以用来估计(可避免的)偏差和方差可以导致多少误差。这些方法包括估计最佳的错误率和计算算法的训练集和开发集误差。下面我们将讨论一种可以获得更多信息的方法:绘制学习曲线。学习曲线绘制了开发集错误率和训练样本数量之间的关系。为了绘制学习曲线,需要在不同的训练集大小上运行算法。例如,如果有1000个样本,可以在100,200,300,…,1000个样本上分别运行算法。这样就可以画出...原创 2018-12-09 21:22:45 · 284 阅读 · 0 评论 -
27 降低方差的技巧(Techniques for reducing variance)
如果你的算法方差较高,可以尝试下面的技巧:**增加训练数据:**只要你可以获得大量数据和足够的算力去处理数据,这就是一种解决高方差问题最简单,最可靠的方式。**正则化(L2, L1, dropout):**这种技巧减少方差的同时,增加了偏差。**提前停止(例如,根据开发集的错误率来提前停止梯度下降):**这种技巧减少方差的同时增加的偏差。提前停止技巧很像正则化方法,一些论文作者也叫他正则化...原创 2018-12-05 17:37:29 · 6379 阅读 · 1 评论 -
26 训练集上的误差分析(Error analysis on the training set)
想要算法在开发机/测试集上表现的好,必须先在训练集上表现的好。作为对上一节讲的解决高偏差问题的补充, 我有时也遵循和在开发集上进行误差分析相似的原则,在训练集上进行误差分析。这种方式在高偏差的算法上很有用处,比如算法没有拟合训练集。例如,你要创建为app一个语言识别系统,从志愿者那里收集了很多音频片段。如果系统在训练集上表现不好,为了搞清楚训练集上算法主要的出错类型,你可能会考虑听听算法表现比...原创 2018-12-05 17:35:52 · 1747 阅读 · 0 评论 -
25 减少可避免的偏差 (Techniques for reducing avoidable bias)
如果学习算法偏差比较大,并且这些偏差是可避免的,你就可以尝试下面的技术:扩大模型: (比如增加网络层数或者神经元数量):这种技术可以让你的模型更好的拟合训练集,所以可以减少偏差。如果这种技术同时增加了方差,那么使用正则化技术可以消除增加的方差。**通过误差分析获得的灵感来修改输入特征:**假如你经过误差分析获得灵感:添加额外的特征可以帮助算法消除特定种类的误差。(具体在下一节中讨论。)...原创 2018-12-05 17:35:05 · 469 阅读 · 0 评论 -
24 偏差,方差平衡 ( Bias vs Variance)
你有可能听说过偏差方差权衡。在对学习算法做修改时,有一些方法是这样的效果:减少偏差同时增加了方差,反之亦然。这就有了偏差方差平衡。举个例子,扩大模型—添加神经元或网络层或者增加输入特征—通常会减少偏差但是却会增加方差。或者给模型添加正则化方法通常增加偏差却减小方差。在当今时代,我们通常可以获取大量数据并且可以使用大型的网络(深度学习)。因此,偏差方差平衡较少起到作用,现在更多的是减少偏差的同时...原创 2018-12-05 17:34:02 · 402 阅读 · 0 评论 -
22和最优错误率进行比较(Comparing to the optimal error rate)
在识别猫的例子中,通过“最优”分类器获得的“理想”错误率接近0%。人在看到一幅图片时总能识别出图中是不是猫,因此我们期望机器能做得和人一样好。另一些问题就比较困难了,比如建立一个语音识别系统,却发现有14%的音频片段有大量背景噪音,即使人也不能分辨说的是什么,这样即使“最优”的语音识别系统也可能有14%的错误率。假设在语音识别问题上算法性能如下:训练集损失=15%开发集损失=30%训...原创 2018-12-05 17:32:04 · 465 阅读 · 0 评论 -
21 偏差和方差的例子( Examples of Bias and Variance)
一个对猫分类的任务,理想的分类器(比如人)可能获得完美的性能。假设,算法的性能如下:训练集损失=1%开发集损失=11%算法出了什么问题?从前一节的定义知道,偏差为1%,方差为10%(=11%-1%),因此是高方差,分类器在训练集损失很小,但是在验证集上泛化性能很差,这又叫做过拟合。考虑如下情况:训练集损失=15%开发集损失=16%偏差为15%,方差为1%,分类器在不能很好的...原创 2018-12-05 17:30:37 · 1059 阅读 · 0 评论 -
20偏差和方差:误差的两个主要来源(Bias and Variance The two big sources of error)
假设训练集,开发集和测试集都来自相同的分布,你应该获取更多训练数据,因为那样可以提高模型性能,对吧?不幸运的是即使取得更多训练数据没有什么坏处,它也没有你想象的很多的好处。取得更多训练数据也有可能是在浪费时间,所以问题来了,你如何确定什么时候增加训练数据,什么时候不呢?在机器学习领域有两大主要的误差来源:偏差和方差。理解了偏差和方差将帮助你确定什么时候增加数据,或者采用其他方式来提升性能。理解...原创 2018-12-05 17:29:21 · 302 阅读 · 0 评论 -
32 绘制学习曲线 ( Plotting learning curves)
假设现在只有100个样本的小训练集,使用随机挑选的分别包含10个,20个,30个,…, 100个样本的数据子集,样本子集每次增加10个样本,使用这10个样本子集去绘制学习曲线,你可能会发现曲线含有一些噪音(噪音意思是误差数值比期望值高或者低很多)。如果用随机挑选的10个样本来训练模型,可能你很不幸运地挑选的是极差的训练集,其中包含了很多模糊的或是贴错标签的数据,也可能你很幸运地挑选了极好的训练集...原创 2018-12-05 17:27:26 · 1416 阅读 · 0 评论 -
机器学习流程错误分析
53 局部错误分析假设你建立了一个复杂的机器学习流水线并想提高系统性能,对流水线的哪个部分进行操作呢?可以将找到错误所归属的流水线的某一部分,然后在该部分上调优。例如我们的猫分类器:第一部分是检测器,检测图中的猫,并裁剪下来,第二部分是分类器,输出是否是猫。你可能花数年时间去优化某一个部分,那么如何确定优化哪个部分呢?实施错误分析,将导致错误的流程找出来,重点优化。举个模型出错误的例子:...原创 2018-12-22 21:31:08 · 768 阅读 · 0 评论