Encog — использование гибридных нейронных сетей

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

Я просмотрел разные примеры, где используются network.fromArray() и network.toArray(), но я вижу только network.encodeToArray() и network.decodeFromArray(). Каков самый современный способ (v3.2) для передачи весов из одного типа сети в другой? Это то же самое для использования генетических алгоритмов и т. д.?


person poorly_built_human    schedule 13.07.2014    source источник


Ответы (1)


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

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

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

Если вы заглянете внутрь классов NeuralSimulatedAnnealing, то увидите вызовы NetworkCODEC.NetworkToArray() и NetworkCODEC.ArrayToNetwork(). Вот как напрямую обновляется весовой вектор.

person JeffHeaton    schedule 23.08.2014