Источник контента:18 мая 2018 г. Лю Фанпин, старший инженер по исследованиям и разработкам Baidu, выступил с речью на тему «Обмен опытом проектирования моделей глубокого обучения» на «Открытом курсе Baidu по глубокому обучению · Станция Ханчжоу: быстрое развитие инженеров ИИ». IT Dajiashuo (идентификатор WeChat: itdakashuo), как эксклюзивный видео-партнер, имеет право публиковать видео после просмотра организатором и спикерами.
Количество слов для чтения:3633 | 10 минут чтения
Резюме
В этом докладе будет обсуждаться некоторый опыт проектирования моделей глубокого обучения с четырех аспектов: подготовка данных, структура модели, метод оптимизации и производительность вычислений.
Краткое описание процесса НИОКР
Исходя из личного опыта, общий процесс НИОКР можно условно разделить на 8 этапов.
Анализ проблемы, выявление потребностей
Анализ данных для определения ценности существующих данных (в основном на основе характеристик и распределения)
Извлечение функций, определение функций в соответствии со значением данных и проблемами, которые необходимо решить
Подготовка данных, когда первые три шага завершены, подготовьте набор для обучения, набор для тестирования и набор для проверки.
Анализ модели для определения модели, которую следует выбрать на основе входных и выходных данных проблемы.
Обучение параметрам, повторение модели до сходимости
Проверяйте и оптимизируйте, проверяйте показатели модели и доведите модель до наилучшего состояния.
Приложение онлайн и предоставляет услуги офлайн или онлайн
На протяжении всего процесса мотивация и цели проектирования модели очень важны. К ним относятся определение требований и проблем, создание математических моделей проблемы, определение взаимосвязи между данными и решением проблемы, исследование возможности решения проблемы, а также достижимость и оцениваемость целей.
Опыт подготовки данных
достаточные данные
Для разработки модели сначала должно быть достаточно данных, которые разделены на два уровня. Во-первых, это характеристики данных, которые используются для определения того, может ли быть достигнута цель построения модели.Характеристики должны иметь определенную «причинно-следственную связь», а распределение должно быть «ориентированным». Второй набор данных должен быть как можно большим, DNN требуется много данных, а модель склонна к переоснащению на небольших наборах данных. Рекомендуется, если позволяют условия, попытаться расширить исходный набор данных.
предварительная обработка данных
Предварительная обработка данных является головной болью для многих людей в отрасли, и для разных сценариев существуют разные решения.
Кратко представлены несколько общих методов. Во-первых, удалить среднее значение, то есть вычесть среднее значение всех данных из исходных данных и центрировать данные каждого измерения входных данных до 0. После деусреднения, хотя признаки очевидны, взаимное сравнение между признаками еще не ясно, поэтому нормализация используется для разделения данных в каждом измерении на стандарт данных в этом измерении. Кроме того, существует еще один метод, подходящий для обработки изображений, PCA/отбеливание.Особенности между соседними пикселями изображения очень похожи и не могут быть легко сведены. PCA может удалить корреляцию этих смежных признаков и достичь цели быстрой сходимости.
перемешивание данных
В каждой эпохе много пакетов.Как правило, эти пакеты одинаковы, но идеальное состояние состоит в том, что у каждой эпохи есть разные пакеты. Поэтому, если позволяют условия, его следует перемешивать (рандомизировать) один раз в каждую эпоху для получения разных партий.
модельная структура опыта
Оценка нейронов скрытого слоя
Нейронная сеть BP добавляет скрытый слой к однослойной сети персептрона, и выбор количества скрытых слоев в настоящее время не имеет теоретической поддержки.
В многослойном персептроне количество узлов во входном и выходном слоях определено, а количество узлов скрытого слоя является неопределенным и влияет на производительность нейронной сети. Мы можем использовать эмпирическую формулу для расчета этого
h представляет количество скрытых слоев, m — входной слой, n — выходной слой, а — значение от 1 до 10. Окончательный результат h также находится в диапазоне значений, и обычно рекомендуется брать значение n-й степени числа 2 в этом диапазоне.
Стратегия инициализации веса
Разумная инициализация весов может повысить производительность и ускорить тренировку.Для весов рекомендуется унифицировать их в пределах определенного диапазона.
Рекомендуемый интервал линейной модели: [-v, v], v=1/sqrt (размер входного слоя), а sprt представляет число корня. Интервал и формула сверточной нейронной сети также аналогичны, но окончательный размер входного слоя следует изменить на ширину ядра свертки * высоту ядра свертки * входную глубину.
Эффективная настройка функций активации
Сигмоидальные и Тан-функции очень дорогие, имеют тенденцию к насыщению, вызывая исчезновение градиентов, и могут остановить направленное распространение. На самом деле, чем глубже иерархия сетевой модели, тем больше сигмовидных и тангенциальных функций следует избегать. Можно использовать более простые и эффективные функции активации для ReLU и PReLU.
ReLU — очень полезные нелинейные функции, которые могут решить множество проблем. Однако, поскольку ReLU препятствует обратному распространению, а инициализация не очень хороша, когда вы используете его для точной настройки модели, вы не можете получить какой-либо эффект точной настройки. Рекомендуется использовать PReLU вместе с очень маленьким множителем (обычно 0,1), чтобы сходимость была быстрее и он не зависал при инициализации, как ReLU. Кроме того, ELU тоже хорош, но стоимость выше.
На самом деле ReLU — это частный случай Maxout. Maxout — это обучаемая функция активации, которая работает, выбирая наибольшее число в каждой группе в качестве выходного значения. Как показано на рисунке ниже, возьмите в группу два элемента, 5 и 7, -1 и 1, и в итоге получите 7 и 1.
Проверка пригодности модели
Считается, что с переоснащением модели сталкивались многие люди, и это привело ко многим проблемам, но с другой точки зрения, переоснащение необходимо — его можно использовать для проверки модели. Поскольку обучение крупномасштабных выборок сложным моделям занимает много времени, стоимость разработки возрастает.
Мы можем выполнить проверку переобучения на случайно выбранном подмножестве перед обучением на полном наборе данных.Если происходит переоснащение, можно сделать вывод, что сетевая модель имеет более высокую вероятность сходимости.
Обратите внимание на дизайн Loss
Дизайн Loss должен обращать внимание на его рациональность, просто и прямо отражать конечную цель модели, с разумным градиентом, который можно решить. Кроме того, не стоит уделять слишком много внимания Accuracy (показатель оценки), а также игнорировать оформление Loss в процессе обучения.
Методы оптимизации, основанные на опыте
Метод оптимизации скорости обучения
Известно, что регулировка скорости обучения также может улучшить эффект.На рисунке выше показана кривая потерь с разной скоростью.Очевидно, что оптимальная скорость должна быть такой, чтобы кривая потерь двигалась плавно вперед (красная кривая). Вы можете обратиться к этому изображению при настройке скорости обучения.
оптимизация размера ядра свертки
Несколько небольших ядер свертки сложены вместе.По сравнению с большим ядром свертки связность с исходным изображением остается неизменной, но количество параметров и вычислительная сложность значительно сокращаются. Поэтому мы рекомендуем «маленькие и глубокие» модели и избегаем «больших и коротких» моделей. Небольшие ядра свертки также могут заменить большие ядра свертки. Например, ядро свертки 5 * 5 можно заменить двумя ядрами свертки 3 * 3, а ядро свертки 7 * 7 можно заменить тремя ядрами свертки 3 *. 3 ядра свертки. вместо.
Выбор общего метода оптимизации
Скорость обучения связана с шагами обучения, размером партии и методом оптимизации.Общей схемой оптимизации является адаптивная скорость обучения (RMSProb, Momentum, Adam и т. д.), которая использует алгоритм адаптивной оптимизации для автоматического обновления скорости обучения. Параметры скорости обучения и импульса также можно выбрать вручную с помощью SGD, и в этом случае скорость обучения со временем снижается. На практике адаптивная оптимизация имеет тенденцию сходиться быстрее, чем SGD, и конечная производительность обычно относительно низкая.
В общем, хорошей практикой для высокоэффективного обучения является переход с Адама на SGD. Однако, поскольку ранний этап обучения — это когда SGD очень чувствителен к настройке параметров и инициализации, Адама можно использовать для начального обучения, что не только экономит время, но и не нужно беспокоиться об инициализации и настройке параметров. Когда Адам работает в течение определенного периода времени, переключитесь на SGD плюс оптимизацию импульса для достижения наилучшей производительности.
Конечно, для разреженных данных рекомендуется максимально использовать обучающие адаптивные методы оптимизации.
визуализация эффекта
Обычно вес сверточного слоя сверточной нейронной сети визуализируют так, чтобы он имел характеристики гладкости. На следующих двух рисунках показаны результаты визуализации веса фильтра первого сверточного слоя нейронной сети. Если возникает ситуация, показанная слева, возможно, необходимо рассмотреть, где конструкция модели является проблематичной.
эмпирическая вычислительная производительность
Методы анализа вычислительной производительности
Вычислительная платформа имеет два важных показателя, вычислительную мощность и пропускную способность. Вычислительная мощность представляет собой верхний предел производительности вычислительной платформы, который относится к количеству операций с плавающей запятой, которые вычислительная платформа может выполнять в секунду со всей своей мощью.Единицей является FLOP/s. Пропускная способность относится к объему обмена памятью, который вычислительная платформа может выполнить в секунду со всей своей силой, и единицей измерения является байт/с. Вычислительная мощность делится на пропускную способность, чтобы получить верхний предел мощности вычислительной платформы, то есть максимальное количество вычислений на единицу подкачки памяти может быть выполнено, и единицей измерения является FLOP/байт.
Модель также имеет два важных показателя: объем вычислений и объем доступа к памяти. Объем вычислений относится к количеству операций с плавающей запятой, которые происходят, когда вводится одна выборка, и модель выполняет полное прямое распространение, то есть временная сложность модели, и единицей измерения является FLOPS. Объем доступа относится к объему обмена памятью, который происходит в процессе ввода одной выборки и завершения процесса прямого распространения, то есть к пространственной сложности модели, а тип данных обычно — float32.
Давайте рассмотрим пример производительности модельных вычислений. Предположим, что есть две матрицы A и B, каждая из которых имеет размер 1000*1000, а тип данных — float32, вычислить C=A*B. Затем вычисление будет выполнять 1000*1000*1000 умножения и сложения с плавающей запятой, а количество вычислений составляет около 2G FLOPS. В этом процессе будут считаны две матрицы A и B, и будет записана матрица C, что требует не менее трех обращений к памяти, около 12 МБ.
Такая простая матрица 1000*1000 будет стоить 12Мб, а можно представить, сколько ресурсов будет потреблять более сложная модель. Именно на этом соображении производительности вычислений нет необходимости выбирать глубокое обучение при выборе модели.Сложность пространства и времени также оказывает большое влияние на модель. Что касается выбора модели, вы можете сначала попробовать линейные модели и модели, связанные с деревом.Если это не подходит, вы можете использовать классические модели в традиционном машинном обучении и, наконец, модель нейронной сети.
Отсев и распределенное обучение
По нашему опыту, рекомендуется использовать Dropout, когда количество узлов в одном слое превышает 256, будь то полносвязный слой или сверточный слой.
Судя по разработчикам, с которыми я общался, многие не уделяют особого внимания распределенному обучению, в большинстве случаев на одной машине работают высокопроизводительные видеокарты, но эффективность распределенного обучения может быть выше. подумайте о том, чтобы приблизиться к этому аспекту.