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

 

Предотвращение переобучения нейронной сети (DL 12)



Предотвращение переобучения нейронной сети (DL 12)

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

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

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

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

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

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

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

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

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

 

Сверточные слои (DL 13)



Сверточные слои (DL 13)

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

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

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

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

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

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

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

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

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

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

 

Обучение больших сетей с небольшим количеством данных: перенос обучения и увеличение данных (DL 14)



Обучение больших сетей с небольшим количеством данных: перенос обучения и увеличение данных (DL 14)

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

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

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

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

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

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

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

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

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

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

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

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

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

 

Остаточные сети и пропуск соединений (DL 15)



Остаточные сети и пропуск соединений (DL 15)

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

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

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

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

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

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

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

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

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

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

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

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

 

Вложения слов (DL 16)



Вложения слов (DL 16)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

Рекуррентные нейронные сети (DL 17)



Рекуррентные нейронные сети (DL 17)

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

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

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

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

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

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

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

 

LSTM (DL 18)



LSTM (DL 18)

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

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

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

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

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

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

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

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

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

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

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

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

 

Трансформеры и внимание к себе (DL 19)



Трансформеры и внимание к себе (DL 19)

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

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

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

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

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

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

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

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

Скалярное произведение между вектором запроса и ключевым вектором одного и того же слова указывает на самоподобие. Кроме того, скалярные произведения вычисляются между вектором запроса определенного слова и ключевыми векторами всех других слов. Softmax применяется для преобразования оценок сходства в веса от 0 до 1 с выделением наиболее похожих векторов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Чтобы учесть порядок слов и близость, Transformers включают позиционное кодирование. Эта дополнительная информация добавляется к вложениям слов и позволяет модели понять относительное расположение слов в документе.

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

 

Другие показатели и кривая ROC (DL 20)



Другие показатели и кривая ROC (DL 20)

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

В задаче бинарной классификации у нас обычно есть два выходных узла в нашей нейронной сети, а наши целевые векторы — либо [1, 0], либо [0, 1]. При декодировании вывода сети в метку категории возможны четыре результата:

  1. True Positive: Цель — [1, 0], и декодированный вывод согласуется.
  2. Ложный отрицательный результат: целью является [1, 0], но декодированный вывод неправильно помечает ее как [0, 1].
  3. True Negative: целью является [0, 1], и декодированный вывод согласуется.
  4. Ложное срабатывание: целью является [0, 1], но декодированный вывод неправильно помечает ее как [1, 0].

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

  1. Точность: доля точек данных, которые модель правильно помечает как положительные, из всех точек данных, помеченных как положительные.
  2. Чувствительность или отзыв: доля точек данных, которые должны были быть помечены как первая категория, которую модель правильно идентифицирует как таковую.
  3. Специфичность: доля точек данных, которые должны были быть помечены как вторая или отрицательная категория, которые модель правильно идентифицирует как таковые.

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

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

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

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

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

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

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

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

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

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

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

 

Оптимизатор Адама (DL 21)



Оптимизатор Адама (DL 21)

Цель этой лекции — продемонстрировать, как мы можем устранить недостатки стохастического градиентного спуска (SGD) и представить оптимизатор Adam, который широко используется для обучения нейронных сетей.

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

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

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

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

Правило обновления Адама заменяет член частной производной в обновлении веса скользящим средним значением частной производной (v), деленным на квадратный корень из скользящего среднего значения квадрата частной производной (s), а также небольшой константой (эпсилон) чтобы не делить на ноль. Это правило обновления обеспечивает более сбалансированные шаги по измерениям и оказалось более эффективным, чем стандартный SGD для обучения нейронных сетей.

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

Причина обращения: