Уместно ли использовать как batch_norm, так и dropout в оценщике? - PullRequest
1 голос
/ 05 октября 2019

Я прочитал, что нормализация и выпадение пакетов - это два разных способа избежать перегрузки в нейронных сетях. Уместно ли использовать оба в одной и той же оценке, как указано ниже?

```
  model1 = tf.estimator.DNNClassifier(feature_columns=feature_columns_complex_standardized,
                                    hidden_units=[512,512,512],
                                    optimizer=tf.train.AdamOptimizer(learning_rate=0.001, beta1= 0.9,beta2=0.99, epsilon = 1e-08,use_locking=False),
                                    weight_column=weights,
                                    dropout=0.5,
                                    activation_fn=tf.nn.softmax,
                                    n_classes=10,
                                    label_vocabulary=Action_vocab,
                                    model_dir='./Models9/Action/',
                                    loss_reduction=tf.losses.Reduction.SUM_OVER_BATCH_SIZE,
                                    config=tf.estimator.RunConfig().replace(save_summary_steps=10),
                                    batch_norm=True)

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

И batch normalization, и dropout так или иначе дают эффект регуляризации.

Когда вы применяете batch normalization для шагов нормализации, он видит все обучающие примеры в mini-batch вместе, чтобы уменьшитьinternal covariate shift, который помогает ускорить обучение и не устанавливает низкую скорость обучения, а также дает эффект регуляризации.

Если в сети используется batch normalization, то регуляризация dropout может быть уменьшенаили упал в силе

0 голосов
/ 08 октября 2019

В вашем понимании есть небольшая проблема. Batch Normalization Первоначальное намерение не состоит в том, чтобы уменьшить переоснащение, но ускорить обучение. Так же, как вы нормализуете входные данные во время передачи их на первый уровень вашей сети, пакетная нормализация выполняет это действие на внутренних (или скрытых) слоях. Нормализация партии устраняет эффект covariate shift во время тренировки.

Но так как это применяется к каждой партии отдельно, это приводит к побочному эффекту регуляризации ваших весовых параметров. Этот регуляризирующий эффект очень похож на тот, что вы бы сделали, если бы намеревались решить проблему переторжки.

Вы можете применять оба значения batch_norm и dropout вместе, но рекомендуется уменьшить отсев. В настоящее время ваш показатель отсева на уровне 0,5 очень высок. Я полагаю, что выпадения от 0,1 до 0,2 должно быть достаточно, когда вы применяете его вместе с batch_norm. Кроме того, значение dropout является гиперпараметром, поэтому на него нет фиксированного ответа, и вам, возможно, придется настроить его в соответствии с вашими данными и сетью.

...