word2vec 上 nce_weights 的 stddev 是什么意思?
What means stddev of nce_weights on word2vec?
我正在尝试了解 word2vec 示例的工作原理,但并不真正理解为什么设置 nce_weights.
的 stddev
nce_weights = tf.Variable(
tf.truncated_normal([vocabulary_size, embedding_size],
stddev=1.0 / math.sqrt(embedding_size)))
我试图删除 stddev 参数,然后 运行 它。但是没发现有什么不同。
stddev 表示标准偏差。为什么使用 stddev 参数以及示例中的 stddev 值是什么意思?
谢谢。
nce_weights是用于实现噪声对比估计训练技术的分类器权重,这是一种训练具有大量标签的分类器的有效方法(参见您最初链接的 word2vec tutorial 部分 "Scaling up with Noise-Contrastive Training" 中的解释)。
这些权重将在训练期间学习,但首先需要在训练开始时对其进行初始化。我们通过从截断的正态分布(所有值都在其均值的 2 个标准差范围内的正态分布)中抽取随机权重来做到这一点。这是通过传入 tf.truncated_normal op as initializer in the call to tf.Variable 来实现的。截断法线初始化器将形状、均值和标准差作为参数(有关参数及其定义,请参见上面链接的页面)。最后两个是我们将从中提取的截断高斯分布的充分统计量。
当您不传递这些参数时(如您所提到的),它们只会被初始化为默认值(在 stddev 的情况下为 1.0)。
我正在尝试了解 word2vec 示例的工作原理,但并不真正理解为什么设置 nce_weights.
的 stddevnce_weights = tf.Variable(
tf.truncated_normal([vocabulary_size, embedding_size],
stddev=1.0 / math.sqrt(embedding_size)))
我试图删除 stddev 参数,然后 运行 它。但是没发现有什么不同。
stddev 表示标准偏差。为什么使用 stddev 参数以及示例中的 stddev 值是什么意思?
谢谢。
nce_weights是用于实现噪声对比估计训练技术的分类器权重,这是一种训练具有大量标签的分类器的有效方法(参见您最初链接的 word2vec tutorial 部分 "Scaling up with Noise-Contrastive Training" 中的解释)。
这些权重将在训练期间学习,但首先需要在训练开始时对其进行初始化。我们通过从截断的正态分布(所有值都在其均值的 2 个标准差范围内的正态分布)中抽取随机权重来做到这一点。这是通过传入 tf.truncated_normal op as initializer in the call to tf.Variable 来实现的。截断法线初始化器将形状、均值和标准差作为参数(有关参数及其定义,请参见上面链接的页面)。最后两个是我们将从中提取的截断高斯分布的充分统计量。
当您不传递这些参数时(如您所提到的),它们只会被初始化为默认值(在 stddev 的情况下为 1.0)。