Машинное обучение и нейронные сети - страница 55

 

Лекция 6.1 — Обзор мини-пакетного градиентного спуска



Лекция 6.1 — Обзор мини-пакетного градиентного спуска [Нейронные сети для машинного обучения]

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

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

Для решения этой проблемы используется стохастический градиентный спуск (SGD). Вместо вычисления градиента для всего набора данных SGD вычисляет градиент для подмножеств или мини-пакетов данных. Этот подход предлагает несколько преимуществ, таких как сокращение объема вычислений для обновления веса и возможность распараллелить вычисления градиента для нескольких обучающих случаев.

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

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

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

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

С другой стороны, мини-пакетное обучение выгодно для сильно избыточных и больших обучающих наборов. Хотя мини-пакеты могут быть относительно большими, они обеспечивают вычислительную эффективность. Использование мини-пакетов позволяет параллельно вычислять градиенты для нескольких обучающих случаев одновременно, используя возможности современных процессоров, таких как графические процессоры (GPU).

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

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

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

 

Лекция 6.2 — Набор хитростей для мини-пакетного градиентного спуска



Лекция 6.2 — Набор хитростей для мини-пакетного градиентного спуска [Нейронные сети для машинного обучения]

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

Начнем с первой проблемы: инициализация веса в нейронной сети. Если две скрытые единицы имеют одинаковые веса и смещения, они всегда будут получать одинаковый градиент и никогда не будут отличаться друг от друга. Чтобы они могли изучать разные детекторы признаков, нам нужно инициализировать их с разными весами. Обычно это делается с помощью небольших случайных весов для нарушения симметрии. Важно отметить, что размер начальных весов не должен быть одинаковым для всех единиц. Скрытые блоки с большим входным разветвлением (входящие соединения) имеют тенденцию насыщаться большими весами, поэтому в таких случаях предпочтительнее использовать меньшие веса. С другой стороны, скрытые блоки с меньшим веером выигрывают от большего веса. Размер начальных весов должен быть пропорционален квадратному корню из разветвления.

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

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

Еще один фактор, который следует учитывать, — это функция активации скрытых юнитов. Гиперболические тангенсы, которые находятся в диапазоне от -1 до 1, часто предпочтительнее, потому что они приводят к скрытым действиям единиц со средним значением, близким к нулю. Это может способствовать более быстрому обучению на последующих уровнях. Однако функции логистической активации имеют преимущества, поскольку они обеспечивают нулевой выход для небольших отрицательных входных данных, позволяя сети игнорировать колебания этих входных данных. Гиперболические тангенсы требуют больших входных данных, чтобы игнорировать такие колебания.

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

Чтобы ускорить мини-пакетное обучение, следует рассмотреть четыре основных метода:

  1. Импульс: вместо прямого изменения весов на основе градиента импульс использует градиент для ускорения скорости весов. Этот подход позволяет весам сохранять информацию из предыдущих градиентов.

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

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

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

Это лишь некоторые из методов, которые могут значительно повысить производительность стохастического градиентного спуска с помощью мини-пакетов.

Таким образом, мы обсудили несколько важных вопросов и методов, связанных со стохастическим градиентным спуском с мини-пакетами в нейронных сетях. Эти методы служат «черным искусством» нейронных сетей и могут значительно повысить их производительность. Напомним основные моменты:

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

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

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

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

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

  6. Ускорение мини-пакетного обучения. Существует четыре основных метода ускорения мини-пакетного обучения, специально предназначенных для более быстрого обучения: импульс, адаптивные скорости обучения, RMSprop и полное пакетное обучение с информацией о кривизне. Эти методы используют различные механизмы, такие как импульс, адаптивные корректировки и величины градиента, для ускорения процесса обучения.

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

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

 

Лекция 6.3 — Метод импульса



Лекция 6.3 — Импульсный метод [Нейронные сети для машинного обучения]

В этом видео мы обсудим несколько вопросов, связанных с использованием стохастического градиентного спуска с мини-пакетами, и рассмотрим некоторые методы повышения его эффективности. Эти методы часто считаются «черным искусством» нейронных сетей, и мы рассмотрим некоторые из них.

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

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

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

Декорреляция входных компонентов может значительно облегчить обучение. Удаляя корреляции между входными компонентами, мы уменьшаем избыточность и повышаем эффективность обучения. Анализ главных компонент (PCA) является широко используемым методом для достижения декорреляции. Он включает в себя удаление компонентов с малыми собственными значениями и масштабирование оставшихся компонентов путем их деления на квадратные корни их собственных значений. Этот процесс приводит к круговой поверхности ошибок для линейных систем, что упрощает обучение.

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

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

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

Теперь давайте рассмотрим четыре конкретных метода значительного ускорения мини-пакетного обучения:

  1. Импульс: вместо прямого изменения весов на основе градиента импульс включает использование градиента для обновления скорости обновлений весов. Этот импульс позволяет сети запоминать предыдущие градиенты и помогает ускорить обучение.

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

  3. RMSprop: этот метод включает в себя деление обновлений веса на скользящее среднее последних значений градиента. Он динамически регулирует обновления весов в зависимости от величины градиентов, что позволяет эффективно обрабатывать различные диапазоны градиентов. RMSprop — это мини-пакетная адаптация Rprop.

 

Лекция 6.4 — Адаптивные скорости обучения для каждого соединения



Лекция 6.4 — Адаптивные скорости обучения для каждого соединения [Нейронные сети для машинного обучения]

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

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

Для реализации адаптивных скоростей обучения глобальная скорость обучения устанавливается вручную и умножается на локальное усиление, характерное для каждого веса. Первоначально локальное усиление установлено равным 1 для каждого веса. Затем обновление веса определяется путем умножения скорости обучения на локальное усиление и производную ошибки для этого веса. Локальный коэффициент усиления адаптируется путем его увеличения, если градиент веса не меняет знак, и уменьшения его, если градиенты имеют противоположные знаки. Аддитивное увеличение и мультипликативное уменьшение используются с целью быстрого демпфирования больших коэффициентов усиления в случае возникновения колебаний.

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

Чтобы повысить эффективность адаптивного обучения, важно ограничить размер выигрыша разумным диапазоном, например, от 0,1 до 10 или от 0,01 до 100. Чрезмерный выигрыш может привести к нестабильности и препятствовать сходимости весов. Хотя адаптивные скорости обучения изначально были разработаны для полного пакетного обучения, их также можно применять с мини-пакетами. Тем не менее, более крупные мини-партии предпочтительнее, чтобы свести к минимуму влияние ошибок выборки и гарантировать, что изменения знака в градиентах отражают пересечение оврага.

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

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

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

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

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

 

Лекция 6.5 — Rmsprop: нормализовать градиент



Лекция 6.5 — Rmsprop: нормализовать градиент [Нейронные сети для машинного обучения]

Видео знакомит с методом под названием Rprop (Resilient Backpropagation), изначально предназначенным для полного пакетного обучения. Он имеет сходство с популярным алгоритмом обратного распространения, но с некоторыми отличиями. Затем докладчик обсуждает, как расширить Rprop для работы с мини-пакетами, что необходимо для больших избыточных наборов данных. Полученный в результате метод, названный iRprop (улучшенный Rprop), сочетает в себе преимущества Rprop с эффективностью мини-пакетного обучения.

Основной мотивацией Rprop является решение проблемы различной величины градиента. Градиенты в нейронных сетях могут варьироваться от крошечных до огромных, что затрудняет выбор единой глобальной скорости обучения. Rprop решает эту проблему, рассматривая только знак градиента, гарантируя, что все обновления весов имеют одинаковый размер. Этот метод особенно полезен для преодоления плато с небольшими уклонами, так как даже при небольших уклонах обновления веса могут быть значительными.

Rprop объединяет знак градиента с адаптивными размерами шага на основе обновляемого веса. Вместо того, чтобы рассматривать величину градиента, он фокусируется на размере шага, ранее определенном для этого веса. Размер шага адаптируется со временем, мультипликативно увеличиваясь, если знаки последних двух градиентов совпадают, и мультипликативно уменьшаясь, если они не совпадают. Ограничивая размеры шагов, он предотвращает их слишком большие или слишком маленькие.

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

Чтобы преодолеть это ограничение, спикер представляет RMSprop (среднеквадратичное распространение) как мини-пакетную версию Rprop. RMSprop гарантирует, что число, используемое для разделения градиента, остается одинаковым для ближайших мини-пакетов. Это достигается путем поддержания скользящего среднего квадратов градиентов для каждого веса. Квадраты градиентов взвешиваются с использованием коэффициента затухания (например, 0,9) и комбинируются с предыдущим средним квадратом для вычисления обновленного среднего квадрата. Затем квадратный корень из среднего квадрата используется для нормализации градиента, что обеспечивает более эффективное обучение.

Докладчик упоминает, что в RMSprop могут быть внесены дальнейшие изменения, такие как объединение его с импульсом или адаптивными скоростями обучения для каждого соединения. Кроме того, они ссылаются на связанные методы, такие как импульс Нестерова и метод, предложенный группой Яна Лекуна, который имеет сходство с RMSprop.

Таким образом, спикер рекомендует различные методы обучения, основанные на характеристиках набора данных. Для небольших наборов данных или больших наборов данных без большой избыточности подходят полнопакетные методы, такие как нелинейный сопряженный градиент, LBFGS или L-BFGS-B. Адаптивные скорости обучения или Rprop также можно использовать для нейронных сетей. В случае больших избыточных наборов данных необходимы мини-пакетные методы. Первый вариант, который можно попробовать, — это стандартный градиентный спуск с импульсом. RMSprop — еще один эффективный метод, который следует учитывать, поскольку он сочетает в себе преимущества Rprop и мини-пакетного обучения. Спикер предлагает изучить дальнейшие улучшения, но простого рецепта обучения нейронных сетей на данный момент нет из-за разнообразия сетей и задач.

 

Лекция 7.1 — Моделирование последовательностей: краткий обзор



Лекция 7.1 — Моделирование последовательностей: краткий обзор [Нейронные сети для машинного обучения]

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

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

Затем спикер делает обзор других моделей последовательностей, прежде чем погрузиться в рекуррентные нейронные сети (RNN). Они объясняют, что авторегрессионные модели без памяти можно расширить, добавив скрытые единицы в нейронную сеть с прямой связью. Однако они подчеркивают, что модели без памяти — это всего лишь один подкласс моделей для последовательностей. Другой подход заключается в использовании моделей со скрытыми состояниями и внутренней динамикой, которые могут хранить информацию в течение более длительного времени. Эти модели, такие как линейные динамические системы и скрытые марковские модели, включают алгоритмы вероятностного вывода и обучения.

Линейные динамические системы широко используются в технике и имеют действительные скрытые состояния с линейной динамикой и гауссовским шумом. С другой стороны, скрытые марковские модели используют дискретные распределения и вероятностные переходы состояний. Они обычно используются для распознавания речи и имеют эффективные алгоритмы обучения, основанные на динамическом программировании.

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

Рекуррентные нейронные сети могут демонстрировать различное поведение, включая колебание, установку на точечные аттракторы (полезно для извлечения из памяти) и хаотическое поведение (полезно в определенных обстоятельствах). Первоначально считалось, что RNN может научиться реализовывать несколько программ, используя разные подмножества своего скрытого состояния, чтобы сделать их очень мощными. Тем не менее, RNN сложны в вычислительном отношении для обучения, и использование их полного потенциала было сложной задачей.

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

 

Лекция 7.2 — Обучение RNN с обратным распространением



Лекция 7.2 — Обучение RNN с обратным распространением [Нейронные сети для машинного обучения]

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

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

Обратное распространение эффективно при обучении, когда присутствуют ограничения веса. Это наблюдалось и в сверточных сетях. Чтобы включить ограничения веса, мы вычисляем градиенты, как обычно, игнорируя ограничения, а затем модифицируем градиенты, чтобы сохранить ограничения. Например, если мы хотим, чтобы w1 было равно w2, мы гарантируем, что изменение w1 равно изменению w2, беря производные по w1 и w2, добавляя или усредняя их и применяя ту же величину для обновления оба веса. Пока веса удовлетворяют ограничениям изначально, они будут продолжать это делать.

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

После обратного прохода мы суммируем или усредняем производные всех временных шагов для каждого веса. Затем мы обновляем все экземпляры этого веса на одинаковую величину, пропорциональную сумме или среднему значению производных. Дополнительное соображение возникает, если мы не указываем начальное состояние всех модулей, таких как скрытые или выходные модули. В этом случае нам нужно запустить их в определенном состоянии. Один из подходов — установить значения по умолчанию, например 0,5, но это может не дать оптимальных результатов. В качестве альтернативы мы можем узнать начальные состояния, рассматривая их как параметры и настраивая их на основе градиента функции ошибок по отношению к начальному состоянию.

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

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

 

Лекция 7.3 — Игрушечный пример обучения RNN



Лекция 7.3 — Игрушечный пример обучения RNN [Нейронные сети для машинного обучения]

В этом видео я объясню, как рекуррентная нейронная сеть (RNN) решает игрушечную задачу. Игрушечная задача выбрана, чтобы продемонстрировать возможности RNN, которые нелегко достижимы с помощью нейронных сетей с прямой связью. Демонстрируемая здесь проблема — двоичное сложение. После того, как RNN научится решать задачу, мы можем изучить ее скрытые состояния и сравнить их со скрытыми состояниями конечного автомата, решающего ту же задачу.

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

Алгоритм бинарного сложения изображен на изображении. Состояния в алгоритме напоминают состояния в скрытой марковской модели, за исключением того, что они на самом деле не скрыты. Система работает в одном состоянии за раз, выполняя действие при входе в состояние (вывод 1 или 0). Находясь в состоянии, он получает ввод, состоящий из двух чисел из следующего столбца, вызывая переход в новое состояние. Например, если он находится в состоянии переноса и только что напечатал 1, при обнаружении 1 1 он остается в том же состоянии и печатает еще один 1. Однако, если он встречает 1 0 или 0 1, он переходит в режим переноса. состояние, но печатает 0. Точно так же 0 0 приводит его к состоянию отсутствия переноса, где печатается 1. Этот процесс продолжается для каждого временного шага.

Рекуррентная нейронная сеть для двоичного сложения требует двух модулей ввода и одного модуля вывода. Он получает две входные цифры на каждом временном шаге и выдает результат, соответствующий столбцу, с которым он столкнулся два временных шага назад. Чтобы учесть временную задержку, сети требуется задержка в два временных шага, где первый шаг обновляет скрытые единицы на основе входных данных, а второй шаг генерирует выходные данные из скрытого состояния. Архитектура сети состоит из трех взаимосвязанных скрытых блоков, хотя для более быстрого обучения можно использовать больше скрытых блоков. Эти скрытые блоки имеют двунаправленные соединения с разным весом. Связи между скрытыми единицами позволяют схеме активности на одном временном шаге влиять на скрытую модель активности на следующем временном шаге. Входные единицы имеют прямую связь со скрытыми единицами, что позволяет сети наблюдать за двумя цифрами в столбце. Точно так же скрытые единицы имеют прямую связь с единицей вывода, что позволяет производить продукцию.

Увлекательно анализировать, чему учится рекуррентная нейронная сеть. Он изучает четыре различных шаблона действий в своих трех скрытых модулях, которые соответствуют узлам в автомате с конечным числом состояний для двоичного сложения. Крайне важно не путать блоки нейронной сети с узлами конечного автомата. Узлы в автомате совпадают с векторами активности рекуррентной нейронной сети. Автомат ограничен одним состоянием в каждый момент времени, как и скрытые единицы в RNN, которые имеют ровно один вектор активности на каждом временном шаге. Хотя RNN может эмулировать автомат с конечным числом состояний, он экспоненциально мощнее в представлении. С N скрытыми нейронами он может иметь два в степени N возможных бинарных векторов активности. Хотя он имеет только N квадратов веса, он может не полностью использовать всю репрезентативную мощь. Если узкое место находится в представлении, RNN может превзойти автомат с конечным состоянием.

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

 

Лекция 7.4 — Почему сложно обучить RNN?



Лекция 7.4 — Почему сложно обучить RNN? [Нейронные сети для машинного обучения]

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

Чтобы понять, почему обучение RNN представляет собой сложную задачу, нам нужно признать важную разницу между прямым и обратным проходами в RNN. В прямом проходе функции сжатия, такие как логистическая функция, используются для предотвращения взрыва векторов активности. Каждый нейрон в RNN использует логистическую единицу, которая ограничивает вывод между 0 и 1. Это предотвращает неконтролируемый рост уровней активности.

Напротив, обратный проход полностью линейный. Удивительно, но если мы удвоим производные ошибки на последнем слое, все производные ошибки также удвоятся во время обратного распространения. Градиенты определяются наклоном логистических кривых в определенных точках (отмечены красными точками на видео). После завершения прямого прохода наклоны этих касательных фиксируются. Во время обратного распространения градиенты распространяются по линейной системе, в которой зафиксирован наклон нелинейности. Однако линейные системы, как правило, страдают от проблемы взрывающихся или исчезающих градиентов по мере их итерации. Если веса малы, градиенты уменьшаются экспоненциально и становятся незначительными. И наоборот, если веса велики, градиенты взрываются и подавляют процесс обучения. Эти проблемы более серьезны в RNN по сравнению с нейронными сетями с прямой связью, особенно при работе с длинными последовательностями.

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

Для решения этих проблем существует четыре эффективных метода обучения RNN. Первый метод — это долговременная кратковременная память (LSTM), который изменяет архитектуру сети для улучшения возможностей памяти. Второй подход предполагает использование продвинутых оптимизаторов, которые могут эффективно обрабатывать небольшие градиенты. Оптимизация без гессиана, адаптированная для нейронных сетей, отлично подходит для обнаружения небольших градиентов с низкой кривизной. Третий метод включает в себя тщательную инициализацию весов и создание резервуара слабо связанных осцилляторов в скрытом состоянии. Это позволяет сети воспроизводить и запоминать входные последовательности. Связи между скрытыми единицами и выходами затем обучаются, в то время как повторяющиеся связи остаются фиксированными. Четвертый метод использует импульс и сочетает его с методом инициализации, используемым в сетях с эхо-состоянием. Эта модификация улучшает динамику сети, делая ее еще более эффективной.

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

 

Лекция 7.5 — Долговременная кратковременная память



Лекция 7.5 — Долгосрочная кратковременная память [Нейронные сети для машинного обучения]

В этом видео я объясню подход, известный как «Долгая кратковременная память» (LSTM) для обучения рекуррентных нейронных сетей. LSTM направлен на создание долговременной кратковременной памяти в нейронной сети за счет использования специализированных модулей, облегчающих блокировку информации.

Ячейка памяти в LSTM предназначена для хранения информации в течение длительного периода времени. Он состоит из логистических и линейных блоков с мультипликативными взаимодействиями. Когда активируются логистические ворота «записи», информация поступает в ячейку памяти из остальной части рекуррентной сети. Состояние шлюза «записи» определяется рекуррентной сетью. Информация остается в ячейке памяти до тех пор, пока открыты «сохраняющие» ворота, которыми управляет остальная часть системы. Чтобы прочитать информацию из ячейки памяти, активируется логистический шлюз «чтения», и сохраненное значение извлекается и влияет на будущие состояния рекуррентной нейронной сети.

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

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

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

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