machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Многопотоковая RNN, Concat RNN, внутренняя конвенционная RNN, задержка 2 RNN в тензорном потоке

Дата публикации Jun 6, 2018

GIF из этогоВеб-сайт

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

Случай а: Ванильная рекуррентная нейронная сеть
Случай b: многопотоковая рекуррентная нейронная сеть
Случай c: сцепленная рекуррентная нейронная сеть
Случай d: внутренняя сверточная рекуррентная нейронная сеть
Случай e: Lag 2 Recurrent Neural Network

Обратите внимание, что все эти модели просто для развлечения и для выражения моего творчества. Кроме того, базовый код, который я собираюсь использовать в этом посте, взят из моего старого поста «Gated Recurrent Convolution NN для распознавания текста».


Ванильная рекуррентная нейронная сеть

Изображение из этогоВеб-сайт

Всего есть 5 различных вариантов RNN, которые я хочу реализовать. Тем не менее, для полного понимания всех реализаций было бы неплохо иметь четкое представление о ванильном RNN (случай a - это обычный RNN, поэтому, если вы понимаете код для случая a, то вы готовы идти).

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


Случай a: Ванильная рекуррентная нейронная сеть (результаты)

Красная коробка→ 3 сверточный слой
оранжевый→ Глобальный средний пул и SoftMax
Зеленый круг→ Скрытая единица во время 0
Синий круг→ Ввод в 4 метки времени
Черный ящик→ Рекуррентная нейронная сеть с 4 временными метками

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

Синяя линия→ Стоимость поезда со временем
Оранжевая линия→ Точность поезда с течением времени
Зеленая линия→ Стоимость теста с течением времени
Красная линия→ Проверка точности с течением времени

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


Случай b: многопотоковая рекуррентная нейронная сеть (идея / результаты)

Красная коробка→ 3 сверточный слой
оранжевый→ Глобальный средний пул и SoftMax
Зеленый круг→ Скрытая единица во время 0
Синий круг→ Свертка входного потока
Желтый круг→ Полностью подключенный сетевой поток
Черный ящик→ Рекуррентная нейронная сеть с 4 временными метками

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

Красная коробка→ Дополнительные четыре слоя CNN / FNN для «обработки» ввода
Синяя коробка→ Создание входов на каждой отметке времени

Как видно из приведенного ниже, теперь наш RNN принимает вход тензорного размера с [batch_size, 26, 26, 1], уменьшая ширину и высоту на 2. И я надеялся, что различное представление данных будет действовать как регуляризация. (Аналогично увеличению данных)

Синяя линия→ Стоимость поезда со временем
Оранжевая линия→ Точность поезда с течением времени
Зеленая линия→ Стоимость теста с течением времени
Красная линия→ Проверка точности с течением времени

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


Случай c: объединенная рекуррентная нейронная сеть (идея / результаты)

Красная коробка→ 3 сверточный слой
оранжевый→ Глобальный средний пул и SoftMax
Зеленый круг→ Скрытая единица во время 0
Синий круг→ Ввод в 4 метки времени
Черный ящик→ Рекуррентная нейронная сеть с 4 временными метками
Черная изогнутая стрелка→ Объединенный вход для каждой отметки времени

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

Синяя линия→ Стоимость поезда со временем
Оранжевая линия→ Точность поезда с течением времени
Зеленая линия→ Стоимость теста с течением времени
Красная линия→ Проверка точности с течением времени

К сожалению, это был огромный провал. Я предполагаю, что пустые скрытые значения не помогают (один бит) для работы сети.


Случай d: внутренняя сверточная рекуррентная нейронная сеть (идея / результаты)

Красная коробка→ 3 сверточный слой
оранжевый→ Глобальный средний пул и SoftMax
Зеленый круг→ Скрытая единица во время 0
Синий круг→ Ввод в 4 метки времени
Черный ящик→ Рекуррентная нейронная сеть с 4 временными метками
Серая стрела→ Выполнение внутренней свертки перед переходом на следующую отметку времени

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

Правильное изображение→ Объявление 3 нового слоя свертки
Левое изображение (красная коробка)→ Если текущий внутренний уровень не None, мы собираемся выполнить дополнительную операцию свертки.

У меня фактически не было теоретической причины этой реализации, я просто хотел посмотреть, работает ли она LOL.

Синяя линия→ Стоимость поезда со временем
Оранжевая линия→ Точность поезда с течением времени
Зеленая линия→ Стоимость теста с течением времени
Красная линия→ Проверка точности с течением времени

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


Случай e: Lag 2 Recurrent Neural Network (идея / результаты)

Красная коробка→ 3 сверточный слой
оранжевый→ Глобальный средний пул и SoftMax
Зеленый круг→ Скрытая единица в момент времени 0 (или отставание от 1)
Синий круг→ Ввод в 4 метки времени
Черный ящик→ Рекуррентная нейронная сеть с 4 временными метками
Фиолетовый круг→ Скрытый государственный лаг 2

В традиционной настройке RNN мы полагаемся только на самые предыдущие значения, чтобы определить текущее значение. Какое-то время я думал, что у нас нет оснований ограничивать время просмотра (или отставание) как 1. Мы можем расширить эту идею до задержки 3 или задержки 4 и т. Д. (Просто для простоты я взял задержку 2)

Синяя линия→ Стоимость поезда со временем
Оранжевая линия→ Точность поезда с течением времени
Зеленая линия→ Стоимость теста с течением времени
Красная линия→ Проверка точности с течением времени

К счастью, сеть работает лучше, чем базовая сеть. (Но с очень небольшим запасом), однако этот тип сети будет наиболее подходящим для данных временных рядов.


Интерактивный код / ​​Прозрачность

Для Google Colab вам понадобится учетная запись Google для просмотра кодов, также вы не можете запускать сценарии только для чтения в Google Colab, поэтому сделайте копию на игровой площадке. Наконец, я никогда не буду запрашивать разрешение на доступ к вашим файлам на Google Диске, только к вашему сведению. Удачного кодирования! Также для прозрачности я загрузил все журналы тренировок на свой github.

Чтобы получить доступ к коду дляесли щелкнуть здесь, дляжурналы нажмите здесь.
Чтобы получить доступ к коду дляслучай b нажмите здесь, дляжурналы нажмите здесь.
Чтобы получить доступ к коду дляслучай с нажмите здесь, дляжурналы нажмите здесь.
Чтобы получить доступ к коду дляслучай с нажмите здесь, дляжурналы нажмите здесь.
Чтобы получить доступ к коду дляслучай с нажмите здесь, дляжурналы нажмите здесь.


Заключительные слова

Я хотел пересмотреть RNN в течение достаточно долгого времени, наконец, я смог это сделать.

Если обнаружены какие-либо ошибки, пожалуйста, напишите мне на jae.duk.seo@gmail.com, если вы хотите увидеть список всех моих писем, пожалуйста,посмотреть мой сайт здесь,

Тем временем следуйте за мной в моем твиттереВоти посетитьмой веб-сайтили мойYouTube каналдля получения дополнительной информации. Я также реализовалШирокие Остаточные Сети, пожалуйста, нажмите здесь, чтобы просмотреть блог позт.


Ссылка

  1. [NIPS 2017 / Part 1] Gated Recurrent Convolution NN для оптического распознавания текста с интерактивным кодом [Manual Back Prop…. (2018). На пути к науке о данных. Получено 6 июня 2018 г.https://towardsdatascience.com/nips-2017-tensorflow-gated-recurrent-convolution-neural-network-for-ocr-part-1-with-47bb2a8a7ab3
  2. Функция активации мягкого знака с Tensorflow [Ручная задняя опора с TF]. (2018). На пути к науке о данных. Получено 6 июня 2018 г.https://towardsdatascience.com/soft-sign-activation-function-with-tensorflow-manual-back-prop-with-tf-5a04f3c8e9c1
  3. Донгес, В. (2018). Рекуррентные нейронные сети. machinelearning-blog.com. Получено 6 июня 2018 г.https://machinelearning-blog.com/2018/02/21/recurrent-neural-networks/
  4. Only Numpy: Ванильная рекуррентная нейронная сеть, дающая обратное распространение через практику времени - часть… (2017). Средний. Получено 6 июня 2018 г.https://medium.com/@SeoJaeDuk/only-numpy-vanilla-recurrent-neural-network-back-propagation-practice-math-956fbea32704
  5. Рецидивирующая нейронная сеть. (2018). En.wikipedia.org. Получено 6 июня 2018 г.https://en.wikipedia.org/wiki/Recurrent_neural_network

Оригинальная статья

Footer decor

© machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map