Сначала поговорим о структуре сети независимо от функции активации. Мы знаем, что для любой активации y_i = I (w_i, x) сам аргумент выражается в виде скалярного произведения векторов w_i и x перед рассмотрениемсама функция. Итак, один удобный способ думать об этом состоит в том, что каждый слой в сети - это просто линейное преобразование самого входного вектора: Wx . Итак, чтобы перейти от вектора пространственных объектов 20 * x к выходу 10-мерного, а затем 5-мерного, нам понадобится две матрицы: 10x20 (назовем Hidden Layer 1 W_1 ) и 5x10 (назовем Hidden Layer 2 W_2 . Отсюда следует, что входной слой ( W_0 ) будет просто диагональной матрицей 20x20, сдиагональ - это веса, применяемые к каждому отдельному входу, поэтому в некотором смысле Y как вектор 5x1 можно рассматривать как Y = W_2 W_1 W_0 x . Кстати, вы можете сразу увидеть количество необходимых параметров (в данном примере их всего 270).
Существует много споров о том, какие функции активации превосходят, или, по крайней мере, когда я впервые начал исследовать ANN. Следует иметь в виду, что с каждой функцией активации есть компромиссы: эти функции имеют преимущества при определенном обусловливании входного вектора, но также и за счет общих вычислительных затрат. сложность и сниженная чувствительность перед лицом значительных весов. Например, если использовать tanh()
в качестве функции активации, если величина одного веса превышает 100x других, дельта ошибки обратного распространения резко сместит все остальные веса этого узла, но практически не повлияет наэтот исключительный вес. Это может быть довольно проблематично, так как вы становитесь восприимчивыми к обучению локальным минимумам. Кроме того, d / dx [tanh ( x )] неэффективен в вычислительном отношении при рассмотрении ускорения GPGPU. Но (как бы мне ни приходилось работать с этой функцией), на самом деле она довольно эффективна при работе с частотной областью или экспоненциально коррелированными объектами.
Итак, какой формы будут весы ? Это не простой вопрос, потому что он основан на:
- Структура вашей сети
- Используемая функция активации
- Эвристика обратного распространения (например, CNNвместо общего БП)
- Базовые паттерны в вашем тренировочном наборе
Этот последний является наиболее важным, но легко определить, есть ли базовая форма / структура для весов доповышение квалификации. В качестве передовой практики рекомендуется сначала использовать Анализ основных компонентов (PCA) в вашем тренировочном наборе. Если вы обнаружите, что подавляющее большинство вашего набора может быть разумно представлено очень небольшим подмножеством основных компонентов, есть большая вероятность, что хорошо обученная сеть будет появляться разреженной (или даже полосатой) в самых ранних скрытых слоях.