КАК: Инициализация веса глубоких нейронных сетей


10

Учитывая сложную задачу обучения (например, высокую размерность, сложность данных), глубокие нейронные сети становятся сложными для обучения. Чтобы облегчить многие из проблем, можно:

  1. Нормализовать && данные качества отобранных вручную
  2. выберите другой алгоритм обучения (например, RMSprop вместо Gradient Descent)
  3. выберите функцию более крутого градиента стоимости (например, перекрестная энтропия вместо MSE)
  4. Используйте другую структуру сети (например, слои Convolution вместо Feedforward)

Я слышал, что есть умные способы инициализации лучших весов. Например, вы можете выбрать величину лучше: Glorot and Bengio (2010)

  • для сигмоидальных единиц: образец униформы (-r, r) с рзнак равно6NяN+NоUT
  • или гиперболические касательные единицы: выборка Униформа (-r, r) с рзнак равно46NяN+NоUT

Есть ли последовательный способ инициализации весов лучше?

Ответы:


7

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


[1] отвечает на вопрос:

Во-первых, веса не должны быть установлены в нули, чтобы нарушить симметрию при обратном программировании:

Смещения, как правило, можно инициализировать до нуля, но необходимо аккуратно инициализировать веса, чтобы нарушить симметрию между скрытыми единицами одного и того же слоя. Поскольку разные выходные блоки получают разные сигналы градиента, эта проблема нарушения симметрии не касается выходных весов (в выходные блоки), которые поэтому также могут быть установлены на ноль.

Некоторые стратегии инициализации:

  • [2] и [3] рекомендуют масштабировать с помощью обратного корня квадратного из веерного входа
  • Glorot и Bengio (2010) и учебные пособия по глубокому обучению используют сочетание разветвления и разветвления:
    • рзнак равно6коэффициент объединения по входу+вентилятор-аут
    • рзнак равно46коэффициент объединения по входу+вентилятор-аут
  • в случае с RBMs, гауссиану с нулевым средним с небольшим стандартным отклонением около 0,1 или 0,01 хорошо работает (Hinton, 2010) для инициализации весов.
  • Ортогональная случайная матрица инициализации, то есть W = np.random.randn(ndim, ndim); u, s, v = np.linalg.svd(W)затем использовать в uкачестве вашей матрицы инициализации.

Кроме того, неконтролируемая предварительная подготовка может помочь в некоторых ситуациях:

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

В некоторых библиотеках ANN также есть несколько интересных списков, например, Lasagne :

Constant([val]) Initialize weights with constant value.
Normal([std, mean]) Sample initial weights from the Gaussian distribution.
Uniform([range, std, mean]) Sample initial weights from the uniform distribution.
Glorot(initializer[, gain, c01b])   Glorot weight initialization.
GlorotNormal([gain, c01b])  Glorot with weights sampled from the Normal distribution.
GlorotUniform([gain, c01b]) Glorot with weights sampled from the Uniform distribution.
He(initializer[, gain, c01b])   He weight initialization.
HeNormal([gain, c01b])  He initializer with weights sampled from the Normal distribution.
HeUniform([gain, c01b]) He initializer with weights sampled from the Uniform distribution.
Orthogonal([gain])  Intialize weights as Orthogonal matrix.
Sparse([sparsity, std]) Initialize weights as sparse matrix.

[1] Бенджо, Йошуа. « Практические рекомендации по градиентной основе подготовки глубоких архитектур. » Нейронные сети: приемы торговли. Springer Berlin Heidelberg, 2012. 437-478.

[2] LeCun, Y., Bottou, L., Orr, GB, и Muller, K. (1998a). Эффективный бэкпроп. В нейронных сетях, хитрости торговли .

[3] Глорот, Ксавье и Йошуа Бенжио. « Понимание сложности обучения глубоких нейронных сетей с прямой связью ». Международная конференция по искусственному интеллекту и статистике. 2010.


2
Что-то, что вы, кажется, упускаете, - нормализация партии. Описано здесь: arxiv.org/abs/1502.03167 Может быть полезным.
Joonatan Samuel

Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun опубликовали новую статью, которая включает вариацию инициализации веса Ксавье от Glorot и Bengio: «Углубление в выпрямители: Превосходная производительность на уровне человека при классификации ImageNet» .
Мюль
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.