Я пытаюсь реплицировать бумагу NLP (almost) from scratch используя deeplearning4j. Я сделал следующие шаги:deeplearning4j - используйте Word2Vec для распознавания имен объектов
- нагрузки слова 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'-тега». Я был бы признателен, если бы вы могли указать, что не так с моим подходом? И какие шаги я должен сделать дальше? Спасибо!
Пожалуйста, присоединяйтесь к нам на GITTER и спросить @ raver119 есть: HTTPS : //gitter.im/deeplearning4j/deeplearning4j – tremstat