[关闭]
@w460461339 2019-09-06T18:49:01.000000Z 字数 986 阅读 749

知乎 随机性

微众银行


楼上的几位大佬已经说的很明确了,可以简单补充一点。

无论是以SVM,XGBOOST为代表的机器学习,还是CNN,RNN代表的深度学习(原谅我把它们分开),它们的使用可以分为两个部分:训练和预测(或者叫推断)。

我们首先从比较容易理解的预测部分看起。在训练完成后,模型内的各个参数都被确定下来,同一个数据多次输入并不会产生不同的输出。那么在这个阶段,由于模型是一个确定的系统,因此再怎么多次测量取平均值都没有用处。

那么预测部分呢,大佬们都说清楚了,预测阶段的随机性来源于三个方面:

1、数据的随机性:每一次训练用的batch的大小,数据的顺序,甚至是标注的略微不同都有可能引入随机性;
2、模型的超参数:诸如Dropout,剪枝之类的方法来对网络架构做一些随机性的优化
3、模型的参数:初始参数的随机性,模型的选择等等。

那么从数据看,由于训练集测试集的划分以及顺序,k-folder+shuffle可以在大部分的情况下让你不用担心因为刚好选了一批特殊数据(比如都是正样本)从而导致模型大大偏离预期。

从调整超参数的角度看(深度炼丹),多次实验取均值会是一个理论上可行的方法,但是算力的限制加上时间成本等等,并不会允许你这么做。通常我们也并不需要这么做,并且很多时候算法从业人员的价值也体现在这里,能够从过去的经验中知道什么样的超参数会产生什么的结果,从而选取相对合适的超参数;

最后,从模型的参数本身来看,模型初始化有很多种不同的方法,每个参数的值域基本是负无穷到正无穷,因此在这个情况下,基本没有办法做多次实验取平均值的操作,更多的时候我们还是根据经验来选择合适的初始化方法,比如什么时候用uniform,什么使用Gaussian初始化,什么时候用0/1初始化之类的,经验真的很重要啊。

另外,我们训练过程并不是一个找到终点的过程,它更像是一个买车的过程,你逐步的训练,就像你逐步提高买车的预算,到了一定水平之后,你会发现某个点以上的所有车都符合你的要求,这个时候你要做的就是试驾,去尝试哪个模型更加适合你,也可以看看这个模型有没有过拟合。如何选择模型,是一个非常面向任务的过程,你不会需要所有在测试集上表现都为99.99%的模型,但也不会只相信其中的一个。是否选择模型的voting,bagging或者boosting,考量的不仅仅是模型的准确率,还有许多实际的变量。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注