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