美文网首页
20200227-Model

20200227-Model

作者: inspiredhss | 来源:发表于2020-02-27 08:37 被阅读0次

1、模型产生过拟合的原因及解决方案

  • 什么是过拟合:

模型在训练集上效果较好,在测试集上表现较差。

  • 产生过拟合原因:

1、参数太多,模型复杂度高;
2、样本中噪音数据较大,模型学习到了噪音中的特征;
3、决策树模型: 对决策树的生长没有合理的限制和修建;
4、神经网络模型: 权值学习迭代次数足够多(overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征。

  • 解决方案:

1、降低模型复杂度;
2、增大训练集,训练集增加之后就能学习到更多具有代表性的特征;
3、增加正则项,减少参数,进一步降低模型复杂度
4、对于神经网络,采用dropout;
5、对于决策树,采用earlystopping,模型对训练数据集迭代收敛之前停止,防止过拟合;
6、采用ensemble。集成学习可以有效的减轻过拟合。bagging通过平均多个模型的结果,来降低模型的方差。boosting不仅可以减小偏差,还可以减小方差。


image.png
image.png
  • DropOut

Dropout 的理解
1、防止过拟合,很好的容错能力。
2、训练过程中,按照一定的概率将神经网络单元从网络中暂时丢弃。
3、梯度下降是随机丢弃神经网络单元,每轮次每个mini-batch都在训练不同的网络。
Dropout 的主要思想
1、每次迭代时(包括正向传播和反向传播),按照一定的比率(keep-prob),让隐藏层的部分节点失效,达到简化网络拓扑结构。
2、缓解一些节点的强依赖性,并使得反向传播的修正值,平衡地分步到各个参数上。


image.png
from tensorflow.contrib.layers import dropout
[......]
is_training = tf.placeholder(tf.bool, shape = (), name = 'is_training')

keep_prob = 0.5
X_drop = dropout(X, keep_prob, is_training = is_training)

hidden1 = fully_connected(X_drop, n_hidden1, scope = "hidden1")
hidden1_drop = dropout(hidden1, keep_prob, is_training = is_training)
hidden2 = fully_connected(X_drop, n_hidden2, scope = "hidden2")
hidden2_drop = dropout(hidden2, keep_prob, is_training = is_training)

logits = fully_connected(hidden2_drop, n_outputs, activation_fn = None, scope = "outputs")
tf.contrib.layers.fully_connected(F, num_outputs,activation_fn)
F ---[batch_size,images_pixels],tensor
num_outputs --- numbers of outputs,[batch_size,num_outputs]
activation_fn ---采用指定的非线性激励函数,默认不是None,如果不需要的话,要赋值None
image.png

相关文章

  • 20200227-Model

    1、模型产生过拟合的原因及解决方案 什么是过拟合: 模型在训练集上效果较好,在测试集上表现较差。 产生过拟合原因:...

网友评论

      本文标题:20200227-Model

      本文链接:https://www.haomeiwen.com/subject/gmguzctx.html