これは、フィードフォワードニューラルネットワーク(FNN)、再発ニューラルネットワーク(RNN)、長期記憶(LSTM)RNN、双方向RNN、双方向LSTMをサポートするニューラルネットワール言語モデル(NNLMS)ツールキットです。多数の隠れレイヤーを備えたニューラルネットワーク言語モデルは、このツールキットで構築することもでき、隠されたレイヤーのアーキテクチャは異なる場合があります。このツールキットには、ニューラルネットワーク言語モデルのトレーニングとランニングをスピードアップするために、クラスベースの方法が採用されています。このツールキットは、ここで見つけることができるC ++を使用して書き直されています。
NNLMの構成パラメーターは次のとおりです。
| 名前 | 説明 | タイプ | 必須 | デフォルト |
|---|---|---|---|---|
| AC_FUN 1 | 隠された層のアクティベーション関数 | str | タン | |
| アルファ | 学習率 | フロート | 0.01 | |
| alpha_cut | 改善が最小限よりも少ない場合のこの比率によるカットオフ学習率 | フロート | 0.75 | |
| ベータ | 正規化パラメーター | フロート | 1E-6 | |
| en_bias | バイアス用語を有効にします | ブール | 間違い | |
| en_direct | 直接接続を有効にします | ブール | 間違い | |
| file_type | 入力ファイルのタイプは、バイナリとテキスト、「バイナリの「b」、テキストの「t」をサポートします | str | t | |
| gate_fun | LSTM RNNのゲートの活性化関数 | str | シグモイド | |
| gram_order | FNNのn-gramの順序 | int | 5 | |
| hidden_layers 2 | 隠されたレイヤーの名前とサイズ | リスト | √ | |
| input_unit 3 | 入力の単位、サポートワードまたはキャラクター、単語の「w」、キャラクターの「c」 | str | w | |
| 反復4 | 最大反復数 | int | 50 | |
| min_improve 4 | 検証データのエントロピー改善の最小レート | フロート | 1.003 | |
| model_name | 言語モデルの名前を指定します | str | - | |
| output_path | 出力ファイルが保存されるパス | str | √ | - |
| random_seed | ランダムジェネレーター用のシード | int | 1 | |
| cente_end | 文の終わりにマークします | str | < s> | |
| cente_start | 文の開始のためにマーク | str | ||
| test_files | テストファイルが保存されるパス | str | √ | - |
| Train_files | トレーニングファイルが保存されるパス | str | √ | - |
| 不明_word | 不明な単語にマーク | str | oov | |
| valid_files | 検証ファイルが保存されるパス | str | √ | - |
| vector_dim | 単語または文字の機能ベクトルの寸法 | int | 30 | |
| vocab_size 5 | トレーニングデータから学習した語彙のサイズ | int | 10000 |
注: 1。隠された層の活性化関数は、 tanh 、 sigmoid 、 hard_sigmoid 、 relu 、 gaussianの1つである可能性があります。
2。隠されたレイヤーは、 FNN 、 RNN 、 LSTM 、 BiRNNおよびBiLSTMの1つまたは複数であり、[( 'rnn'、30)、( 'fnn'、20)]など、各レイヤーの名前とそのサイズを含むタプルのリストとして指定する必要があります。隠されたレイヤーが1つしかない場合は、タプルだけが問題ありません。隠された層のサイズは互いに一致するはずです。
3。英語、フランス語などの言語の場合、言葉は空白のような空白の文字で区切られているため、 INPUT_UNITEは「w」または「c」に設定できます。中国語のような他の言語は、 INPUT_UNITE = 'C'のみが機能します。
4.トレーニングは、最大反復数に達するか、検証データのエントロピー改善が最小レートが2回発生することを少なくする場合に終了します。
5.トレーニングデータから学んだ単語または文字の数が指定された語彙のサイズを超える場合、低周波の単語または文字は語彙に追加されません。反対に、語彙のサイズは、学習した単語の数にリセットされます。
例は、このツールキットに記載されています。このツールキットに組み込まれている言語モデルの詳細については、私の投稿を参照してください。
モジュールは、MITライセンスの条件の下でオープンソースとして利用できます。