Обучение сети глубокого обучения, решение проблемы Нэн в растерянности
Обучение сети глубокого обучения, решение проблемы Нэн в растерянности
Каталог статей

Предисловие

1. Причины

2. Типичные примеры

1. Градиентный взрыв

2. Неправильная функция потерь.

3. Неправильный ввод


Предисловие

Обучение модели — это не просто корректировка параметров. Важно уметь находить правильные решения различных возникающих проблем. В этой статье проводится подробный анализ причин, по которым появляется потеря обучающей сети, Нэн, и представлены подробные решения, я надеюсь, что она будет полезна всем при обучении модели.


1. Причины

Вообще говоря, NaN возникает в следующих ситуациях:

  1. Если NaN появляется в течение 100 раундов итераций, общая причина заключается в том, что ваша скорость обучения слишком высока и вам необходимо снизить скорость обучения. Скорость обучения можно непрерывно снижать до тех пор, пока NaN не появится. Вообще говоря, она может быть в 1–10 раз ниже существующей скорости обучения.
  2. Если текущая сеть представляет собой рекуррентную нейронную сеть, подобную RNN, может появиться NaN, поскольку градиентный причиной взрыва, эффективным способом является увеличение «градиента отсечение» (усечение градиента для решения).
  3. Возможно, 0 используется в качестве делителя.
  4. В качестве натурального логарифма можно использовать 0 или отрицательное число.
  5. Массив, который необходимо вычислить на предмет потерь, находится за пределами границ (особенно если вы сами определяете новую сеть, такое может случиться).
  6. В некоторых случаях, связанных с экспоненциальными вычислениями, окончательное расчетное значение может быть INF (бесконечность) (например, числитель и знаменатель softmax без другой обработки должны вычислять ex(x), а значение слишком велико, и окончательное значение может быть INF/INF, что приведет к NaN. В этом случае вы должны убедиться, что используемый вами softmax выполнил соответствующую обработку (например, вычитание максимального значения и т. д.) при вычислении exp(x).
  7. При тренировке глубины сети,Проблема отсутствия меток также приведет к тому, что потери всегда будут nan.,Нужно проверить этикетку.

2. Типичные примеры

1. Градиентный взрыв

причина:Градиент становится очень большим,Затруднение продолжения процесса обучения.

Феномен:наблюдатьlog,Обратите внимание на потери после каждой итерации. С каждой итерацией потери становятся все больше и больше.,Наконец-то превышен диапазон представления с плавающей запятой,Оно становится NaN.

мера:

  • Уменьшите base_lr в Solver.prototxt хотя бы на порядок. Если имеется несколько потерь слое, вам нужно выяснить, какие потери вызвал градиентный взрыв,И уменьшите loss_weight этого слоя в train_val.prototxt.,Вместо уменьшения общего значения base_lr.
  • Установите градиент клипа, чтобы ограничить слишком большие различия.
2. Неправильная функция потерь.

причина:Иногда слой потерьlossРасчет может привести кNaNвнешний вид。например,Ввод ненормализованных значений в слой InfogainLoss (потери энтропии информации),Используйте собственные слои потерь с ошибками и многим другим.

Феномен:в результате наблюдательной тренировкиlogНа первый взгляд исключений не видно,Потери также постепенно уменьшаются,Но внезапно появляется NaN.

мера:Посмотрите, сможете ли вы воспроизвести ошибку,в убытке Добавьте выходные данные в слой для отладки.

3. Неправильный ввод

причина:Входные данные содержатNaN。

Феномен:Всякий раз, когда я сталкиваюсь с этим неправильным вводом в процессе обучения,станет NaN. Возможно, вы не сможете обнаружить какие-либо отклонения при просмотре журнала.,потери постепенно уменьшаются,Но внезапно оно становится NaN.

мера:Измените свой набор данных,Убедитесь, что в обучающем наборе и наборе проверки нет поврежденных изображений. Во время отладки вы можете использовать простую сеть для чтения входного слоя.,Есть потеря по умолчанию,и пройти через все входные данные,Если есть неправильные входные данные,Этот слой по умолчанию также создает NaN.

ссылка:https://zhuanlan.zhihu.com/p/599887666

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose