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」タグを持つすべての単語を予測し続けます。私のアプローチの何が問題なのかを指摘していただければ幸いです。次にどのような手順を踏む必要がありますか? ありがとうございました!