“alpha”和“start_alpha”之间的区别

问题描述

我想使用“gensim”训练一个 Word2Vec 模型。我想确定初始评级率。但是,据说“alpha”和“start_alpha”参数都可以用于这样做。它们之间有什么区别?它们是一样的吗?

解决方法

参数alpha用于the constructor

classgensim.models.word2vec.Word2Vec(sentences=None,corpus_file=None,vector_size=100,alpha=0.025,window=5,min_count=5, max_vocab_size=无,样本=0.001,种子=1,工人=3, min_alpha=0.0001,sg=0,hs=0,负=5,ns_exponent=0.75,cbow_mean=1,hashfxn=,epochs=5,null_word=0,trim_rule=无,sorted_vocab=1,batch_words=10000,compute_loss=False, callbacks=(),comment=None,max_final_vocab=None)

而参数 start_alpha 用于 train 方法:

train(corpus_iterable=None,total_examples=None,total_words=None,epochs=None,start_alpha=None,end_alpha=None, word_count=0,queue_factor=2,report_delay=1.0,compute_loss=False, 回调 =(),**kwargs)

至于使用:

start_alpha (float,optional) – 初始学习率。如果提供, 替换构造函数中的起始 alpha,对于这个调用 到train()。仅在多次调用 train() 时使用,当您 想要自己管理 alpha 学习率(不推荐)。

,

它们本质上是一样的。如果在构造函数中指定非默认值:

  • 它们在模型中缓存为 alpha & min_alpha

  • 如果您还选择在构造函数中指定训练语料库 (sentences/corpus_iterable/corpus_file),则 alpha & {{1 }} 将成为自动 min_alpha

    start_alpha,end_alpha

如果您改为显式调用 .train()

  • 您可以指定一个 .train()start_alpha,仅用于该调用,它将代替构造函数期间设置的值(但不会缓存在模型中以供将来调用)

如果你在同一个模型上多次调用 end_alpha 出于某种原因——这通常是一个不必要的坏主意,除非在一些非标准的专家使用情况下——很可能您希望在每次调用中正确选择 .train() 范围的正确进展(这样它就不会无意义地上下跳动)。

专家使用是单独的、非缓存的 alphastart_alpha 参数存在的真正原因。大多数用户应该坚持使用默认值(所以不要使用任何这些),如果他们真的到了修补的地步,只需在构造函数中尝试不同的 end_alpha 值,仔细监控它是否有帮助。