Обучающая нейронная сеть с имитацией отжига - PullRequest
1 голос
/ 22 мая 2019

Я пытаюсь обучить простую нейронную сеть с имитацией отжига. Я запрограммировал нейронную сеть с входным слоем из 784 входных узлов (28 x 28 пикселей: я использую базу данных MNIST для обучения), 1 скрытый слой с 100 узлами и выходной слой с 10 конечными узлами. Я также запрограммировал алгоритм имитации отжига, который принимает входной вектор и минимизирует функцию, чтобы получить желаемый выходной вектор.

Теперь мой вопрос: как совместить два? Я прочитал пару статей, но они не указывают точно, как это делается. Я думаю, что идея заключается в следующем:

Инициализируйте вектор случайных весов (в моем случае вектор имеет длину 79 400; 78 400 весов для входного слоя в скрытый слой и 1000 весов для скрытого слоя в выходной слой). Вычислите соответствующий результат, который, конечно, будет неправильным, и сумму квадратов ошибок. Затем переберите вектор весов и слегка откорректируйте каждый вес, добавив или вычтя небольшое число. Для каждой корректировки снова вычислите сумму квадратов ошибок и посмотрите, какая корректировка (добавление или вычитание) уменьшила это значение. Повторение этого процесса, по моему мнению, должно привести к весам, которые соответствуют желаемому результату.

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

Заранее спасибо!

...