2021李宏毅机器学习 2.1 机器学习任务攻略

机器学习训练三步:

定目标函数,定损失函数,进行优化

怎么样提高模型的表现?

• 检查training data的loss:

    ○ 若train loss很大:

        § 可能是model bias的问题,所选的model太过于简单了,无论怎么样优化参数,都不可能找到一个很好的model去拟合training data。

        解决方案:重新设计model,让model变得更复杂:可以增加更多的feature,或者是在deep learning中增加更多神经元或者更多层来解决这个问题。

        § 可能是优化的问题,陷入了局部最优解,没有找到全局最优解。

        如何判断原因?可以先使用简单一些的神经网络或者其他模型进行训练,看一下训练集的loss表现,复杂一些的模型如果训练集loss表现更差,那肯定是没优化好,不可能是model bias的问题。因此复杂模型test loss差不一定就是过拟合,若train loss也差,那证明优化没做好。(下节课讲怎么进一步优化参数)

    ○ 若train loss很小:

        § 看test loss的表现:

            □ 若test loss也很小,那表现很好,就结束啦。

            □ 若test loss很大的话:

                ® overfitting过拟合:可以增加training data的规模,这样model自由发挥的可能性被限制了(可能你用的model弹性很好很复杂),过拟合的可能性就比较小;

                在不能额外搜集training data的情况下,可以做data augmentation,根据自己对任务的理解和资料的特性去扩大数据规模,比如在图像处理中,把图片左右翻转,把某一块单独截出来作为另一个图片之类的。但要注意augmentation的合理性,比如上下颠倒图片就并不是很合理。

                也可以降低模型的复杂性(老师说的弹性),给模型一个限制, 比如降低神经元的数目,或者让神经元共用参数,可以减少特征的数量,可以早停、正则化或者dropout。


                ® mismatch:由于训练资料和测试资料的分布不同,导致了测试的失败。这种情况下增加训练集什么的也没用了。(作业11会针对这个问题进行解决)



如何选择出表现最好的模型?

把测试集变成train和validation两部分,根据validation loss的结果来选择模型,尽量不要去看testing set的结果去调模型,避免overfitting test set,因为test set是用来代表未知的真实情况的,过拟合test set是没用的。

要使用交叉验证n-fold cross validation,避免数据集划分造成的影响。看val loss平均最小的那一个。


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容