2

我试图理解的概念output_keep_prob

因此,如果我的示例是简单的 RNN:

    with tf.variable_scope('encoder') as scope:
        cells = rnn.LSTMCell(num_units=500)
        cell = rnn.DropoutWrapper(cell=cells, output_keep_prob=0.5)

        model = tf.nn.bidirectional_dynamic_rnn(cell, cell, inputs=embedding_lookup, sequence_length=sequence_le,
                                                dtype=tf.float32)

我的困惑是,如果我给出output_keep_prob=0.5的实际上是什么意思?我知道通过添加 dropout 可以减少过度拟合(称为正则化)的可能性。它在训练期间随机关闭神经元的激活,好的,我明白了这一点,但是当我给出时我很困惑

output_keep_prob=0.5我的 no_of_nodes = 500 然后 0.5 意味着它将在每次迭代中随机转动 50% 的节点,或者意味着它将只保留那些概率大于或等于 0.5 的连接

keep_layers whose probability =>0.5  

或者

turn off 50% randomly nodes unit at each iteration ??

我试图通过这个stackoverflow 答案来理解这个概念,但实际上 0.5 的含义也有同样的困惑?它应该在每次迭代中丢弃 50% 的节点,或者只保留那些概率大于或等于 0.5 的节点

如果答案是第二个keep only those nodes which have probability more or equal to 0.5

那么这意味着假设我给了 500 个节点单元,并且只有 30 个节点有 0.5 个概率,所以它将关闭其余 470 个节点,并且只使用 30 个节点进行传入和传出连接?

因为 这个答案说:

假设层中有 10 个单位并将 keep_prob 设置为 0.1,那么 10 个中随机选择的 9 个单位的激活将设置为 0,其余的将按 10 倍缩放。我认为更精确描述是你只保留了 10% 的节点的激活。

而另一方面,@mrry 的回答说:

这意味着层之间的每个连接(在这种情况下是在最后一个密集连接层和读出层之间)在训练时将仅以 0.5 的概率使用。

任何人都可以清楚地解释哪个是正确的以及这个值在keep_prob中实际代表什么?

4

2 回答 2

2

Keep_prop表示保留任何给定神经元输出的概率(与丢弃相反,即归零)。换句话说,keep_prob = 1 - drop_prob

tf.nn.dropout()描述指出

默认情况下,每个元素都是独立保留或删除的。

因此,如果您考虑一下,如果您有大量的神经元,例如一层中有 10,000 个,keep_prob假设是 0.3,那么 3,000 是保留的神经元数量的预期值。keep_prob所以说0.3 的 a 意味着保持 10,000 个神经元中随机选择的 3,000 个的值或多或少是一样的。但不完全是,因为实际数字可能与 3,000 略有不同。

缩放之所以出现,是因为如果您丢弃一定数量的神经元,那么该层的预期总和将会减少。因此,将其余的相乘以向前馈送与其他情况相同的值。如果您加载预训练的网络并希望继续训练但keep_prob现在具有不同的值,这一点尤其重要。

(请注意,您可以决定使用参数将非独立性引入丢弃概率noise_shape,请参阅tf.nn.drouput()描述,但这超出了本问题的范围。)

每次调用网络都会重新计算是否丢弃神经元的随机决定,因此每次迭代都会丢弃一组不同的神经元。dropout 背后的想法是,后续层不能过度拟合并学会观察某些激活的任意星座。你总是改变哪些先前的激活可用,从而破坏了“懒惰神经元过度拟合的秘密计划”。

于 2018-04-16T19:13:16.913 回答
0

对 dropout 效率的直观解释可能如下。

想象一下,您有一个工人团队,总体目标是学习如何建造建筑物。当每个工人过于专业时,如果一个人生病或犯错,整个建筑物都会受到严重影响。“dropout”技术提出的解决方案是每周随机挑选一些工人,送他们出差。希望整个团队仍然学习如何建造建筑物,因此对噪音或休假的工人更有抵抗力。

由于其简单性和有效性,如今在各种架构中都使用了 dropout,通常紧接在全连接层之后。

机器学习中的泛化是指模型学习的概念如何适用于训练期间没有看到的示例。大多数机器学习模型的目标是从训练数据中很好地概括,以便在未来对看不见的数据做出良好的预测。当模型从训练数据中很好地学习细节和噪声时,就会发生过度拟合,但它不能很好地泛化,因此对于测试数据的性能很差。当数据集与需要学习的模型参数的数量相比太小时,这是一个非常常见的问题。这个问题在具有数百万个参数的深度神经网络中尤为严重。

这是我发现的视觉解释:

在此处输入图像描述

更多信息在这里。

于 2018-05-01T16:00:43.247 回答