Галерея диаграмм связей Глубокое обучение теоретическим знаниям
Часть контента свернута, всего включено 1216 модулей. На основе двух книг Ясуки Сайто «Введение в глубокое обучение: теория и реализация на основе Python» и «Продвинутое глубокое обучение: обработка естественного языка». Автор: [японский] Ясуки Сайто. Переводчик: Лу Юйцзе. Это самая подходящая книга для начала глубокого обучения, которую я когда-либо читал. Я настоятельно рекомендую ее перед изучением «Практического глубокого обучения» Ли Му! Содержимое внутри не требует каких-либо базовых знаний. Оно преподается с нуля и доступно для понимания учащимся старших классов.
Отредактировано в 2024-02-04 00:57:48Глубокое обучение теоретическим знаниям
введение
Базовые концепты
Проблема глубокого обучения — это проблема машинного обучения, которая относится к обобщению общих правил с помощью алгоритмов на ограниченных примерах и их применению к новым неизвестным данным.
В отличие от традиционного машинного обучения, модели, используемые в глубоком обучении, как правило, более сложны.
Поток данных от исходного ввода к целевому выходу проходит через несколько линейных или нелинейных компонентов. Каждый компонент обрабатывает информацию и, в свою очередь, влияет на последующие компоненты.
Когда мы наконец получаем результат, мы не знаем точно, какой вклад вносит каждый компонент. Этот вопрос называется вкладом Проблема распределения.
Проблему распределения вкладов также часто переводят как проблему распределения кредитов или проблему распределения кредитов.
Проблема распределения вкладов — очень важная проблема, связанная с тем, как узнать параметры каждого компонента.
В настоящее время моделью, которая может лучше решить проблему распределения вкладов, является искусственная нейронная сеть (ИНС).
Нейронные сети и глубокое обучение не эквивалентны. Глубокое обучение может использовать модели нейронных сетей или другие модели (например, сеть глубоких убеждений — это вероятностная графовая модель).
ИИ
Основные понятия ИИ
умная концепция
природный интеллект
определение
Относится к силе и поведенческим способностям людей и некоторых животных.
естественный человеческий интеллект
Это всеобъемлющая способность человека к пониманию объективного мира, которая проявляется в мыслительных процессах и умственной деятельности.
Различные взгляды и иерархии интеллекта
Вид
теория разума
Интеллект возникает в результате мыслительной деятельности
теория порога знаний
Интеллект зависит от применимых знаний
эволюционная теория
Разум может быть достигнут путем постепенной эволюции.
Иерархия
Характерные возможности, входящие в интеллект
Восприятие
память и мышление
обучаемость и адаптивность
емкость
Концепция искусственного интеллекта
объяснять
Используйте искусственные методы для достижения интеллекта в машинах
Изучите, как создавать интеллектуальные машины или системы, а также моделировать и расширять искусственный интеллект.
Тест Тьюринга
Основное содержание исследований ИИ
Субъектная позиция искусственного интеллекта
Пересечение естественных и социальных наук
Ядро: мышление и интеллект
Основные предметы: математика, наука о мышлении, компьютер.
Междисциплинарные исследования в области науки о мозге и когнитивной науки
Исследования методов и технологий интеллектуального моделирования
машинное восприятие
Зрение
слушание
машинное мышление
машинное обучение
поведение машины
Классификация доменов
Восприятие: то есть моделирование способности человеческого восприятия воспринимать и обрабатывать информацию о внешних стимулах (зрительных, речевых и т. д.). Основные области исследований включают обработку речевой информации и компьютерное зрение.
Обучение: моделирование способности человека к обучению, в основном изучение того, как учиться на примерах или взаимодействовать с окружающей средой. Основные области исследований включают обучение с учителем, обучение без учителя и обучение с подкреплением.
Познание: имитирует когнитивные способности человека. Основные области исследований включают представление знаний, понимание естественного языка, рассуждение, планирование, принятие решений и т. д.
история
Различные школы исследований ИИ
символизм
Символизм, также известный как логицизм, школа психологии или компьютерная школа. Анализируя функции человеческого интеллекта и затем реализуя эти функции с помощью компьютеров.
Основные предположения
Информация может быть представлена с помощью символов
Символами можно манипулировать с помощью явных правил (например, логических операций).
Человеческие когнитивные процессы можно рассматривать как процессы символического манипулирования. В период рассуждения и познания искусственного интеллекта символический метод более популярен и дал много результатов.
коннекционизм
Коннекционизм, также известный как бионическая школа или физиологическая школа, представляет собой разновидность методов обработки информации и теорий в области когнитивной науки.
В области когнитивной науки когнитивный процесс человека можно рассматривать как процесс обработки информации. Коннекционизм считает, что когнитивные процессы человека — это процессы обработки информации в нейронных сетях, состоящих из большого количества простых нейронов, а не символические операции.
Таким образом, основная структура коннекционистской модели представляет собой взаимосвязанную сеть, состоящую из большого количества простых блоков обработки информации, обладающую характеристиками нелинейности, распределения, распараллеливания, локальных вычислений и адаптивности.
Бихевиоризм
Бихевиоризм считает, что искусственный интеллект возник из кибернетики.
Помимо глубокого обучения, в настоящее время существует еще одна интересная технология в области машинного обучения — обучение с подкреплением.
Пусть агент (Агент) постоянно выполняет различные действия (Действие), меняет свое состояние (Состояние) и взаимодействует с окружающей средой (Среда) для получения различных вознаграждений (Награда). Нам нужно только разработать соответствующие правила вознаграждения (Награда). агент может изучить соответствующие стратегии путем непрерывных проб и ошибок.
Нейронные сети
нейронная сеть мозга
Искусственные нейронные сети
История развития нейронных сетей
Предложенная модель
Период с 1943 по 1969 год стал первым кульминационным периодом развития нейронных сетей. За этот период учёные предложили множество моделей нейронов и правил обучения.
В 1943 году психолог Уоррен Маккалок и математик Уолтер Питтс впервые описали идеализированную искусственную нейронную сеть и сконструировали вычислительный механизм, основанный на простых логических операциях. Предложенная ими модель нейронной сети называется моделью MP.
Ледниковый период
С 1969 по 1983 год это была первая низкоуровневая разработка нейронной сети. долинный период. В этот период исследования нейронных сетей на протяжении многих лет находились в состоянии стагнации и спада.
В 1969 году Марвин Мински опубликовал книгу «Персептрон», указав на два ключевых недостатка нейронных сетей: первый заключается в том, что перцептрон не может справиться с проблемой цикла XOR; второй заключается в том, что компьютеры того времени не могли поддерживать обработку больших данных; нейронные сети требуют вычислительной мощности.
В 1974 году Пол Вебос из Гарвардского университета изобрел алгоритм обратного распространения ошибки (BP), но он не получил того внимания, которого заслуживал в то время.
Возрождение, вызванное алгоритмом обратного распространения ошибки
1983~1995. Алгоритм обратного распространения ошибки возродил интерес к нейронным сетям.
Физик из Калифорнийского технологического института Джон Хопфилд предложил нейронную сеть для ассоциативной памяти и оптимизационных вычислений, названную сетью Хопфилда. Сеть Хопфилда добилась лучших на тот момент результатов в решении задачи коммивояжера и произвела сенсацию.
Дэвид Румелхарт и Джеймс Макклелланд подробно обсуждают применение коннекционизма к компьютерному моделированию нейронной активности и заново изобретают алгоритм обратного распространения ошибки.
Падение популярности
1995~2006 гг. Машины опорных векторов и другие более простые методы (например, линейные классификаторы) постепенно превосходят нейронные сети по популярности в области машинного обучения.
Расцвет глубокого обучения
2006 ~ сейчас. Многослойные нейронные сети прямого распространения могут быть предварительно обучены слой за слоем, а затем точно настроены с использованием алгоритма обратного распространения ошибки. Учитесь эффективно.
машинное обучение
Предварительная обработка данных
После предварительной обработки данных, например удаления шума и т. д. Например, при классификации текста, удалении стоп-слов и т. д.
Извлечение признаков
Извлеките некоторые эффективные функции из необработанных данных. Например, при классификации изображений, извлечении краев, функциях преобразования масштабно-инвариантных признаков (SIFT) и т. д.
Преобразование функций
Выполните определенную обработку функций, например уменьшение размерности и увеличение размерности. Уменьшение размерности включает два подхода: извлечение признаков и выбор признаков. Обычно используемые методы преобразования признаков включают анализ главных компонент (PCA), линейный дискриминантный анализ (линейный дискриминантный анализ) и т. д.
предсказывать
Основная часть машинного обучения: прогнозирование с помощью функции.
Указывает на обучение
Чтобы повысить точность систем машинного обучения, преобразуйте входную информацию в эффективные функции.
Если существует алгоритм, который может автоматически изучать эффективные функции и повышать производительность конечной модели машинного обучения, то такой вид обучения можно назвать обучением представлений.
метод отображения
местное представительство
Один из способов представления цветов — называть разные цвета разными именами.
Размерность высокая и не может быть расширена. Сходство между разными цветами равно 0.
распределенное представление
Значения RGB для представления цветов
Чтобы изучить хорошее семантическое представление высокого уровня (обычно распределенное представление), обычно необходимо начать с функций низкого уровня и пройти несколько шагов нелинейного преобразования, чтобы получить его.
глубокое обучение
шаг
Проблема распределения вклада
В отличие от «поверхностного обучения», ключевой проблемой, которую необходимо решить глубокому обучению, является распределение вклада.
Возьмем в качестве примера следующую игру в го. В любой игре конечным результатом является либо победа, либо поражение. Мы подумаем, какие ходы привели к окончательной победе, а какие – к окончательному поражению. Как оценить вклад каждого хода – это проблема распределения вкладов, которая также является очень сложной проблемой.
В некотором смысле глубокое обучение также можно рассматривать как своего рода обучение с подкреплением (RL). Каждый внутренний компонент не может напрямую получать информацию контроля, но должен получать ее через конечную информацию контроля (вознаграждение) всей модели, и это так. Определенная задержка.
Модель нейронной сети может использовать алгоритм обратного распространения ошибок, который может лучше решить проблему распределения вкладов.
Сквозное обучение
традиционный стиль обучения
В некоторых сложных задачах традиционным методам машинного обучения необходимо искусственно разбивать входные и выходные данные задачи на множество подмодулей (или несколько этапов), и каждый подмодуль изучается отдельно.
Например, задача понимания естественного языка обычно требует таких шагов, как сегментация слов, разметка частей речи, синтаксический анализ, семантический анализ и семантическое рассуждение.
У такого способа обучения есть две проблемы.
Во-первых, каждый модуль необходимо оптимизировать отдельно, а соответствие целей его оптимизации и общих целей миссии не гарантируется.
Второе — распространение ошибок, то есть ошибки на предыдущем шаге окажут большое влияние на последующие модели. Это увеличивает сложность практического применения методов машинного обучения.
Новый способ обучения
Сквозное обучение, также известное как сквозное обучение, относится к общей цели непосредственной оптимизации задачи без проведения обучения по модулям или этапам в процессе обучения.
Как правило, нет необходимости явно задавать функции различных модулей или этапов, а также не требуется вмешательство человека в промежуточный процесс.
Большую часть глубокого обучения с использованием моделей нейронных сетей также можно рассматривать как сквозное обучение.
Часто используемые платформы глубокого обучения
Theano: набор инструментов Python из Университета Монреаля, используемый для эффективного определения, оптимизации и выполнения проекта Theano, в настоящее время не обслуживается. Данные многомерного массива соответствуют математическим выражениям. Theano может прозрачно использовать графические процессоры и эффективные символы. дифференциал.
Caffe: Полное название — «Сверточная архитектура для быстрого внедрения функций». Это вычислительная среда для моделей сверточной сети. Реализуемая сетевая структура может быть указана в файле конфигурации и не требует кодирования. Caffe реализован на C и Python и в основном используется для компьютерного зрения.
TensorFlow: набор инструментов Python, разработанный Google, который может работать на любом устройстве с процессором или графическим процессором. Процесс вычислений TensorFlow представлен с помощью графов потоков данных. Название Tensor Flow связано с тем, что объектом операции в процессе вычислений является многомерный массив, то есть тензор.
Chainer: Одна из первых инфраструктур нейронных сетей, использующая динамические вычислительные графики. Ее основная команда разработчиков — Preferred Networks, стартап в области машинного обучения из Японии. По сравнению со статическими графиками вычислений, используемыми Tensorflow, Theano, Caffe и другими платформами, динамические графики вычислений могут динамически создавать графики вычислений во время выполнения, поэтому они очень подходят для некоторых сложных задач принятия решений или рассуждений.
PyTorch5: среда глубокого обучения, разработанная и поддерживаемая Facebook, NVIDIA, Twitter и другими компаниями. Ее предшественником является Torch6 на языке Lua. PyTorch также представляет собой фреймворк, основанный на динамических вычислительных графах, имеющий очевидные преимущества в задачах, требующих динамического изменения структуры нейронных сетей.
Организация этой книги
персептрон
Персептрон — это алгоритм с входами и выходами. Учитывая ввод, данное значение будет выведено.
Перцептрон устанавливает веса и смещения в качестве параметров.
Логические схемы, такие как вентили И и вентили ИЛИ, можно представить с помощью перцептронов.
Вентиль XOR не может быть представлен однослойным перцептроном.
Вентиль XOR можно представить с помощью двухслойного перцептрона.
Однослойные перцептроны могут представлять только линейные пространства, тогда как многослойные перцептроны могут представлять нелинейные пространства.
Двухслойный перцептрон (теоретически) может представлять собой компьютер.
Нейронные сети
Перцептроны и нейронные сети
«Наивный персептрон» относится к однослойной сети и модели, которая использует ступенчатую функцию в качестве функции активации.
«Многослойный перцептрон» относится к нейронной сети, то есть к многослойной сети, которая использует функции плавной активации, такие как сигмовидная функция или функция ReLU.
Операция: внутренний продукт нейронной сети
Y = np.dot(X, W)
Нейронные сети можно эффективно реализовать с помощью матричных операций.
Аффинный слой
Операция матричного произведения, выполняемая при прямом распространении нейронной сети, в области геометрии называется «аффинным преобразованием».
Аффинное преобразование включает в себя линейное преобразование и трансляцию, которые соответственно соответствуют операции взвешенной суммы и операции смещения нейронной сети.
Y = сигмовидная(Y)
выходной слой
Функция активации: функция идентичности используется для задач регрессии, а функция softmax используется для задач классификации.
Функция идентификации
Входной сигнал будет выводиться без изменений.
функция softmax
Предположим, что выходной слой имеет всего n нейронов, и вычислите выходной сигнал yk k-го нейрона.
Особенности: Сумма выходных значений выходного слоя равна 1.
Примечание: проблемы с переполнением
количество
Проблема классификации
Обычно устанавливается количество категорий.
Распознавание рукописных цифр
Входной слой имеет 28*28=784 нейрона, а выходной слой — 10 нейронов. Также есть два скрытых слоя, а количество нейронов может быть любым.
Пакетная обработка
Введите несколько наборов данных одновременно
Обучение нейронной сети
функция потерь
Познакомить с концепциями
При поиске оптимальных параметров (весов и смещений) вы ищете параметры, которые делают значение функции потерь как можно меньшим, поэтому вам необходимо вычислить производные параметров (точнее, градиент)
Почему бы напрямую не использовать точность распознавания в качестве индикатора?
Производная параметра в большинстве мест станет 0.
То же самое касается ступенчатых функций и функций активации.
тип
среднеквадратическая ошибка
ошибка перекрестной энтропии
мини-партия
Извлеките некоторые тестовые данные
градиент
Вектор, суммированный по частным производным всех переменных, называется градиентом.
Направление, указанное градиентом, — это направление, в котором значение функции в каждой точке уменьшается больше всего.
гиперпараметры
Ручная настройка
скорость обучения n
размер мини-партии
Время обновления iters_num
полученное обучение
Вес w и смещение тета
Нейронные сети
Градиент функции потерь по весовым параметрам
эпоха
Количество циклов/размер мини-партии
Стохастический градиентный спуск (SGD)
Выполните градиентный спуск на случайно выбранных данных
метод обратного распространения ошибки
Хотя численное дифференцирование просто и легко реализовать, его недостатком является то, что его расчет требует много времени. Существует метод, позволяющий эффективно рассчитать градиент весовых параметров: метод обратного распространения ошибки.
Вычислительный график
Используя графики расчета, вы можете интуитивно понять процесс расчета.
Прямое распространение вычислительных графов выполняет общие вычисления. Путем обратного распространения вычислительного графа можно вычислить производные каждого узла.
Погрешность слоя l можно вычислить по погрешности слоя l 1 Получается, это обратное распространение ошибки.
формула
вычислить
Количество желтого цвета — это значение, полученное в ходе обратного распространения ошибки.
Зеленое количество — известная величина.
Реализуя составные элементы нейронной сети в виде слоев, можно эффективно рассчитывать градиенты.
Сравнивая результаты, полученные численным дифференцированием и методом обратного распространения ошибки, можно подтвердить корректность реализации метода обратного распространения ошибки (подтверждение градиента).
Справочное видео
https://www.bilibili.com/video/BV1LM411J7cW/?spm_id_from=333.788&vd_source=048c7bdfe54313b8b3ee1483d9d07e38
сверточная нейронная сеть
Все должно быть максимально просто, но не слишком просто. [Альберт Эйнштейн]
весь кадр
В сравнении
Сеть на основе полносвязного уровня (аффинный уровень)
Сеть на базе CNN
порядок ссылок
Свертка[слой свертки]-ReLU-(Пулинг[слой пула])
Слой, близкий к выводу, использует предыдущую комбинацию Affine [аффинное преобразование] — ReLU.
Последний выходной слой использует предыдущую комбинацию Affine-Softmax.
слой свертки
Концепция свертки
Проблемы с полносвязным слоем
Форма данных «игнорируется». Изображение обычно представляет собой трехмерную форму по высоте, длине и направлению канала, но при вводе трехмерные данные необходимо сгладить до одномерных.
Изображение представляет собой трехмерную форму, и эта форма должна содержать важную пространственную информацию.
Пространственно соседние пиксели имеют одинаковые значения.
Каждый канал РБГ тесно связан друг с другом.
Существует небольшая корреляция между пикселями, которые находятся далеко друг от друга.
Сверточный слой может сохранять форму неизменной.
определение
Входные и выходные данные слоя свертки называются картами объектов.
Входные данные сверточного слоя называются входной картой объектов.
Выходные данные называются выходной картой объектов.
Операция свертки
Операция свертки эквивалентна операции фильтра при обработке изображений.
Основная функция свертки — направить ядро свертки (т. е. фильтр) на изображение (или какой-либо признак) и получить новый набор признаков посредством операции свертки.
двумерный
Учитывая изображение X ∈ R(M×N) и фильтр W ∈ R (m×n), обычно m << M, n << N, свертка
трехмерный
Корреляция
В процессе вычисления свертки часто необходимо перевернуть ядро свертки.
Переворот — это изменение порядка в двух измерениях (сверху вниз, слева направо), то есть поворот на 180 градусов.
С точки зрения конкретной реализации вместо сверток используются операции взаимной корреляции, что позволяет сократить количество ненужных операций или накладных расходов.
Взаимная корреляция — это функция, измеряющая корреляцию между двумя рядами, обычно реализуемая путем вычисления скалярного произведения скользящего окна.
Учитывая изображение X ∈ R(M×N) и ядро свертки W ∈ R (m×n), их взаимная корреляция равна
Разница между взаимной корреляцией и сверткой заключается только в том, перевернуто ли ядро свертки. Взаимную корреляцию также можно назвать неперевернутой сверткой.
Свертка используется в нейронных сетях для извлечения признаков. Перевернутое ядро свертки не имеет никакого отношения к его возможностям извлечения признаков. Особенно когда ядро свертки является обучаемым параметром, свертка и взаимная корреляция эквивалентны.
Варианты свертки
Нулевое заполнение
Чтобы сохранить размер пространства постоянным, входные данные необходимо дополнять.
длина шага
Интервал позиций, к которым применяется фильтр, называется шагом.
Часто используемые свертки
Узкая свертка: размер шага s = 1, отсутствие заполнения нулями на обоих концах p = 0, а выходная длина после свертки равна n - m 1.
Широкая свертка: размер шага s = 1, заполнение нулями на обоих концах p = m - 1, а выходная длина после свертки равна n m - 1.
Свертка равной ширины: размер шага s = 1, заполнение нулями на обоих концах p = (m -1)/2, выходная длина n после свертки.
Математические свойства свертки
Операция свертки с 3D-данными
Входные данные и номера каналов фильтра должны быть установлены на одно и то же значение.
Множественные операции свертки
Что касается фильтров операции свертки, необходимо также учитывать количество фильтров. Следовательно, в качестве 4-мерных данных данные веса фильтра должны быть записаны в порядке (выходной_канал, входной_канал, высота, ширина). Например, если имеется 20 фильтров с номером канала 3 и размером 5×5, это можно записать как (20, 3, 5, 5).
Пакетная обработка
Мы надеемся, что операция свертки также соответствует пакетной обработке. Для этого данные, передаваемые между каждым слоем, необходимо сохранить как 4-мерные данные. В частности, данные сохраняются в следующем порядке (номер_пакета, канал, высота, ширина).
Свойства сверточных слоев
Локальное соединение: каждый нейрон в сверточном слое (предполагается, что это l-й слой) связан только с нейронами в локальном окне следующего слоя (уровень l-1), образуя локальную сеть соединений. Количество соединений между сверточным слоем и следующим слоем значительно сокращается: от исходных соединений n(l) × n(l – 1) до соединений n(l) × m. m – размер фильтра.
Распределение веса: фильтр w(l) в качестве параметра одинаков для всех нейронов слоя l.
Из-за локальных связей и распределения веса параметры сверточного слоя имеют только m-мерный вес w(l) и одномерное смещение b(l), всего m 1 параметров.
Количество нейронов в слое l выбирается не произвольно, а удовлетворяет условию n(l) = n(l−1) − m 1.
Слой пула
Также называется уровнем агрегации, слоем субдискретизации.
Объединение — это выбор объектов, который уменьшает количество объектов, тем самым уменьшая количество параметров, уменьшая размеры объекта и уменьшая пространство в направлениях высоты и длины.
Часто используемые функции агрегирования
Максимум: обычно берется максимальное значение всех нейронов в регионе.
Средняя агрегация (среднее): обычно берется среднее значение всех нейронов в области.
Типичный слой объединения делит каждую карту объектов на непересекающиеся области размером 2×2, а затем использует максимальное объединение для понижения разрешения.
Слой объединения также можно рассматривать как специальный сверточный слой.
В некоторых ранних сверточных сетях (таких как LeNet-5) на уровне пула иногда использовались нелинейные функции активации.
где Y(′d) — выходные данные слоя объединения, f(·) — нелинейная функция активации, w(d) и b(d) — обучаемые скалярные веса и смещения.
Характеристики объединяющего слоя
Нет параметров для изучения
Количество каналов не меняется
Устойчивость к небольшим изменениям положения (робастность)
обучение параметрам
Расчет погрешности
Визуализация CNN
Визуализация весов слоя 1
Фильтр перед обучением инициализируется случайным образом, поэтому нет узора в оттенках черного и белого, но фильтр после обучения становится обычным изображением. Мы обнаружили, что в процессе обучения фильтры преобразуются в обычные фильтры, например фильтры с градиентом от белого к черному, фильтры, содержащие блочные области (называемые каплями) и т. д. Фильтр, реагирующий на горизонтальные и вертикальные края
Видно, что фильтры сверточного слоя извлекают исходную информацию, такую как края или участки. Только что реализованная CNN передаст эту необработанную информацию на последующие уровни.
Извлечение информации на основе иерархической структуры
Информация, извлеченная из сверточных слоев CNN. Нейроны слоя 1 реагируют на края или пятна, слой 3 реагирует на текстуру, слой 5 реагирует на части объекта, а последний полностью связанный слой реагирует на категорию объекта (собака или машина).
Если несколько сверточных слоев сложены друг на друга, по мере углубления слоев извлекаемая информация становится более сложной и абстрактной. Это очень интересная часть глубокого обучения. По мере углубления слоев нейроны меняют форму от простых форм до информации «высокого уровня». Другими словами, по мере того, как мы понимаем «смысл» вещей, постепенно меняются и объекты реагирования.
Типичная сверточная нейронная сеть
ЛеНет-5
LeNet была предложена в 1998 году как сеть для распознавания рукописных цифр. Он имеет последовательные сверточные слои и слои пула и, наконец, выводит результаты через полностью связный слой.
За исключением входного слоя, LeNet-5 имеет всего 7 слоев.
Входной слой: размер входного изображения составляет 32 × 32 = 1024.
Сверточный слой: с помощью 6 фильтров 5×5 получается 6 наборов карт признаков размером 28×28 = 784. Следовательно, количество нейронов в слое C1 составляет 6 × 784 = 4704, количество обучаемых параметров — 6 × 25 6 = 156, а количество связей — 156 × 784 = 122304 (с учетом смещений, то же самое ниже).
Уровень пула: окно выборки составляет 2×2, используется среднее пулирование и используется нелинейная функция. Количество нейронов 6×14×14 = 1176, количество обучаемых параметров – 6×(1 1) = 12, количество связей – 6×196×(4 1) = 5880.
Сверточный слой. Таблица соединений используется в LeNet-5 для определения зависимости между входными и выходными картами признаков. Как показано на рисунке, всего используется 60 фильтров 5×5 для получения 16 групп карт признаков размером 10×. 10. Количество нейронов 16×100 = 1600, количество обучаемых параметров (60×25) 16 = 1516, количество связей 100×1516 = 151600.
В слое пула окно выборки составляет 2 × 2, и получается 16 карт признаков размером 5 × 5. Количество обучаемых параметров — 16 × 2 = 32, а количество соединений — 16 × 25 × (4 1). ) = 2000.
Сверточные слои с использованием 120 × 16 = 1920 фильтров 5 × 5 позволяют получить 120 наборов карт объектов размером 1 × 1. Количество нейронов в слое С5 — 120, количество обучаемых параметров — 1,920×25×120=48120, количество связей — 120×(16×251)=48120.
Полносвязный слой имеет 84 нейрона, а количество обучаемых параметров составляет 84×(120 1) =10164. Количество связей и количество обучаемых параметров одинаковое — 10164.
Выходной слой: выходной слой состоит из 10 евклидовых радиальных базисных функций.
присоединиться к таблице
Полностью связанная связь между входными и выходными картами объектов сверточного слоя не является обязательной, и можно использовать неразделенную свертку.
Определите таблицу связей (Link Table) T, чтобы описать взаимосвязь между входными и выходными картами объектов.
Если p-я выходная карта признаков зависит от d-й входной карты признаков, то Tp,d = 1, в противном случае 0.
АлексНет
Он был предложен в 2012 году и использует многие технические методы современных глубоких сверточных сетей.
Параллельное обучение с использованием графических процессоров
Функция активации использует ReLU
Используйте Dropout, чтобы предотвратить переобучение
Используйте увеличение данных для повышения точности модели.
Используйте слой LRN (Local Response Normalization) для локальной нормализации.
Начальная сеть
Начальный модуль: сверточный слой содержит несколько операций свертки разных размеров.
Сеть Inception состоит из нескольких начальных модулей и небольшого количества уровней агрегации.
Версия V1
Самая ранняя версия сети Inception v1 — очень известная GoogLeNet [Szegedy et al., 2015] — выиграла конкурс по классификации изображений ImageNet в 2014 году.
Остаточная сеть ResNet
Эффективность распространения информации повышается за счет добавления прямых ребер к нелинейному сверточному слою.
нелинейные элементы
Может быть один или несколько сверточных слоев
Пусть эта нелинейная единица f(x, θ) аппроксимирует целевую функцию h(x)
Нелинейный блок, состоящий из нейронной сети, обладает достаточной способностью приблизительно аппроксимировать исходную целевую функцию или функцию невязки, но на практике последнюю легче изучить.
Вывод: пусть нелинейная единица f(x, θ) аппроксимирует функцию невязки h(x)−x и использует f(x, θ) x для аппроксимации h(x).
Остаточная сеть представляет собой очень глубокую сеть, состоящую из множества остаточных блоков, соединенных последовательно.
Другие методы свертки
транспонированная свертка
Атрозная извилина (расширенная извилина)
глубокое обучение
Углублять сеть
На пути к более глубокой сети
Эта сеть относится к VGG, которая будет представлена в следующем разделе.
Сверточный слой на основе небольших фильтров 3×3.
Функция активации ReLU.
Слой Dropout используется позади полностью связанного слоя.
Оптимизация на основе Адама
Используйте начальное значение He в качестве начального значения веса.
Точность распознавания 99,38%
Дальнейшее повышение точности распознавания
Ансамблевое обучение
снижение скорости обучения
Увеличение данных
Увеличьте количество изображений, применяя небольшие изменения, такие как вращение, вертикальное или горизонтальное перемещение, обрезка, переворачивание, увеличение яркости и т. д.
Более глубокая мотивация
Улучшите производительность распознавания
О важности углубления можно судить по результатам масштабных соревнований по распознаванию изображений, проводимых ILSVRC. Результаты этого конкурса показывают, что топовые методы в последнее время в основном основаны на глубоком обучении и имеют тенденцию к постепенному углублению слоев сети. Другими словами, видно, что чем глубже слой, тем выше производительность распознавания.
Уменьшить количество параметров сети
Преимущество объединения небольших фильтров для углубления сети заключается в том, что это может уменьшить количество параметров и расширить рецептивное поле (локальную пространственную область, которая вызывает изменения в нейронах). Более того, благодаря наложенным слоям функции активации, такие как ReLU, располагаются в середине сверточного слоя, что еще больше улучшает выразительность сети. Это связано с тем, что в сеть добавляется «нелинейная» выразительность, основанная на функциях активации. Посредством суперпозиции нелинейных функций можно выражать более сложные вещи.
Сделайте обучение более эффективным
По сравнению с сетью без углубления слоев, за счет углубления слоев объем обучающих данных может быть уменьшен, а обучение может выполняться эффективно.
Структура сети глубокого обучения
конкурс ILSVRC
ImageNet содержит множество изображений, и каждому изображению присвоена метка (имя категории). Конкурс по распознаванию изображений ILSVRC с использованием этого огромного набора данных проводится каждый год.
В 2012 году прошел масштабный конкурс по распознаванию изображений ILSVRC. В конкурсе того года метод, основанный на глубоком обучении (широко известный как AlexNet), победил с подавляющим преимуществом, полностью опровергнув предыдущие методы распознавания изображений. В последующих соревнованиях в центре внимания было глубокое обучение.
В частности, ResNet 2015 года (глубокая сеть с более чем 150 слоями) снизила уровень ложного распознавания до 3,5%. Говорят, что этот результат даже превосходит способность распознавания обычных людей.
ВГГ
VGG — это базовая CNN, состоящая из сверточных слоев и слоев объединения. Однако его особенностью является то, что он накладывает взвешенные слои (сверточные слои или полностью связанные слои) на 16 слоев (или 19 слоев), которые имеют глубину (иногда также называемую «VGG16» или «VGG19» в зависимости от глубины слоя).
ГуглЛеНет
Сеть имеет не только глубину по вертикали, но и ширину по горизонтали, что называется начальной структурой.
РесНет
Имеет более глубокую структуру, чем предыдущие сети.
Мы уже знаем, что углубление важно для повышения производительности. Однако при глубоком обучении, если вы слишком сильно углубляете глубину, во многих случаях обучение не будет проходить гладко, что приводит к плохой конечной производительности. В ResNet для решения такого рода проблем вводится «структура ярлыков» (также называемая «ярлык» или «путь»). После импорта этой структуры ярлыков производительность можно постоянно улучшать по мере углубления слоя (конечно, углубление слоя также ограничено).
На практике данные о весах, полученные с использованием огромного набора данных ImageNet, часто применяются гибко. Это называется переносом обучения. Изученные веса (части) копируются в другие нейронные сети для повторного обучения (точной настройки). Например, подготовьте сеть с той же структурой, что и VGG, используйте изученные веса в качестве начальных значений и используйте новый набор данных в качестве объекта для повторного обучения. Трансферное обучение очень эффективно, когда под рукой имеется небольшой набор данных.
Ускорение глубокого обучения
Проблемы, которые необходимо решить
Соотношение времени каждого слоя в прямой обработке AlexNet: левая сторона — при использовании графического процессора, а правая — при использовании процессора. «conv» на рисунке соответствует слою свертки, «pool» соответствует слою объединения, «fc» соответствует полностью связному слою, а «norm» соответствует слою регуляризации.
Время обработки сверточного слоя составляет 95% от общего использования графического процессора и 89% от общего использования центрального процессора.
Ускорение на основе графического процессора
Графические процессоры в основном предоставляются двумя компаниями: NVIDIA и AMD. Хотя оба графических процессора можно использовать для общих численных вычислений, графический процессор NVIDIA более «близок» к глубокому обучению. Фактически, большинство фреймворков глубокого обучения выигрывают только от графических процессоров NVIDIA. Это связано с тем, что платформа глубокого обучения использует CUDA, комплексную среду разработки для вычислений на графических процессорах, предоставляемую NVIDIA.
Распределенное обучение
Распределенные вычисления на нескольких графических процессорах или нескольких машинах
TensorFlow от Google и CNTK от Microsoft придают большое значение распределенному обучению в процессе разработки.
Горизонтальная ось — количество графических процессоров. Вертикальная ось — скорость ускорения по сравнению с одним графическим процессором.
Уменьшение цифр арифметической точности
Что касается числовой точности (количества цифр для представления значения), мы уже знаем, что глубокое обучение не требует числовой точности в цифрах. Это важное свойство нейронных сетей. Это свойство основано на надежности нейронных сетей.
В будущем числа с плавающей запятой половинной точности будут использоваться в качестве стандарта, и ожидается, что скорость будет примерно в 2 раза выше, чем у графических процессоров предыдущего поколения.
Случаи применения глубокого обучения
Обнаружение объектов
Определить тип объекта и расположение объекта по изображению
Среди методов использования CNN для обнаружения объектов есть метод под названием R-CNN.
Сегментация изображений
Классифицируйте изображения на уровне пикселей
FCN классифицирует все пиксели посредством одного прямого процесса.
FCN буквально означает «сеть, полностью состоящая из сверточных слоев». По сравнению с общей CNN, содержащей полносвязные слои, FCN заменяет полностью связные слои сверточными слоями, которые играют ту же роль.
Создание подписи к изображению
Репрезентативный метод создания подписей к изображениям на основе глубокого обучения называется NIC.
NIC состоит из глубоких CNN и RNN (рекуррентной нейронной сети), которые обрабатывают естественный язык.
Будущее глубокого обучения
Преобразование стиля изображения
Генерация изображений
Автопилот
обучение с подкреплением
Распределенное представление естественного языка и слов
Марти: «Это тяжело». Д-р Браун: «В будущем все будет так тяжело?» —Фильм «Назад в будущее»
Что такое обработка естественного языка
Наш язык состоит из слов, а смысл языка состоит из слов. Другими словами, слово — это наименьшая единица значения.
Три способа заставить компьютеры понимать значение слов
Тезаурусный подход
подход, основанный на подсчете
Подход, основанный на выводах (word2vec)
Тезаурусный подход
Рассмотрите возможность определения значений слов вручную.
В настоящее время широко используется словарь синонимов.
Диаграмма, основанная на отношениях гиперонима и гипонима в соответствии со значением каждого слова.
ВордНет
Самый известный словарь синонимов
эффект
Получить синонимы к слову
Вычислить сходство между словами
Используется через модуль NLTK
Проблемы
Новые слова продолжают появляться, что затрудняет адаптацию к изменениям времени.
Высокая стоимость рабочей силы
Невозможно выразить тонкие различия в словах
подход, основанный на подсчете
корпус
Корпус — это большой объем текстовых данных.
Corpora, используемые в области обработки естественного языка, иногда добавляют дополнительную информацию к текстовым данным. Например, каждое слово текстовых данных можно пометить частью речи. Здесь предполагается, что в корпус, который мы используем, не добавлены теги.
Предварительная обработка корпуса на основе Python
знаменитый корпус
Википедия и Новости Google
предварительная обработка
Прописные -> Строчные буквы
текст.ниже()
Процесс пунктуации
text.replace('.', ' .')
re.split('(\W )', текст)
\W: Соответствует символам, не являющимся словами (не буквам, цифрам или знакам подчеркивания).
: указывает на соответствие предыдущему шаблону «\W», повторенному один или несколько раз.
Создавайте идентификаторы слов и таблицы соответствий.
Преобразование списка слов в список идентификаторов слов
corpus = [word_to_id[w] для w в словах]
Распределенное представление слов
Построить компактные и разумные векторные представления в словесной области.
Гипотеза распределения
Значение слова формируется окружающими его словами.
Контекст относится к словам, окружающим центрированное слово.
Размер контекста называется размером окна.
Размер окна равен 1, а контекст содержит по 1 слову слева и справа.
матрица совпадений
Самый простой способ использовать вектор — подсчитать, сколько раз вокруг него появляется слово.
text = 'Вы говорите до свидания, а я говорю привет.'
Установить размер окна равным 1
сходство между векторами
косинусное подобие
Сортировка похожих слов
Получить вектор слов запрашиваемого слова
Получите косинусное сходство между вектором слова слова запроса и всеми другими векторами слов соответственно.
Результаты основаны на сходстве косинусов с указанием их значений в порядке убывания.
Улучшения в методах, основанных на подсчете
Нажмите взаимная информация
В матрице совпадения такие общие слова, как the, будут считаться имеющими сильную корреляцию с такими существительными, как car.
PMI
, P(x) представляет вероятность возникновения x, P(y) представляет вероятность возникновения y, а P(x, y) представляет вероятность одновременного возникновения x и y.
PMI на основе матрицы совпадений
недостаточный
Когда количество совпадений двух слов равно 0, log(2)(0) = −∞
положительная точка, взаимная информация
Получите матрицу PPMI на основе матрицы совместного появления
Уменьшение размерности
Нам нужно наблюдать за распределением данных и находить важные «оси».
Разложение по сингулярным значениям (SVD)
SVD раскладывает любую матрицу на произведение 3-х матриц
где U и V — ортогональные матрицы, векторы-столбцы которых ортогональны друг другу, а S — диагональная матрица, в которой все элементы, кроме диагональных, равны 0.
Исходную матрицу можно аппроксимировать, удалив лишние векторы-столбцы в матрице U
U, S, V = np.linalg.svd(W)
Если размер матрицы равен N*N, вычислительная сложность SVD достигнет O(N^3). Поэтому часто используются более быстрые методы, такие как Truncated SVD. Усеченный SVD обеспечивает высокую скорость за счет усечения частей с меньшими сингулярными значениями.
из sklearn.utils.extmath импорта randomized_svd U, S, V = randomized_svd(W, n_comComponents=wordvec_size, n_iter=5, random_state=None)
набор данных PTB
Корпус PTB часто используется в качестве эталона для оценки предлагаемых методов.
Предварительная обработка корпуса PTB
скобки для замены редких слов специальным символом
Замените конкретные цифры на «N».
Предварительная обработка, которую я сделал
Объедините все предложения и рассматривайте их как один большой временной ряд. В настоящее время в конце каждого предложения вставляется специальный символ <eos>.
Назначение гиперпараметра
размер_окна = 2
wordvec_size = 100
Оценка на основе набора данных PTB
Для запроса слова you вы можете видеть, что личные местоимения, такие как i и we, занимают первое место. Это слова с одинаковым употреблением в грамматике.
Слово запроса год имеет такие синонимы, как месяц и квартал.
Слово запроса «автомобиль» имеет такие синонимы, как «автомобиль» и «транспортное средство».
При использовании Toyota в качестве термина запроса появлялись названия производителей автомобилей или торговые марки, такие как nissan, honda и lexus.
Подведем итог
Используйте корпус, чтобы вычислить количество слов в контексте, преобразовать их в матрицу PPMI, а затем получить хорошие векторы слов на основе уменьшения размерности SVD.
word2vec
«Если у вас нет оснований для суждений, не рассуждайте». —— Артур Конан Дойл, «Скандал в Богемии»
встраивание слов
Word2Vec — это алгоритм генерации «встраивания слов».
Помимо Word2Vec, существуют и другие методы генерации вложений слов, такие как GloVe (глобальные векторы для представления слов), FastText и т. д. Эти методы могут использовать разные стратегии и алгоритмы, но все они направлены на эффективный захват семантической информации слов в векторном пространстве.
Методы вывода и нейронные сети
Проблемы с методами, основанными на подсчете
В реальном мире корпуса имеют дело с очень большим количеством слов. Например, говорят, что словарный запас английского языка насчитывает более 1 миллиона слов. Если размер словаря превышает 1 миллион, то использование метода подсчета требует генерации огромной матрицы размером 1 миллион × 1 миллион, но выполнить SVD на такой большой матрице явно нереально.
Подходы, основанные на выводах, с использованием нейронных сетей
Обучение на мини-пакетных данных. То есть использование части данных для обучения и многократного обновления весов.
Обучение нейронных сетей может осуществляться параллельно с использованием нескольких машин и нескольких графических процессоров, что ускоряет весь процесс обучения.
Краткое изложение методов, основанных на выводе
Цель
Предсказать, какие слова окажутся в середине, учитывая окружающие слова (контекст), как загадку.
метод рассуждения
Введите контекст, и модель выведет вероятность появления каждого слова.
В результате модельного обучения мы получим распределенное представление слова.
Как обрабатывать слова в нейронных сетях
Преобразование слов в векторы
Нейронные сети не могут напрямую обрабатывать слова, как вы или говорите. Чтобы использовать нейронные сети для обработки слов, вам необходимо сначала преобразовать слова в векторы фиксированной длины.
Метод преобразования
горячий вектор
Только один элемент равен 1, остальные элементы равны 0.
Нейронные сети
входной слой
Полностью связный слой
Начальные веса случайны
Простое слово2vec
Вывод модели CBOW
состав
Функции
Есть два входных слоя
Преобразование из входного слоя в промежуточный завершает тот же полносвязный слой (вес W(in))
Преобразование от промежуточного слоя к нейронам выходного слоя завершается еще одним полносвязным слоем (вес W(out))
Нейроны среднего слоя представляют собой «среднее» значений, полученных каждым входным слоем после преобразования полносвязным слоем.
Нейроны выходного слоя оценивают каждое слово, и тем выше его значение. Чем больше значение, тем выше вероятность появления соответствующего слова.
Обучение модели CBOW
Преобразуйте оценки в вероятности с помощью функции Softmax.
Найдите ошибку перекрестной энтропии между этими вероятностями и контролируемыми метками.
Узнай это как потерю
Взвешенное и распределенное представление word2vec
Вес W(in) — это распределенное представление искомого слова.
Подготовка данных исследования
контекст и целевые слова
Преобразование в горячее представление
Реализация модели CBOW
Дополнительная информация
Модели CBOW и вероятность
Вероятность того, что wt произойдет после появления wt−1 и wt 1.
Функция потерь L (отрицательное логарифмическое правдоподобие) модели CBOW
модель пропуска грамма
word2vec имеет две модели
CBOW
пропуск грамма
Skip-gram — это модель, которая инвертирует контекст и целевые слова, обработанные моделью CBOW.
структурная схема сети Skip-gram
модели пропуска грамм и вероятность
Модель скип-граммы имеет только один входной слой, а количество выходных слоев равно количеству слов в контексте. Во-первых, потери каждого выходного слоя необходимо рассчитать отдельно, а затем сложить вместе и получить окончательные потери.
Предсказать контекст wt-1 и wt 1 на основе среднего слова (целевого слова) wt
Функция потерь модели пропуска грамм может быть выражена как
Сравнение функции потерь
Число прогнозов модели пропуска граммы равно количеству контекстных слов, поэтому ее функция потерь требует суммы потерь, соответствующих каждому контекстному слову. Модель CBOW требует только потери целевого слова.
Судя по точности распределенного представления слов, модель Skip-GRM в большинстве случаев дает лучшие результаты.
На основе подсчета и вывода
Сценарии, в которых необходимо добавить новые слова в словарь и обновить распределенное представление слов.
Методы, основанные на подсчете, требуют расчетов с нуля.
Методы, основанные на выводах, позволяют постепенно изучать параметры.
Свойства распределенных представлений слов
Методы, основанные на подсчете, в основном кодируют сходство слов.
Методы, основанные на умозаключениях, могут понимать сложные закономерности между словами.
королевская женщина = королева
Точность распределенных представлений слов
Методы, основанные на умозаключениях, и методы, основанные на подсчете, неотличимы.
Ускорение word2vec
Не пытайтесь знать все, иначе вы ничего не узнаете. —— Демокрит (древнегреческий философ)
Улучшать
изучать
другой
Применение word2vec
Распределенное представление слов, полученное с помощью word2vec, можно использовать для поиска приблизительных слов.
трансферное обучение
Знания, полученные в одной области, могут быть применены в других областях.
При решении задач обработки естественного языка word2vec обычно не используется для изучения распределенного представления слов с нуля. Вместо этого он сначала изучается на крупномасштабном корпусе (текстовые данные, такие как Wikipedia, Google News и т. д.), а затем уже затем. изученное распределенное представление применяется к одной задаче.
В задачах обработки естественного языка, таких как классификация текста, кластеризация текста, маркировка частей речи и анализ настроений, на первом этапе векторизации слов может использоваться распределенное представление изученных слов.
Распределенные представления слов прекрасно работают практически во всех типах задач обработки естественного языка!
Используя распределенные представления слов, также можно конвертировать документы (последовательности слов) в векторы фиксированной длины.
Если вы можете преобразовать естественный язык в векторы, вы можете использовать множество методов машинного обучения.
Как оценить векторы слов
искусственно созданный набор для оценки сходства слов
Сходство между кошкой и животным равно 8, а сходство между кошкой и машиной - 2... Аналогично этому, сходство между словами оценивается вручную по шкале от 0 до 10.
Сравните оценки, полученные людьми, и косинусное сходство, полученное word2vec, чтобы изучить корреляцию между ними.
в заключение
Разные модели имеют разную точность (выберите лучшую модель на основе корпуса)
Чем больше корпус, тем лучше результаты (всегда нужны большие данные)
Размерность векторов слов должна быть умеренной (слишком большая приведет к плохой точности).
РНН
Я просто помню, как мяукал и плакал в темном и влажном месте. —— Нацумэ Сосэки «Я кот»
Вероятность и языковые модели
Простая сеть прямой связи не может полностью изучить свойства данных временных рядов. В результате появилась RNN (рекуррентная нейронная сеть).
word2vec с вероятностной точки зрения
Можно ли для чего-нибудь использовать первоначальную цель модели CBOW — «предсказывать целевые слова по контексту»? Может ли P(wt|wt-2, wt-1) играть роль в некоторых практических сценариях?
Все окна, которые мы рассматривали ранее, симметричны, и далее мы рассматриваем только левое окно.
языковая модель
Используйте вероятность, чтобы оценить вероятность возникновения последовательности слов, то есть степень, в которой последовательность слов является естественной.
Вероятностное представление
Где P(A,B) = P(A|B)*P(B) = P(B|A)*P(A)
Использование модели CBOW в качестве языковой модели
Цепь Маркова
Когда вероятность события зависит только от N предшествующих ему событий, это называется «цепью Маркова N-го порядка».
Ограничение контекста двумя словами слева представляет собой цепь Маркова второго порядка.
недостаточный
Если окно слишком короткое, контекст невозможно объединить.
Если окно слишком длинное, порядок слов в контексте будет игнорироваться.
CBOW — сокращение от «Непрерывный мешок слов». Bag-Of-Words означает «мешок слов», что означает, что порядок слов в мешке игнорируется.
В RNN есть механизм, который может запоминать контекстную информацию независимо от продолжительности контекста. Следовательно, данные временных рядов произвольной длины можно обрабатывать с помощью RNN.
word2vec — это метод, направленный на получение распределенного представления слов, который обычно не используется в языковых моделях.
РНН
рекуррентная нейронная сеть
Структура слоя RNN
Входными данными в момент времени t является xt, что означает, что данные временных рядов (x0, x1, ···, xt, ···) будут введены в слой. Затем в форме, соответствующей входным данным, выведите (h0, h1, ··· , ht, ···)
Выходные данные имеют две вилки, что означает, что было скопировано одно и то же. Ответвление на выходе станет отдельным входом.
развернуть цикл
Мы используем слово «момент» для обозначения индекса данных временного ряда (то есть входные данные в момент времени t равны xt). Используются такие выражения, как «t-е слово» и «t-й уровень RNN», а также такие выражения, как «слово в момент времени t» или «уровень RNN в момент времени t».
Уровень RNN в каждый момент времени получает два значения: входные данные, передаваемые на этот уровень, и выходные данные предыдущего слоя RNN.
RNN имеет два веса, а именно вес Wx, который преобразует входной сигнал x в выходной h, и вес Wh, который преобразует выходные данные предыдущего слоя RNN в выходные данные в текущий момент. Кроме того, существует предвзятость b.
С другой стороны, RNN имеет состояние h, которое постоянно обновляется по приведенной выше формуле. Таким образом, h можно назвать скрытым состоянием или вектором скрытого состояния.
Два метода схематического рисования эквивалентны.
Обратное распространение ошибки во времени
обратное распространение ошибки по времени
Чтобы найти градиент на основе BPTT, промежуточные данные слоя RNN в каждый момент времени должны быть сохранены в памяти. Следовательно, по мере того, как данные временных рядов становятся длиннее, использование памяти компьютера (а не только вычислений) также увеличивается.
Усеченное БПТТ
Чтобы решить вышеуказанную проблему, при обработке данных длинных временных рядов обычной практикой является сокращение сетевого соединения до соответствующей длины.
Сети, которые слишком длинны по направлению оси времени, усекаются в соответствующих местах для создания нескольких небольших сетей, а затем на вырезанных небольших сетях применяется метод обратного распространения ошибки. Этот метод называется усеченным BPTT (усеченное BPTT).
В усеченном BPTT соединение обратного распространения сети отключается, но соединение прямого распространения все еще сохраняется.
Обработка заказа
Первое, что нужно сделать, это передать входные данные блока 1 (x0,..., x9) на уровень RNN.
Сначала выполните прямое распространение, а затем обратное распространение, чтобы получить желаемый градиент.
Далее входные данные следующего блока (x10, x11, ···, x19) подаются на уровень RNN. Для расчета этого прямого распространения требуется последнее скрытое состояние h9 предыдущего блока, чтобы можно было поддерживать соединение прямого распространения.
Мини-пакетное обучение усеченному BPTT
В начале входных данных необходимо сделать «смещение» внутри отдельных партий.
Уведомление
Чтобы ввести данные по порядку
Чтобы сместить начальную позицию каждой партии (каждой выборки) входных данных
Внедрение РНС
Учитывая обучение на основе усеченного BPTT, целевая нейронная сеть получает данные временных рядов длиной T (T — любое значение), и эти T-состояния можно рассматривать как слой
Назовите слой, который обрабатывает T шагов за раз, «слоем Time RNN».
Уровень, выполняющий одношаговую обработку на уровне Time RNN, называется «слоем RNN».
Как и Time RNN, слои, которые целостно обрабатывают данные временных рядов, именуются начиная со слова «Время», что является соглашением об именах, изложенным в этой книге. После этого мы также реализуем слой Time Affine, слой Time Embedding и т. д.
Реализация уровня RNN
прямое распространение
Обратное распространение ошибки
Реализация слоя Time RNN
прямое распространение
Слой Time RNN сохраняет скрытое состояние h в переменной-члене, чтобы наследовать скрытое состояние между блоками.
Используйте параметр с состоянием, чтобы записать, вызывается ли скрытое состояние h. При обратном распространении ошибки, когда состояние имеет значение False, скрытым состоянием первого уровня RNN является нулевая матрица.
Обратное распространение ошибки
Мы сохраняем градиент, переходящий в скрытое состояние в предыдущий момент, в переменной-члене dh. Это потому, что мы будем использовать его, когда будем обсуждать seq2seq (последовательность-последовательность) в главе 7.
Реализация слоев для обработки данных временных рядов
Полная картина РННЛМ
Языковые модели на основе RNN называются RNNLM.
состав
Уровень 1 — это уровень внедрения, который преобразует идентификаторы слов в распределенные представления слов (векторы слов). Этот вектор слов подается на уровень RNN.
Уровень RNN выводит скрытое состояние на следующий слой (вверху), а также выводит скрытое состояние на следующий уровень RNN (справа).
Выходные данные скрытого состояния от уровня RNN вверх проходят через уровень Affine и передаются на уровень Softmax.
Образец
Ты говоришь пока, а я говорю привет
Вводится первое слово (ваше слово с идентификатором 0). В настоящее время, глядя на выходные данные распределения вероятностей слоя Softmax, мы видим, что вероятность сказать является самой высокой, что указывает на то, что слово, которое появляется после вас, правильно предсказано как сказать.
Слово 2 говорит. В это время выходные данные слоя Softmax имеют более высокую вероятность прощания и здравствуйте. Потому что уровень RNN сохраняет прошлую информацию «вы говорите» как короткий скрытый вектор состояния. Задача уровня RNN — передать эту информацию на аффинный уровень выше и на уровень RNN в следующий момент.
Реализация временного слоя
Целевая структура нейронной сети
Аффинное время
Слой Time Affine не просто использует слои T Affine, но использует матричные операции для достижения эффективной общей обработки.
Время Софтмакс
Ошибка потери реализована в Softmax. Уровень ошибки перекрестной энтропии рассчитывает ошибку перекрестной энтропии.
Каждый слой T Softmax с потерями рассчитывает потери, затем складывает их вместе и усредняет, а полученное значение используется как окончательные потери.
Изучение и оценка RNNLM
Внедрение РННЛМ
Оценка языковой модели
Входные данные: 1
Недоумение часто используется в качестве индикатора для оценки эффективности прогнозирования языковых моделей. Недоумение=1/вероятность
Входных данных несколько.
Здесь предполагается, что объем данных равен N. tn — метка правильного решения в виде горячего вектора, tnk представляет k-е значение n-х данных, а ynk представляет распределение вероятностей (выходные данные Softmax в нейронной сети). Кстати, L — это потери нейронной сети
Чем больше вероятность, тем лучше, и чем меньше путаницы, тем лучше.
Недоумение представляет собой количество вариантов, которые можно выбрать в следующий раз. Если путаница равна 1,25, это означает, что число кандидатов на следующее слово около 1.
Изучение РННЛМ
Тренерский класс РННЛМ
Инкапсулируйте вышеуказанные операции в классы
Распространено на графовые структуры.
рекуррентная нейронная сеть
Существует три скрытых слоя h1, h2 и h3, где h1 рассчитывается на основе двух входных данных x1 и x2, h2 рассчитывается на основе двух других входных слоев x3 и x4, а h3 рассчитывается на основе двух скрытых слоев h1 и h2.
графовая сеть
Закрытый РНН
Снимите багаж и путешествуйте налегке. ——Ницше
Когда мы говорим RNN, мы имеем в виду больше уровень LSTM, чем RNN из предыдущей главы. Когда нам нужно явно сослаться на RNN из предыдущей главы, мы говорим «простой RNN» или «Элман».
Проблемы с простым RNN
В процессе обучения уровень RNN изучает зависимости во временном направлении, передавая «значимые градиенты» в прошлое. Но градиент обучения трудно контролировать, что может привести к его исчезновению или взрыву градиента.
причина
функция активации
Тань
Как видно из графика, его значение меньше 1,0, и его значение уменьшается по мере удаления x от 0. Это означает, что по мере прохождения градиента обратного распространения через узел Тан его значение будет становиться все меньше и меньше. Следовательно, если вы передадите функцию tanh T раз, градиент также уменьшится в T раз.
РеЛУ
Градиент не ухудшается
Узел MatMul (матричный продукт)
градиентный взрыв
Как показано на рисунке, величина градиента увеличивается экспоненциально с шагом по времени. Если произойдет взрыв градиента, это в конечном итоге приведет к переполнению и таким значениям, как NaN (Not a Number, нечисловое значение). В результате обучение нейронной сети будет работать некорректно.
градиент исчезает
Как показано на рисунке, размер градиента уменьшается экспоненциально с шагом по времени. Если происходит исчезновение градиента, он быстро станет меньше. Как только градиент становится малым, градиент веса не может быть обновлен, и модель не может изучить долгосрочные зависимости.
Причина изменения
Матрица Wh многократно умножается T раз. Если бы Wh был скаляром, проблема была бы простой: когда Wh больше 1, градиент увеличивается экспоненциально; когда Wh меньше 1, градиент экспоненциально уменьшается;
Если Wh — матрица. В этот момент сингулярные значения матрицы станут индикаторами. Проще говоря, сингулярные значения матрицы представляют собой степень дисперсии данных. В зависимости от того, больше ли это сингулярное значение (точнее, максимум нескольких сингулярных значений) 1, можно предсказать изменения величины градиента.
Меры противодействия взрывному градиенту
Существует общепринятый метод решения проблемы взрыва градиента, который называется отсечением градиента.
Здесь предполагается, что градиенты всех параметров, используемых нейронной сетью, могут быть интегрированы в переменную и представлены символом g. Затем установите порог на порог. В это время, если норма g градиента L2 больше или равна порогу, градиент корректируется, как описано выше.
Исчезающие градиенты и LSTM
При обучении RNN исчезновение градиента также является большой проблемой. Чтобы решить эту проблему, необходимо фундаментально изменить структуру уровня RNN. Здесь вот-вот появится тема этой главы — Gated RNN. Было предложено множество структур Gated RNN (сетевых структур), среди которых типичными являются LSTM и GRU.
ЛСТМ-интерфейс
LSTM — это аббревиатура Long Short-Term Memory, что означает, что он может поддерживать кратковременную память (Short-Term Memory) в течение длительного времени.
Сначала выразите вычисление tanh(h(t-1)*Wh xt*Wx b) как прямоугольный узел tanh (ht-1 и xt — векторы-строки)
Давайте сравним интерфейс (вход и выход) LSTM и RNN.
Разница между интерфейсом LSTM и RNN заключается в том, что LSTM также имеет путь c. Этот c называется блоком памяти (или просто «единицей»), что эквивалентно выделенному отделу памяти LSTM.
Особенностью блока памяти является то, что он принимает и передает данные только внутри уровня LSTM. То есть со стороны, получающей выходные данные LSTM, выходные данные LSTM имеют только скрытый вектор состояния h. Блок памяти c невидим для внешнего мира, и нам даже не нужно задумываться о его существовании.
Структура слоя LSTM
ct хранит память LSTM на момент времени t, которую можно считать содержащей всю необходимую информацию из прошлого до момента времени t. Затем на основе ct этой несущей памяти выводится скрытое состояние ht.
вычислить
Текущая единица памяти ct вычисляется на основе трех входных данных c(t-1), h(t-1) и xt посредством «какого-то рода вычислений» (описанных позже).
Скрытое состояние ht рассчитывается с использованием обновленного ct по формуле ht = tanh(ct).
Ворота
Степень открытия и закрытия двери также автоматически определяется из данных. Степень открытия и закрытия представлена действительным числом от 0,0 до 1,0 (1,0 — полностью открыто).
выходные ворота
Скрытое состояние ht применяет функцию tanh только к блоку памяти ct, и мы рассматриваем возможность применения вентилей к tanh(ct). Поскольку этот вентиль управляет выходом следующего скрытого состояния ht, он называется выходным вентилем.
Выходной вентиль рассчитывается следующим образом. Сигмовидная функция представлена σ()
ht можно вычислить из произведения o и tanh(ct). Метод расчета представляет собой поэлементное произведение, которое является произведением соответствующих элементов. Его также называют произведением Адамара.
дверь забвения
Теперь мы добавляем вентиль для забывания ненужных воспоминаний в блоке памяти c(t-1), который здесь называется вентилем забывания.
Расчет ворот забывания следующий.
ct получается произведением этого f и соответствующего элемента предыдущей единицы памяти ct−1.
новый блок памяти
Теперь мы также хотим добавить в эту единицу памяти какую-то новую информацию, которую следует запомнить, для этого добавляем новый узел tanh
Результат, вычисленный на основе узла tanh, добавляется в блок памяти ct-1 в предыдущий момент.
Роль этого узла танх заключается не в шлюзовании, а в добавлении новой информации в блок памяти. Следовательно, он не использует сигмовидную функцию в качестве функции активации, а использует функцию tanh.
входные ворота
Мы добавляем вентиль в g на рисунке 6-17. Этот вновь добавленный вентиль здесь называется входным вентилем.
Входной вентиль определяет значение каждого элемента новой информации g. Входные ворота не добавляют новую информацию без рассмотрения, они сами выбирают, какую информацию добавлять; Другими словами, входной вентиль добавляет взвешенную новую информацию.
Входной вентиль рассчитывается следующим образом
Градиентный поток LSTM
Обратное распространение ячеек памяти происходит только через узлы « » и «×». Узел " " выводит градиент из восходящего потока как есть, поэтому градиент не изменяется (вырождается). Расчет узла «×» представляет собой не матричное произведение, а произведение соответствующих элементов (произведение Хадама), которое не вызовет изменения градиента.
Реализация ЛСТМ
Для аффинных изменений, таких как x*Wx h*Wh b, их можно интегрировать в одну формулу.
Библиотеки матриц обычно быстрее вычисляют «большие матрицы», а исходный код становится чище благодаря совместному управлению весами.
Языковая модель с использованием LSTM
Реализованная здесь языковая модель почти такая же, как и в предыдущей главе, с той лишь разницей, что там, где в предыдущей главе использовался слой Time RNN, на этот раз используется слой Time LSTM.
Дальнейшие улучшения RNNLM
Многослойность слоев LSTM
Углубление уровня LSTM (сочетание нескольких слоев LSTM) часто работает хорошо.
Сколько слоев подходит?
Поскольку количество слоев является гиперпараметром, его необходимо определять на основе сложности решаемой задачи и размера обучающих данных, которые могут быть предоставлены.
В случае изучения языковой модели на наборе данных PTB лучшие результаты можно получить, если количество слоев LSTM составляет от 2 до 4.
Модель GNMT, используемая в Google Translate, накладывается на сеть из 8 уровней LSTM.
Подавить переоснащение на основе Dropout
Углубляя глубину, можно создать более выразительные модели, но такие модели часто страдают от переобучения. Что еще хуже, RNN более склонны к переобучению, чем обычные нейронные сети прямого распространения, поэтому меры противодействия переобучению для RNN очень важны.
Контрмеры
Добавить данные обучения
Уменьшить сложность модели
Регуляризация
Выбывать
Выбывать
Dropout случайным образом выбирает подмножество нейронов, затем игнорирует их и прекращает передачу сигналов вперед.
Позиция вставки выпадающего слоя
Регулярное отсев
структура ошибки
Если Dropout вставлен в направлении временного ряда, информация будет постепенно теряться с течением времени по мере обучения модели.
Правильная структура
Вставить слой Dropout вертикально
Отсев вариаций
При совместном использовании маски между Dropouts одного и того же слоя маска становится «фиксированной». Таким образом, способ потери информации также «фиксируется», поэтому можно избежать экспоненциальной потери информации, которая происходит при обычном Dropout.
распределение веса
Weight связывание можно дословно перевести как «связывание веса».
Хитрость связывания (совместного использования) весов слоя внедрения и аффинного слоя заключается в распределении веса. Разделив веса между этими двумя уровнями, можно значительно сократить количество изучаемых параметров. Помимо этого, это повышает точность.
Улучшенная реализация RNNLM
Передовые исследования
Генерировать текст на основе RNN
Идеальной статьи не существует, как не существует идеального отчаяния. —— Харуки Мураками «Слушай пение ветра»
Генерация текста с использованием языковых моделей
Как сгенерировать следующее новое слово
Выберите слово с наибольшей вероятностью, результат определяется однозначно
Слова с высокой вероятностью выбираются легко, слова с низкой вероятностью выбираются сложно.
Реализация генерации текста
Улучшенная генерация текста
Используйте лучшие языковые модели
модель seq2seq
Seq2Seq (от последовательности к последовательности, модель от последовательности к последовательности)
Модели для преобразования данных временных рядов в другие данные временных рядов
Принцип seq2seq
Данная модель имеет два модуля – Кодер и Декодер. Кодер кодирует входные данные, а декодер декодирует закодированные данные.
seq2seq состоит из двух уровней LSTM: кодера LSTM и декодера LSTM.
Скрытое состояние h LSTM представляет собой вектор фиксированной длины. Разница между ней и моделью из предыдущего раздела заключается в том, что слой LSTM получает вектор h. Это единственное небольшое изменение позволило моделям обычного языка превратиться в декодеры, способные выполнять перевод.
Простая попытка преобразования данных временных рядов
Попытка заставить seq2seq выполнять дополнительные вычисления
Данные временных рядов переменной длины
наполнение
Заполните исходные данные недействительными (бессмысленными) данными, начиная с И выровняйте длину данных.
При использовании заполнения вам необходимо добавить некоторую обработку, специфичную для заполнения, в seq2seq.
Когда в декодер вводится заполнение, его потери не должны рассчитываться (это можно решить, добавив к слою функцию маски Softmax с потерей)
При заполнении ввода в кодере слой LSTM должен выводить входные данные из предыдущего момента как есть.
аддитивный набор данных
Реализация seq2seq
Улучшения в seq2seq
Обратные входные данные
Во многих случаях после использования этого метода обучение происходит быстрее, а конечная точность повышается.
Интуитивно понятно, что после инвертирования данных распространение градиентов может стать более плавным и эффективным.
подглядывание
Кодировщик, использующий шлем, называется Peeky Decoder, а кодировщик seq2seq, использующий Peeky Decoder, называется Peeky seq2seq.
Кодер преобразует входное предложение в вектор h фиксированной длины, который концентрирует всю информацию, необходимую декодеру. Это единственный источник информации для декодера.
Выход h кодера, на котором концентрируется важная информация, может быть назначен другим уровням декодера.
Два вектора вводятся одновременно в слой LSTM и аффинный слой, что фактически представляет собой объединение двух векторов.
Применение seq2seq
Машинный перевод: конвертировать «текст на одном языке» в «текст на другом языке».
Автосводка: преобразуйте «длинный текст» в «краткое резюме».
Система вопросов и ответов: преобразуйте «вопрос» в «ответ».
Автоответ по электронной почте: преобразуйте «текст полученного электронного письма» в «текст ответа».
чат-бот
обучение алгоритму
Автоматическое описание изображения
Внимание
Внимание – это все. —— Название статьи Васвани
Внимание, несомненно, является одной из важнейших технологий в области глубокого обучения последних лет. Цель этой главы — понять структуру внимания на уровне кода, а затем применить ее к практическим задачам и испытать ее чудесные эффекты.
Структура внимания
Проблемы с seq2seq
Кодер используется в seq2seq для кодирования данных временного ряда, а затем закодированная информация передается в декодер. На этом этапе выходные данные кодера представляют собой вектор фиксированной длины.
Векторы фиксированной длины означают, что независимо от длины входного оператора (независимо от того, насколько он длинный), он будет преобразован в вектор той же длины.
Улучшения кодировщика
Длина вывода кодировщика должна меняться соответственно в зависимости от длины входного текста.
Поскольку кодировщик обрабатывает данные слева направо, строго говоря, вектор «кошки» содержит только информацию трех слов «我的人», «は» и «猫». Учитывая общий баланс, лучше всего включать информацию вокруг слова «кот» равномерно. В этом случае более эффективен двунаправленный RNN (или двунаправленный LSTM), который обрабатывает данные временных рядов в обоих направлениях.
Улучшения декодера
Ранее мы помещали «последнее» скрытое состояние слоя LSTM кодера в «начальное» скрытое состояние слоя LSTM декодера.
Декодер из предыдущей главы использовал только последнее скрытое состояние слоя LSTM кодера. При использовании hs извлекается и передается в декодер только последняя строка. Далее мы улучшаем декодер, чтобы он мог использовать все hs.
Мы фокусируемся на определенном слове (или наборе слов) и преобразуем это слово в любой момент. Это позволяет seq2seq узнать соответствие между тем, «какие слова на входе и выходе с какими словами связаны».
Пример
Мое поколение [わがはい] = я
猫[ねこ] = кот
Многие исследования используют знание словесных соответствий, таких как «кот = кот». Такая информация, указывающая на соответствие между словами (или фразами), называется выравниванием. До сих пор выравнивание в основном выполнялось вручную, но технология Attention, которую мы представим, успешно внедрила идею выравнивания в seq2seq автоматически. Это также эволюция от «ручного управления» к «механической автоматизации».
структурные изменения
Как рассчитать
Можно ли заменить операцию «отбора» дифференцируемой операцией? Вместо «одиночного выбора» лучше «выбрать все». Мы отдельно рассчитываем вес, представляющий важность (значение вклада) каждого слова.
Как и распределение вероятностей, каждый элемент представляет собой скаляр от 0,0 до 1,0, а сумма равна 1. Затем вычислите взвешенную сумму весов, представляющих важность каждого слова и вектора слов hs, чтобы получить целевой вектор.
При обработке данных последовательности сеть должна уделять больше внимания важным частям входных данных и игнорировать неважные части. Она явно взвешивает важные части входной последовательности, изучая веса различных частей, чтобы модель могла быть лучше. пристальное внимание к информации, связанной с результатами. Ключом к механизму внимания является внедрение механизма динамического расчета веса каждой позиции во входной последовательности, чтобы на каждом временном шаге различные части входной последовательности взвешивались и суммировались для получения выходных данных текущего временного шага. . При генерации каждого вывода декодер уделяет разное внимание различным частям входной последовательности, что позволяет модели лучше сосредоточиться на важной информации во входной последовательности.
Изучение веса
Наша цель — численно выразить, насколько «похож» этот h на отдельные векторы слов hs.
Здесь мы используем простейший векторный внутренний продукт.
Существует несколько способов расчета сходства векторов. Помимо внутренних продуктов, существует также практика использования небольших нейронных сетей для вывода оценок.
Далее s регуляризуется с использованием старой функции Softmax.
Интегрировать
Реализация seq2seq с вниманием
Оценка внимания
Мы обратились к Вниманию, чтобы подтвердить эффект seq2seq, изучив проблему «преобразования формата даты».
Проблема с преобразованием формата даты
Изучение seq2seq с вниманием
Визуализация внимания
Другие темы о Внимание
Двунаправленный RNN
Если рассматривать общий баланс, то мы надеемся, что вектор будет содержать информацию вокруг слова «кот» более равномерно.
Двунаправленный LSTM добавляет слой LSTM, обработанный в противоположном направлении, поверх предыдущего слоя LSTM.
Соедините скрытые состояния двух слоев LSTM в каждый момент и используйте его в качестве окончательного вектора скрытого состояния (помимо сращивания вы также можете «суммировать» или «усреднять» и т. д.)
Как использовать слой внимания
Выход слоя внимания (вектор контекста) в следующий момент подключается к входу слоя LSTM. Благодаря этой структуре уровень LSTM может использовать информацию вектора контекста. Напротив, реализованная нами модель использует векторы контекста на аффинном слое.
Углубление seq2seq и пропуск соединения
Углубление слоя RNN
seq2seq с вниманием, используя 3 слоя слоя LSTM
остаточное соединение
В месте соединения остаточного соединения добавляются два вывода.
Поскольку при сложении градиенты распространяются «как есть» во время обратного распространения ошибки, градиенты в остаточных соединениях могут распространяться на предыдущий уровень без какого-либо эффекта. Таким образом, даже если слой углубляется, градиент может распространяться нормально без исчезновения градиента (или взрыва градиента), и обучение может проходить гладко.
Применение внимания
ГНМТ
История машинного перевода
Перевод на основе правил
Используйте перевод по регистру
Статистический перевод
Нейронный машинный перевод
С 2016 года Google Translate использует нейронный машинный перевод для реальных услуг. Система машинного перевода под названием GNMT
GNMT требует больших объемов данных и вычислительных ресурсов. GNMT использует большой объем обучающих данных (1 модель), изученных почти на 100 графических процессорах в течение 6 дней. Кроме того, GNMT также пытается еще больше повысить точность на основе таких технологий, как ансамблевое обучение и обучение с подкреплением, которые могут параллельно изучать 8 моделей.
Трансформатор
RNN может хорошо обрабатывать данные временных рядов переменной длины. Однако у RNN есть и недостатки, такие как проблемы с параллельной обработкой.
RNN необходимо рассчитывать шаг за шагом на основе результатов расчета предыдущего момента, поэтому (в принципе) невозможно рассчитывать RNN параллельно во временном направлении. Это станет большим узким местом при выполнении глубокого обучения в параллельной вычислительной среде с использованием графических процессоров, поэтому у нас есть мотивация избегать RNN.
Трансформер не использует RNN, но использует для обработки внимание. Давайте кратко рассмотрим этот Трансформер.
Внимание к себе
Трансформер основан на Внимании, в котором используется техника Само-Внимания, что немаловажно. Само-внимание буквально переводится как «собственное внимание к себе», то есть это Внимание, основанное на данных временного ряда, направленное на наблюдение за взаимосвязью между каждым элементом данных временного ряда и другими элементами.
Используйте полносвязную нейронную сеть с одним скрытым слоем и функцией активации ReLU. Кроме того, Nx на рисунке означает, что элементы, окруженные серым фоном, расположены друг над другом N раз.
НТМ
НТМ (нейронная машина Тьюринга)
Нейронные сети также могут получить дополнительные возможности, используя внешние устройства хранения данных.
На основе внимания кодеры и декодеры реализуют в компьютерах «операции с памятью». Другими словами, это можно интерпретировать так: кодер записывает необходимую информацию в память, а декодер считывает из памяти. Получите необходимую информацию.
Чтобы имитировать работу памяти компьютера, операция памяти NTM использует два внимания:
Внимание, основанное на контенте, такое же, как внимание, которое мы представили ранее, и используется для поиска похожих векторов определенного вектора (вектора запроса) из памяти.
Внимание, основанное на позиции, используется для перемещения вперед и назад от адреса памяти (веса каждого места в памяти), на котором было сосредоточено внимание в последний момент. Здесь мы опускаем обсуждение его технических деталей, которых можно достичь с помощью операции одномерной свертки. Функция перемещения, основанная на местоположении памяти, может воспроизводить уникальную компьютерную деятельность «чтения с продвижением (один адрес памяти)».
NTM успешно решила проблемы с долговременной памятью, задачи сортировки (расстановки чисел от большего к меньшему) и т. д.
Оптимизация и регуляризация сети
Никакие математические трюки не смогут компенсировать недостаток информации. [Корнелиус Ланцос]
Две основные трудности
Оптимизация
Трудно оптимизировать и требует больших вычислительных ресурсов.
проблема обобщения
Способность подгонки слишком сильна, и ее легко переоснастить.
Оптимизация сети
Трудности в оптимизации сети
Разнообразие сетевой структуры
Трудно найти общий метод оптимизации. Различные методы оптимизации также имеют относительно большие различия в разных сетевых структурах.
Трудности с низкоразмерными пространствами
Как выбрать параметры инициализации
Выход из локального оптимума
Трудности с многомерными пространствами
Как выбрать параметры инициализации
Как выйти из седловой точки
В некоторых измерениях это самая высокая точка, в других измерениях это самая низкая точка.
плоское дно
В глубоких нейронных сетях имеется множество параметров и существует определенная степень избыточности, в результате чего каждый отдельный параметр оказывает относительно небольшое влияние на конечные потери.
застрял в локальном минимуме
оптимизация
Тип метода градиентного спуска
пакетный градиентный спуск
стохастический градиентный спуск
мини-пакетный градиентный спуск
В случае градиентного спуска вычисление градиента на всех обучающих данных для каждой итерации требует больше вычислительных ресурсов. Кроме того, данные в больших обучающих наборах часто очень избыточны, и нет необходимости вычислять градиенты по всему обучающему набору.
снижение скорости обучения
Скорость обучения должна быть выше в начале, чтобы обеспечить скорость сходимости, и меньше, когда она приближается к оптимальной точке, чтобы избежать колебаний вперед и назад.
тип
Обратное затухание во времени
экспоненциальное затухание
естественный экспоненциальный распад
β — коэффициент затухания, обычно принимающий значение 0,96.
Также существуют методы адаптивной настройки скорости обучения, такие как AdaGrad, RMSprop, AdaDelta и др.
Метод АдаГрад
Среди эффективных методов повышения скорости обучения есть метод, называемый снижением скорости обучения, который постепенно снижает скорость обучения по мере продолжения обучения.
AdaGrad развивает эту идею дальше, корректируя скорость обучения соответствующим образом для каждого элемента параметров и одновременно обучаясь.
Ада происходит от английского слова Adaptive, что означает «соответствующий».
Как и предыдущий SGD, W представляет собой обновляемый весовой параметр, частная производная представляет градиент, а n представляет скорость обучения.
Но появляется новая переменная h, которая хранит сумму квадратов всех предыдущих значений градиента. Следовательно, чем глубже обучение, тем меньше амплитуда обновления.
Метод RMSProp
Если учиться бесконечно, сумма обновления станет 0
Метод RMSProp не добавляет все прошлые градиенты одинаково, а постепенно забывает прошлые градиенты и отражает больше информации о новых градиентах при выполнении операции сложения.
Технически говоря, эта операция называется «экспоненциальное скользящее среднее», которое экспоненциально уменьшает масштаб прошлых градиентов.
Оптимизация направления градиента
Метод импульса
При мини-пакетном градиентном спуске, если количество выборок, выбираемых каждый раз, относительно невелико, потери будут уменьшаться осциллирующим образом.
Используя средний градиент за последний период времени вместо градиента в текущий момент в качестве направления обновления параметра.
также называется методом импульса
Недостатки SGD
f(x,y)=(1/20)*x^2 y^2
Оптимизированный путь обновления на основе SGD: движение к минимальному значению (0, 0) по зигзагообразной форме, низкая эффективность.
способы улучшения
Как и предыдущий SGD, W представляет собой обновляемый весовой параметр, частная производная представляет градиент, а n представляет скорость обучения.
Но появляется новая переменная v, соответствующая физической скорости, под которой можно понимать силу, действующую на объект в направлении градиента.
Метод Адама
Импульс движется в соответствии с физическими правилами мяча, катящегося в миске, и AdaGrad соответствующим образом настраивает скорость обновления для каждого элемента параметра. Объединить их — идея Адама
Не существует (в настоящее время) метода, который бы хорошо справлялся со всеми задачами. Каждый из этих четырех методов имеет свои особенности, и у каждого есть свои проблемы, которые он хорошо решает, и проблемы, которые он не решает.
Градиентная обрезка
Если градиент внезапно увеличится, использование большого градиента для обновления параметров приведет к тому, что он окажется далеко от оптимальной точки.
Когда модуль градиента превышает определенный порог, градиент усекается.
Ограничьте модуль градиента интервалом и усекайте его, когда модуль градиента меньше или больше этого интервала.
тип
Усечь по значению
gt = max(min(gt, b), а).
Усечь по форме
Инициализация параметров
Инициализация распределения Гаусса
Метод инициализации по Гауссу — это самый простой метод инициализации. Параметры инициализируются случайным образом на основе распределения Гаусса с фиксированным средним значением (например, 0) и фиксированной дисперсией (например, 0,01).
Когда количество входных соединений нейрона равно n(in), его вес входного соединения может быть установлен для инициализации с помощью гауссовского распределения N(0,sqrt(1/nin)).
Если также учитывать количество выходных соединений nout, его можно инициализировать в соответствии с распределением Гаусса N(0,sqrt(2/(nin nout)))
Равномерно распределенная инициализация
Инициализация равномерного распределения использует равномерное распределение для инициализации параметров в пределах заданного интервала [-r, r]. Настройка гиперпараметра r также может быть настроена адаптивно в зависимости от количества связей нейронов.
Тип функции активации
логистическая функция
Тань
Начальное значение Ксавьера
Мы попытались использовать начальные значения веса, рекомендованные в статье Ксавье Глорота и др.
Если количество узлов в предыдущем слое равно n, начальное значение использует распределение Гаусса со стандартным отклонением (1/sqrt(n))
Начальное значение веса ReLU
Когда функция активации использует ReLU, обычно рекомендуется использовать начальное значение, выделенное для ReLU, которое является начальным значением, рекомендованным Kaiming He et al., также известным как «начальное значение He».
Когда количество узлов в текущем слое равно n, начальное значение He использует распределение Гаусса со стандартным отклонением (2/sqrt(n))
Предварительная обработка данных
разные единицы
Различные источники и единицы измерения каждого размерного признака приведут к тому, что диапазон распределения значений этих признаков будет сильно различаться. Когда мы вычисляем евклидово расстояние между различными выборками, доминирующую роль будут играть признаки с большим диапазоном значений.
нормализация масштабирования
Диапазон значений каждого признака нормализуется до [0, 1] или [-1, 1] путем масштабирования.
стандартная нормализация
Также называется нормализацией z-показателя.
Каждый размерный признак обрабатывается для соответствия стандартному нормальному распределению (среднее значение равно 0, стандартное отклонение равно 1).
Избыточность данных
После того, как входные данные обесцвечены, корреляция между объектами низкая, и все объекты имеют одинаковую дисперсию.
Одним из основных способов добиться отбеливания является использование анализа главных компонентов для устранения корреляции между компонентами.
Послойная нормализация
При использовании стохастического градиентного спуска для обучения сети каждое обновление параметров приведет к изменению распределения входных данных для каждого слоя в середине сети. Чем глубже слой, тем очевиднее будет меняться распределение его вклада.
пакетная нормализация
Также называется пакетной нормализацией, методом BN.
Чтобы каждый слой имел соответствующую ширину, распределение значений активации «вынуждено» корректировать.
Выполните регуляризацию так, чтобы среднее значение распределения данных было равно 0, а дисперсия — 1.
Любой промежуточный слой нейронной сети можно нормализовать.
преимущество
Может ускорить обучение (может увеличить скорость обучения)
Меньше зависит от начальных значений (не так чувствителен к начальным значениям)
Подавить переобучение (уменьшить необходимость в Dropout и т. д.)
Слой пакетной нормы
Аффинный->Пакетная норма->ReLU
нормализация слоя
Ограничения пакетной нормализации
Пакетная нормализация — это операция нормализации для одного нейрона в промежуточном слое, поэтому количество выборок мини-пакета не должно быть слишком маленьким, иначе будет сложно вычислить статистическую информацию об одном нейроне.
Если распределение входных данных нейрона динамически меняется в нейронной сети, например в рекуррентной нейронной сети, то операцию пакетной нормализации нельзя применить.
Нормализация слоев нормализует все нейроны в промежуточном слое.
Пакетная нормализация очень эффективна в сверточных нейронных сетях (CNN), тогда как нормализация слоев более распространена в рекуррентных нейронных сетях (RNN) и сетях-трансформерах.
Оптимизация гиперпараметров
состав
Структура сети
связи между нейронами
Количество слоев
Количество нейронов на слой
Тип функции активации
Параметры оптимизации
Методы оптимизации сети
скорость обучения
Размер выборки для небольших партий
коэффициент регуляризации
Данные проверки (набор проверки)
Производительность гиперпараметра не может быть оценена с использованием тестовых данных.
Если вы используете тестовые данные для подтверждения «качественности» значения гиперпараметра, это приведет к корректировке значения гиперпараметра так, чтобы оно соответствовало только тестовым данным.
Данные обучения используются для обучения параметров (веса и смещения), а данные проверки используются для оценки производительности гиперпараметров. Чтобы подтвердить способность к обобщению, данные испытаний следует использовать в конце (в идеале только один раз).
Оптимизация
поиск по сетке
Выберите правильный вариант, попробовав все комбинации гиперпараметров. Методы настройки групповых гиперпараметров.
Выберите несколько значений «опыта». Например, скорость обучения α мы можем установить α ∈ {0,01, 0,1, 0,5, 1,0}.
случайный поиск
Установите диапазон гиперпараметров и произвольную выборку из заданного диапазона гиперпараметров.
Оцените точность распознавания с помощью данных проверки (но установите очень маленькую эпоху)
Повторите вышеизложенное (100 раз и т. д.) и сузьте диапазон гиперпараметров по результатам точности их распознавания.
Байесовская оптимизация
Динамическое распределение ресурсов
регуляризация сети
Цель: подавить переобучение.
снижение веса
Снижение веса — это метод, который часто используется для подавления переобучения. Этот метод наказывает большие веса в процессе обучения.
Проще говоря, функция потерь становится
λ — гиперпараметр, который контролирует силу регуляризации.
метод сброса
Метод отсева
Если модель сети станет очень сложной, с ней будет сложно справиться, используя только уменьшение веса.
Метод случайного удаления нейронов в процессе обучения предполагает каждый раз случайное удаление нейронов. Самый простой способ — установить фиксированную вероятность p. Для каждого нейрона существует вероятность p определить, следует ли его сохранить.
увеличение данных
Поворот, переворот, масштабирование, перевод, добавление шума
сглаживание меток
Добавьте шум к выходным меткам, чтобы избежать переобучения модели.
Модель независимого метода обучения
Ансамблевое обучение
Интегрируйте несколько моделей с помощью определенной стратегии, чтобы повысить точность принятия решений за счет группового принятия решений. Основная проблема ансамблевого обучения — как интегрировать несколько моделей. Наиболее часто используемые стратегии интеграции включают прямое среднее, средневзвешенное и т. д.
Самообучение и совместное обучение
Все они относятся к полуконтролируемому обучению.
самообучение
Самообучение заключается в том, чтобы сначала использовать помеченные данные для обучения модели и использовать эту модель для прогнозирования меток немаркированных образцов, добавлять образцы с относительно высокой достоверностью прогнозирования и их предсказанные псевдометки в обучающий набор, а затем повторно обучать новую модель. и продолжайте повторять этот процесс.
совместное обучение
Совместное обучение – это усовершенствованный метод самотренировки.
Два классификатора, основанные на разных взглядах, продвигают друг друга. Многие данные имеют разные точки зрения, которые относительно независимы.
Благодаря условной независимости разных точек зрения модели, обученные на разных точках зрения, эквивалентны пониманию проблемы с разных точек зрения и обладают определенной взаимодополняемостью. Совместное обучение — это метод, который использует эту взаимодополняемость для самообучения. Сначала две модели f1 и f2 обучаются на обучающем наборе в соответствии с разными точками зрения, а затем f1 и f2 используются для прогнозирования на немаркированном наборе данных. Выборки с относительно высокой достоверностью прогнозирования выбираются для добавления в обучающий набор, и две разные точки зрения переобучаются и повторяют этот процесс.
многозадачное обучение
Общие модели машинного обучения нацелены на одну конкретную задачу, например, распознавание рукописных цифр, обнаружение объектов и т. д. Модели для разных задач изучаются отдельно на соответствующих обучающих наборах.
Если две задачи связаны, между ними будут общие знания, и эти знания будут полезны для обеих задач. Этими общими знаниями могут быть представления (функции), параметры модели или алгоритмы обучения и т. д.
тип
трансферное обучение
Если существует связанная задача, которая уже имеет большой объем обучающих данных, хотя распределение этих обучающих данных отличается от распределения целевой задачи из-за относительно большого масштаба обучающих данных, мы предполагаем, что мы можем изучить некоторые обобщаемые знания из него, то эти знания пригодятся для Целевых задач. Как перенести обобщаемые знания из обучающих данных родственных задач на целевую задачу – это проблема, которую решает трансферное обучение.
Трансферное обучение относится к процессу передачи знаний между двумя различными областями с использованием знаний, полученных в исходном домене (Исходный домен) DS, для решения задач обучения в целевом домене (Целевой домен) DT. Количество обучающих выборок в исходном домене обычно намного больше, чем в целевом домене.
Классификация
индуктивное трансферное обучение
На наборе обучающих данных изучается модель, которая минимизирует ожидаемый риск (т. е. частоту ошибок при реальном распределении данных).
Получение трансферного обучения
Изучите модель, которая минимизирует ошибку на заданном наборе тестов.
Точная настройка — это прикладной метод трансферного обучения. Обычно это относится к использованию новых наборов данных для конкретной задачи для выполнения дополнительного обучения на основе уже обученной модели с целью повышения производительности модели при выполнении конкретной задачи. Цель тонкой настройки — использовать общие знания, полученные предварительно обученной моделью на крупномасштабных данных, для ускорения и оптимизации процесса обучения по конкретным задачам.
обучение на протяжении всей жизни
вопрос
После завершения обучения модель остается фиксированной и больше не обновляется итеративно.
Модели по-прежнему очень сложно добиться успеха в выполнении множества разных задач одновременно.
Обучение на протяжении всей жизни, также называемое непрерывным обучением, относится к способности непрерывного обучения, подобно людям, использующим опыт и знания, полученные в ходе исторических задач, для изучения новых задач, которые постоянно возникают, и этот опыт и знания постоянно накапливаются и не меняются из-за новые задачи и забыть старые знания.
При обучении на протяжении всей жизни предполагается, что алгоритм обучения на протяжении всей жизни изучил модель на исторических задачах T1, T2, · · · , Tm. Когда появляется новая задача Tm 1, этот алгоритм может изучить модель на основе прошлых задач, изученных на протяжении всей жизни. m знаний в помощь m 1 задаче, при этом накапливая знания по всем m 1 задачам.
Эта настройка очень похожа на индуктивное трансферное обучение, но цель индуктивного трансферного обучения — оптимизировать выполнение целевой задачи, не заботясь о накоплении знаний. Целью обучения на протяжении всей жизни является непрерывное обучение и накопление знаний. Кроме того, в отличие от многозадачного обучения, обучение на протяжении всей жизни не предполагает одновременного обучения всем задачам.
метаобучение
Согласно теореме о бесплатном обеде, ни один универсальный алгоритм обучения не эффективен для всех задач. Поэтому при использовании алгоритмов машинного обучения для реализации определенной задачи нам обычно необходимо «обсудить вопрос» и выбрать подходящую модель, функцию потерь, алгоритм оптимизации и гиперпараметры исходя из конкретных задач.
Способность динамически корректировать собственные методы обучения называется метаобучением, также известным как обучение обучению.
Еще одна проблема машинного обучения, связанная с метаобучением, — это обучение на небольших выборках.
Два типичных метода метаобучения
Метаобучение на основе оптимизатора
Разница между разными алгоритмами оптимизации заключается в разных правилах обновления параметров. Поэтому естественным метаобучением является автоматическое изучение правила обновления параметров, то есть моделирование процесса градиентного спуска с помощью другой нейронной сети (например, рекуррентной нейронной сети). сеть).
Независимое от модели метаобучение
Это простой, независимый от модели и задачи алгоритм метаобучения.