Сегодняшние заголовки [Запись Урока 2 Ву Энда Coursera]

искусственный интеллект

Разделите набор данных: обучайте, разрабатывайте, тестируйте

  • Наборы поездов используются для обучения ваших алгоритмических моделей.

  • Наборы разработчиков используются для проверки производительности различных алгоритмов и выбора из них наилучшей модели алгоритма.

  • Тестовые наборы используются для проверки фактической производительности лучшего алгоритма в качестве объективной оценки алгоритма.

Эти 3 набора устанавливаются на 60%, 20%, 20% или 70% и 30% (без разработки), когда число небольшое, например: 100, 1000, 10000;

В эпоху больших данных для 1 миллиона выборок часто бывает достаточно всего 10 000. Для выборок больших данных соотношение обучающих/разработочных/тестовых наборов обычно можно установить на 98%/1%/1% или 99%. /0,5%/0,5%. Чем больше объем выборочных данных, тем меньшую долю соответствующих наборов Dev/Test можно установить.

Предпосылка приведенного выше разделения данных заключается в том, что обучающая выборка и тестовая выборка поступают из одного и того же распределения.

Например, предположим, что вы разрабатываете мобильное приложение, которое позволяет пользователям загружать изображения, и приложение распознает изображения кошек. В алгоритме распознавания приложений ваши обучающие образцы могут поступать из сетевых загрузок, а проверочные и тестовые образцы могут поступать из загрузок от разных пользователей. Изображения, загруженные из Интернета, обычно имеют большее количество пикселей и являются более регулярными, в то время как изображения, загруженные пользователями, часто имеют нестабильные пиксели и разное качество изображения. Следовательно, обучающие выборки и проверочные/тестовые выборки могут поступать из разных дистрибутивов.

Когда мы участвуем в конкурсе, нам, как правило, не нужно настраивать наборы тестов. Основная цель наборов тестов — выполнить объективную оценку. Мы можем обучать различные модели алгоритмов с помощью наборов Train, а затем проверять их соответственно на наборах Dev и выбирать лучшую модель алгоритма в соответствии с результатами.

Bias/Variance

  • высокий уклон. Метод уменьшения высокого смещения обычно заключается в увеличении количества скрытых слоев и нейронов нейронной сети, увеличении времени обучения и выборе других, более сложных моделей НС.

  • высокая дисперсия. Способ уменьшить высокую дисперсию обычно заключается в увеличении данных обучающей выборки, выполнении регуляризации, выборе других, более сложных моделей НС и т. д.

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

проблема Оптимизация
высокое отклонение добавить сложности
высокая дисперсия регуляризация, добавление данных

Общие методы регуляризации

Регуляризация L2

吴恩达 Coursera 第二课记录

Вопрос: Почему регуляризовать только w, но не b?

Ответ: Поскольку w имеет большую размерность, сложность намного превышает b.

Регуляризация L1

吴恩达 Coursera 第二课记录

Преимущество L1: экономия места для хранения, поскольку большая часть w равна 0.

Недостаток: Дифференциальный вывод более сложен.

Вывод: выберите регуляризацию L2.

Анализ метода L2

В: Почему работает регуляризация L2?

О: Это можно понять таким образом.

После добавления регуляризации обновление параметра w становится:

吴恩达 Coursera 第二课记录

吴恩达 Coursera 第二课记录

Очевидно здесь

吴恩达 Coursera 第二课记录

Это означает, что после добавления L2 происходит ускорение затухания параметра w, и мы вообще имеем функцию активации в нейросети.В качестве примера возьмем tanh:

吴恩达 Coursera 第二课记录

Если w мало, это означает, что выход мал, а tanh близок к линейному около 0, что означает, что общая нелинейность сети снижается.

Но если w слишком мало, это означает, что некоторые нейроны не будут работать, и сеть станет:

吴恩达 Coursera 第二课记录

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

Dropout

Dropout имеет разные методы реализации, которые описаны ниже:

Inverted dropout

keep_prob = 0.8# 保留0.8dl = np.random.rand(al.shape[0],al.shape[1])<keep_probal = np.multiply(al,dl)# scale up 操作al /= keep_prob

Масштабирование al должно гарантировать, что после исключения входное значение al в качестве следующего слоя нейронов останется неизменным в максимально возможной степени.

В: Почему отсев работает?

A: Путем случайного отключения определенных нейронов, чтобы результаты не зависели от конкретных нейронов, также предотвращается переобучение.

принцип настройки отсева

  • Для скрытых слоев с большим количеством нейронов значение keep_out может быть меньше, например 0,5;

  • Для скрытых слоев с меньшим количеством нейронов параметр keep_out можно установить больше, например, 0,8, а параметр равен 1.

другие обычные методы

  • Увеличьте количество обучающих выборок

  • Аугментация данных, например, в задаче распознавания изображений существующие изображения можно переворачивать по горизонтали, вертикали, поворачивать под любым углом, масштабировать или расширять и так далее.

  • early stopping

吴恩达 Coursera 第二课记录

  • Закончите тренировку, когда ошибка dev set начнет расти.

Сравнение L2 и ранней остановки

Учебные модели машинного обучения преследуют две цели:

  • Один из них заключается в оптимизации функции затрат и минимизации J;

  • Во-вторых, предотвратить переоснащение.

Практика ранней остановки предотвращает переоснащение за счет уменьшения количества итераций обучения, так что J недостаточно мало.

Регуляризация L2, итеративное обучение достаточно для уменьшения J, а также может эффективно предотвращать переоснащение.

Предпочтение отдается регуляризации L2.

Входной де-усредненный, нормализованный

吴恩达 Coursera 第二课记录

吴恩达 Coursera 第二课记录

吴恩达 Coursera 第二课记录

Примечание. Поскольку тренировочный набор нормализован, его следует нормализовать, используя то же самое и для тестового набора или на практике. Это гарантирует, что операция нормализации обучающего набора и тестового набора будет согласована.

Инициализация веса

В модели глубокой нейронной сети, взяв в качестве примера один нейрон, входной номер этого слоя (l) равен n, а его выходной

吴恩达 Coursera 第二课记录

Идеи: чтобы z не было слишком большим или слишком маленьким, идея состоит в том, чтобы сделать w связанным с n, и чем больше n, тем меньше w должно быть. Это гарантирует, что z не слишком велико. Один из способов — инициализировать w с дисперсией .

Когда функция активации tanh, когда w инициализируется, пусть ее дисперсия будет:

w[l] = np.random.randn(n[l],n[l-1])*np.sqrt(1/n[l-1])

Функция активации — ReLU, и инициализация веса w обычно делает его дисперсию:

w[l] = np.random.randn(n[l],n[l-1])*np.sqrt(2/n[l-1])

Кроме того, Йошуа Бенжио предложил другой способ инициализации w, чтобы его дисперсия была равна:

w[l] = np.random.randn(n[l],n[l-1])*np.sqrt(2/n[l-1]*n[l])

mini-batch

Рекомендация: для мини-пакетного градиентного спуска можно обучить несколько эпох. Более того, в каждую эпоху лучше всего перемешивать общие обучающие данные и повторно делить их на T групп мини-пакетов, что способствует обучению лучшей модели нейронной сети.

Рекомендации для каждого размера партии:

Если общий размер выборки m не слишком велик, например , рекомендуется напрямую использовать пакетный градиентный спуск. Если общий размер выборки m велик, рекомендуется разделить выборку на множество мини-партий. Рекомендуемый размер мини-пакета — 64 128 256 512. Это все степени числа 2. Причина этого параметра заключается в том, что данные хранения компьютера обычно представляют собой степень 2, и этот параметр может повысить скорость работы.

Экспоненциальное средневзвешенное значение

формула

吴恩达 Coursera 第二课记录

Приблизительные допустимые значения:

吴恩达 Coursera 第二课记录

Метод градиентного спуска

Алгоритм градиентного спуска по импульсу

吴恩达 Coursera 第二课记录

Оригинальный алгоритм градиентного спуска показан синей линией на рисунке выше. В процессе градиентного спуска колебания градиентного спуска велики, особенно в случае, когда диапазон значений между W и b сильно различается. В настоящее время градиент в каждой точке связан только с текущим направлением, создавая эффект полилинии и медленно перемещаясь. Если градиент экспоненциально взвешен и усреднен, так что текущий градиент не только связан с текущим направлением, но также связан с предыдущим направлением, эта обработка делает градиент в прямом направлении более плавным, уменьшает колебания и может достигать минимального значения быстрее .

Экспоненциально взвешенное среднее выражение для веса W и постоянного члена b выглядит следующим образом:

吴恩达 Coursera 第二课记录

Весь алгоритм потока:

吴恩达 Coursera 第二课记录

Первоначально пусть . Общая настройка представляет собой экспоненциально взвешенное среднее данных за первые 10 дней, и фактический эффект от применения лучше.

RMSprop

Формула обновления:

吴恩达 Coursera 第二课记录

Значок:

吴恩达 Coursera 第二课记录

Осциллирующий — общий градиентный спуск, пологий — RMSprop.

Принцип таков: в каком направлении колебание велико, скорость обновления направления уменьшается, тем самым уменьшая колебание.

Чтобы знаменатель не был равен 0, мы обычно фиксируем его следующим образом:

吴恩达 Coursera 第二课记录

Adam

Алгоритм Адама (адаптивная оценка момента) сочетает в себе алгоритм градиентного спуска по импульсу и алгоритм RMSprop. Его алгоритм потока:

吴恩达 Coursera 第二课记录

Поэтому мы обычно выбираем алгоритм Адама.

Настройки скорости обучения

Снижение скорости обучения:

吴恩达 Coursera 第二课记录

Среди них деградация_скорость — это параметр (регулируемый), а эпоха — это количество раз для обучения всех выборок. По мере увеличения эпохи

будет продолжать уменьшаться.

Общая идея такова: по мере увеличения количества тренировок снижайте скорость обучения.

Шаги настройки

Существует множество гиперпараметров (Hyperparameters), которые необходимо отладить для глубоких нейронных сетей, в том числе:

  • : фактор обучения

  • : Коэффициент градиентного спуска по импульсу

  • : параметры алгоритма Адама

  • #layers: количество слоев нейронной сети

  • #скрытые единицы: количество нейронов в каждом скрытом слое

  • Затухание скорости обучения: параметр снижения коэффициента обучения

  • размер мини-пакета: количество образцов, содержащихся в пакетных обучающих образцах.

Мы можем грубо настроить параметры один за другим в соответствии с приведенным выше порядком до оптимального.

Эмпирическое правило для выбора количества слоев в нейронной сети:

Как и при оценке CTR, эффект трехслойной нейронной сети лучше, чем эффект двухслойной нейронной сети, но если количество слоев постоянно увеличивается (4, 5, 6 слоев), это не улучшит конечный результат, поэтому много прыгать.

Однако обработка изображений и аудио требует особого подхода и требует более глубокой сети для более точного извлечения информации об изображениях и аудио.

При выборе конкретных гиперпараметров мы случайным образом выбираем параметры:

吴恩达 Coursera 第二课记录

Определив диапазон, а затем уменьшив площадь на этой основе, повторно выберите параметры случайным образом:

吴恩达 Coursera 第二课记录

Batch Normalization

Прежде чем выходные данные функции активации будут использоваться в качестве выходных данных следующего слоя, выполните следующую обработку:

吴恩达 Coursera 第二课记录

Однако с точки зрения функции активации, если входное среднее значение каждого скрытого слоя находится в области, близкой к 0, то есть в линейной области функции активации, это не способствует обученной нелинейной нейронной сети, и полученный модельный эффект будет не очень хорошим, поэтому следующие поправки:

吴恩达 Coursera 第二课记录

Batch Normalization at test time

Как использовать пакетную нормализацию в тестировании? В прогнозе есть только одна выборка, и мы не можем найти среднее значение и дисперсию, поэтому мы должны оценить среднее значение и дисперсию в этом тестовом процессе.

Один из методов оценки: использовать среднее значение и дисперсию во время обучения;

Другой: экспоненциально взвешенное среднее.

Метод экспоненциально взвешенного среднего очень прост.Для l-го скрытого слоя рассмотрим сумму всех мини-партий под скрытым слоем, а затем используйте экспоненциально взвешенное среднее для прогнозирования суммы текущей одиночной выборки. Это позволяет получить оценки среднего значения и дисперсии для одной выборки процесса тестирования. Наконец, значения каждого слоя рассчитываются с использованием значений и , полученных в процессе обучения.

Суммировать

Эта статья представляет собой запись курса глубокого обучения Эндрю Нг. Заметки больше касаются записи списка для себя, чтобы вы могли следовать этому списку для отладки сети в будущем.

Кроме того, я рекомендую колонку Zhihu Дорога машинного обучения Red Stone. Видеокурс Wu Enda можно сказать, что это текстовая рукопись видео, что нам удобно для ознакомления с основным содержанием. Большое спасибо за Red Stone!

Отображение формул Markdown в заголовках не очень, можно посмотреть исходный адрес: https://www.zybuluo.com/zhuanxu/note/1014888