【问题标题】:I used word2vec in deeplearning4j to train word vectors, but those vectors are unstable我在 deeplearning4j 中使用 word2vec 训练词向量,但这些向量不稳定
【发布时间】:2015-12-07 23:27:36
【问题描述】:

1.我用IntelliJ IDEA搭建了一个maven项目,代码如下:

    System.out.println("Load data....");
    SentenceIterator iter = new LineSentenceIterator(new File("/home/zs/programs/deeplearning4j-master/dl4j-test-resources/src/main/resources/raw_sentences.txt"));
    iter.setPreProcessor(new SentencePreProcessor() {
        @Override

            return sentence.toLowerCase();
        }
    });
    System.out.println("Build model....");
    int batchSize = 1000;
    int iterations = 30;
    int layerSize = 300;
    com.sari.Word2Vec vec= new  com.sari.Word2Vec.Builder()
            .batchSize(batchSize) //# words per minibatch.
            .sampling(1e-5) // negative sampling. drops words out
            .minWordFrequency(5) //
            .useAdaGrad(false) //
            .layerSize(layerSize) // word feature vector size
            .iterations(iterations) // # iterations to train
            .learningRate(0.025) //
            .minLearningRate(1e-2) // learning rate decays wrt # words. floor learning
            .negativeSample(10) // sample size 10 words
            .iterate(iter) //
            .tokenizerFactory(tokenizer)
            .build();
    vec.fit();
    System.out.println("Evaluate model....");
    double cosSim = vec.similarity("day" , "night");
    System.out.println("Similarity between day and night: "+cosSim);

这段代码参考了deeplearning4j中的word2vec,但结果不稳定高达 0.98,有时低至 0.4?

这是两个实验的结果

Evaluate model....
Similarity between day and night: 0.706292986869812

Evaluate model....
Similarity between day and night: 0.5550910234451294

为什么会出现这样的结果。因为刚开始学习word2vec,有很多知识没看懂,希望前辈能帮帮我,谢谢!

【问题讨论】:

    标签: java word2vec


    【解决方案1】:

    您已设置以下行:

    .minLearningRate(1e-2) // learning rate decays wrt # words. floor learning
    

    但这是一个极高的学习率。高学习率导致模型在任何状态下不“定居”,而是几个更新显着改变了学习的表示。在最初的几个更新中,这不是问题,但对收敛不好。

    解决方案: 允许腐烂的学习速度。 您可以完全留出这一行,或者如果您必须使用更合适的值,例如1E-15

    【讨论】:

    • 真正的。.. 1e-15的学习速率为0.0000000000000001。太低了,由于太小的步长,永远不会到达解决方案。 1e-2没问题。推荐的人因1E-3到1E-5而异。肯定没有进一步。我在Gensim和1E-3上工作过Word2Vec,给出了很好的结果。 span>
    猜你喜欢
    • 2015-12-11
    • 2016-09-05
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    相关资源
    最近更新 更多