忍者ブログ

軽Lab

 Javaを中心とした、プログラミング関係のナレッジベース

Home > Javaで機械学習 - Deeplearning4j入門 > Java DeepLearning4j パラメータの設定

Java DeepLearning4j パラメータの設定

Deeplearning 4jではニューラルネットワークの各パラメータ/ハイパーパラメータを関数で設定できる。ニューラルネットワーク全体に関わるパラメータは NeuralNetConfiguration.Builderクラスに対して設定し、各層に関わるパラメータはLayer.Builderクラスに対し て設定する。以下にDeeplearning 4jにおける主な設定項目を示す。すべてのパラメータ一覧はJavaDoc(*1,*2,*3)やリファレンス(*4)を参照のこと。

ニューラルネットワーク全体(NeuralNetConfiguration.Builder)の設定項目

 NeuralNetConfiguration.Builderで設定する主な項目は以下の通りである。

設定項目 内容
seed関数 ランダム値の生成に利用するシード値を指定
iterations関数 1回のMultiLayerNetwork::fit関数呼出で学習する回数を指定
learningRate関数 学習率\(\eta\)を指定。デフォルトは0.1
miniBatch関数 ミニバッチ学習をするかどうかを指定
regularization関数 正規化を行うかどうかを指定
l1 , l2 関数 L1正規化、L2正規化を指定。過学習を防ぐために利用
weightInit関数 重みパラメータの初期化方法を指定。デフォルトはWeightInit.VI
設定値 内容
DISTRIBUTION 入力次元に基づいた分布
NORMALIZED 正規分布
ZERO 0
SIZE 入力の次元(shape)の最大値~最小値の一様分布(と思われる)
UNIFORM 入力の最大値~最小値の一様分布(と思われる)
VI 分散が正規化された値
RELU 平均=0、分散=\(\frac{2}{nIn}\)の正規分布
XAVIER 平均=0、分散=\(\frac{1}{nOut+nIn}\)の正規分布
optimizationAlgo関数 学習アルゴリズムを指定。デフォルトはOptimizationAlgorithm.CONJUGATE_GRADIENT
設定値 内容
CONJUGATE_GRADIENT 共役勾配法
HESSIAN_FREE Hessian-Free法
LBFGS L-BFGS法
LINE_GRADIENT_DESCENT 直線探索を用いた確率的勾配降下法
STOCHASTIC_GRADIENT_DESCENT 確率的勾配降下法
updater関数 学習アルゴリズムでパラメータ学習する際の拡張方法を指定。(*8)
設定値 内容
ADADELTA 勾配を利用したアップデータ及び学習アルゴリズム。SGD(ネットワーク内のパラメータ更新に同じ学習率を利用)とは異なり、パラメータ毎に学習率を変化させる。
論文「ADADELTA: AN ADAPTIVE LEARNING RATE METHOD」
ADAGRAD 勾配の2乗をモニタリングすることにより、パラメータ毎に学習率を最適化する。SGDの代わりに利用でき、スパースなデータに有効。
論文「Adaptive Subgradient Methods for Online Learning and Stochastic Optimization」
ADAM rmspropに似たアップデータ。勾配の移動平均を利用する
論文「Adam: A Method for Stochastic Optimization」
CUSTOM 自身で定義
NESTEROVS 論文「Advances in Optimizing Recurrent Networks」
NONE なし
RMSPROP 論文「Generating Sequences With Recurrent Neural Networks」
SGD 確率的勾配降下法
momentu関数 慣性項を指定。学習を早くするために利用する
list関数 この関数呼び出し後にニューラルネットワークの層を宣言する
layer関数 ニューラルネットワークの層の構成情報を追加する

ニューラルネットワークの層(Layer.Builder)の設定項目

 Layer.Builderで設定する主な項目は以下のとおりである。

設定項目 内容
nln関数 入力データ数を指定。
nOut関数 出力データ数を指定。
activation関数 活性化関数を指定。デフォルトは「"sigmoid"」
設定値 内容
"identity" 恒等変換\(f(x)=x\)
"relu"  ランプ関数
"tanh" ハイパボリック・タンジェント
"sigmoid" シグモイド関数
"softmax" ソフトマックス関数
"hardtanh" hard tanh
"leakyrelu" 論文「Rectifier Nonlinearities Improve Neural Network Acoustic Models 」
"maxout" maxout関数
"softsign" ソフトサイン関数
"softplus" ソフトプラス関数
LossFunction
(Layer.Builderの引数)
誤差関数を指定。
設定値 内容
MSE 誤差の平方和(線形回帰)
EXPLL 対数尤度関数(ポアソン回帰)
XENT 交差エントロピー(二項分類)
MCXENT 交差エントロピー(多クラス分類)
NEGATIVELOGLIKELIHOOD 負の対数尤度関数
RECONSTRUCTION_CROSSENTROPY Reconstruction 交差エントロピー
RMSE_XENT RMSE 交差エントロピー
SQUARED_LOSS 二乗損失
CUSTOM 自身で誤差関数を定義


■ 参照

  1. JavaDoc DeepLearning4j
  2. JavaDoc ND4J
  3. JavaDoc 「Class Layer.Builder>」
  4. DeepLearning4j 公式 「NeuralNetConfiguration Class」
  5. JavaDoc 「Enum WeightInit」
  6. JavaDoc 「Enum OptimizationAlgorithm」
  7. JavaDoc 「Enum Updater」
  8. DeepLearning4j 公式 「Deeplearning4j Updaters Explained」
  9. 俺とプログラミング 「CNNの学習に最高の性能を示す最適化手法はどれか」
  10. JavaDoc 「Enum LossFunctions.LossFunction」
Home > Javaで機械学習 - Deeplearning4j入門 > Java DeepLearning4j パラメータの設定

- ランダム記事 -
- PR -

コメント

プロフィール

管理者:
 連絡はContactよりお願いします。

PR