gpt4 book ai didi

gensim - 我的 Doc2Vec 代码,经过多次循环/训练后,并没有给出好的结果。可能出了什么问题?

转载 作者:行者123 更新时间:2023-12-05 01:35:31 25 4
gpt4 key购买 nike

我正在使用下面的代码训练一个 Doc2Vec 模型,其中 tagged_data 是我之前设置的 TaggedDocument 实例的列表:

max_epochs = 40

model = Doc2Vec(alpha=0.025,
min_alpha=0.001)

model.build_vocab(tagged_data)

for epoch in range(max_epochs):
print('iteration {0}'.format(epoch))
model.train(tagged_data,
total_examples=model.corpus_count,
epochs=model.iter)
# decrease the learning rate
model.alpha -= 0.001
# fix the learning rate, no decay
model.min_alpha = model.alpha

model.save("d2v.model")
print("Model Saved")

当我稍后检查模型结果时,它们并不好。可能出了什么问题?

最佳答案

请勿调用.train()在你自己的循环中多次尝试做 alpha算术。

这是不必要的,而且容易出错。

具体来说,在上面的代码中,递减原来的0.025阿尔法 0.001四十次导致 ( 0.025 - 40*0.001 ) -0.015决赛 alpha ,这对于许多训练时期来说也是负面的。但是负数alpha 学习率 是荒谬的:它本质上是要求模型将其预测向错误方向移动一点,而不是向正确移动一点em> 方向,在每次批量训练更新时。 (此外,由于 model.iter 默认为 5,上面的代码实际上执行了 40 * 5 训练遍 – 200 – 这可能不是有意识的意图。但这只会让代码的读者感到困惑并减慢训练速度,而不是完全破坏结果,如 alpha 处理不当。)

这里还有其他常见的错误变体。如果alpha而是减少了 0.0001 , 40 次递减只会减少最终的 alpha0.021 – 而这种具有线性学习率衰减的 SGD(随机梯度下降)风格的正确做法是让值“非常接近 0.000”结束。如果用户开始修补 max_epochs – 毕竟,它是一个被拉到最上面的参数! – 但不要每次都调整减量,它们很可能远低于或远超过0.000 .

所以不要使用这种模式。

不幸的是,许多糟糕的在线示例相互复制了这种反模式,在他们自己的中犯了严重的错误epochsalpha处理。请不要复制他们的错误,并请让他们的作者知道他们在任何出现此问题的地方误导人们。

可以通过更简单的替换来改进上面的代码:

max_epochs = 40
model = Doc2Vec() # of course, if non-default parameters needed, use them here
# most users won't need to change alpha/min_alpha at all
# but many will want to use more than default `epochs=5`

model.build_vocab(tagged_data)
model.train(tagged_data, total_examples=model.corpus_count, epochs=max_epochs)

model.save("d2v.model")

在这里,.train()方法将完全执行请求的数量 epochs ,顺利减少内部有效alpha从其默认起始值​​到接近零。 (很少需要更改起始 alpha ,但即使您愿意,只需在初始模型创建时设置一个新的非默认值就足够了。)

另请注意,稍后调用 infer_vector()将重用 epochs在创建模型时指定。如果未指定任何内容,则默认 epochs=5将被使用——通常小于最适合训练或推理的值。所以如果你找到更多的epochs (例如 10、20 或更多)更适合训练,请记住至少使用相同数量的 epochs进行推理。 ( .infer_vector() 采用可选的 epochs 参数,该参数可以覆盖模型构造时设置的任何值。

关于gensim - 我的 Doc2Vec 代码,经过多次循环/训练后,并没有给出好的结果。可能出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62801052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com