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

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

Работа с последовательностями с использованием нейронных сетей

До недавнего времени нейронные сети были основной структурой, когда в задаче машинного обучения существовало понятие последовательности. Как хорошо задокументировано, существуют проблемы с исчезающими градиентами, учитывая повторяющийся характер рекуррентной нейронной сети (RNN). Исторически клетки долгосрочной краткосрочной памяти (LSTM) и стробированные рекуррентные единицы (GRU) были наиболее часто используемыми структурами RNN, но недавно появились новые улучшенные клетки, такие как Независимо рекуррентная нейронная сеть (IndRNN), квази-рекуррентная нейронная сеть (QRNN). ), Рекуррентное взвешенное среднее (RWA) и некоторые другие. Они улучшаются с точки зрения скорости и сходимости по историческим ячейкам.

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

Помимо этого, для анализа последовательных данных можно использовать новую структуру, известную как Temporal Convolutional Network (TCN). TCN использует одномерные свертки, а также расширенные свертки, чтобы найти представление для последовательностей. В статье (Bai et al., 2018) [3] - Эмпирическая оценка общих сверточных и рекуррентных сетей для моделирования последовательности - приведены более подробные сведения.

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

ИГЛУ

Мы знаем, что одномерные свертки, применяемые к последовательностям, возвращают карты характеристик, показывающие, как последовательность реагирует на различные фильтры. Учитывая размер ядра K *, K фильтрует и использует причинную одномерную свертку (так что в момент времени T доступны только данные до момента времени T) каждый временной шаг находит представление с вектором. Каждый элемент в этом векторе представляет активации для каждого фильтра для этого временного шага. Полная карта функций F1 имеет размер (T, K).

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

Структура IGLOO работает иначе. После начальной свертки, вместо того, чтобы применять второй сверточный слой к F1, мы собираем p срезов на первой оси из доступного T (типичное значение p равно 4), которые затем объединяем, чтобы получить матрицу H размера (p , К). Эти p-фрагменты могут поступать из близлежащих областей или из удаленных областей, таким образом объединяя информацию из разных частей карты объектов. Таким образом, можно сказать, что IGLOO использует нелокальные отношения в исходной карте функций F1. Количество L этих больших участков собирается для создания матрицы размера (L, p, K). Эта матрица затем умножается по точкам на обучаемый фильтр того же размера. Один из способов взглянуть на эту операцию состоит в том, что фильтр изучает отношения между несмежными частями F1. Затем мы складываем вместе все элементы, полученные в результате точечного умножения на последней и предпоследней оси, чтобы найти вектор U размера L. Мы также добавляем смещение к этому результату. Таким образом, будет L предубеждений. Применяется нелинейность, такая как ReLU (этот шаг необязателен). В результате мы получаем вектор U, который будет представлять последовательность, который затем может быть передан на плотный слой и использован для классификации или регрессии. Всего обучаем (L.K.p + L) параметров (не считая начальной свертки C1).

Некоторые замечания:

· Каждый элемент U можно рассматривать как представление взаимосвязи между p необязательно смежными, случайно выбранными срезами карты характеристик F1. Характер связи задается уникальным фильтром, обученным для этого патча.

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

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

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

Мысленный эксперимент

Например, представьте себе следующий мысленный эксперимент. Нам даны последовательности со 100 временными шагами и 10 признаками, то есть матрица размера (100,10). Некоторые последовательности имеют идентичный вектор размера 10, включенный в первые 50 временных шагов и в последние 50 временных шагов. Некоторые другие последовательности не имеют повторяющихся векторов. Целью этой задачи машинного обучения было бы обучение на большом количестве примеров (на обучающем наборе), а затем возможность правильно идентифицировать те последовательности, которые имеют повторяющийся элемент (класс 1), и те, которые не имеют (класс 0). дали тестовый набор. Если выбирать наугад, мы получаем правильный ответ в 50% случаев.

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

Как IGLOO справится с этой задачей? Представьте, что в обучающем наборе для самой первой выборки есть идентичные векторы с индексами 1 и 51. Затем при сборе случайных фрагментов IGLOO будет иметь дело с векторами (0,1,10,25), (20,40, 60,80) или (1,51,10,3) (можно настроить работу с тысячами таких патчей). В последнем случае обучаемый фильтр, примененный к этому патчу, будет сильно реагировать, выводя большое положительное число, и таким образом сеть узнает, что если вектор с 1-м индексом и вектор с индексом 51 идентичны, то найденное представление для последовательность должна быть класса 1. Затем во время тестирования, если векторы с индексами 1 и 51 идентичны, сеть теперь знает, что ее следует классифицировать как принадлежащие к классу 1.

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

Больше памяти с задачей копирования памяти

Эта задача была первоначально представлена ​​в (Hochreiter and J. Schmidhuber, 1997) [1]. Нам дан вектор размера T + 20, где первые 10 элементов G = [G0, G1, .., G9] представляют собой случайные целые числа от 1 до 8, следующие элементы T-1 - это 0, следующий элемент является 9 (который служит маркером), а следующие 10 элементов снова равны 0. Задача состоит в том, чтобы сгенерировать последовательность, которая везде равна нулю, за исключением последних 10 элементов, которые должны быть в состоянии воспроизвести G. Задачу A можно рассматривать как проблему классификации, и используемые потери будут представлять собой перекрестную энтропию категорий (по 8 категориям). Модель выведет 8 классов, которые будут сравниваться с реальными классами.

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

КОПИРОВАТЬ ПАМЯТЬ - модель IGLOO. Время достижения точности ›0,99 секунды

Размер T (количество патчей) - Время (с) - Параметры

T=100 (300) — 12s — 80K

T=1000 (500) — 21s — 145K

T=5000 (2500) — 52s — 370K

T=10000 (7000) — 61s — 1520K

T=20000 (10000) — 84s — 2180K

T=25000 (15000) — 325s — 3270K

Похоже, что IGLOO может достичь сходимости для последовательностей из более 25 000 временных шагов. В литературе нет РНС, способных достичь этого.

Хотя в задачах НЛП обычно используются последовательности менее 1000 шагов, есть области, где часто встречаются длинные последовательности. Например данные ЭЭГ и звуковые волны. Статья включает эксперимент с данными ЭЭГ.

Более быстрое схождение с заданием по грамматике

Следуя (Ostemeyer et al., 2017) [2], мы используем эту задачу, чтобы убедиться, что IGLOO может эффективно представлять последовательности, а не просто наборы. Чтобы добиться успеха в решении этой задачи, любая нейронная сеть должна уметь извлекать информацию о порядке появления элементов последовательности. На основе генератора искусственной грамматики мы генерируем обучающий набор, который включает последовательности, которые соответствуют всем предопределенным правилам грамматики и классифицируются как правильные, и мы генерируем последовательности с ошибкой, которая должна быть идентифицирована как недопустимая. В результате генератора грамматики такие последовательности, как: BPVVE, BTSSSXSE и BPTVPXVVE, будут классифицированы как допустимые, а такие последовательности, как: BTSXXSE, TXXTTVVE и BTSSSE, будут классифицированы как недопустимые.

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

Похоже, что IGLOO быстрее в этом эксперименте, чем другие протестированные клетки RNN, и особенно быстрее, чем клетка CuDNNGRU, которая является оптимизированной версией обычного GRU.

Вывод

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

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

Предоставляется код Keras / tensorflow для структуры, поэтому на самом деле нужно заменить ячейку RNN на ячейку IGLOO и посмотреть, произойдет ли волшебство. Мы призываем читателей сообщать о своих выводах.

Реализация Keras доступна здесь

Мы действительно помогаем компаниям добавить машинное обучение в свой бизнес-процесс, возможно, мы сможем помочь и вам. Связаться! [email protected]

ССЫЛКИ

1-С. Хохрайтер и Дж. Шмидхубер. Долговременная кратковременная память. Нейронные вычисления, 9 (8): 1735–1780, 1997.

2-Дж. Остмейер и Л. Коуэлл. Машинное обучение последовательных данных с использованием повторяющегося средневзвешенного значения. arXiv: 1703.01253v5, 2018.

3-С. Бай, Дж. Зико-Колтер и В. Колтун. Эмпирическая оценка общих сверточных и рекуррентных сетей для моделирования последовательности. В arXiv: 1803.01271v2, 2018.

Первоначально опубликовано на www.rednalabs.com 19 июля 2018 г.