Это седьмой день моего участия в августовском испытании обновлений. Узнайте подробности мероприятия: Испытание августовского обновления
В этой статье представлены некоторые другие приемы глубокого обучения.
Early Stop
На приведенном выше рисунке показано, что по мере увеличения периода обучения точность тренировочного набора также продолжает расти, но после достижения определенной точки точность тестового набора начинает снижаться, и в этот момент возникает явление переобучения. Обычно мы используем Validation Set, чтобы обнаружить критическую точку, остановить обучение, когда будет получено максимальное значение, и сохранить параметры, полученные в это время, для окончательных параметров модели.
Введение Early Stop остановит обучение досрочно, то есть после того, как Точность теста поднимется до критического значения и не изменится, обучение будет остановлено.
Из этого мы резюмируем, как рано остановиться:
- Validation set to select paramters
- Monitor validation performance
- Stop at the highest val preformace
Dropout
Dropout — очень эффективное средство предотвращения переобучения.Его допущения:
- Не изучайте все параметры, изучайте только допустимые параметры.
- Каждый слой нейронов имеет определенную вероятность деактивации, а каждый слой связей имеет определенную вероятность потери
Его специфика рабочего процесса заключается в том, что в процессе прямого распространения вес связи между нейронами в разных слоях, есть определенная вероятность того, что он временно будет считаться равным 0 (заметим, что это не даетприсвоено значение 0). Через Dropout в каждом процессе обучения более или менее не учитываются некоторые параметры, что эффективно снижает объем вычислений и делает модель более обобщаемой.
Добавить отсев в pytorch тоже очень просто
net_dropped = torch.nn.Sequential(
torch.nn.Linear(784, 200),
torch.nn.Dropout(0.5),# drop 50% of the neuron
torch.nn.ReLU(),
torch.nn.Linear(200, 200),
torch.nn.Dropout(0.5),
torch.nn.ReLU(),
torch.nn.Linear(200, 10),
)
Следует отметить, что Dropout не следует устанавливать во время проверки, Dropout используется только во время обучения.
Stochastic Gradient Descent
На каждой итерации градиентный спуск используетвесь набор обучающих данныхдля вычисления градиента, поэтому его иногда называют пакетным градиентным спуском. В то время как стохастический градиентный спуск (Stochastic Gradient Descent) только случайным образом выбирает выборку на каждой итерации для вычисления градиента
Например, первоначальный расчет потерь предполагает 60 000 данных, тогда формула для обновления градиента выглядит следующим образом:
Этот расчет очень сложен, но если вы возьмете данные размера пакета из данных размером 60 КБ, предполагая, что пакет составляет всего 1 КБ, это может значительно сократить объем вычислений.