Начните с небольшим количеством итераций (на самом деле это более традиционными для подсчета «эпоха», а не Итерации - «эпохи» относятся к числу итераций по всей совокупности данных, используемой для обучения сети). «Маленьким», скажем, примерно 50 эпох. Причиной этого является то, что вы хотите увидеть, как общая ошибка меняется с каждым дополнительным циклом обучения (эпоха) - надеюсь, что она снижается (подробнее об общей ошибке ниже).
Очевидно, вас интересует точка (количество эпох), где следующая дополнительная эпоха не приводит к дальнейшему уменьшению общей погрешности. Итак, начните с небольшого количества эпох, чтобы вы могли подойти к этому моменту, увеличив эпохи.
Курс обучения, который вы начинаете, не должен быть слишком тонким или слишком грубым (очевидно, субъективным, но, надеюсь, у вас есть грубый смысл для того, что является большой и небольшой скоростью обучения).
Затем вставьте несколько строк кода тестирования в ваш персептрон - на самом деле это всего лишь несколько хорошо сделанных «отпечатков». Для каждой итерации вычисляйте и показывайте дельту (фактическое значение для каждой точки данных в данных обучения минус прогнозируемое значение), затем суммируйте отдельные значения дельта по всем точкам (строкам данных) в данных обучения (я обычно беру абсолютное значение delta, или вы можете взять квадратный корень из суммы квадратов различий - не имеет большого значения. Назовите это суммарное значение «общая ошибка» - просто чтобы быть ясным, это полная ошибка (сумма ошибки в все узлы) в эпоху.
Затем участок суммарная погрешность в зависимости от эпохи числа (т.е. эпоха число на оси х, суммарная погрешность по оси у). Изначально, конечно, вы» Посмотрите точки данных в верхнем левом углу, наклоняющиеся вниз и вправо, и с уменьшающимся уклоном
Пусть алгоритм тренирует сеть против данных обучения. Увеличение эпох (по примеру, 10 в перспективу) до тех пор, пока не увидит кривую (суммарную погрешность в зависимости от количества эпох) расплющить --i.e., Дополнительные итерации не вызывают уменьшение суммарной погрешности.
Таким образом, наклон этой кривой важен, а также ее вертикальное положение - то есть, какая полная ошибка у вас есть, и продолжает ли она двигаться вниз с более циклов обучения (эпох). Если после увеличения эпохи вы в конечном итоге заметите увеличение ошибки, начните с более низкой скорости обучения.
Скорость обучения (обычно это доля от 0,01 до 0,2), безусловно, скажется на быстром обучении сети - т. Е. Она может быстрее перейти на локальный минимум. Это также может заставить вас перепрыгнуть через него. Таким образом, кодируйте цикл, который обучает сеть, скажем, пять раз, используя фиксированное количество эпох (и одну и ту же начальную точку) каждый раз, но изменяя скорость обучения, например, от 0,05 до 0,2, каждый раз, увеличивая скорость обучения на 0,05.
Здесь необходим еще один параметр (хотя и не обязательно), 'momentum'. Как следует из названия, использование момента импульса поможет вам получить достаточно подготовленную сеть быстрее. По сути, импульс является множителем для скорости обучения - пока коэффициент ошибок уменьшается, момент импульса ускоряет прогресс. Интуиция, стоящая за импульсным термином, равна «, пока вы путешествуете в направлении пункта назначения, увеличивайте скорость '. Типичные значения для момента импульса равны 0,1 или 0,2. В вышеприведенной схеме обучения вы, вероятно, должны поддерживать постоянство импульса при изменении скорости обучения.
Это правильный ответ, но не ограничивайте свою скорость обучения и импульс ограниченным доменом (масштабированием). Создайте случайную сеть, поезжайте 0,01-0,99 с шагом 0,05. Если вы не можете избавиться от глобальных минимумов таким образом, убедитесь, что вы правильно нормализировали свои входы. Я большой поклонник журнала! – deepelement