Вывод: мы собрали для вас рекомендации по отладке и настройке для распространенных проблем с точностью и поделимся ими в виде серии статей «Практика настройки точности модели MindSpore», чтобы помочь вам легко определить точность проблемы и быстро оптимизировать точность модели.
Эта статья опубликована в сообществе HUAWEI CLOUD."Техническая галантерея | Более быстрая проблема с точностью позиционирования! Практика настройки точности модели MindSpore (1)", оригинальный автор: HWCloudAI.
Введение: Во время разработки модели часто возникает головная боль, когда точность не соответствует ожиданиям. Чтобы помочь всемРешить задачу отладки и настройки модели, мы разработали компоненты визуальной отладки и настройки для MindSpore:MindInsight.
Он также решает общие проблемы с точностью для всех.Руководство по настройке отладки, будут опубликованы в виде серии статей «Практика настройки точности модели MindSpore», которые помогут вам легко обнаружить проблемы с точностью и быстро оптимизировать точность модели.
Эта статья является первой в серии публикаций. В ней кратко представлены распространенные проблемы точности, проанализированы распространенные явления и причины проблем точности, а такжеОбщие идеи тюнинга. Эта серия сообщений предполагает, что ваш сценарий смог запуститься и рассчитать стоимость потерь. Если сценарий по-прежнему не запускается, обратитесь к соответствующему сообщению об ошибке, чтобы внести изменения. В практике точной настройки найти аномалии относительно легко. Однако, если мы недостаточно чувствительны, чтобы объяснить аномалию, мы все равно упустим основную причину проблемы. В этой статье объясняются распространенные проблемы с точностью, что позволяетПовысьте свою чувствительность к аномалиям,Помочь вам быстрее обнаружить проблемы с точностью.
1. Общие явления и причины проблем с точностью
Проблема точности модели отличается от общей проблемы программного обеспечения, и цикл позиционирования обычно длиннее. В обычной программе вывод программы не соответствует ожидаемому, что означает наличие ошибки (ошибка кодирования). Но для модели глубокого обучения точность модели не соответствует ожиданиям, есть более сложные причины и больше возможностей. Поскольку точность модели требует много времени для обучения, чтобы увидеть окончательный результат, проблемы с точностью локализации обычно занимают больше времени.
1.1 Обычное явление
Прямое явление проблемы точности обычно отражается в потерях (значении потерь модели) и метриках (метрике модели). Феномен потерь обычно проявляется как (1) убегание потерь, NAN, +/- INF, максимальное значение (2) несходимость потерь, медленная сходимость (3) потери равны 0 и т. д. Показатели модели обычно показывают, что точность модели, прецизионность и другие показатели не соответствуют ожиданиям.
Прямые явления проблем с точностью легче наблюдать.С помощью инструментов визуализации, таких как MindInsight, можно наблюдать больше явлений на тензорах, таких как градиенты, веса и значения активации. Общие явления, такие как: (1) исчезновение градиента (2) взрыв градиента (3) вес не обновляется (4) изменение веса слишком мало (5) изменение веса слишком велико (6) насыщение значения активации и т. д.
1.2 Общие причины
Если есть результат, должна быть и причина.За явлением стоит причина проблемы точности, которую можно просто разделить на такие категории, как проблемы гиперпараметров, проблемы структуры модели, проблемы данных и проблемы проектирования алгоритмов:
1.2.1 Проблема гиперпараметров
Гиперпараметры являются связующим звеном между моделью и данными, и выбор гиперпараметров напрямую влияет на то, насколько хорошо модель соответствует данным. Общие проблемы с гиперпараметрами следующие:
1. Необоснованная настройка скорости обучения (слишком большая, слишком маленькая)
2. Параметр loss_scale необоснован
3. Необоснованные параметры инициализации веса и т.д.
4. эпоха слишком велика или слишком мала
5. Размер партии слишком велик
Скорость обучения слишком велика или слишком мала. Скорость обучения, возможно, является наиболее важным гиперпараметром в обучении моделей. Если скорость обучения слишком велика, потери будут колебаться и не смогут приблизиться к ожидаемому значению. Если скорость обучения слишком мала, потери будут сходиться медленно. Стратегию скорости обучения следует выбирать рационально, основываясь на теории и опыте.
эпоха слишком велика или слишком мала. Количество эпох напрямую влияет на то, является ли модель недообученной или переоснащенной. Если эпоха слишком мала, модель прекращает обучение до того, как достигнет оптимального решения, и ее легко недообучить; если эпоха слишком велика, время обучения модели слишком велико, и ее легко переобучить на обучающем наборе. и не достичь оптимального решения на тестовом наборе Эффект. Количество эпох следует выбирать разумно в соответствии с изменениями влияния модели на проверочный набор в процессе обучения. размер партии слишком велик. Когда размер пакета слишком велик, модель может не сходиться к оптимальному минимальному значению, тем самым снижая способность модели к обобщению.
1.2.2 Проблемы с данными
а. Проблемы с набором данных
Качество набора данных определяет верхний предел эффекта алгоритма.Если качество данных низкое, лучший алгоритм трудно достичь хороших результатов. Общие проблемы с набором данных следующие:
1. Слишком много пропущенных значений в данных
2. Количество образцов в каждой категории не сбалансировано
3. В данных есть выбросы
4. Недостаточное количество обучающих выборок
5. Данные неправильно помечены
В наборе данных есть пропущенные значения и выбросы, что приведет к тому, что модель узнает неправильную связь данных. Как правило, данные с отсутствующими данными или выбросами должны быть удалены из обучающей выборки или установлены разумные значения по умолчанию. Ошибка метки данных является частным случаем выбросов, но эта ситуация более разрушительна для обучения, и такие проблемы следует выявлять заранее, выборочно проверяя ввод данных в модель.
Количество выборок в каждой категории в наборе данных несбалансировано, что означает, что существует большой разрыв в количестве выборок в каждой категории в наборе данных. Например, в наборе данных классификации изображений (обучающем наборе) большинство категорий имеют 1000 отсчетов, но категория «кошка» имеет только 100 отсчетов, поэтому можно считать, что имеется дисбаланс в количестве отсчетов. Несбалансированное количество выборок приведет к плохой работе модели при прогнозировании классов с небольшим количеством выборок. Если существует дисбаланс в количестве выборок, должны быть добавлены выборки из категорий с небольшим размером выборки. Как правило, контролируемые алгоритмы глубокого обучения достигают приемлемой производительности с 5000 помеченных образцов на класс, а модели превосходят людей, когда в наборе данных более 10 миллионов помеченных образцов.
Недостаточное количество обучающих выборок означает, что обучающая выборка слишком мала по сравнению с емкостью модели. Недостаточное количество обучающих выборок может привести к нестабильности обучения и склонности к переобучению. Если количество параметров модели не пропорционально количеству обучающих выборок, следует рассмотреть возможность увеличения обучающих выборок или уменьшения сложности модели.
б) Проблемы с обработкой данных Общие проблемы с обработкой данных заключаются в следующем:
1. Общие проблемы алгоритма обработки данных
2. Неверные параметры обработки данных и т.п.
3. Данные не нормализованы или нормализованы
4. Метод обработки данных не соответствует обучающей выборке.
5. Нет перетасовки набора данных
Данные не нормализованы и не стандартизированы, что означает, что данные, вводимые в модель, имеют разные масштабы. Как правило, модель требует, чтобы данные в каждом измерении находились в диапазоне от -1 до 1 со средним значением 0. Если между шкалами двух измерений существует разница на порядок, это может повлиять на эффект обучения модели, и данные необходимо нормализовать или стандартизировать. Несоответствие между методом обработки данных и обучающей выборкой означает, что при использовании модели для вывода метод обработки несовместим с обучающей выборкой. Например, параметры масштабирования, обрезки, нормализации изображения и обучающего набора различаются, что приведет к различиям между распределением данных во время вывода и распределением данных во время обучения, что может снизить точность вывода модели. Примечания. Некоторые операции дополнения данных (такие как случайное вращение, случайное кадрирование и т. д.) обычно применяются только к обучающему набору, и во время логического вывода не требуется никакого дополнения данных.
Набор данных не перемешивается, что означает, что набор данных не перемешивается во время обучения. Без перетасовки или недостаточной перетасовки модель всегда будет обновляться в одном и том же порядке данных, что серьезно ограничивает избирательность направления оптимизации градиента, приводя к меньшему пространству выбора для точек сходимости и легкому переоснащению.
1.2.3 Алгоритмические проблемы
Сам алгоритм ошибочен, и точность не соответствует ожиданиям.
а. Проблемы с использованием API
Распространенные проблемы с использованием API:
1. Использование API не соответствует ограничениям MindSpore.
2. При компоновке изображения не соблюдаются ограничения конструкции MindSpore.
Использование API не соответствует ограничениям MindSpore, что означает, что используемый API не соответствует реальному сценарию приложения. Например, в сценариях, где делитель может содержать ноль, следует рассмотреть возможность использования DivNoNan вместо Div, чтобы избежать проблем с делением на ноль. Для другого примера, в MindSpore первый параметр DropOut — это вероятность удержания, что противоположно другим фреймворкам (другие фреймворки — это вероятность выпадения), поэтому при его использовании нужно обращать внимание.
Композиция не соответствует ограничениям конструкции MindSpore, что означает, что сеть в режиме графа не соответствует ограничениям, объявленным в поддержке синтаксиса статического графа MindSpore. Например, MindSpore в настоящее время не поддерживает обратные функции с аргументами ключ-значение. Полные ограничения см.пора ума. может /doc/note/this…, Проблема структуры вычислительного графа
Структура вычислительного графа является носителем расчета модели, и ошибка структуры вычислительного графа, как правило, вызвана неправильным кодом при реализации алгоритма. Общие проблемы со структурами вычислительных графов:
1. Неправильно используется оператор (используемый оператор не подходит для целевой сцены)
2. Ошибка разделения веса (общие веса, которые не должны делиться)
3. Ошибка подключения узла (должен быть подключен к блоку в графе расчета не подключен)
4. Неправильный режим узла
5. Ошибка замораживания веса (замораживаются гири, которые не должны быть заморожены)
6. Функция потерь неверна
7. Ошибка алгоритма оптимизатора (если оптимизатор реализован сам по себе) и т.д.
Ошибка разделения веса означает, что вес, который должен быть разделен, не используется совместно, или вес, который не должен использоваться совместно, является общим. Этот тип проблемы можно проверить с помощью визуализации вычислительного графа MindInsight.
Ошибка фиксации веса означает, что вес, который должен быть заморожен, не заморожен, или вес, который не должен быть заморожен, заморожен. В MindSpore замораживание веса может быть достигнуто путем управления параметром params, переданным в оптимизатор. Параметры, не переданные оптимизатору, не будут обновлены. Заморозку веса можно подтвердить, проверив скрипт или посмотрев на график распределения параметров в MindInsight.
Ошибка соединения узла означает, что соединение и конструкция каждого блока в расчетном графе несовместимы. Если вы обнаружите ошибки подключения к узлу, вам следует дважды проверить свой сценарий на наличие ошибок.
Неправильный режим узла относится к некоторым операторам, которые различают режимы обучения и вывода, и режим необходимо установить в соответствии с реальной ситуацией. Типичные из них включают: (1) оператор BatchNorm, режим обучения BatchNorm должен быть включен во время обучения, этот переключатель будет автоматически включен при вызове net.set_train(True) (2) оператор DropOut, оператор DropOut не должен использоваться во время умозаключения.
Функция потерь неверна, что означает, что алгоритм функции потерь реализован неправильно, или не выбрана разумная функция потерь. Например, BCELoss и BCEWithLogitsLoss различны, и их следует выбирать в зависимости от того, требуется ли сигмовидная функция.
C. Проблема инициализации веса
Начальное значение веса является отправной точкой обучения модели, и необоснованное начальное значение повлияет на скорость и эффект обучения модели. Общие проблемы с инициализацией веса следующие:
1. Начальное значение веса равно 0
2. Начальное значение веса разных узлов в распределенной сцене разное
Начальное значение веса равно 0, что означает, что значение веса равно 0 после инициализации. Обычно это вызывает проблемы с обновлением веса, и веса должны быть инициализированы случайными значениями.
Начальное значение веса разных узлов в распределенной сцене разное, значит, начальное значение веса с одинаковым именем на разных узлах после инициализации разное. Обычно MindSpore выполняет глобальное AllReduce для градиентов. Убедитесь, что величина обновления весов одинакова в конце каждого шага, чтобы обеспечить согласованность весов на каждом узле на каждом шаге. Если при инициализации веса каждого узла будут разными, то при следующем обучении веса разных узлов будут в разных состояниях, что напрямую повлияет на точность модели. В распределенных сценариях начальное значение весов должно быть согласованным путем фиксирования одного и того же начального числа случайных чисел.
1.3 Существует несколько возможных причин одного и того же явления, что затрудняет локализацию проблемы с точностью.
Взяв в качестве примера несхождение потерь (ниже), любая проблема, которая может привести к насыщению активаций, исчезновению градиентов и неправильным обновлениям веса, может привести к несовпадению потерь. Например, некоторые веса неправильно заморожены, используемая функция активации не соответствует данным (используется функция активации relu, а все входные значения меньше 0), а скорость обучения слишком мала.
2. Обзор идей тюнинга
Ввиду явлений и причин вышеупомянутых проблем с точностью несколько часто используемых идей настройки заключаются в следующем: проверьте код и гиперпараметры, проверьте структуру модели, проверьте входные данные и проверьте кривую потерь. Если в приведенных выше идеях не обнаружено проблем, мы можем довести обучение до конца и проверить, соответствует ли ожидаемая точность (в основном метрики модели).
Среди них проверка структуры модели и гиперпараметров направлена на проверку статических характеристик модели; проверка входных данных и кривой потерь представляет собой комбинацию статических характеристик и динамических явлений обучения; проверка того, соответствует ли точность ожиданиям, заключается в повторном изучении общей процесс настройки точности. Рассмотрите такие методы настройки, как настройка гиперпараметров, объяснение моделей и оптимизация алгоритмов.
Чтобы помочь пользователям эффективно реализовать описанные выше идеи настройки точности, MindInsight предоставляет вспомогательные возможности, как показано на рисунке ниже. После последующих статей этой серии мы расскажем о подготовке к точной настройке, подробностях каждой идеи настройки и о том, как использовать функции MindInsight для отработки этих идей настройки, так что следите за обновлениями.
3. Контрольный список проблем с точностью
Наконец, мы собрали общие вопросы точности для вашего удобства:
Вы рады узнать о ключевых технологиях MindSpore? торопиться【нажмите на ссылку】И [зарегистрируйтесь сейчас], вы можете изучить классический кейс на платформе ModelArts, чтобы освоить глубокое обучение на основе MindSpore!
Нажмите «Подписаться», чтобы впервые узнать о новых технологиях HUAWEI CLOUD~