吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

        机器学习策略(machine learning strategy):分析机器学习问题的方法。

    正交化(orthogonalization):要让一个监督机器学习系统很好的工作,一般要确保四件事情,如下图:

吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

        (1)、首先,你通常必须确保至少系统在训练集上得到的结果不错。所以训练集上的表现必须通过某种评估达到能接受的程度,对于某些应用,这可能意味着达到人类水平的表现,但这也取决于你的应用。

        (2)、接着,你就希望系统在开发集(dev set)上也能有好的表现。

        (3)、接着,你希望系统在测试集(test set)上也有好的表现。

        (4)、最后,你希望系统在实际使用中表现令人满意。

        如果你的算法在成本函数(cost function)上不能很好地拟合训练集,你可能可以训练更大的网络或者选择一个更好的优化算法,比如Adam优化算法等等。如果你的算法不能很好地拟合开发集,可以增加一些正则项或者增大训练集。如果你的算法不能很好地拟合测试集,你可能增大开发集。因为如果系统在开发集上表现很好,但在测试集上表现较差,这可能意味着你在开发集上过拟合了,需要使用更大的开发集。如果在实际使用中表现较差,这意味着你需要回去改变开发集或成本函数。因为根据某个成本函数,系统在测试集上表现较好,在实际使用中表现较差,这意味着你的开发集分布不正确或你的成本函数测量指标不对。

        当训练神经网络时,我倾向于不用早期停止(when i train a neural network, i tend not to use early stopping),这个技巧还不错,很多人都这么干。过早停止有点难以分析问题,对训练集的拟合也不太好,也同时影响开发集的表现。

        单实数评估指标(single real number evaluation metric):它可以快速告诉你,新尝试的手段比之前的手段好还是坏,如下图:

吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

        查准率(precision):例如,在你的分类器标记为猫的例子中,有多少真的是猫,例如有95%的查准率,意味着分类器说这图有猫的时候,有95%的机会真是猫。

        查全率(recall):对于所有真猫的图像,你的分类器正确识别出的百分比,实际为猫的图像中,有多少被系统识别出来。

        事实证明,查准率和查全率之间往往需要折衷,两个指标都要顾及到。用查准率和查全率来评估分类器是比较合理的。但如果仅有两个评估指标,很难去快速地选择出好的分类器。不推荐用两个评估指标查准率和查全率来选择一个分类器,需要找到一个新的评估指标,能够结合查准率和查全率。在机器学习文献中,结合查准率和查全率的标准方法是F1分数(F1 score),F1分数非正式地可以认为是查准率(P)和查全率(R)的平均值,正式地F1分数公式是:2/(1/P+1/R),在数学中,这个函数叫做the harmonic mean of precision P andrecall R。

        满足和优化指标(satisficing as well as optimizing metrics):如下图,一般地说,如果你要考虑N个指标,有时候选择其中一个指标作为优化指标是合理的。所以你想尽量优化那个指标,然后剩下的N-1个指标都是满足指标。意味着只要它们达到一定阈值,你就不在关心超过那个阈值之后的表现,但它们必须达到那个阈值。这些评估指标必须是在训练集或开发集或测试集上评估或计算出来的。

吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

        训练集、开发集、测试集划分:机器学习中的工作流程是:你尝试很多想法,用训练集训练不同的模型,然后使用开发集来评估不同的想法,然后选择一个。然后不断迭代去改善开发集的性能。直到最后,你可以得到一个令你满意的成本(cost),然后你再用测试集去评估。

        假如只有开发集和测试集的情况,如下图,让开发集和测试集来自同一分布。设立开发集+单实数评估指标。将所有数据随机洗牌放入开发集和测试集。

吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

        开发集和测试集的大小:测试集的目的是完成系统开发后,测试集可以帮你评估最终系统的性能。方针(guideline)就是令你的测试集足够大,能够以高置信度评估系统整体性能,但它可能远小于训练集。把大量数据分到训练集,然后少量数据分到开发集和测试集,如下图:

吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

        什么时候应该改变开发集、测试集和指标:当你的评估指标无法正确衡量算法之间的优劣排序时,你应该改变评估指标或者要改变开发集或测试集。其中一个修改评估指标的方法是加个权重项。如果在指标上表现很好,在当前开发集和测试集上表现很好,但你的实际应用程序表现不好,那么就需要修改指标和开发测试集,改变你的开发测试集,让你的数据更能反映实际需要处理的数据,如下图:

吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

        why human-level performance:如下图:

吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

        可避免的偏差:如下图,根据人类对某个具体事物的表现,如识别猫,来决定是否需要减少偏差。假如人对猫的识别错误率

吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

为1%,而训练集的错误率为8%,开发集的错误率为10%,这时就需要减少偏差,比如训练更大的神经网络或者跑久一点梯度下降,看看是否可以减少训练误差。假如人对猫的识别错误率为7.5%,而训练集的错误率仍然为8%,开发集的错误率仍然为10%,此时你可能更希望减少学习算法的方差,比如可以试试正则化,让你的开发误差更接近你的训练误差。取决于人类水平误差有多少或者很接近贝叶斯误差,来决定是侧重于减少偏差还是减少方差。贝叶斯误差和训练集误差的差值称为可避免偏差,如下图。根据人类水平误差(human-level error),理解你对贝叶斯误差的估计,你就可以在不同的场景中专注于不同的策略,使用避免偏差策略还是使用避免方差策略。

吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

        Understanding human-level performance: 如下图:

吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

        Surpassing human-level performance:非自然感知问题(natural perception problems),如Online advertising、Product recommendations、Logistics(predicting transit time)、Loan approvals等,即不是计算机视觉或语音识别或自然语言处理问题,较容易超越人类水平。人们在自然感知问题中往往表现非常好。所以有可能,对计算机来说,在自然感知任务的表现要超越人类要更难一些。现在,即使在自然感知任务中,在某些情况下,计算机已经可以超越人类的水平了。如下图:

吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

        Improving your model performance:想要让一个监督学习算法达到实用基本上希望或假设你可以完成两件事情:首先,你的算法对训练集的拟合很好,即做到低偏差;第二,在训练集上做的很好,然后推广到开发集和测试集也很好,即低方差。为了减少偏差,可使用的策略包括:训练更大的模型、训练时间更长一些;使用更好的优化算法,比如momentum、RMSProp;使用更好的算法,比如Adam;或者可以试试寻找更好的新神经网络架构,更好的超参数;改变**函数,改变层数或隐藏单元数;试用其它模型或其它模型架构,如循环神经网络和卷积神经网络。为了减少方差,可使用的策略包括:收集更多数据去训练;尝试正则化,包括L2正则化和Dropout,数据增强;尝试不同的神经网络架构,超参数搜索。如下图:

吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

        GitHub: https://github.com/fengbingchun/NN_Test