C/C++教程

吴恩达 Coursera 第二课记录

本文主要是介绍吴恩达 Coursera 第二课记录,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Train sets 用来训练你的算法模型

Dev sets 用来验证不同算法的表现情况,从中选择最好的算法模型

Test sets 用来测试最好算法的实际表现,作为该算法的无偏估计

这 3 个集合在数量不大,如:100,1000,10000 的时候,设置为 60%、20%、20%,或者 70% 和 30%(无 dev);

大数据时代,对于 100 万的样本,往往也只需要 10000 个样本就够了,对于大数据样本,Train/Dev/Test sets 的比例通常可以设置为 98%/1%/1%,或者 99%/0.5%/0.5%。样本数据量越大,相应的 Dev/Test sets 的比例可以设置的越低一些。

上述这么划分数据的一个前提假设是:训练样本和测试样本来自于相同分布。

举个例子,假设你开发一个手机 app,可以让用户上传图片,然后 app 识别出猫的图片。在 app 识别算法中,你的训练样本可能来自网络下载,而你的验证和测试样本可能来自不同用户的上传。从网络下载的图片一般像素较高而且比较正规,而用户上传的图片往往像素不稳定,且图片质量不一。因此,训练样本和验证 / 测试样本可能来自不同的分布。

我们在参加比赛的时候,一般不需要去设置 testset,Test sets 的目标主要是进行无偏估计。我们可以通过 Train sets 训练不同的算法模型,然后分别在 Dev sets 上进行验证,根据结果选择最好的算法模型。

high bias。 减少 high bias 的方法通常是增加神经网络的隐藏层个数、神经元个数,训练时间延长,选择其它更复杂的 NN 模型等。

high variance。减少 high variance 的方法通常是增加训练样本数据,进行正则化 Regularization,选择其他更复杂的 NN 模型等。

传统机器学习算法中,Bias 和 Variance 通常是对立的,减小 Bias 会增加 Variance,减小 Variance 会增加 Bias。而在现在的深度学习中,通过使用更复杂的神经网络和海量的训练样本,一般能够同时有效减小 Bias 和 Variance。

问题优化方法高偏差增加复杂度高方差正则化,增加数据

吴恩达 Coursera 第二课记录

问题:为什么只对 w 进行正则化而不对 b 进行正则化呢?

答:因为 w 维数高,复杂度远超 b。

吴恩达 Coursera 第二课记录

L1 优点:节约存储空间,因为大部分 w 为 0。

缺点:微分求导方面比较复杂。

结论:选择 L2 regularization。

问:为什么 L2 正则化有效?

答:可以这么理解。

加入正则化后,参数 w 的更新变为:

吴恩达 Coursera 第二课记录

吴恩达 Coursera 第二课记录

此处显然

吴恩达 Coursera 第二课记录

也就意味着加入 L2 后,参数 w 的衰减加快,而我们在古玩论坛神经网络中一般会有一个激活函数,我们以 tanh 为例:

吴恩达 Coursera 第二课记录

如果 w 小话,意味着输出小,而 tanh 在 0 附近接近于线性,也就意味着网络的非线性整体减小了。

但是如果 w 过小,意味着某些神经元会不起作用,网络变为:

吴恩达 Coursera 第二课记录

此时网络的拟合能力变弱,因此我们要选择一个合适的 ,防止 w 衰减过快。

Dropout 有不同的实现方法,下面介绍:

Inverted dropout

keep_prob=0.8# 保留0.8dl=np.random.rand(al.shape[0],al.shape[1])

这篇关于吴恩达 Coursera 第二课记录的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!