Словарь ИИ
Что такое dropout
Коротко
Dropout это прием обучения нейросетей, при котором на каждом шаге часть нейронов случайно выключают, чтобы сеть не полагалась на отдельные связи.
Машинное обучение · dropout
Михаил МозгПроверено: 1 минута чтения
Ребенку
Представь футбольную команду, где на каждой тренировке тренер наугад сажает нескольких игроков на скамейку. Остальным приходится играть без них, и каждый учится и пасовать, и бить по воротам, и защищаться. В день матча на поле выходят все, и команда играет дружно. Компьютер учат похожим способом, и такой способ называется дропаут.
Простыми словами
Нейросеть состоит из множества маленьких вычислителей, нейронов. Во время обучения некоторые из них начинают работать только в паре с соседями и вместе запоминают случайные детали примеров. Чтобы этого не случилось, на каждом шаге часть нейронов временно выключают, причем каждый раз других. Сеть вынуждена раскладывать знания так, чтобы справиться без любого из них. Когда обучение закончено, никого выключать уже не нужно: работают все нейроны сразу. Похоже на отдел, где сотрудники подменяют друг друга в отпуске и потому знают работу соседей.
Для бизнеса
Dropout почти ничего не стоит: это одна строка в коде модели и одно число, доля выключаемых нейронов. Зато он снижает риск, что сеть, дообученная на небольшом корпусе ваших документов или снимков, запомнит примеры и начнет ошибаться на новых. На скорость и цену ответов готовой модели он не влияет, потому что в работе отключен. Подвох в настройке: слишком большая доля делает модель недоученной, слишком маленькая ничего не дает. Подбирают ее по качеству на отложенных данных. Если подрядчик дообучает сеть на ваших данных, спросите, какие меры против переобучения он применил, и попросите сравнить ошибку на обучении и на проверке. Такое сравнение входит в отчет пилота.
Для специалиста
Dropout это стохастическая регуляризация нейросетей: на каждом шаге обучения выход каждого нейрона независимо обнуляют с вероятностью p. Метод предложили Hinton и соавторы в препринте 2012 года, где на каждом обучающем примере отключали половину детекторов признаков, чтобы подавить их совместную подстройку (co-adaptation); подробное описание и эксперименты дали Srivastava, Hinton и соавторы (JMLR, 2014). Обучение можно понимать как приближенное усреднение множества прореженных подсетей с общими весами, а на тесте работает одна сеть с уменьшенными весами. PyTorch реализует обратный вариант (inverted dropout): при обучении выходы умножают на 1/(1-p), а в режиме оценки слой работает как тождественная функция; p по умолчанию 0,5. Родственные варианты: DropConnect, где обнуляют отдельные веса, пространственный dropout для сверточных карт и Monte Carlo dropout, когда маски оставляют на инференсе, чтобы оценить неопределенность предсказаний.
Пример
Клиника дообучала сеть искать переломы на рентгеновских снимках, а примеров было всего несколько тысяч. Без dropout точность на проверке падала уже через несколько эпох, хотя на обучении росла. С долей отключения около трети разрыв сократился, и модель стабильнее работала на снимках с другого аппарата.
Связанные термины
Вопросы и ответы
Зачем нужен dropout в нейросетях?
Работает ли dropout во время использования модели?
Источники
Где это применяют в компании
Не уверены, нужно ли это вашей компании?
Карта ИИ-решений