我正在尝试使用 deeplearning4j从头开始复制论文 NLP(几乎) 。我已完成以下步骤:
- 加载 SENNA 词向量
- 为 CoNLL'03 数据集编写一个迭代器:对于每个单词,我通过连接其相邻单词的单词向量来形成一个单词特征向量(窗口大小 = 5)
- 使用上面的数据集迭代器来训练一个简单的回归层,例如:
MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
.seed(seed).iterations(iterations)
.learningRate(1e-8f)
.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)
.list(2)
.layer(0, new DenseLayer.Builder()
.nIn(wordVecLayers * windowSize).nOut(hiddenSize)
.activation("relu")
.weightInit(WeightInit.DISTRIBUTION)
.dist(new UniformDistribution(-2.83 / Math.sqrt(hiddenSize), 2.83 / Math.sqrt(hiddenSize)))
.biasInit(0.0f).build())
.layer(1, new OutputLayer.Builder(LossFunction.NEGATIVELOGLIKELIHOOD)
.nIn(hiddenSize).nOut(types.size())
.activation("softmax").weightInit(WeightInit.DISTRIBUTION)
.dist(new UniformDistribution(-2.83 / Math.sqrt(hiddenSize), 2.83 / Math.sqrt(hiddenSize)))
.biasInit(0.0f).build())
.backprop(true).pretrain(false)
.build();
我尝试了许多不同的配置,但没有一个对我有用。该模型继续预测所有带有“O”标签的单词。如果您能指出我的方法有什么问题,我将不胜感激?下一步我应该做什么?谢谢!