Александр Биданец
АНАЛИЗ И ВИЗУАЛИЗАЦИЯ
НЕЙРОННЫХ СЕТЕЙ
С ВНЕШНЕЙ ПАМЯТЬЮ
Симферополь
«Полипринт»
2021
УДК 004.032.26
ББК 16.63
Б 59
Б 59
БИДАНЕЦ А.
Анализ и визуализация нейронных сетей с внешней
памятью. – Симферополь, Полипринт, 2021. – 98 с.
ISBN 978-5-6046943-8-1
В данной работе детально описаны принципы работы
нейросетевых моделей: нейронная машина Тьюринга, диффе
ренцируемый нейронный компьютер, а также модификации
последнего. Перечислены сферы применимости этих моделей.
Выделены преимущества по сравнению с более ранней успешной
моделью LSTM. Описаны недостатки этих моделей, а также
способы их устранения. Дано теоретическое обоснование
того факта, что перечисленные нейронные сети с внешней
памятью, обладают большим потенциалом для решения многих
задач, чем LSTM.
УДК 004.032.26
ББК 16.63
ISBN 978-5-6046943-8-1
© Биданец А., 2021
`Ìi`ÊÜÌ ÊÌ iÊ`iÊÛiÀÃÊvÊ
vÝÊ*ÀÊ* Ê `ÌÀÊ
/ÊÀiÛiÊÌ ÃÊÌVi]ÊÛÃÌ\Ê
ÜÜÜ°Vi°VÉÕV° Ì
Оглавление
Введение
5
1 Общие сведения
1.1 Рекуррентные нейронные сети . . . . . . . . . . . . . . . . . . .
1.2 Концепция рабочей памяти . . . . . . . . . . . . . . . . . . . . .
8
8
9
2 Нейронная машина Тьюринга
2.1 Общий принцип работы NTM . . . . . . . . . . . . . .
2.2 Компоненты и гиперпараметры . . . . . . . . . . . . .
2.3 Пример . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4 Контроллер . . . . . . . . . . . . . . . . . . . . . . . .
2.5 Механизм адресации памяти . . . . . . . . . . . . . .
2.5.1 Адресация по контенту (Content Addressing) .
2.5.2 Интерполяция (Interpolation) . . . . . . . . . .
2.5.3 Сверточный сдвиг (Convolutional shift) . . . . .
2.5.4 Заострение внимания, уточнение (Sharpening)
2.5.5 Чтение из памяти . . . . . . . . . . . . . . . .
2.5.6 Запись в память . . . . . . . . . . . . . . . . .
2.6 RMSProp (Root Mean Square Propagation) . . . . . . .
2.7 Процесс обучения нейронной машины Тьюринга . . .
2.8 Один шаг процесса обучения NTM . . . . . . . . . . .
2.9 Области применения NTM . . . . . . . . . . . . . . .
2.10 Недостатки нейронной машины Тьюринга . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3 Дифференцируемый нейронный компьютер
3.1 LSTM-контроллер . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Параметры интерфейса . . . . . . . . . . . . . . . . . . . . . .
3.3 Чтение и запись в память . . . . . . . . . . . . . . . . . . . . .
3.4 Динамическое выделение памяти . . . . . . . . . . . . . . . . .
3.5 Взвешивание (весовые коэффициенты) операции записи . . . .
3.6 Временна́я связь памяти (механизм временно́й связи, механизм
временны́х ссылок) . . . . . . . . . . . . . . . . . . . . . . . . .
3.7 Матрица разреженных ссылок . . . . . . . . . . . . . . . . . .
3.8 Взвешивание (весовые коэффициенты) операции чтения . . .
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
10
10
12
12
14
14
15
17
17
18
18
19
21
22
25
25
26
.
.
.
.
.
27
27
28
29
30
36
. 37
. 45
. 46
4 Описание вычислительных экспериментов
4.1 Задача копирования битовых векторов . . . .
4.1.1 Сравнение NTM и LSTM . . . . . . . .
4.1.2 Сравнение DNC и LSTM . . . . . . . . .
4.2 Описание bAbI задачи . . . . . . . . . . . . . .
4.3 Описание подзадач . . . . . . . . . . . . . . . .
4.3.1 Связывание двух объектов . . . . . . .
4.3.2 Сопоставление двух фактов . . . . . . .
4.3.3 Сопоставление трёх фактов . . . . . . .
4.3.4 Отношение с двумя аргументами . . . .
4.3.5 Отношение с тремя аргументами . . . .
4.3.6 Вопросы с ответом «да, нет» . . . . . .
4.3.7 Подсчет объектов . . . . . . . . . . . . .
4.3.8 Списки-множества . . . . . . . . . . . .
4.3.9 Простое отрицание . . . . . . . . . . . .
4.3.10 Неопределенные знания . . . . . . . . .
4.3.11 Базовая кореферентность . . . . . . . .
4.3.12 Конъюнкция . . . . . . . . . . . . . . .
4.3.13 Сложная связка . . . . . . . . . . . . .
4.3.14 Понимание событий во времени . . . . .
4.3.15 Базовые навыки дедукции . . . . . . . .
4.3.16 Базовые навыки индуктивного вывода .
4.3.17 Понимание местоположения предметов
4.3.18 Понимание размеров предметов . . . . .
4.3.19 Поиск пути . . . . . . . . . . . . . . . .
4.3.20 Мотивация агентов . . . . . . . . . . . .
4.4 Результаты эксперимента . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
48
48
48
51
52
53
53
53
54
55
55
55
55
56
57
57
58
58
58
59
59
60
60
60
61
61
62
5 Средство для визуализации DNC
65
6 Недостатки DNC
69
7 Модификации DNC
7.1 Анализ процесса обучения DNC . . . . .
7.2 Анализ функциональности . . . . . . . .
7.3 Анализ затрат вычислительных ресурсов
7.4 Эффективный блок внешней памяти . . .
70
70
70
71
71
4
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7.5
7.6
7.7
7.8
7.9
Надежное обучение DNC
Нормализация DNC . . .
Bypass Dropout (Обходной
Двунаправленный DNC .
Детали обучения . . . . .
. . . . . .
. . . . . .
Dropout)
. . . . . .
. . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
72
72
74
75
77
Заключение
78
Список использованных источников
79
Приложения
84
Приложение 1. Схемы нейросетевых моделей и примеры выполнения
операций, связанных с адресацией . . . . . . . . . . . . . . . . . 84
5
Введение
Рекуррентные нейронные сети (RNN) отличаются от других методов
машинного обучения тем, что они способны обрабатывать серии событий во
времени или последовательные логические цепочки. Рекуррентные нейронные сети могут использовать свою внутреннюю память для обработки последовательностей разной длины. RNN применимы в таких задачах как, например: распознавание рукописного текста, анализ текстов, распознавание речи
и др [19]. Кроме того, известно, что RNN являются полными по Тьюрингу
[4, 5], и поэтому имеют возможность имитировать произвольные программные процедуры. Но на практике это не всегда просто сделать.
Рекуррентные нейронные сети хорошо справляются с задачами обучения на последовательностных данных и с задачами обучения с подкреплением, но очень ограничены в возможностях для решения задач, связанных с
работой со структурами данных и переменными, а также хранением данных
в течение длинных временных промежутков из-за отсутствия долгосрочной
памяти.
Одним из способов улучшения стандартных рекуррентных сетей для
успешного решения алгоритмических задач является введение адресной памяти большого размера. В отличие от машины Тьюринга, нейронная машина
Тьюринга (NTM) является полностью дифференцируемой моделью, которая
может быть обучена модификациями метода градиентного спуска (например,
RMSProp), что дает практический механизм для обучения программ на примерах.
Модель NTM была предложена в 2014-ом году в работе [1]. В этой
работе не описаны подробно детали функционирования данной нейросетевой модели. Одной из задач выпускной квалификационной работы является
предоставление детального описания работы нейронной машины Тьюринга.
Основным фактором появления нейронных сетей с внешней памятью
является изобретение дифференцируемых механизмов внимания [33, 34, 35,
36].
В 2016-ом году в работе [2] была предложена усовершенствованная модель нейронной сети с внешней памятью под названием дифференцируемый
нейронный компьютер. В ней также было лишь краткое описание принципов
работы этой модели.
В 2018-ом году в работе [29] были предложены четыре модификации для
6
дифференцируемого нейронного компьютера, которые позволяли улучшить
качество решения задач, связанных с вопросно-ответными системами (QAtasks). Эти модификации были основаны на работах [31, 32].
На сегодняшний день очень высока актуальность создания новых рекуррентных нейросетевых моделей, способных хранить большие объёмы данных, а также успешно решать задачи, предъявляемые к вопросно-ответным
системам (QA-задачи).
К таким нейросетевым моделям предъявляются следующие требования:
– наличие «долгосрочной» обучаемой памяти;
– высокая скорость обучения;
– устойчивость процесса обучения (процесс обучения не должен существенно зависеть от начальной инициализации);
– прозрачность принятия решений моделью и интерпретируемость работы
нейронной сети (попытка уйти от концепции «черного ящика»);
– способность решать QA-задачи;
– модель должна содержать относительно небольшое количество обучаемых параметров;
– способность работать с переменными, а также со структурами данных
(например, с графами), решать алгоритмические задачи.
Объектом исследования данной работы являются нейронные сети с внешней памятью, а именно нейронная машина Тьюринга и дифференцируемый
нейронный компьютер.
Предметом исследования является подробный анализ вышеуказанных
нейросетевых моделей, а также их применимость к решению задач, связанных с построением вопросно-ответных систем.
Целью работы является подробное теоретическое и экспериментальное исследование вышеуказанных нейросетевых моделей, а также разработка приложения для визуализации внутренних процессов дифференцируемого
нейронного компьютера.
В работе были поставлены следующие задачи:
– подробно описать работу нейронной машины Тьюринга, дифференцируемого нейронного компьютера (DNC), модификаций DNC, а также простроить необходимые схемы;
– отметить преимущества и недостатки этих моделей;
– сравнить качество работы этих моделей по отношению к более ранней
успешной модели LSTM на примере двух задач: копирования последо7
вательностей битовых векторов и bAbi-task (базовые навыки вопросноответных систем);
– разработать приложение для визуализации внутренних процессов модели
дифференцируемого нейронного компьютера;
В первом разделе предоставляются общие сведения по теме рекуррентных нейронных сетей.
Во втором разделе даётся подробное описание структуры и процесса
обучения нейронной машины Тьюринга, перечисляются сферы применимости, достоинства и недостатки данной модели.
В третьем разделе даётся подробное описание структуры и процесса
обучения дифференцируемого нейронного компьютера, перечисляются достоинства и недостатки данной модели.
В четвертом разделе описываются результаты вычислительных экспериментов для задач копирования битовых векторов и bAbi-task. Даётся сравнительный анализ работы моделей LSTM, NTM и DNC.
В разделе 5 описывается программное средство для визуализации DNC.
В разделе 6 перечисляются недостатки DNC.
В разделе 7 описываются модификации DNC.
8
Раздел 1.
1.1
Общие сведения
Рекуррентные нейронные сети
Рекуррентные нейронные сети представляют собой широкий класс систем с динамическим состоянием. Текущее состояние таких систем зависит от
текущего входного вектора (например, из обучающей выборки) и от предыдущего состояния. Динамическое состояние имеет решающее значение, поскольку оно дает возможность выполнять контекстно-зависимые вычисления: входной вектор, полученный сетью в данный момент может изменить её
поведение в гораздо более поздний момент.
Рекуррентные сети легко обрабатывают структуры переменной длины. Поэтому они недавно использовались во множестве когнитивных задач,
включая распознавание речи [16] [10]), генерация текста [13], генерация почерка [11] и машинный перевод [12].
Важнейшим новшеством для рекуррентных сетей было создание длинной краткосрочной памяти (LSTM) [8]. Эта архитектура была разработана
для решения проблемы «исчезновения и взрыва градиента» [14]. LSTM решает данную проблему путем внедрения специальных вентилей [27].
Современный этап развития рекуррентных нейронных сетей характеризуется внедрением внешней памяти. Адресация внешней памяти основана на
недавно изобретённых дифференцируемых моделях внимания. Фактором появления таких моделей внимания послужили исследования рабочей памяти
человека, см. раздел 1.2.
Введение внешней памяти сокращает значительную часть пространства
поиска, поскольку теперь мы просто ищем RNN, которая может обрабатывать
информацию, хранящуюся за её пределами. Это усечение пространства поиска позволяет нам начать использовать некоторые из возможностей RNN,
которые были недоступны ранее, что видно из множества задач, которые
может изучить нейронная машина Тьюринга: от копирования входных последовательностей после их просмотра, до эмуляции N-грамм, реализации
вопросно-ответных систем [9], решения задачи обхода и ориентирования на
графе, а также поиска кратчайшего пути в графе и решения задач, связанных
с обучением с подкреплением [2].
Приведём список названий некоторых нейронных сетей с внешней памятью:
9
–
–
–
–
–
–
–
–
–
–
–
1.2
Графовая нейронная сеть (Graph Neural Network)
Нейронная стек машина (нейронный стек, Neural stack machine)
Нейронная очередь (neural queue)
Нейронный дек (neural deque)
Сеть указателей (Pointer Network)
Сквозная сеть памяти (End-to-end memory network)
Сеть памяти (Memory network)
Динамическая сеть памяти (Dynamic memory network)
Нейронная карта (Neural map)
Нейронная машина Тьюринга (Neural Turing Machine)
Дифференцируемый нейронный компьютер (Differentiable Neural Computer)
Концепция рабочей памяти
Концепция рабочей памяти наиболее сильно развита в психологии. Она
объясняет процесс выполнение задач, связанных с кратковременным манипулированием информацией. Принцип заключается в том, что «центральный
исполнительный орган» фокусирует внимание и выполняет операции с данными в буфере памяти [6]. Психологи широко изучили ограничения емкости
рабочей памяти человека, которые часто количественно оценивают по количеству фрагментов информации, которую можно легко запомнить [7]. Эти
ограничения емкости приводят к пониманию ограничений в работе памяти
человека, но в моделях NTM и дифференцируемого нейронного компьютера
(DNC) размер рабочей памяти можно задавать произвольным образом.
10
Раздел 2.
2.1
Нейронная машина Тьюринга
Общий принцип работы NTM
Архитектура NTM содержит два основных компонента: контроллер (нейронная сеть) и матрицу внешней памяти (см. рис. 2.1). Как и большинство
нейронных сетей, контроллер взаимодействует с внешним миром через входные и выходные векторы. В отличие от стандартных сетей, он также взаимодействует с матрицей памяти, используя операции чтения и записи. Дополнительные выходы нейронной сети являются параметрами этих операций, и,
по аналогии с машиной Тьюринга, будем считать их параметрами «головки».
Существенно, что каждый компонент архитектуры является дифференцируемым, что делает NTM простой моделью для обучения при помощи
модифицированных методов градиентного спуска. Это достигается за счет
определения «размытых» операций чтения и записи, которые в большей или
меньшей степени взаимодействуют со всеми элементами памяти (вместо того,
чтобы обращаться к одному элементу, как в обычной машине Тьюринга или
на цифровом компьютере). Степень размытости определяется механизмом
фокусировки внимания, который ограничивает каждую операцию чтения и
записи взаимодействием с небольшой частью памяти, игнорируя остальные
её части. Слоты памяти, входящие в фокус внимания операций чтения и записи, определяются специализированными величинами (скалярными и векторными) – выходами, исходящими от головок. Эти величины определяют
нормированный вес (распределение) по строкам в матрице памяти. Весовой
вектор определяет степень, в которой головка считывает (или записывает).
Таким образом, головка может сосредоточенно обращаться к памяти в одном
месте или слабо влиять во многих местах.
Основной принцип работы NTM заключается в том, чтобы предоставить нейронной сети доступ к внешней памяти (по аналогии с моделью машины Тьюринга, в которой имеются контроллер, головки чтения и записи,
а также внешняя память). Эта модификация позволяет увеличить размер
«долгосрочной» памяти модели.
Нейронная машина Тьюринга (NTM) обучается как обычная нейронная
сеть используя входные данные, получаемые из выборки, но также обучается
как ранить эту информацию и когда её извлекать из внешней памяти.
Вспомогательные выходы контроллера: вектор ключа, сила ключа, вен11
Рис. 1: Общая схема нейронной машины Тьюринга
тиль интерполяции, вектор свёрточного сдвига, коэффициент «заострения
(или уточнения)».
Нейронная машина Тьюринга, являющаяся рекуррентной моделью, может решать задачи, которые решают обычные рекуррентные нейронные сети,
но также и алгоритмические задачи, такие как: копирование, сортировка, ассоциативный поиск на основе примеров, взятых из обучающей выборки [1].
Предположим, что мы индексируем память, указав строку и колонку,
как в обычной матрице. Мы бы хотели обучить нашу нейросеть с помощью
метода обратного распространения ошибки и некоторого метода оптимизации (например, RMSProp, см. раздел 2.6), но получить градиент определённого индекса внешней памяти вряд ли получится. Вместо этого контроллер
осуществляет операции чтения и записи в рамках «размытых» операций, которые взаимодействуют со всеми элементами памяти в той или иной степени.
Рассмотрим принцип работы NTM более детально.
12
2.2
Компоненты и гиперпараметры
При инициализации NTM требуется задать некоторые гиперпараметры:
– размер внешней памяти: количество слотов памяти m и длина слота n
– диапазон перемещений головки r
– количество считывающих головок hr
– количество записывающих головок hw
– тип контроллера: RNN, LSTM, GRU, FFNN
– количество скрытых слоёв H и количество нейронов в скрытых слоях
контроллера hi
M0 – начальное состояние матрицы внешней памяти. Её можно инициализировать случайным образом (обычно это делают при помощи стандартного нормального распределения с малой дисперсией).
Нейронная машина Тьюринга состоит из контроллера controller, внешней памяти M , считывающих и записывающих головок, реализованных при
помощи функций чтения, записи и механизмов адресации.
NTM использует комбинацию двух методов адресации: адресацию на
основе контента (на основе содержимого) и механизм внимания, основанный
на местоположении слотов в памяти.
Рассмотрим упрощённый пример использования адресации по контенту
и адресации по местоположению для задачи понимания и анализа текста.
2.3
Пример
Context: The red boat sank. Question: What color was the boat?
iteration
content
boat → boat (content)
boat → red (iteration)
Сначала модель получает от пользователя предложение «Context». После этого пользователь задаёт вопрос «Question», в котором фигурирует слово
«boat». Далее модель ищет в своей памяти слово «boat» за счет механизма
поиска ассоциативных связей. В вопросе пользователя также фигурировало слово «color». За счет итеративного сдвига модель ищет ответ на вопрос.
Ответом на вопрос является слово «red».
13
Рис. 2: Нейронная машина Тьюринга
−1
rm
…
r1
xn
…
x1
Controller
−1
hk
…
h1
Write head
Read head
14
1+relu
exp z j
()
∑ exp (z k )
ksoftmax
sigmoid
relu
relu
relu
sigmoid
1+relu
∑ exp z k
ksoftmax
exp z j
()
( )
sigmoid
relu
relu
o1
γt
st
gt
βt
kt
…
at
et
γt
st
gt
βt
kt
ok
…
Content
addressing
w tc(i) ←
uv
‖u‖‖v‖
w tc
(
)
rt
Addressing
mechanism
j=0
Reading from
the memory
w̃ t
Mt
j
∑ w̃ t(j) γ t
w̃ t(i) γ t
Sharpening
w t(i) ←
∑ w gt(j)s t(i − j)
R−1
n
Convolutional
shift
w̃ t(i) ←
Addressing mechanism
Interpolation
w gt
w gt ← g tw tc + 1 − g t w t − 1
exp β tK k t, M t(i)
( [
])
∑ exp (β tK [k t, M t(j) ])
j
K(u, v) =
m
M̃ t
wt
Writing to the
memory
wt − 1 ← wt
2.4
Контроллер
Контроллер является обучаемой частью нейронной машины Тьюринга.
Контроллер выполняет все необходимые вычисления, в том числе обеспечивает управление памятью в автоматическом режиме (без участия человека). В
качестве контроллера может выступать нейронная сеть прямого распространения, любая рекуррентная нейронная сеть, в частности, LSTM или управляемый рекуррентный блок (gated recurrent unit, GRU).
На каждой итерации работы нейронной машины Тьюринга контроллер
принимает на вход вектор xt , поступающий из выборки (обучающей или тестовой) и вектор чтения rt , полученный при чтении предыдущего состояния
внешней памяти.
Входной слой имеет размер:
controller_input_shape = d + hr ∗ m, где d – длина входного вектора,
hr – количество считывающих головок, m – длина слота внешней памяти.
Выходной слой контроллера имеет размер
0
controller_output_shape = d + (hr + hw ) ∗ (m + r + 3) + hw ∗ 2 ∗ m, где
0
d – выходной вектор, m – длина слота внешней памяти, hr – количество
считывающих головок, hw – количество записывающих головок, r – длина
вектора сверточного сдвига.
2.5
Механизм адресации памяти
Отметим, что контроллер не знает длину m матрицы внешней памяти.
Эта величина связана только с механизмом адресации памяти.
На каждой итерации работы нейронной машины Тьюринга взаимодействие происходит целиком со всей матрицей внешней памяти. Степень взаимодействия с каждой строкой (слотом) матрицы определяется весовым вектором wt ∈ Rn (для каждой считывающей и записывающей головки свой весовой вектор). Этот весовой вектор рассчитывается в зависимости от параметров головки, получаемых от контроллера, а также текущего состояния
памяти Mt и предыдущего весового вектора wt−1 .
Процесс создания таких весовых векторов для определения мест, где
следует считывать и записывать данные можно представить в виде четырёх стадий. На каждой стадии генерируется промежуточный весовой вектор,
который передаётся на следующую стадию (см. рис 4. приложений).
15
2.5.1
Адресация по контенту (Content Addressing)
Цель первой стадии – сгенерировать весовой вектор на основании того,
насколько близка каждая строка в памяти к length-N вектору kt , полученному
от контроллера. Будем называть этот весовой вектор wtc весовым вектором
контента (содержимого).
Весовой вектор контента позволяет контроллеру выбирать значения,
похожие на уже знакомые значения, что называется адресацией по контенту. Для каждой головки контроллер производит вектор-ключ kt , который
сравнивается с каждой строкой Mt , используя меру сходства. В работе [1] использовалась косинус-мера сходства, которая определяется выражением (2).
Положительный скалярный параметр βt называется прочностью ключа, используется для определения, насколько сконцентрирован должен быть
весовой вектор контента. При малых значениях βt весовой вектор будет размытым, а при больших значениях – будет сконцентрирован на наиболее похожей строке в памяти. Если ключ kt = [0.1, 0.5, 0.25, 0.1, 0.05], то весовой вектор
контента будет изменяться в зависимости от βt по закону, представленному
на рис. 3 [26].
Рис. 3: Изменение вектора контента в зависимости от параметра βt
Контроллер производит для каждой головки вектор ключа k ∈ Rm , три
скалярных величины β, g, γ ∈ R и весовой вектор s ∈ Rr , называемый вектором сдвига. Также необходимо хранить предыдущий весовой вектор wt−1 и
предыдущее состояние памяти Mt−1 ∈ Rm×n . Данные преобразуются в текущий весовой вектор wt :
Сначала вычисляется косинусная мера сходства между ключом k и
16
каждой строкой матрицы Mt−1 . Затем к результату применяется операция
softmax с множителем β в показателе экспоненты. Затем результирующий
весовой вектор смешивается (путём выпуклой комбинации с параметром g) с
весовым вектором предыдущей итерации wt−1 . Число g будем называть вентилем интерполяции. Затем последовательно выполняются операции свёрточного сдвига и «уточнения». Пример построения весового вектора представлен на рис. 7.9 приложений.
wtc (i) ←
exp (βt K [kt , Mt (i)])
.
exp (βt K [kt , Mt (j)])
(1)
P
j
Косинусная мера сходства определяется следующим образом:
u.v
.
kukkvk
Производные wtc по переменным βt , kt и Mt :
K [u, v] ←
∂wtc (i)
∂βt
exp (βt ci
←
P
) (c
j
(2)
i − cj ) exp (βt cj )
P
exp (β
j
, где
2
t c j )
ci ← K [kt , Mt (i)] ;
Также,
∂wtc (i)
∂ci
P
←
j6=i
(4)
βt exp (βt cj )
P
exp (β
j
(3)
2 ,
(5)
t cj )
∂wtc (i)
−βt exp (βt ci ) exp (βt cj )
←
, где
2
∂cj
P
exp (β c )
t j
(6)
j
∂K [u, v]
1
u (i) (u.v)
v (i) −
←
, при
∂u (i)
kukkvk
kuk2
(7)
u = kt и v = Mt (i). Теперь мы можем использовать цепное правило для
поиска производных wtc по kt и Mt .
Однако в некоторых случаях нам необходимо уметь извлечь значения
из конкретных ячеек памяти, а не прочитать конкретные значения в памяти. Это называется адресация по ячейкам (по местоположению). А для её
реализации нам нужны еще три этапа адресации.
17
2.5.2
Интерполяция (Interpolation)
На втором этапе скалярный параметр gt ∈ (0, 1), который называется
вентилем интерполяции (interpolation gate), смешивает в некоторой пропорции вектор контента wtc с весовым вектором предыдущего шага работы NTM
wt−1 для производства вентильного весового вектора wtg . Это позволяет системе понять, когда использовать (или игнорировать) адресацию по контенту
(и в какой степени)
wtg ← gt wtc + (1 − gt ) wt−1 .
(8)
Выпишем частные производные весового вектора интерполяции по параметрам g, wtc , wt−1 :
2.5.3
∂wtg (i)
← wtc (i) − wt−1 (i) ,
∂gt
(9)
∂wtg (i)
← gt I (i = j) ,
∂wtc (j)
(10)
∂wtg (i)
← (1 − gt ) I (i = j) .
∂wt−1 (j)
(11)
Сверточный сдвиг (Convolutional shift)
Также необходимо ввести возможность смещения фокуса на другие
строки. Предположим, что одним из системных параметров ограничен диапазон допустимых смещений. Например, внимание головки может сместиться
вперед на одну строку (+1), остаться без изменений (0) или сместиться на
одну строку назад (-1). Будем производить сдвиги по модулю m, т.е. сдвиг
вперёд с нижней строки памяти перемещает внимание головки на верхнюю
строку, а сдвиг назад верхней строки перемещает внимание головки на нижнюю строку. После операции вентильной интерполяции каждая головка производит нормированное взвешивание (распределение) сдвига st и происходит
следующее перемещение (при помощи операции свертки) для расчёта веса
сдвига w̃t :
w̃t (i) =
NX
−1
wtg (j) st (i − j) .
j=0
Выпишем частные производные w̃t по параметрам st и wtg :
18
(12)
NX
−1
∂ w̃t (i)
←
wtg (i − k) ,
∂st (k)
k=0
(13)
NX
−1
∂ w̃t (i)
←
st (i − j) .
∂wtg (j)
j=0
(14)
Пример вычисления операции свёрточного сдвига изображён на рис. 8
приложений.
2.5.4
Заострение внимания, уточнение (Sharpening)
Четвёртая и окончательная стадия, «уточнение» (15), используется чтобы предотвратить размытие веса (распределения) w̃t из-за операции сверточного сдвига. Для этого требуется скаляр γ ≥ 1. Снова используем операцию
sof tmax.
w̃t (i)γt
wt (i) ← P
.
w̃t (i)γt
(15)
j
Производные wt по w̃t и по γt :
γt
P
∂wt (i)
w̃t (i)
←P
ln (w̃t (i)) −
∂γt
w̃t (i)γt
j
ln (w̃t (j)) w̃t (j)γj
P
j
γt −1
∂wt (i)
γt w̃t (i)
← P
∂ w̃t (i)
w̃t (j)γt
j
k
γt
w̃t (k)γt
,
(16)
w̃ (i)
1 − P t
, при
w̃ (k)γt
k
i = j.
(17)
t
∂wt (i)
−γt w̃t (i)γt w̃t (j)γt −1
←
, при i 6= j,
P
∂ w̃t (j)
w̃t (k)γt
(18)
k
где w̃t – весовой вектор, полученный после операции сверточного сдвига.
Пример вычисления операции «уточнение» представлен на рис. 9 приложений.
2.5.5
Чтение из памяти
Пусть Mt – матрица внешней памяти с m строками и n столбцами в момент времени t. Чтобы осуществить чтение (и запись) требуется некий механизм внимания, который определяет, откуда головка должна считать данные.
Механизм внимания будет нормированным по длине m весовым вектором wt .
19
Под «нормированием» подразумевается соблюдение двух следующих ограничений:
0 ≤ wt (i) ≤ 1,
R
X
wt (i) = 1.
(19)
(20)
i=1
Операция чтения довольно проста. Для неё мы будем использовать полученный весовой вектор wr ∈ Rn . Каждую строку M (i) матрицы M домножим на соответствующий коэффициент весового вектора wt (i), и, затем,
элементы каждой строки просуммируем. В результате получим новый вектор, каждая компонента которого соответствует взвешенной сумме элементов
соответствующего столбца матрицы M .
Головка чтения вернёт вектор rt , который является выпуклой комбинацией строк памяти Mt (i), масштабированных весовым вектором:
rt ←
X
wt (i) Mt (i).
(21)
i
rt дифференцируем по внешней памяти и по весовому вектору. Производная rt по wt :
∂rt (i)
= Mt (i, j) ,
∂wt (j)
(22)
и по Mt :
∂rt (k)
= wt (i) I (k = j) .
(23)
∂Mt (i, j)
Пример выполнения операции чтения представлен на рис. 5 приложений.
2.5.6
Запись в память
Запись немного сложнее, чем чтение, поскольку включает в себя два
отдельных шага: стирание, а затем добавление. Чтобы стереть старые данные, записывающей головке нужен новый вектор – это length-N стирающий
вектор et . Стирающий вектор используется в конъюнкции с весовым вектором для определения, какие элементы в строке следует удалить, оставить
неизменными или что-то среднее.
20
После преобразования всеми записывающими головками Mt−1 в Mterased
записывающая головка использует length-N добавляющий вектор at для завершения операции записи (28).
На каждом шаге t записывающая головка производит весовой вектор
wt , а также стирающий вектор (erase vector) et . Размер вектора wt равен
M . Размер вектора et равен n. Каждая компонента стирающего вектора лежит в интервале (0, 1) (контроллер имеет сигмоидные функции активации
для компонент этого вектора). Векторы памяти Mt−1 (i) с предыдущего шага
модифицируются следующим образом:
M̃t (i) ← Mt−1 (i) [1 − wt (i) et ] , где 1 − вектор-строка,
(24)
все компоненты которой – единицы.
Следовательно, элементы ячейки памяти сбрасываются на ноль только
в том случае, когда весовой вектор и элемент стирающего вектора являются единичными; если либо компонента весового вектора равна нулю, либо
компонента стирающего вектора равна нулю, память остается неизменной.
При наличии нескольких записывающих головок, операции стирания
могут выполняться в любом порядке, поскольку умножение является коммутативным.
Но вначале должны быть выполнены все операции стирания по всем
записывающим головкам, а уже затем должны быть выполнены все операции
добавления (add) к памяти по всем записывающим головкам.
Переменная M̃t является дифференцируемой по Mt , wt и et , и соответствующие частные производные такие:
0
0
∂ M̃t (i, j)
0 0 = (1 − wt (i) et (j)) I i = i I j = j ,
∂Mt i , j
(25)
∂ M̃t (i, j)
= −Mt−1 (i, j) et (j) I (i = k) ,
∂wt (k)
(26)
∂ M̃t (i, j)
= −Mt−1 (i, j) wt (i) I (k = j) .
∂et (k)
(27)
Операция стирания происходит за счет умножения матрицы M на (1 − ww ∗ e).
Каждая записывающая головка также производит добавляющий вектор at длинной n (slot length), который прибавляется к памяти после шага
стирания
21
Mt (i) ← M̃t (i) + wt (i) at .
(28)
Добавляющий вектор – это новая запись (новая информация).
Примеры использования вектора добавления и стирающего вектора представлены на рисунках 6, 7 приложений соответственно.
Порядок, в котором выполняются операции добавления к памяти, не
имеет значения. Объединенные операции стирания и добавления для всех
головок записи дают окончательное содержимое памяти в момент времени t.
Mt дифференцируем в соответствии wt , at и et , и соответствующие частные производные такие:
2.6
0
0
∂Mt (i, j)
0 0 = I i = i I j = j ,
∂ M̃t i , j
(29)
∂Mt (i, j)
= wt (i) I (j = k) ,
∂wt (k)
(30)
∂Mt (i, j)
= at (j) I (i = k) .
∂wt (k)
(31)
RMSProp (Root Mean Square Propagation)
RMSProp – это одна из модификаций стохастического градиентного
спуска [15].
Это метод, в котором темп обучения (learning rate) адаптируется по
каждому параметру. Идея заключается в том, чтобы делить темп обучения
на среднее значения величин последних градиентов по каждому параметру.
RMSProp использует скользящее среднее квадратов градиента для нормализации градиента.
Итак, сначала вычисляется скользящее среднее значение квадрата градиента для каждого веса w:
2
∂Qi (w)
M eanSquare (w, t) := γM eanSquare (w, t − 1) + (1 − γ)
,
∂w
(32)
где γ – это множитель «забывания».
И параметры обновляются следующим образом:
w := w − q
η
∂Qi (w)
,
M eanSquare (w, t) ∂w
22
(33)
где η – темп обучения.
RMSProp показывает отличный уровень адаптации темпа обучения в
различных приложениях. RMSProp может рассматриваться как обобщение
Rprop и способен работать с пакетами малого размера (mini-batches).
2.7
Процесс обучения нейронной машины Тьюринга
Уточним условия процесса обучения NTM.
Наиболее часто в качестве метода обучения NTM используют не обычный метод обратного распространения ошибки с методом стохастического
градиента, а RMSProp, описанный в разделе 2.6.
Обучение NTM производится методом обратного распространения ошибки, используя частные производные, описанные в разделе 2.5.
В данной работе в качестве контроллера NTM будет использоваться
многослойный перцептрон. Вариант NTM, в качестве контроллера которой
используется LSTM, представлен на рис. 12 приложений.
Пусть дана обучающая выборка X l = {(x1 , y1 ) , (x2 , y2 ) , . . . , (xl , yl )}
Пусть C – скрытый слой контроллера, Ct – выходы скрытого слоя в
момент времени t, C0 – выходы скрытого слоя в момент времени 0.
Скрытый или несколько промежуточных слоев контроллера являются
промежуточным звеном для генерации весового вектора wt , а для записывающих головок – еще и для генерации стирающего вектора et и добавляющего
вектора at .
Параметры WeC и beC используются для генерации вектора et , а параметры WaC и baC используются для генерации вектора at .
Здесь компоненты добавляющего вектора at приравниваются нулю, если их значения выходят за границы отрезка [−1, 1].
et ← σ (WeC Ct + beC ) ,
(34)
at ← (WaC Ct + baC ) .
(35)
Mt – матрица памяти в момент времени t, которая обновляется до Mt+1 ,
применяя равенства (24) и (28), которые используют весовой вектор записи
ww,t , стирающий вектор et и добавляющий вектор at .
Вектор чтения rt строится при помощи уравнения (21), которое использует обновленную матрицу памяти Mt и весовой вектор wr,t .
23
Входной вектор xt и вектор чтения rt используются для обновления
нейронов скрытого слоя Ct , используя параметры WCX , bCX , WCr и bCr получаем
Ct ← relu (WCX Xt + bCX + WCr rt + bCr ) .
(36)
Используя обновленный скрытый слой Ct и набор параметров:
n
o
WPC , bPC , Wku C , bku C , Wβu C , Wgu C , bgu C , Wsu C , bsu C , Wγu C , bγu C ,
получим внешний выход контроллера Pt (предположим, что y1 ∈ [0, 1]k , . . . , yl ∈
[0, 1]k ), набор выходов контроллера для обновления весового вектора чтения
(обозначим как Hr,t ) и набор выходов контроллера для обновления весового вектора записи (обозначим как Hw,t ). Здесь Hu,t включает вектор-ключ
ku,t , силу ключа (скалярная величина) βu,t , вентиль интерполяции (скалярная величина) gu,t , свёрточный сдвиг (векторная величина) su,t , коэффициент
«заострения» γu,t , где u = r для весового вектора чтения и u = w для весового
вектора записи.
Отметим, что вектор ключа обрезается в диапазоне от -1 до 1.
Pt ← σ (WPC Ct + bPC ) ,
(37)
ku,t ← Wku C Ct + bku C,
(38)
βu,t ← relu Wβu C Ct + bβu C ,
(39)
gu,t ← σ Wgu C Ct + bgu C ,
(40)
su,t ← σ (Wsu C Ct + bsu C ) ,
(41)
γu,t ← relu Wγu C Ct + bγu C .
(42)
Обновленный скрытый слой также производит стирающий и добавляющий вектор, используя уравнения (34) и (35). Также обновленный скрытый
слой производит обновленный весовой вектор записи. Эти три вектора используются для обновления памяти.
Для каждого входного вектора xt нейронная машина Тьюринга производит выходной вектор Pt . Функция потерь (ошибка) Losst вычисляется
24
между внешним выходом Pt и целевым вектором yt . Выбор функции потерь
определяется задачей.
Если мы предположим, что компоненты целевого вектора лежат в отрезке [0, 1], то выбор бинарной кросс-энтропии в качестве функции потерь
является подходящим выбором
Losst = binary_crossentropy (Pt , yt ) .
(43)
Пусть P – матрица спрогнозированных внешних выходов, состоящая из
векторов [P1 , P2 , . . . , Pl , ] и Y – матрица целевого внешнего выхода, состоящая
из векторов [y1 , y2 , . . . , yl ]
Теперь мы можем вычислить ошибку в соответствии с полной выходной
последовательностью, вычислив бинарную кросс-энтропию между P и Y :
L = binary_cross − entropy (P, Y ) .
Lbinary_cross_entropy (y, p (Θ)) = −
X
i
(44)
yi log (p (Θ)i ) ,
где y – это правильный ответ (вектор в форме унитарного кода).
В вероятностном смысле функция потерь L2 (Евклидово расстояние)
соответствует отрицательному логарифмическому правдоподобию нормального распределения со средним значением p (Θ), функция потерь L1 (функция потерь Лапласса) соответствует отрицательному логарифмическому правдоподобию распределения по Лапласу со средним p (Θ), а бинарная функция потерь кросс-энтропии соответствует отрицательному логарифмическому правдоподобию полиномиального распределения с вероятностями классов,
заданными вектором p (Θ).
Теперь, частная производная величины L вычисляется по каждому параметру модели при помощи правила вычисления сложной функции (цепного
правила). После вычисления производных L в соответствии с каждым параметром, параметры модели обновляются используя RMSProp.
Процесс обучения продолжается до тех пор, пока не выполнен критерий
останова.
25
2.8
Один шаг процесса обучения NTM
1. Контроллер принимает на вход очередной объект выборки xt , а также
вектор чтения rt .
2. Контроллер производит вектор, необходимый для построения весового вектора для операций чтения и записи, а также контроллер производит
векторы записи (add_vector, erase_vector) для каждой записывающей головки.
3. Контроллер вычисляет целевой вектор ŷt .
4. Обратное распространение ошибки для обучения контроллера.
5. При помощи механизма адресации и параметров, полученных на шаге
2 вычисляются весовые векторы для головок чтения и записи.
6. Производится операция записи во внешнюю память, и чтения, а затем
снова переходим к шагу 1.
Рассмотрим решения нескольких задач при помощи нейронной машины Тьюринга. Поскольку все далее описанные задачи будут эпизодическими,
то необходимо во время процессов обучения и тестирования сбрасывать динамическое состояние (внутреннюю память) сетей в начале каждой входной
последовательности. Для сетей LSTM это означает установку (предыдущего скрытого состояния равным настроенному в процессе обучения вектору
смещения (bias)). Для NTM предыдущее состояние контроллера, значение
(предыдущих векторов чтения и содержимое памяти были сброшены до значений настроенного bias. Все задачи были задачами обучения с учителем с
бинарными целями; все сети имели логистические сигмоидные выходные слои
и были обучены с целевой функцией кросс-энтропии. Ошибки прогнозирования последовательности сообщаются в битах на последовательность.
Рассмотрим задачу копирования последовательности битовых векторов.
2.9
Области применения NTM
– Обработка естественного языка (например, машинный перевод, вопросноответные системы).
– Прогнозирование временных рядов
– Распознавание рукописного текста
– Распознавание речи
26
– Генерация текстов
– Алгоритмические задачи
– Логические игры (при помощи обучения с подкреплением)
2.10
Недостатки нейронной машины Тьюринга
– Медленный процесс обучения [3, 18].
– Скорость обучения зависит от начальной инициализации внешней памяти
и весовых коэффициентов контроллера.
– Размер памяти является гиперпараметром, как следствие необходимо несколько запусков процесса обучения для определения оптимального размера
памяти.
– Косинусная мера сходства в качестве результата возвращает NaN каждый
раз, когда нулевой вектор фигурирует в вычислениях. В работе [3] эта
проблема решается при помощи добавления в знаменателе в случае,
если на вход был подан нулевой вектор.
– Операция «уточнение» может привести к результату Inf/Inf, если γ слишком большое. Проблему с большим γ можно решить при помощи простого
отсеченния, если результат операции выходит за границы заданного диапазона.
Выводы по разделу
В этом разделе была рассмотрена архитектура и процесс обучения NTM.
Главным преимуществом NTM по сравнению с другими рекуррентными нейронными сетями является наличие «долгосрочной памяти». Это позволяет
решать более сложные задачи, как, например: анализ текста, построение чатботов, генерация текстов, а также некоторые алгоритмические задачи. Была
построена схема работы NTM, выделены главные недостатки модели, перечислены области применения.
27
Раздел 3.
Дифференцируемый нейронный компьютер
В работе [2] была предложена нейросетевая модель дифференцируемого нейронного компьютера. Так же как и модель NTM, дифференцируемый
нейронный компьютер обладает внешней памятью.
Дифференцируемый нейронный компьютер может быть обучен при помощи техник: обучения с учителем или обучения с подкреплением.
Вся система дифференцируема, и поэтому может быть обучена от начала и до конца при помощи модифицированных методов градиентного спуска
и метода обратного распространения ошибки, позволяя сети научиться организовывать внешнюю память целенаправленным образом [2].
Нейронная машина Тьюринга может извлекать информацию из памяти
в порядке индексов её слотов, но не в порядке, в котором была произведена
запись в слоты памяти. Дифференцируемый нейронный компьютер обладает
этой способностью.
3.1
LSTM-контроллер
Выпишем уравнения, описывающие работу LSTM-контроллера:
ilt = σ Wil χt ; hlt−1 ; hl−1
+ bli ;
t
(45)
ftl = σ Wfl χt ; hlt−1 ; hl−1
+ blf ;
t
(46)
h
i
h
i
slt = ftl slt−1 + ilt tanh Wsl χt ; hlt−1 ; hl−1
+ bls ;
t
(47)
olt = σ Wol χt ; hlt−1 ; hl−1
+ blo ;
t
(48)
hlt = olt tanh slt ;
(49)
h
i
h
i
где l – это индекс слоя, σ (x) = 1/ (1 + exp (−x)) – это сигмоидная функция активации, hlt , ilt , ftl , slt и olt – это векторы активации скрытого, входного
вентиля, вентиля забывания, выходного вентиля слоя l в момент времени t.
h0t = 0 для всех t.
В каждый момент времени контроллер производит выходной вектор vt
и вектор интерфейса ξt ∈ R(W ×R)+3W +5R+3 , которые определяются так
28
Рис. 4: LSTM-контроллер
vt = Wy h1t , . . . , hL
t ,
h
i
ξt = Wξ h1t , . . . , hL
t .
h
i
Предположим, что контроллер является рекуррентным, его выходы –
это функции от полной истории её входов (χ1 , . . . , χt ) вплоть до текущего
временного шага. Поэтому мы можем представить работу контроллера следующим образом
(vt , ξt ) = N ([χ1 ; . . . , χt ] ; Θ) ,
где Θ – это набор обучаемых весов нейронной сети. В качестве контроллера также возможно использование нейронной сети прямого распространения. Выходной вектор yt определяется как сумма вектора vt c вектором, полученным путем применения весовой матрицы Wr размерности RW × Y к
конкатенации текущих считывающих векторов.
yt = vt + Wr rt1 ; . . . ; rtR .
h
3.2
i
Параметры интерфейса
Перед тем как быть использованным для параметризации взаимодействия с памятью, вектор интерфейса ξt подразделяется следующим образом:
ξt =
t
ktr,1 , . . . , ktr,R ; β̂tr,1 . . . ; β̂tr,R ; kw
; β̂tw ;êt ; vt ; fˆt1 ; . . . ; fˆtR ; ĝta , ĝtw ; π̂t1 ; . . . ; π̂tR
29
.
Затем отдельные компоненты обрабатываются различными функциями активации, чтобы гарантировать, что они находятся в правильном домене. Сигмоидная функция используется для ограничения на [0, 1]. Функция
oneplus используется для ограничения на [1, ∞), где
oneplus (x) = 1 + log (1 + ex ) ,
и sof tmax-функция используется для ограничения векторов на SN –
симплекс размерности N − 1
n
SN = α ∈ R : αi ∈ [0, 1] ,
N
X
i=1
αi = 1 .
После обработки всех компонент вектора интерфейса, мы имеем следующий набор скаляров и векторов:
– R ключей чтения {ktr,i ∈ R; 1 ≤ i ≤ R};
r,i
r,i
– R интенсивность чтения (прочность ключа чтения) {βt = oneplus β̂t ∈
[1, ∞) ; 1 ≤ i ≤ R};
– ключ записи ktw ∈ RW ;
w
w
– интенсивность записи (прочность ключа записи) βt = oneplus β̂t ∈
[1, ∞);
– стирающий вектор et = σ (êt ) ∈ [0, 1]W ;
– записывающий вектор vt ∈ RW ;
i
i
ˆ
– R освобождающих вентилей ft = σ ft ∈ [0, 1] ; 1 ≤ i ≤ R ;
– вентиль распределения (вентиль выделения памяти) gta = σ (ĝta ) ∈ [0, 1];
– вентиль записи gtw = σ ĝtW ∈ [0, 1];
n
o
– R режимов считывания πti = sof tmax π̂ti ∈ S3 ; 1 ≤ i ≤ R .
Интерпретация и использование этих терминов будут рассмотрены далее.
3.3
Чтение и запись в память
Выбор ячеек для чтения и записи зависит от весовых векторов, компоненты которых неотрицательные вещественные числа, сумма которых равна
не более 1. Полный набор допустимых весов по N координатам – это неотрицательный гипероктант в пространстве RN с единичным симплексом в качестве границы
30
∆N = α ∈ RN : αi ∈ [0, 1] ,
N
X
i=1
αi ≤ 1 .
Для
операции чтения
используются R весовых векторов чтения
r,i
r,R
wt , . . . , wt ∈ ∆N . Они используютя для вычисления векторов чтения r1t , . . . , rR
t следующим образом:
n
o
rti = Mt> wtr,i .
Векторы чтения присоединяются (при помощи операции конкатенации)
ко входному вектору χt контроллера на следующем шаге, предоставляя ему
доступ к содержимому памяти.
Операция записи регулируется весовым вектором wtw ∈ ∆N , который
используется совместно со стирающим вектором et ∈ [0, 1]W и записывающим
вектором vt ∈ RW (два последних генерируются непосредственно контроллером) для изменения памяти следующим образом:
w >
Mt = Mt−1 ◦ E − wtw e>
t + wt vt ,
где ◦ обозначает поэлементное произведение и E – это единичная матрица размерности N × W .
3.4
Динамическое выделение памяти
Для того, чтобы у контроллера была возможность освобождать память
по мере необходимости, был разработан дифференцируемый аналог схемы
распределения памяти «список освобождения», в соответствии с которым
список доступных мест памяти поддерживается путем добавления и удаления
адресов из связанного списка. Обозначим через ut ∈ [0, 1]N вектор использования памяти в момент времени t, и обозначим u0 = 0. Перед тем как выполнять операцию записи в память, контроллер генерирует набор освобождающих вентилей fti (по одному на каждую считывающую головку), которые определяют, могут ли быть освобождены последние прочитанные слоты
памяти. Вектор удержания памяти (удерживающий вектор) строится по
следующей формуле
ψt =
R
Y
,i
1 − fti wtr−1
, где R– это количество считывающих головок.
i=1
31
Дадим пояснение по этой формуле.
В момент времени t − 1 дифференцируемый нейронный компьютер считал данные из памяти. Теперь у нас есть выбор: либо мы оставляем эти данные в памяти, либо если они нам уже не нужны, то стираем их из памяти. В
момент времени t текущее состояние контроллера определяет значения освобождающих вентилей, которые и определяют в какой степени мы должны
удалить только что прочитанные данные (освободить соответствующие слоты памяти). Вектор удержания – это, в некотором смысле, обратная к набору
освобождающих вентилей величина.
Вентили освобождения fti определяют насколько важно сейчас (на текущем шаге) то, что мы прочитали на предыдущем шаге. Итак, если то, что
мы прочитали на предыдущем шаге сейчас важно, то fti будет близко к нулю.
Если же только что прочитанная информация для нас не важна больше, то
fti будет близко к единице.
Затем вектор использования можно определить как
w
w
ut = ut−1 + wt−1
− ut−1 ◦ wt−1
◦ ψt ,
где ◦ обозначает поэлементное произведение, ψt – это вектор удержания (удерживающий вектор). Выражение в скобках – это правило сложения
вероятностей совместных событий (а точнее, это нормировка, необходимая,
чтобы значения вектора использования оставались в диапазоне [0, 1]).
Вектор использования показывает на сколько важен каждый слот памяти. Значение u [i] уменьшается после выполнения операции чтения (как
видно из формул выше ut [i] уменьшается за счет вектора удержания ψt , последний в свою очередь зависит от весового вектора чтения на шаге t − 1),
и повышается после выполнения операции записи (за счет весового вектора
записи).
Дадим интуитивное пояснение: слоты памяти используются, если они
были сохранены освобождающими вентилями (ψt ≈ 1), и были либо уже использованы, либо только что были записаны. Каждая запись в слот увеличивает значение его использования, максимум до 1, и коэффициент использования может быть уменьшен только до 0 с помощью освобождающих вентилей
(входящих в вектор удержания памяти); поэтому элементы ut ограничены в
диапазоне [0, 1].
С одной стороны, значение ut [i] уменьшается, когда слот i был про32
читан на шаге времени t − 1; это может быть хорошим признаком того, что
содержимое слота i больше не требуется. С другой стороны, значение ut [i]
увеличивается, когда запись в слот i была произведена на временном шаге t − 1, что ясно указывает на то, что использование i-го слота необходимо
усилить, поскольку значение, хранящееся в i-ом слоте, ранее еще не было
доступно для чтения.
Принимая во внимание все это, вектор использования ut может быть, в
принципе, сформулирован следующим образом:
w
ut [i] = ut−1 [i] + wt−1
[i] ψt [i] .
Имеется ограничение в уравнении, только что сформулированном для
вектора хранения ψt ∈ [0, 1]N : если слоты памяти освобождаются сразу после
выполнения операции чтения из них, тогда может быть невозможно прочитать определенное значение, хранящееся в ячейке памяти более одного раза.
Это было бы существенным ограничением, которое могло бы ограничить вычислительную мощность DNC и оставить многие приложения недоступными.
Чтобы преодолеть это ограничение, контроллер генерирует скалярную величину освобождающий вентиль ft ∈ [0, 1], чтобы гарантировать возможность
сохранения местоположения памяти даже после операции чтения. Получаем
окончательный вид уравнения для вектора хранения:
ψt [i] =
R
Y
r,j
1 − ftj wt−1
[i]
.
j=1
Как видно, для каждой считывающей головки j существует свой собственный освобождающий вентиль ftj . Если ftj ≈ 0 для всех считывающих
головок, то ψt [i] ≈ 1, что указывает на то, что i-ый слот памяти не может
быть освобождён в момент времени t независимо от того, был ли i-ый слот
прочитан на временном шаге t − 1 или нет. Итоговое уравнение в векторной
форме:
ψt =
R
Y
r,j
1 − ftj wt−1
,
j=1
где произведение векторов представляет собой поэлементное произведение, как и раньше.
Теперь рассмотрим как вычисляются весовые коэффициенты выделения памяти при at ∈ ∆N . Более высокие веса будут указаны в тех местах,
33
j ut [j] γ : φt [γ] = j at [j]
1
1
4
0
2
0
1
1/1
3 0.8
3
1/3
4 0.4
2
1/2
Таблица 1: Пример вычисления весовых коэффициентов выделения памяти
которые ближе к началу списка слотов памяти, отсортированных по отношению к ut в порядке возрастания. Поэтому первым шагом является получение
списка освобождения φt ∈ N N , состоящего из индексов слотов памяти (в диапазоне 1, . . . , N ) в порядке возрастания использования в момент времени t,
определяемом ut :
Например, учитывая вектор использования ut = [1; 0; 0, 8; 0, 4], получившийся список освобождения будет равен φt = [2; 4; 3; 1]; наименее используемой ячейкой памяти будет φt [1] (слот памяти 2 в примере), а наиболее используемой ячейкой памяти будет φt [N ] (слот памяти 1 в примере).
При заданных φy и ut существует множество различных способов получения весовых коэффициентов выделения памяти. При этом необходимо
учесть следующие ограничения:
– ячейка памяти, соответствующая k-ом элементу φy , получает вес выделения памяти, больший или равный, чем тот, который получен в ячейке
памяти, соответствующей (k + 1)-ому элементу φt
– вес выделения памяти в at [i] равно 0 для всех ячеек памяти, где ut [i] = 1.
Один из вариантов получения весовых коэффициентов выделения памяти следующий:
0,
если ut [j] = 1
1,
иначе
at [j] =
γ
j = 1, . . . , N
γ — это значение, удовлетворяющее φt [γ] = j. Если снова
использовать
вектор ut = [1; 0; 0, 8; 0, 4], то полученное распределение распределения, полученное из уравнения (77), будет равно at = [0; 1; 1/3; 1/2]:
Однако вышеприведенное уравнение отбрасывает важную информацию
о степени использования, содержащейся в ut ; кроме того, это не гарантирует,
34
γ−1
Q
j ut [j] γ : φt [γ] = j 1 − ut [j]
1
2
3
4
0.4
0.6
0.2
0.5
2
4
1
3
0.6
0.4
0.8
0.5
i=1
ut [φt [i]]
at [j]
0.2
0.12
0.2 × 0.4 × 0.5 = 0.04 0.016
1
0.8
0.2 × 0.4 = 0.08
0.04
Таблица 2: Пример вычисления весовых коэффициентов выделения памяти (улучшенный
вариант)
что at ∈ ∆N . В реальности же DNC используют другой дифференцируемый
подход:
at [j] = (1 − ut [j])
γ−1
Y
ut [φt [i]] ,
i=1
в которой γ снова является значением, которое удовлетворяет φt [γ] = j
вам. Для приведенного примера это уравнение даст в at [1] = 0, в at [2] = 1, в
at [3] = 0, в at [4] = 0 , at = [0; 1; 0; 0].
Заметим, что для полностью используемых ячееек памяти (ut [φt [j]] ≈
1) весовой коэффициент выделения памяти приблизительно равен 0. Заметим
также, что если существует хотя бы одно значение коэффициента использования 0, то первому слоту в списке φt будет присвоено 1, а оставшимся местам
будет присвоен нуль. Нет доказательств того, что вектор выделения памяти
всегда принадлежит ∆N .
Еще один пример.
В случае вектора использования ut = [0, 4; 0, 6; 0, 2; 0, 5] итоговое взвешивание распределения составляет at = [0, 12; 0, 016; 0, 8; 0, 04];
В оригинальной работе весовой вектор выделения памяти представлен
в несколько иной, но эквивалентной форме, что позволяет избежать необходимости определять γ:
at [φt [j]] = (1 − ut [φt [j]])
j−1
Y
i=1
35
ut [φt [i]] .
Сортировка не является обычной операцией в нейронных сетях. Это
может даже привести к некоторым проблемам при вычислении градиента.
Но, по мнению авторов статьи, эти вопросы экспериментально не заметны:
«Операция сортировки вызывает разрывы в точках, в которых изменяется порядок сортировки. Мы игнорируем эти разрывы при расчете градиента, поскольку они, похоже, не имеют отношения к обучению» [2].
Контроллер производит R скалярных величин fti , i = 1, . . . , R
φt = SortIndicesAscending (ut ) .
После определения ut список освобождения φt ∈ ZN определяется путём сортировки индексов слотов памяти в порядке возрастания коэффициентов использования; φt [1] является индексом наименее используемого
слота памяти. Вес распределения (attention) at ∈ ∆N , которое используется
для предоставления новых слотов памяти для записи:
at [φt [j]] = (1 − ut [φt [j]])
j−1
Y
ut [φt [i]] .
(50)
i=1
Если все коэффициенты использования равны 1, тогда at = 0 и
контроллер больше не может выделять память без предварительного освобождения используемых слотов памяти.
Как уже указывалось, адресация на основе контента сочетается с динамическим распределением памяти, чтобы получить весовой коэффициент
wtw записи.
Задача распределения динамической памяти состоит в том, чтобы заставить DNC вычислять новый вид взвешивания на каждом временном шаге,
весовые коэффициент выделения памяти, которые являются компонентами
вектора at ∈ ∆N , который указывает, в какой степени каждая ячейка памяти
может использоваться для записи новой информации (то есть не защищена от
записи). Тот факт, что at ∈ ∆N подразумевает, что бинарная аналогия не может быть соблюдена здесь. Распределение, соответствующее N = 4 одинаково
распределяемых мест памяти, будет, например, равным [0, 1; 0, 1; 0, 1; 0, 1], а не
[1; 1; 1; 1]; тот факт, что вторая ячейка памяти полностью используется для
записи новой информации, но никакой другой слот не может быть зарезервирован, будет представлен следующим образом:
at = [0; 1; 0; 0]; вес выделения новой памяти при at = [0, 4; 0, 2; 0; 0] представляет ситуацию, в которой первой слот будет больше выделяться для но36
вой информации, чем второй. Если at = 0, то DNC израсходовала свободные
слоты памяти, и поэтому уже нет доступа к слотам памяти для записи посредством распределения динамической памяти в момент времени t; однако
важно отметить, что все еще можно произвести запись в слоты, доступные с
помощью адресации по контенту.
Рис. 5: Динамическое выделение памяти
3.5
Взвешивание (весовые коэффициенты) операции записи
Контроллер может производить запись в недавно выделенные слоты
памяти или в слоты, ассоциированные с некоторым контентом, или он может
вообще не производить запись. Во-первых, весовые коэффициенты операции
W , βW
записи по контенту cW
=
C
M
,
k
t−1 t
t
t
w
ct интерполируется с помощью весовых коэффициентов выделения памяти at , определенного с помощью уравнения (50) для определения веса операции записи wtW ∈ ∆N :
wtw = gtw [gta at + (1 − gta cw
t )] ,
(51)
где gta ∈ [0, 1] – это вентиль выделения памяти, управляющий интерполяцией gtw ∈ [0, 1] – это вентиль записи. Если вентиль записи равен 0, тогда
37
ничего не будет записываться (независимо от других параметров записи); поэтому его можно использовать для защиты памяти от ненужных изменений.
Мы можем игнорировать механизм выделения памяти, если используем
механизм адресации по контенту, т. к. адресация по контенту обычно фокусируется на конкретных слотах в памяти, содержащих необходимую информацию, и используется в основном для перезаписи этой информации. Механизм
выделения памяти используется для хранения новой информации.
3.6
Временна́я связь памяти (механизм временно́й связи, механизм временны́х ссылок)
Система распределения памяти, определенная выше, не хранит никакой
информации о порядке, в котором записана информация. Однако существует
много ситуаций, в которых сохранение этой информации полезно: например,
когда последовательность инструкций должна быть записана и восстановлена
в некотором порядке. Мы будем использовать временну́ю матрицу ссылок
Lt ∈ [0, 1]N ×N для отслеживания последовательно измененных слотов памяти
(рис. 6d).
Рис. 6: Общая схема дифференцируемого нейронного компьютера
Lt [i, j] представляет собой степень, в которой ячейка памяти i была
записанной в момент времени t после ячейки j в то время как запись в ячейку
j была произведена в момент времени t − 1. Каждая строка и столбец Lt
определяет вес между ячейками:
38
Lt [i, ·] ∈ ∆N и Lt [·, j] ∈ ∆N для всех i, j и t. Для определения Lt нам
потребуется взвешенный приоритет (весовой коэффициент приоритета) pt ∈
∆N , где элемент pt [i] представляет степень в которой i-ый слот памяти был
записан последним. pt определяется рекуррентным соотношением
p0 = 0,
pt = 1 −
X
wtw [i] pt−1 + wtw ,
i
wtw
где
– это взвешивание (вес) записи, определенное в уравнении (51).
Каждый раз, когда слот памяти изменяется, матрица ссылок обновляется, чтобы удалить старые ссылки в эту ячейку и из этой ячейки, а затем
создать новые ссылки. Для реализации этой логики мы используем следующее рекуррентное соотношение:
L0 [i, j] = 0, ∀i, j
Lt [i, i] = 0, ∀i
Lt [i, j] = (1 − wtw [i] − wtw [j]) Lt−1 [i, j] + wtw [i] pt−1 [j] .
Рассмотрим выражение (1 − wtw [i] − wtw [j]) Lt−1 [i, j] более подробно:
Рассмотрим строку i и столбец j в матрице временны́х ссылок.
Рис. 7: Матрица временны́х ссылок
Если мы переписываем информацию в матрице внешней памяти в позициях i и j, то все элементы в строке i и столбце j матрицы временны́х
39
ссылок изменятся. Следовательно, мы должны забыть предыдущее состояние Lt−1 [i, j], и степень забывания зависит от интенсивности новых весовых коэффициентов wtw [i] и wtw [j]. А затем мы должны обновить информацию в строке i и столбце j матрицы временны́х ссылок за счёт слагаемого
wtw [i] pt−1 [j] (т. к. по определению Lt [i, j] – это степень в которой слот i был
записан после слота j, то мы должны прибавить к изменённому Lt−1 [i, j] весовой коэффициент wtw [i], умноженный на степень того, что j-ый слот был
записан последним на момент времени t − 1).
Рис. 8: Матрица внешней памяти
Ссылки-петли исключены (элементы, лежащие на диагонали матрицы
ссылок всегда равны нулю) потому что неясно, как следует переход от ячейки
к самой себе. Строки и столбцы Lt представляют веса временны́х ссылок, входящих и выходящих из определенных слотов памяти, соответственно. Пусть
даны Lt , обратное временное взвешивание (вес) bit ∈ ∆N и прямое временное
взвешивание (вес) fti ∈ ∆N для считывающей головки i определяются так:
r,i
fti = Lt wt−1
,
r,i
bit = L>
t wt−1 ,
,i
где wtr−1
– это i-ый вес считывания с предыдущего временного шага.
Начнём с описания того, как все будет работать в бинарном представлении, когда запись производится на каждом временном шаге только в один
слот, также предположим (ошибочную) гипотезу о том, что операция записи
всегда выполняется на каждом временном шаге.
40
С этими упрощениями Lt будет матрицей из нулей и единиц, в которых
если i является последним записанным слотом (в момент времени t), а j
является вторым по последнему записанному слоту (в момент времени t − 1),
то Lt [i, j] = 1; если запись в i-ый слот не производилась на временном шаге
t, и в j-ый слот не производилась запись на временном шаге t − 1, то Lt [i, j]
остается неизменным относительно его предыдущего значения на временном
шаге t − 1; в других случаях Lt [i, j] = 0, что отражает тот факт, что запись
в i-ый слот не была произведена после записи в j-ый слот (напомним, что
мы предполагаем, что операция записи всегда выполняется на каждом шаге)
[22]:
1, если
w [j] = 1
wtw [i] = 1 и wt−1
w [j]
Lt [i, j] = 0, если wtw [i] 6= wt−1
Lt−1 [i, j] ,
(52)
иначе
В остальных случаях L0 [i, j] = 0 для всех i и j.
Помимо упрощения, присущего бинарному представлению, предыдущее
уравнение игнорирует тот факт, что между одной записью и следующей может быть произвольное количество временных шагов. Чтобы преодолеть эти
ограничения, нам нужно более точное средство для записи степени, в которой
была произведена запись в слот памяти.
Эта цель достигается путем введения нового взвешивания pt ∈ ∆N , которое называется взвешенном приоритетом. Элемент pt [i] обозначает степень,
в которой последняя запись производилась в i-ый слот, и вычисляется рекурсивно.
Если величина pt [i] большая, то это может указывать:
– на то, что запись в i-ый слот производилась на временном шаге t с большей степенью (то есть другие слоты вообще не были записаны на временном шаге t или или запись в них производилась в гораздо меньшей
степени)
– это также может указывать на то, что запись в i-ый слот была произве0
дена с большей степенью при t ≤ t, но что значительная запись не была
0
выполнена в памяти с момента времени t ;
– это может также указывать на то, что вес (внимание) записи на i-ом
слоте было частично распределено на разных недавних временных шагах
в прошлом, а общая сумма накопленного веса (внимания) больше, чем вес
41
(степень внимания) другим слотам.
Предварительная бинарная формулировка весового приоритета следующая:
wtw ,
pt =
если
N
P
i=1
wtw [i] = 1
(53)
pt−1 , иначе
Заметим, что вектор pt обновляется только тогда, когда операция записи выполнялась на шаге времени t, и поэтому он мог оставаться нетронутым
для длительных периодов в режиме «только для чтения».
Как известно, даже один шаг работы DNC в режиме «только для чтения», является сложным процессом. Чтобы вернуться к реальной модели памяти DNC нужно принять факт, что весовой коэффициент записи крайне
редко (почти никогда) будет равен нулю, поэтому введём непрерывную формулировку взвешенного приоритета следующим образом:
pt = 1 −
X
wtw [i] pt−1 + wtw ,
i
где wtw – это!взвешивание (вес) записи, определенное в уравнении (51).
1 − wtw [i] – это вероятность (степень) того, что мы ничего не запиi
сываем.
Итак, если мы ничего не записываем, то мы оставляем предыдущий
pt−1 (используем его).
Обратите внимание, что предыдущее уравнение вырождалось бы до
(53) в предельных случаях полной записи или «только для чтения». В первом
случае суммирование всех компонент wtw будет иметь наибольшее значение
(т. е. равно 1), а pt будет уменьшено до wtw ; во втором случае суммирование
всех компонент wtw будет равно 0, wtw также будет равно 0, а pt будет тогда
копией pt−1 . Обратите внимание, что после гипотетической полной записи pt
будет перезагружен, а прошлая история (закодированная в pt−1 ) полностью
забыта. Упорядоченный приоритет инициализируется p0 = 0.
Принимая во внимание все это, мы, наконец, готовы изложить окончательную дифференцируемую формулировку Lt [i, j], в которой бинарные
ограничения (52) уже не учитываются. Уравнение должно отражать тот факт,
что если в слот памяти i была произведена значительная запись на временном шаге t (т. е. wtw [i] велико), то в Lt [i, j] должно быть значение, которое
P
42
в основном пропорционально степени, в которой слот памяти j был последним слотом, записанным до этого (эта информация представлена в pt−1 [j]);
одним из способов для реализации этого является произведение wtw [i] pt−1 [j].
Если wtw [i] мало (или, что то же самое, 1 − wtw [i] велико), то Lt [i, j] будет в
основном близко к значению Lt−1 [i, j]; тем не менее, существует исключение
из последнего правила: если в слот j была произведена значительная запись
на шаге времени t (т. е. wtw [j] является высоким), тогда эта ситуация должна инициировать не бинарный сброс Lt [i, j] до низкого значения, поскольку
ячейка памяти, которая будет записана после j, не будет известна до временного шага t + 1. Получаем дифференцируемое уравнение, которое объединяет
все эти аспекты:
Lt [i, j] = (1 − wtw [i] − wtw [j]) Lt−1 [i, j] + wtw [i] pt−1 [j] .
Матрица временных связей определяет порядок, в котором была произведена запись в слоты памяти.
Контроллер может использовать Lt чтобы извлекать записанные данr,i
ные ранее (до) bit или после fti последней позиции чтения wt−1
, позволяя ему
двигаться вперед или назад во времени (оперировать данными вперед или
назад во времени).
Рассмотримпример.
0 0 0 1
0 0 0 0
.
Пусть Lt =
0 0 0 0
0 1 0 0
В этом примере единица, обозначенная красным цветом Lt [4,2] представляет предложение «Запись в слот 4 была произведена после записи в
слот 2» . Обратите внимание, что строка i хранит обратную информацию (а
именно, что было написано до записи в слот i, например, четвертая строка в
матрице позволяет нам знать, что слот 2 было записано до местоположения
4), тогда как столбец j содержит прямую информацию (а именно, что было написано после записи в слот j, например, второй столбец в предыдущей
матрице позволяет нам знать, что головка записи переместилась в слот 4 после записи в слот 2). Тот факт, что второй столбец имеет ненулевой элемент,
но вторая строка состоит из нулей, указывает, что первый слот, в который
производилась запись имеет индекс (адрес) 2; тот факт, что и третий ряд, и
третий столбец равны нулю, показывает, что в слот 3 еще не производилась
43
запись.
Принимая это во внимание и учитывая общий вес wt , можно легко вывести формулы, описывающие, как мы можем двигаться назад или вперед во
времени, чтобы сосредотачивать внимание на те слоты памяти, запись в которые производилась до или после тех, которые представлены в векторе wt ;
результирующие слоты будут соответственно представлены обратным взвешиванием bt и прямым взвешиванием ft , которые вычисляются следующим
образом:
r,i
fti = L̂t wt−1
,
r,i
bit = L̂>
t wt−1 .
Эта матрица действует как летописец, сохраняя историю памяти, записывая в математическом эквиваленте хроники следующим образом: «В начале была произведена запись в слот памяти 2. Затем в слот 4 была произведена
запись после записи в слот 2. Затем в слот 1 была произведена запись после
записи в слот 4».
Например, учитывая предыдущую матрицу временной связи Lt и бинарный случай взвешивания wt = [0; 0; 0; 1], обратное взвешивание будет:
>
0 0 0 1
0 0 0 0 0 0
0 0 0 0
0 0 0 1 0
1
wt =
= ,
bt =
0 0 0 0
0 0 0 0 0
0
0 1 0 0
1 0 0 0 1
0
что указывает, что слот, записанный до слота с индексом 4, является
слотом с индексом 2. Прямое взвешивание будет аналогичным образом получено как:
0 0 0 1
0 0 0 1 0 1
0 0 0 0
0 0 0 0 0
0
wt =
= ,
ft =
0 0 0 0
0 0 0 0 0
0
0 1 0 0
0 1 0 0 1
0
что слот, записанный после слота с индексом 4, является слотом с индексом 1. Заметим еще раз, что, хотя предыдущий пример относится к упрощенному бинарному случаю, DNC имеют дело с матрицами временной связи и весами, которые в общем случае являются вещественными числами. В
44
результате этого элемент Lt [i, j] во временно́й матрице ссылок фактически
указывает, в какой степени ячейка памяти i была записана после ячейки j;
прямые и обратные веса также сосредоточивают свое внимание на каждой
ячейке не бинарным образом (компоненты этих векторов являются также
вещественными числами).
В частном случае попытки получить обратное взвешивание для второго
слота памяти (wt = [0; 1; 0; 0]), которое является первым местом, записанным
в соответствии с Lt , мы получим:
0
0
bt =
0
0
0
0
0
1
0
0
0
0
>
1
0
0
0
wt =
0
0
0
1
0
0
0
0
0
0
0
0
0 0 0
1 1 0
= .
0 0 0
0 0
0
Как указывалось ранее, временная связь слотов памяти является режимом адресации, который предназначен для чтения. Этот режим основан
на информации об операциях записи, которая предоставляется матрицей временных связей Lt .
Основная цель данных построений заключается в том, чтобы позволить
слотам памяти считываться в том же порядке, в котором производилась в них
запись (или в обратном порядке, в зависимости от задачи).
r,i
bit = L>
t wt−1 ,
r,i
fti = Lt wt−1
,
bit ∈ ∆N ,
fti ∈ ∆N .
Обратите внимание, что так как wtw ∈ ∆N , то невозможно, чтобы вычитания в скобках приводили к отрицательному значению. Для завершения
спецификации Lt [i, j] требуются два следующих уравнения:
L0 [i, j] = 0,
45
Lt [i, i] = 0.
Смещение фокуса к следующему моменту (состоянию памяти): Lw
Смещение фокуса к предыдущему моменту (состоянию памяти): L> w
Это завершает описание того, что весовые значения чтения вычисляются как комбинация контент-адресации и временной связи (временны́х ссылок)
в памяти. Рассмотрим более подробно вопрос о том как эффективно хранить
и вычислять матрицу временны́х ссылок Lt .
3.7
Матрица разреженных ссылок
Матрица ссылок имеет размер N × N и, поэтому требует O N 2 ресурсов памяти и времени для её точного вычисления. Эта стоимость быстро
становится запредельной по мере увеличения количества слотов во внешней
памяти.
К счастью, матрица ссылок, как правило, очень разрежена и может
быть аппроксимирована за O (N logN ) времени и O (N ) памяти без заметных
потерь в производительности. Для некоторого фиксированного K мы сначала
вычисляем разреженные векторы ŵtw и p̂t−1 путём сортировки wtw и pt−1 ,
устанавливая все, кроме K максимальных значений, равными 0, и делим
оставшиеся K на их сумму, чтобы обеспечить их суммирование до 1.
Этот шаг имеет вычислительную сложность O (N logN + K) для учёта стоимости сортировки O (N ) памяти. Затем вы вычисляем разреженное
2 памяти и времени.
внешнее произведение ŵtw p̂>
,
которое
требует
O
K
t
Предполагая, что разреженная матрица ссылок L̂t−1 с предыдущего временного шага имеет не более N K ненулевых элементов, то L̂t можно обновить
за O (N K) используя
L̂t [i, j] = (1 − ŵtw [i] − ŵtw [j]) L̂t−1 [i, j] + ŵtw [i] p̂t−1 [j] ,
а затем присваивая нулю все элементы L̂t , которые меньше 1/K.
Поскольку каждая строка и столбец L̂t в сумме даёт не более, чем 1,
то эта операция гарантирует, что L̂t имеет не более K ненулевых элементов
в строке и в столбце и, следовательно, не более N K ненулевых элементов.
Наконец, прямое и обратное временное взвешивание может быть рассчитано
с использованием O (N K) времени и O (N ) памяти следующим образом:
46
r,i
fti = L̂t wt−1
,
r,i
bit = L̂>
t wt−1 .
Поскольку K является константой, не зависящей от N (на практике
K = 8 оказывается достаточной, независимо от размера памяти), полное разреженное обновление O (N logN ) при вычислении O (N ) памяти.
3.8
ту
Взвешивание (весовые коэффициенты) операции чтения
Каждая считывающая головка i вычисляет взвешивание по контен∈ ∆N используя ключ чтения ktr,i ∈ Rw :
cr,i
t
cr,i
t
=C
Mt , ktr,i , βtr,i
.
Каждая считывающая головка также принимает вектор режима чтения
πti ∈ S3 как параметр, который интерполирует среди обратного временного
взвешивания bit , прямого временного взвешивания fti и взвешивания чтения
по контенту (содержимому) cr,i
t , тем самым определяя весовое соотношение
wtr,i ∈ S3 :
i
i
wtr,i = πti [1] bit + πti [2] cr,i
t + πt [3] ft ,
πti = sof tmax π̂ti ,
exp π̂ti [j]
πti [j] =
3
P
k=1
exp
, i
= 1, . . . , R, j = 1, 2, 3.
π̂ti [k]
Если πti [2] доминирует в режиме чтения, тогда взвешивание (weighting)
возвращается к поиску содержимого с помощью ключа ktr,i . Если πti [3] доминирует, тогда считывающая головка выполняет проходит по ячейкам памяти
в том порядке, в котором они были записаны, игнорируя ключ чтения. Если
πti [1] доминирует, тогда считывающая головка считывает содержимое ячеек в
обратном порядке (по отношению к порядку, в котором они были записаны),
также игнорируя ключ чтения.
47
Для построения весового вектора чтения используется два механизма
адресации: адресация (взвешивание) по контенту (по содержимому) и временное связывание.
Коэффициенты πti определяют в какой степени использовать механизмы адресации: по контенту, прямое временное взвешивание и обратное временное взвешивание.
Прямое временное взвешивание означает, что мы должны считывать
слоты памяти в порядке, в котором они были записаны.
Обратное временное взвешивание означает, что мы должны считывать
слоты памяти в порядке, обратном тому, в котором они были записаны.
Для любого весового вектора w операция Lw плавно перемещает фокус вперед в места, записанные после тех, что указаны в w, тогда как LT w
сдвигает фокус назад.
Это дает DNC возможность восстанавливать последовательности информации в том порядке, в котором они были записаны, даже если последовательные записи не возникали в смежных временных шагах. [2].
Механизм распределения памяти не зависит от размера и содержимого
памяти, что означает, что DNC можно обучить решению задачи с использованием одного размера памяти, а затем обновлять до большей памяти без переподготовки. В принципе, это позволит использовать неограниченную внешнюю память, автоматически увеличивая количество мест каждый раз, когда
минимальное использование любого места проходит определенный порог. И
удалять долго неиспользуемые слоты памяти.
Поиск контента позволяет создавать ассоциативные структуры данных.
Временные ссылки обеспечивают последовательное извлечение входных последовательностей. Механизм выделения памяти обеспечивает запись в неиспользуемые места.
48
Раздел 4.
Описание вычислительных экспериментов
Модели LSTM, NTM и DNC реализованы на языке Python при помощи
библиотеки TensorFlow.
Во всех приведённых далее задачах в процессе обучения при обратном распространении ошибки градиенты весов контроллера LSTM в моделях
NTM и DNC были поэлементно обрезаны до диапазона [-10, 10].
4.1
4.1.1
Задача копирования битовых векторов
Сравнение NTM и LSTM
Рассмотрим задачу копирования последовательностей битовых векторов. Эта задача позволяет проверить могут ли NTM и DNC хранить и воспроизводить более длинные последовательности данных, чем LSTM. Хранение и
доступ к информации в течение длительных периодов времени всегда были
проблематичными для сетей RNN и других динамических архитектур. Обратите внимание, что во время получения целевой последовательности от NTM
и DNC входные данные не были представлены в сеть, чтобы гарантировать,
что они восстанавливает всю последовательность из своей памяти, а не из
обучающей/тестовой выборки. На вход контроллера будем подавать случайные битовые векторы фиксированной длины. Каждая последовательность
битовых векторов разделена специальной меткой (дополнительным битом,
равным единице).
Последовательности битовых векторов (каждый длиной 8), поступающих на вход, имеют случайную длину в диапазоне от 1 до 20. Целевая последовательность будет совпадать с входной последовательностью (без учёта
разделительной метки и с задержкой во времени). Сначала полностью поступает на вход последовательность векторов, а затем требуется полностью
восстановить эту последовательность.
49
Рис. 9: Изменение функционала качества в процессе обучения
На графике (9) видно, что NTM (с FFNN или LSTM контроллером)
обучается намного быстрее, чем LSTM и сходится к более хорошему результату.
Также в эксперименте была изучена способность NTM к обобщению
(т.е. решению задачи для более длинных последовательностей, не входящих
в обучающую выборку). На рис. 10 показано поведение NTM и LSTM на
тестовых данных разной длины. Четыре пары изображений в верхнем ряду соответствуют выходным данным сети и соответствующими целевым последовательностям длиной 10, 20, 30 и 50 соответственно. Изображения в
нижнем ряду соответствуют последовательности длиной 120. Сеть обучалась
только на последовательностях длиной до 20. Первые четыре последовательности воспроизводятся NTM с высокой достоверностью и с очень небольшим
количеством ошибок. Самый длинный имеет несколько локальных ошибок
и одну глобальную ошибку: в точке, обозначенной красной стрелкой внизу,
дублируется один вектор, сдвигая все последующие векторы на один шаг назад. Несмотря на субъективную близость к правильной копии, это приводит
к большим потерям.
Гиперпараметры NTM для задачи Copy Task:
50
–
–
–
–
количество считывающих головок: 1,
количество слотов памяти: 128,
размер слота памяти: 20,
размер контроллера: 1 LSTM-слой размером 100 нейронов.
LSTM допускает серьезные ошибки уже при длине последовательности
равной 30.
Рис. 10: Результат тестирования в задаче копирования
последовательностей битовых векторов
Как и NTM, LSTM учится воспроизводить последовательности длиной
до 20 практически идеально. Однако LSTM явно не может строить обобщения
на более длинные последовательности. Также обратите внимание, что длина
точного префикса уменьшается с увеличением длины последовательности,
что указывает на существенные проблемы с сохранением информации в сети
в течение длительных периодов.
51
4.1.2
Сравнение DNC и LSTM
На рис. 11 изображен график кривых функции потерь в процессе обучения моделей LSTM и DNC. На обучение DNC потребовалось в среднем 10000
итераций. В процессе обучения LSTM критерий останова не был выполнен
(из-за постоянных скачков функции потерь). Остановка процесса обучения
LSTM была произведена вручную.
Гиперпараметры DNC для задачи Copy Task:
– количество считывающих головок: 2,
– размер пакета: 4,
– количество слотов памяти: 20,
– размер слота памяти: 10,
– размер контроллера: 1 LSTM-слой размером 128 нейронов.
Гиперпараметры LSTM для задачи Copy Task:
– размер пакета: 1,
– размер контроллера: 3 LSTM-слоя размером 256 нейронов каждый.
Рис. 11: Графики процесса обучения моделей LSTM и DNC
На рис. 12 изображены графики функционала качества в процессе тестирования LSTM и DNC.
Тестирование проводилось на последовательностях битовых векторов.
Длины последовательностей варьировались от 1 до 120 с шагом 10. По каждой длине последовательности генерировалось 1000 объектов.
Мы видим, что при длине последовательностей от 1 до 20 обе модели дают хороший результат. Но при попытке проверить обобщающую способность
52
моделей сразу видно, что DNC превосходит LSTM по способности запоминать длинные последовательности данных. Разница в качестве более чем в 2
раза.
Рис. 12: Графики обобщающей способности моделей LSTM и DNC в
задаче копирования битовых векторов
4.2
Описание bAbI задачи
Набор данных bAbI-task содержит набор из 20 искусственно созданных
заданий для вопросно-ответных систем (чат-ботов), которые предназначены
для проверки различных аспектов логического мышления. Поскольку данные bAbI генерируются программно, а код является общедоступным, можно
использовать несколько версий данных. Для наших экспериментов мы использовали подмножество en-10k данных, доступных для загрузки с сайта
[24]. Для каждого из 20 заданий данные разбиваются на обучающий набор,
состоящий из 10000 вопросов и тестовый набор из 1000 вопросов. Задачи
bAbI состоят из историй, которые могут содержать более одного вопроса.
Мы рассматривали каждую историю как отдельную последовательность и
предоставляли её сети в виде векторов, соответствующих словам, по одному
слову за раз. После удаления всех чисел, разделения оставшегося текста на
слова и преобразования всех слов в нижний регистр в лексиконе было 156
уникальных слов и три символа пунктуации: «.», «?» и «-», последний из которых мы добавили для указания мест во входной последовательности, где
требуются выходы от модели (требуется ответ от сети). Таким образом, каждое слово было представлено как вектор размером 159 в унитарном коде (one
hot encoding), а выходы нейронной сети были из распределения sof tmax размерности 159. Предложения были разделены символами полной остановки, и
53
все вопросы были разделены знаком вопроса, за которым следовало столько
символов тире, сколько было слов в ответе на этот вопрос. Например, рассказ
из заданий «Подсчет» и «Списки / множества», содержащие пять вопросов,
был представлен в виде следующей последовательности входных токенов из
69 слов:
Мэри отправилась на кухню.
Мэри перешла в спальню.
Джон вернулся в коридор.
Джон взял там молоко.
Что несет Джон?
Джон отправился в сад.
Джон отправился в спальню.
Что несет Джон?
Мэри отправилась в ванную.
Джон взял яблоко там.
Что несет Джон?
-Ответы, соответствующие символам «-», группируются по каждому вопросу в фигурные скобки: {молоко}, {молоко}, {молоко яблоко}
4.3
Описание подзадач
Рассмотрим примеры историй и вопросов по каждой подзадаче.
4.3.1
Связывание двух объектов
1 Джон отправился в прихожую.
2 Мэри отправилась в ванную.
3 Где Джон? прихожая 1
4.3.2
Сопоставление двух фактов
1 Мэри взяла молоко.
2 Джон перешел в спальню.
3 Сандра вернулась на кухню.
54
4 Мэри отправилась в прихожую.
5 Где молоко? прихожая 1 4
4.3.3
Сопоставление трёх фактов
1 Мэри взяла молоко.
2 Джон перешел в спальню.
3 Даниил отправился в офис.
4 Джон взял там яблоко.
5 Джон взял футбольный мяч.
6 Джон отправился в сад.
7 Мария оставила молоко.
8 Джон оставил футбольный мяч.
9 Даниил перешел в сад.
10 Даниил взял футбольный мяч.
11 Мэри отправилась в коридор.
12 Мария пошла на кухню.
13 Джон положил там яблоко.
14 Джон поднял яблоко.
15 Сандра вышла в коридор.
16 Даниэль оставил там футбольный мяч.
17 Даниил взял футбольный мяч.
18 Джон отправился на кухню.
19 Даниил оставил футбольный мяч.
20 Джон уронил яблоко.
21 Джон схватил яблоко.
22 Джон пошел в офис.
23 Сандра вернулась в спальню.
24 Сандра взяла молоко.
25 Джон отправился в ванную.
26 Джон отправился в офис.
27 Сандра оставила молоко.
28 Мария пошла в спальню.
29 Мэри отправилась в офис.
30 Джон отправился в прихожую.
31 Сандра пошла в сад.
55
32
33
34
35
36
37
38
39
4.3.4
Мэри пошла на кухню.
Даниил взял футбольный мяч.
Мария отправилась в спальню.
Мария взяла там молоко.
Мария оставила молоко.
Иоанн пошел в сад.
Иоанн выбросил там яблоко.
Где было яблоко перед, тем как оказаться в ванной? офис 38 25 22
Отношение с двумя аргументами
1 Коридор к востоку от ванной комнаты.
2 Спальня находится к западу от ванной комнаты.
3 Восточнее какого объекта находится ванная комната? спальня 2
4.3.5
Отношение с тремя аргументами
1 Фред взял футбольный мяч.
2 Фред отдал футбольный мяч Джеффу.
3 Что Фред дал Джеффу? футбольный мяч 2
4.3.6
Вопросы с ответом «да, нет»
1
2
3
4
5
6
7
8
9
4.3.7
Мария взяла молоко.
Джон перешел в спальню.
Джон на кухне? нет 2
Мария оставила молоко.
Иоанн пошел в сад.
Джон на кухне? нет 5
Даниил отправился в спальню.
Даниил пошел в сад.
Джон в саду? да 5
Подсчет объектов
1 Мэри взяла молоко.
2 Джон перешел в спальню.
3 Сколько предметов несет Мэри? один 1
56
4 Сандра вернулась в ванную.
5 Джон взял там футбольный мяч.
6 Сколько предметов несет Мэри? один 1
7 Мэри отправилась в ванную.
8 Мария дала молоко Сандре.
9 Сколько предметов несет Мэри? нет 1 8
10 Джон вернулся в ванную.
11 Джон покинул футбольный мяч.
12 Сколько предметов несет Джон? нет 5 11
13 Сандра дала молоко Джону.
14 Иоанн отправился в сад.
15 Сколько предметов несет Джон? один 5 11 13
1 Сандра вышла в коридор.
2 Сандра взяла там яблоко.
3 Сколько предметов носит Сандра? один 2
4 Даниил перешел на кухню.
5 Сандра взяла там молоко.
6 Сколько предметов носит Сандра? два 2 5
4.3.8
Списки-множества
1 Мария взяла молоко.
2 Джон перешел в спальню.
3 Что несет Мария? молоко 1
4 Джон взял там футбольный мяч.
5 Джон отправился в ванную.
6 Что несет Джон? футбольный мяч 4
7 Иоанн пошел в сад.
8 Даниил вернулся в коридор.
9 Что несет Джон? футбольный мяч 4
10 Джон вернулся в ванную.
11 Мария пошла в офис.
12 Сандра вернулась на кухню.
13 Мария отправилась в коридор.
14 Джон отправился в спальню.
15 Джон взял там яблоко.
57
16 Что несет Джон? футбольный мяч, яблоко 4 15
17 Сандра отправилась в спальню.
18 Сандра отправилась на кухню.
19 Что несет Джон? футбольный мяч, яблоко 4 15
1 Даниил взял там молоко.
2 Сандра вернулась в ванную.
3 Что несет Даниил? молоко 1
4 Даниил вернулся в сад.
5 Даниил уронил молоко.
6 Что несет Даниил? ничего 1 5
7 Джон отправился в спальню.
8 Сандра отправилась в спальню.
9 Что несет Даниил? ничего 1 5
10 Даниил отправился в спальню.
11 Джон пошел в ванную.
12 Что несет Даниил? ничего 1 5
4.3.9
Простое отрицание
1 Джон в коридоре.
2 Сандра на кухне.
3 Сандра в спальне? нет 2
4 Сандра отправилась в спальню.
5 Мария отправилась в сад.
6 Сандра в спальне? да 4
7 Мэри вернулась в ванную.
8 Сандры больше нет в спальне.
9 Сандра в спальне? нет 8
10 Джон в офисе.
11 Мэри нет в ванной.
12 Мария в ванной? нет 11
4.3.10
Неопределенные знания
1 Билл на кухне.
2 Джули либо в школе, либо в кино.
3 Билл в спальне? нет 1
58
4 Фред в спальне.
5 Билл в школе.
6 Джули в спальне? нет 2
7 Джули в спальне или в офисе.
8 Фред в парке.
9 Джулия в спальне? может быть 7
10 Фред либо в школе, либо в спальне.
11 Мария пошла на кухню.
12 Билл в школе? да 5
4.3.11
Базовая кореферентность
1 Джон отправился в прихожую.
2 После этого он отправился в сад.
3 Где Джон? сад 1 2
4.3.12
Конъюнкция
1 Иоанн и Даниил пошли на кухню.
2 Даниил и Иоанн пошли в офис.
3 Где Даниил? офис 2
4 Даниил и Иоанн отправились в коридор.
5 Мария и Иоанн двинулись в сад.
6 Где Джон? сад 5
7 Сандра и Даниэль отправились в офис.
8 Даниил и Иоанн отправились в прихожую.
9 Где Даниил? прихожая 8
10 Мария и Даниил перешли на кухню.
11 Джон и Сандра отправились в сад.
12 Где Сандра? сад 11
13 Иоанн и Даниил отправились на кухню.
14 Даниил и Сандра отправились в коридор.
15 Где Даниил? коридор 14
4.3.13
Сложная связка
1 Даниил и Джон перешли в коридор.
59
2 После этого они отправились в сад.
3 Где Даниил? сад 1 2
4 Даниил и Иоанн пошли во двор.
5 После этого они вернулись в коридор.
6 Где Джон? коридор 4 5
7 Мария и Даниил вернулись в офис.
8 Затем они переехали в сад.
9 Где Джон? коридор 4 5
10 Джон и Сандра пошли в офис.
11 После этого они отправились в кухню.
12 Где Джон? кухня 10 11
13 Мария и Иоанн вернулись в офис.
14 После этого они пошли в сад.
15 Где Сандра? кухня 10 11
4.3.14
1
2
3
4
5
4.3.15
Понимание событий во времени
Сегодня утром Мария перешла на кухню.
Сегодня днем Мария поехала в кино.
Вчера Билл пошел в спальню.
Вчера Мария отправилась в школу.
Где была Мария перед кинотеатром? кухня 2 1
Базовые навыки дедукции
1 Волки боятся мышей.
2 Овцы боятся мышей.
3 Вайнона это овца.
4 Мыши боятся кошек.
5 Кошки боятся волков.
6 Джессика - мышь.
7 Эмили кошка.
8 Гертруда – это волк.
9 Чего боится Эмили? волк 7 5
10 Чего боится Вайнона? мышь 3 2
11 Чего боится Гертруда? мышь 8 1
12 Чего боится Джессика? кот 6 4
60
4.3.16
Базовые навыки индуктивного вывода
1 Лили – лебедь.
2 Бернхард – лев.
3 Грег – лебедь.
4 Бернхард – белый.
5 Брайан – лев.
6 Лили – серая.
7 Юлий – носорог.
8 Юлий – серый.
9 Грег – серый.
10 Какого цвета Брайан? белый 5 2 4
4.3.17
1
2
3
4
5
6
7
8
9
Понимание местоположения предметов
Розовый прямоугольник находится слева от треугольника.
Треугольник находится слева от красного квадрата.
Розовый прямоугольник справа от красного квадрата? нет 1 2
Розовый прямоугольник слева от красного квадрата? да 1 2
Розовый прямоугольник слева от красного квадрата? да 1 2
Розовый прямоугольник слева от красного квадрата? да 1 2
Розовый прямоугольник справа от красного квадрата? нет 1 2
Красный квадрат справа от розового прямоугольника? да 2 1
Является ли розовый прямоугольник слева от красного квадрата? да
12
10 Розовый прямоугольник слева от красного квадрата? да 1 2
4.3.18
1
2
3
4
5
6
7
8
Понимание размеров предметов
Коробка помещается внутри сундука.
Шоколадная коробка помещается внутри коробки.
Контейнер больше шоколадной коробки.
Коробка конфет помещается внутри сундука.
Чемодан больше контейнера.
Шоколад больше ящика? нет 2 1
Шоколад больше ящика? нет 2 1
Сундук вписывается в шоколадную коробку? нет 2 1
61
9 Сундук больше шоколадной коробки? да 1 2
10 Чемодан вписывается в шоколадную коробку? нет 3 5
4.3.19
1
2
3
4
5
6
4.3.20
Поиск пути
Сад находится к западу от ванной комнаты.
Спальня находится к северу от прихожей.
Офис к югу от прихожей.
Ванная комната находится к северу от спальни.
Кухня к востоку от спальни.
Как вы идете из ванной в прихожую? с, с 4 2
Мотивация агентов
1 Самит устал.
2 Куда пойдет Самит? спальня 1
3 Джейсон хочет пить.
4 Куда пойдет Джейсон? кухня 3
5 Самит ушёл в спальню.
6 Почему Самит пошел в спальню? устал 1
7 Джейсон перешел на кухню.
8 Почему Джейсон пошел на кухню? пить 3
9 Самит взял пижаму там.
10 Почему Саммит взял пижаму? устал 1
11 Антуан устал.
12 Куда пойдет Антуан? спальня 11
13 Антуан пошел в спальню.
14 Почему Антуан пошел в спальню? устал 11
15 Яну скучно.
16 Куда пойдет Ян? сад 15
17 Ян отправился в сад.
18 Почему Ян пошел в сад? скучно 15
19 Джейсон взял там молоко.
20 Почему Джейсон взял молоко? пить 3
21 Ян взял там футбольный мяч.
22 Почему Ян взял футбольный мяч? скучно 15
62
4.4
Результаты эксперимента
Сеть была обучена минимизировать кросс-энтропию выходов sof tmax
по отношению к целевым словам; выходы (ответы, полученные от модели)
во время шагов, когда целевой вектор не присутствовал (не требовался ответ
от модели), игнорировались. Для каждого шага, где присутствовал целевой
вектор, в качестве ответа было выбрано наиболее вероятное слово в выходном распределении сети. Считалось, что сеть правильно ответила на вопрос,
только если она правильно указала все целевые слова. Оценка работы модели
производилась при помощи подсчета доли неправильных ответов.
Рис. 13: Графики кривых обучения DNC и его модификаций для
задачи bAbI-task
Полные результаты для всех подзадач bAbI для DNC, NTM и LSTM
см. в таблицах 3.
63
Задача
1: Связывание двух объектов
2: Сопоставление трёх событий
3: Сопоставление четырёх событий
4: Отношение с двумя аргументами
5: Отношение с тремя аргументами
6: Вопросы с ответом «да, нет»
7: Подсчет объектов
8: Списки-множества
9: Простое отрицание
10: Неопределенные знания
11: Базовая кореферентность
12: Коньюнкция
13: Сложная связка
14: Понимание событий во времени
15: Базовые навыки дедукции
16: Базовые навыки индуктивного вывода
17: Понимание местоположения предметов
18: Понимание размеров предметов
19: Поиск пути
20: Мотивация агентов
LSTM
28.4 ± 1.5
56.0 ± 1.5
51.3 ± 1.4
0.8 ± 0.5
3.2 ± 0.5
15.2 ± 1.5
16.4 ± 1.4
17.7 ± 1.2
15.4 ± 1.5
28.7 ± 1.7
12.2 ± 3.5
5.4 ± 0.6
7.2 ± 2.3
55.9 ± 1.2
47.0 ± 1.7
53.3 ± 1.3
34.8 ± 4.1
5.0 ± 1.4
90.9 ± 1.1
1.3 ± 0.4
NTM
40.6 ± 6.7
56.3 ± 1.5
47.8 ± 1.7
0.9 ± 0.7
1.9 ± 0.8
18.4 ± 1.6
19.9 ± 2.5
18.5 ± 4.9
17.9 ± 2.0
25.7 ± 7.3
24.4 ± 7.0
21.9 ± 6.6
8.2 ± 0.8
44.9 ± 13.0
46.5 ± 1.6
53.8 ± 1.4
29.9 ± 5.2
4.5 ± 1.3
86.5 ± 19.4
1.4 ± 0.6
Таблица 3: Величина ошибки на тестовой выборке
64
DNC
9.0 ± 12.6
39.2 ± 20.5
39.6 ± 16.4
0.4 ± 0.7
1.5 ± 1.0
6.9 ± 7.5
9.8 ± 7.0
5.5 ± 5.9
7.7 ± 8.3
9.6 ± 11.4
3.3 ± 5.7
5.0 ± 6.3
3.1 ± 3.6
11.0 ± 7.5
27.2 ± 20.1
53.6 ± 1.9
32.4 ± 8
4.2 ± 1.8
64.6 ± 37.4
0.0 ± 0.1
Задача
1: Один опорный факт
2: Сопоставление двух фактов
3: Сопоставление трех фактов
4: Отношение с двумя аргументами
5: Отношение с тремя аргументами
6: Вопросы с ответом «да, нет»
7: Подсчет объектов
8: Списки-множества
9: Простое отрицание
10: Неопределенные знания
11: Базовая кореферентность
12: Коньюнкция
13: Сложная связка
14: Понимание событий во времени
15: Базовые навыки дедукции
16: Базовые навыки индуктивного вывода
17: Понимание местоположения предметов
18: Понимание размеров предметов
19: Поиск пути
20: Мотивация агентов
SDNC
0.0 ± 0.0
7.1 ± 14.6
9.4 ± 16.7
0.1 ± 0.1
0.9 ± 0.3
0.1 ± 0.2
1.6 ± 0.9
0.5 ± 0.4
0.0 ± 0.1
0.3 ± 0.2
0.0 ± 0.0
0.2 ± 0.3
0.1 ± 0.1
5.6 ± 2.9
3.6 ± 10.3
53.0 ± 1.3
12.4 ± 5.9
1.6 ± 1.1
30.8 ± 24.2
0.0 ± 0.0
ADNC
0.1 ± 0.0
0.8 ± 0.5
6.5 ± 4.6
0.0 ± 0.0
1.0 ± 0.4
0.0 ± 0.1
1.0 ± 0.7
0.2 ± 0.2
0.0 ± 0.0
0.1 ± 0.2
0.0 ± 0.0
0.0 ± 0.0
0.0 ± 0.0
0.2 ± 0.1
0.1 ± 0.1
52.1 ± 0.9
18.5 ± 8.8
1.1 ± 0.5
43.3 ± 36.7
0.1 ± 0.1
Таблица 4: Величина ошибки на тестовой выборке
–
–
–
–
–
–
–
–
–
–
Гиперпараметры LSTM для задачи bAbI-task:
размер пакета: 1,
размер контроллера: 1 LSTM-слой размером 512 нейронов.
Гиперпараметры NTM для задачи bAbI-task:
размер пакета: 1,
количество считывающих головок: 4,
количество слотов памяти: 256,
размер слота памяти: 64,
размер контроллера: 1 LSTM-слой размером 256 нейронов.
Гиперпараметры DNC для задачи bAbI-task:
размер пакета: 1,
количество считывающих головок: 4,
количество слотов памяти: 256,
65
BiADNC
0.0
0.7
2.8
0.0
0.7
0.0
0.1
0.187
0.0
0.0
0.0
0.0
0.0
0.0
0.0
49.8
0.00674
0.748
0.0
0.0
– размер слота памяти: 64,
– размер контроллера: 1 LSTM-слой размером 256 нейронов.
Из результатов эксперимента видно, что DNC почти всегда даёт лучший
результат, чем LSTM и NTM. Также отметим, что DNC показывает наилучшие результаты в задачах определения мотивации агентов и при построении
отношения двух аргументов, а наихудшие результаты – в задачах поиска пути
и индуктивного вывода.
Раздел 5.
Средство для визуализации DNC
В данной работе было разработано приложение на языке Python для визуализации внутренних процессов DNC. Результаты работы программы изображены на рис 14 – 18.
66
Рис. 14: Визуализация основных параметров DNC в задаче
bAbI-task
67
Рис. 15: Детальная визуализация операции записи DNC в задаче
bAbI-task
68
Рис. 16: Детальная визуализация операции чтения DNC в задаче
bAbI-task
69
Рис. 17: Детальная визуализация внешней памяти DNC в задаче
bAbI-task
Рис. 18: Детальная визуализация матрицы временны́х ссылок DNC
в задаче bAbI-task
Раздел 6.
Недостатки DNC
В данной работе мы анализируем DNC в задачах QA. В работе [29] было
выявлено четыре основные проблемы:
1. высокое потребление памяти затрудняет эффективное обучение больших моделей;
2. большая разница в эффективности обучения при разных инициализациях;
3. медленная и нестабильная сходимость требует длительного времени
обучения;
4. однонаправленная архитектура затрудняет работу с различными видами вопросов в задачах QA.
70
Раздел 7.
Модификации DNC
1. Надежное обучение с упором на раннее использование памяти и нормализацию.
2. Использование эффективной памяти, основанной на адресации по
контенту для задач QA.
3. Двунаправленный DNC, который обеспечивает более богатое кодирование входных последовательностей.
В искусственной задаче bAbI-task [24] мы показываем повышение производительности на 80% по сравнению с обычным DNC. Мы также уменьшаем дисперсию до 90% между различными случайными инициализациями.
7.1
Анализ процесса обучения DNC
Анализ процесса обучения в работе [29] показывает, что некоторые модели сходятся, а другие нет. Это зависит только от инициализации. Если
процесс обучения модели не сходится, но модель учится решать текущую
задачу, значит она переобучается.
Далее проанализируем влияние блока внешней памяти. Выход DNC
представляет собой взвешенную сумму выхода контроллера и выхода MU
(Memory Unit). В работе [29] во время обучения моделей было обнаружено
сильную корреляцию между высоким использованием MU и хорошими характеристиками модели. Когда модель не сходится, блок памяти почти не
влияет на поиск правильного ответа. В работе [29] предполагается, что прямой обучающий сигнал через обходное соединение между контроллером и
выходом приводит к быстрому успеху в обучении использованию исключительно контроллера. Это может помешать обучению использовать MU. Кроме
того, выход MU в начале шумит, что может привести к тому, что контроллер
проигнорирует MU. Это может зависеть от инициализации.
7.2
Анализ функциональности
Функциональность DNC может быть проанализирована путем наблюдения за вентилями, которые определяют механизмы записи и чтения содержимого. Проанализировав графики 14 – 18 видно, что DNC в задаче bAbI
использует исключительно контентно-ориентированное чтение при ответе на
71
вопрос. Чтение при помощи механизма временны́х ссылок мало влияет на
поиск ответа. Кроме того, использование различных вентилей: для освобождения памяти, определения механизма записи или интенсивности записи не
является очень значимым. На рис. 14 показан график вентилей DNC в процессе тестирования на задаче bAbI (подзадача 1).
7.3
Анализ затрат вычислительных ресурсов
Вычислительные ресурсы DNC по сравнению с LSTM требуют в два
раза больше памяти во время обучения. Это в основном зависит от объема
памяти DNC и длины последовательности. Более тщательный анализ показывает, что матрица временны́х ссылок и механизм временной связи являются основными потребителями памяти. Cамое большое влияние оказывает
матрица временной связи размера N × N . В нашей реализации время обучения на один объект в четыре раза выше по сравнению с TensorFlow LSTM с
вышеупомянутой конфигурацией.
7.4
Эффективный блок внешней памяти
Для эффективного использования модели и масштабируемости для крупномасштабных задач требуется меньшее потребление памяти. Это позволяет
иметь дело с большими последовательностями и большими размерами пакетов для более быстрых итераций, например, для настройки гиперпараметров. Потребление памяти DNC очень высоко по сравнению с другими рекуррентными моделями. Как показывает анализ, основной причиной потребления памяти является механизм временного связывания. Но анализ также
показывает, что DNC не использует их в задаче bAbI. Это имеет смысл, поскольку восстановление последовательностей едва ли необходимо для поиска
правильного ответа в задаче QA. Чтобы обеспечить более эффективное использование памяти в задачах QA, будет использоваться только контентноориентированный блок памяти (CBMU). CBMU имеет те же функции, что и
MU DNC, но без механизма временного связывания памяти. Следовательно,
матрица временно́й связи и все, имеющие отношение к ней, компоненты удаляются. Веса операций чтения основаны только на адресации по контенту.
Головка записи, обновление памяти и фактическое чтение памяти остаются прежними. Снижение потребления памяти зависит от гиперпараметров и
72
длины последовательности, но в статье [29] оно составляет от 30% до 70%.
Время вычислений также сокращается на 10-50%.
Рис. 19: Внешняя память основана только на адресации по
контенту (Content Based Memory Unit)
7.5
Надежное обучение DNC
Модификации DNC позволяют добиться более надежного обучения:
уменьшают большую вариацию кривых функционала качества в ходе обучения при разных инициализациях, а также устраняют медленное и нестабильное поведение сходимости. Это делает процесс обучения воспроизводимым и
сокращает время обучения. Чтобы добиться этого, была применена нормализация к DNC и использовалась функция Bypass Dropout, чтобы ускорить
использование памяти.
7.6
Нормализация DNC
Анализ DNC показывает высокую разницу по качеству и скорости обучения между различными запусками процесса обучения. Применим технику
нормализации, чтобы обеспечить устойчивое и гладкое поведение сходимости. В последние годы нормализация слоёв (Layer Normalization) показывает
улучшения производительности ANN в нескольких приложениях [30, 31]. В
DNC его можно применять как к контроллеру, так и к MU. Пусть µt – среднее
значение вектора xt , а σt2 – его дисперсия. Тогда нормализация будет иметь
вид
73
xt − µt
LN (xt ) = g ◦ q 2
+ b.
σt +
Эта нормализация применяется перед каждой функцией активации в
контроллере. Текущие и рекуррентные входные сигналы вычисляются совместно. Каждая нормализация слоя (LN) имеет обучаемые переменные, называемые смещением b и усилением g для масштабирования нормализации.
В MU мы применяем LN к вентилям, векторам и ключам по отдельности, но это не дало увеличения производительности по сравнению с совместной нормализацией всех сигналов. Таким образом, мы применяем его после
взвешивания выходных сигналов (выходов) контроллера ht и перед тем, как
вектор ξt будет разделен на разные управляющие сигналы:
ξt = LN ht Wξ .
Нормализация применяется во время обучения и тестирования. Недостатками являются увеличенное время вычислений и потребность в памяти
из-за стандартизации величины xt и дополнительных переменных: усиления
g и смещения b.
Рис. 20: DNC нормализация (DNC Normalization)
74
7.7
Bypass Dropout (Обходной Dropout)
Анализ в разделе 7.1 показывает, что поведение сходимости DNC зависит от использования MU. Если MU сильно влияет на производительность
системы, модель достигает хорошей производительности. Это понимание требует явного принуждения к использованию MU во время обучения для более
быстрого достижения сходимости и повышения производительности. Чтобы
усилить влияние MU, влияние контроллера на выход через обходное соединение может быть ограничено. Это может быть достигнуто за счет уменьшения
связи между контроллером и выходом.
Уменьшение возможности соединения путем взвешивания или уменьшения функционального пространства будет постоянным и не будет изменяться. При использовании Dropout в обходном соединении между контроллером и выходом возможно контролируемое снижение связности. Dropout –
это метод регуляризации, введенный в 2014 году в работе [32], чтобы предотвратить переобучение ИНС. В нашем случае использование dropout позволяет настраивать сокращение обходного соединения. Он может контролироваться с вероятностью удержания и используется только во время обучения. Использование dropout помогает обеспечить более быстрое использование MU.
Мы называем эту технику Bypass Dropout (BD).
Вероятность выпадения p точно регулирует поток сигналов без постоянного снижения функциональности контроллера. Bypass Dropout применяется
к DNC путем умножения вектора Бернулли на обходное соединение:
rt ∼ Bernoulli (p) ,
ht ◦ r t ) + Wµ µ t .
y t = Wh (h
75
Рис. 21: Bypass Dropout
7.8
Двунаправленный DNC
Однонаправленная архитектура DNC затрудняет работу с переменным
вводом, когда, например, вопрос появляется в середине текста, а полный
текст актуален. Это также предотвращает извлечение богатой информации в
прямом и обратном направлении в любой последовательной задаче. Поэтому
в данной работе вводится двунаправленная конфигурация, чтобы обеспечить
полную доступность входной последовательности для модели. Больше никакого различия между контекстом и вопросом не требуется. Модель может
использовать информацию из более поздней точки входной последовательности, чтобы определить, что хранить. В двунаправленных DNC (BDNC) и
rsDNC (BrsDNC) дополнительный RNN в обратной линии связи обеспечивает
последовательностное понимание в обоих направлениях.
Из-за рекуррентного соединения между MU и контроллером, инкапсулированный двунаправленный контроллер невозможен, поскольку такая модель не разворачивается во времени. Решение, представленное в этой работе,
применяет независимый рекуррентный контроллер с обратной направленностью, который обеспечивает дополнительный входной сигнал для MU и выходного слоя, показанного на рисунке 21. Следовательно, BrsDNC имеет два
контроллера, прямой контроллер и обратный контроллер
h ft w
= Forward Controller
76
w
x t , h ft−1
, µ t−1
, θcf w ,
h bw
t = Backward Controller
x t , h bw
t+1 , θcbw
с независимыми весами Θ и рекуррентными связями. MU получает на
вход объединение двух выходов контроллера
µ t = Memory Unit
h ft w , h bw
t
, θmu .
Выход системы BrsDNC представляет собой сумму взвешенного выхода
памяти, взвешенного выхода обратного контроллера и взвешенного выхода
прямого контроллера:
y t = Wµ µ t + Wf wh h ft w + Wbwh h bw
t .
Эта архитектура позволяет, во-первых, независимое развертывание обратного контроллера и, во-вторых, развертывание прямого контроллера и
MU.
Рис. 22: Двунаправленный контроллер (Bidirectional Controller)
77
7.9
Детали обучения
Мы используем размер пакета для обучения 32. Контроллер представляет собой LSTM с одним скрытым слоем и размером слоя 512 в однонаправленной конфигурации и 384 каждый в двунаправленной конфигурации.
Обе модели имеют матрицу памяти с 256 ячейками, шириной 128 и четырьмя считывающими головками. Dropout применяется с коэффициентом отсева, равным 10. Максимальная длина последовательности во время обучения
ограничена 1400 словами. Модель оптимизирована с RMSprop с фиксированной скоростью обучения 3e − 05 и моментом 0,9.
78
Заключение
В данной книге детально описаны принципы работы нейросетевых моделей, а именно нейронная машина Тьюринга, дифференцируемый нейронный компьютер, а также его модификации. Перечислены сферы применимости этих моделей. Выделены преимущества этих моделей по сравнению с
более ранней успешной моделью LSTM. Описаны недостатки этих моделей,
а также способы их устранения. Дано теоретическое обоснование того факта, что выше рассмотренные нейронные сети с внешней памятью, обладают
бо́льшим потенциалом для решения многих задач, чем LSTM.
Проведены вычислительные эксперименты для задач копирования последовательностей битовых векторов, а также для задачи освоения базовых
навыков вопросно-ответной системы. Результаты показывают, что нейронные сети с внешней памятью обладают большей «долгосрочной памятью»,
чем LSTM, имеют бо́льшую обобщающую способность. В некоторых случаях
они превосходят LSTM по скорости обучения.
79
Список использованной литературы
[1] Graves A., Wayne G., Danihelka I. / Neural Turing Machines //
In: CoRR. — 2014. [Электронный ресурс] / Режим досутупа:
http://arxiv.org/abs/1410.5401v2.
[2] Graves A., G. Wayne, Reynolds M. / Hybrid computing using
a neural network with dynamic external memory // Nature
— 2016. — Vol. 538. — P. 471 – 476. [Электронный ресурс] / Режим досутупа: https://pdfs.semanticscholar.org/7635/
78fa9003f6c0f735bc3250fc2116f6100463.pdf.
[3] Unger F. / The Neural Turing Machine: Introduction, Implementation
and Experiments. — 2017. [Электронный ресурс] / Режим
досутупа: https://github.com/flomlo/ntm_keras/blob/master/
The_NTM_-_Introduction_And_Implementation.pdf.
[4] Siegelmann H. T., Sontag E. D / On the computational power of neural
nets // Journal of computer and system sciences, — 1995. —
Vol. 50, №. 1, P. 132 – 150. [Электронный ресурс] / Режим досутупа: https://binds.cs.umass.edu/papers/1992_Siegelmann_COLT.pdf.
[5] Siegelmann H. T. and Sontag E. D / Turing computability with neural nets
// Appl. Math. Lett. — 1991. — Vol. 4. — №. 6. — P. 77 – 80. [Электронный ресурс] / Режим досутупа: http://citeseerx.ist.psu.edu/viewdoc/
download?doi=10.1.1.47.8383&rep=rep1&type=pdf.
[6] Allen R. J.,
Baddeley A. D.,
Hitch G. J.
/
Working
memory
and binding in sentence recall // Journal of Memory and
Language — 2009. — № 6, P. 438 – 456. [Электронный ресурс]
/
Режим
досутупа:
http://citeseerx.ist.psu.edu/viewdoc/
download?doi=10.1.1.603.4316&rep=rep1&type=pdf.
[7] Miller G. A. / The magical number seven, plus or minus two: some limits
on out capacity for processing information // Psychological Review. —
1956. — 63(2). — pp. 81-97. [Электронный ресурс] / Режим доступа:
http://www.sns.ias.edu/ tlusty/courses/InfoInBio/Papers/Miller1956.pdf.
80
[8] Hochreiter S. / Long sort-term memory // Neural computation — 1997. —
Vol. 9(8). — pp. 1735 – 1780. [Электронный ресурс] / Режим доступа:
https://www.bioinf.jku.at/publications/older/2604.pdf.
[9] Buduma N., Locascio N. /Fundamentals of Deep Learning: Designing
Next-Generation Machine Intelligence Algorithms // O’Reilly Media.
— 1st Edition. — 2017. – P. 224 – 248. [Электронный ресурс] /
Режим доступа: http://perso.ens-lyon.fr/jacques.jayez/Cours/Implicite/
Fundamentals_of_Deep_Learning.pdf.
[10] Graves A., Jaitly N. / Towards End-To-End Speech Recognition
with Recurrent Neural Networks // Proceedings of the 31st
International Conference on Machine Learning — 2014. — Vol. 32(2).
— P. 1764 – 1772. [Электронный ресурс] / Режим доступа:
http://proceedings.mlr.press/v32/graves14.pdf.
[11] Graves A. / Generating Sequences with Recurrent Neural Networks.
// ArXiv. — 2013. [Электронный ресурс] / Режим досутупа:
https://arxiv.org/abs/1308.0850.
[12] Sutskever I., Vinyals O., Le Q. /Sequence to Sequence Learning with Neural
Networks // ArXiv. — 2014. [Электронный ресурс] / Режим досутупа:
https://arxiv.org/abs/1409.3215.
[13] Sutskever I., Martens J., Hinton G. / Generating Text with Recurrent
Neural Networks // Proceeding ICML’11 Proceeding of the 28th
International Conference on International Conference on Machine Learning.
— 2011. — P. 1017 – 1024. [Электронный ресурс] / Режим доступа:
https://www.cs.utoronto.ca/ ilya/pubs/2011/LANG-RNN.pdf.
[14] Hochreiter S., Bengio Y., Frasconi P., Shmidhuber J. / Gradient Flow in
Recurrent Nets: the Difficulty of Learning Long-Trem Dependencies
// A field guide to dynamical recurrent neural networks. IEEE
Press. — 2001. — Vol. 1 [Электронный ресурс] / Режим досутупа:
https://pdfs.sematics.org/2e5f/2b57f4c476dd69dc22ccdf547e48f40a994c.pdf.
[15] Graves A. / Generating Sequences With Recurrent Neural Networks
// ArXiv. – 2014. [Электронный ресурс] / Режим досутупа:
https://arxiv.org/pdf/1308.0850.pdf.
81
[16] Graves A., Mohamed Abdek-rahman, Hinton G. / Speech recognition with
deep recurrent neural networks // IEEE International Conference on
Acoustics, Speech and Signal Processing (ICASSP) – 2013. [Электронный
ресурс] / Режим досутупа: https://arxiv.org/pdf/1303.5778.pdf.
[17] Murali S. / Deep Learning papers review — NTM. // Medium. [Электронный ресурс] / Режим досутупа: https://medium.com/deep-dimension/
deep-learning-papers-review-i-ntm-d55d2a1a0096.
[18] Азбука
ИИ:
«Рекуррентные
нейросети»
//
N+1.
—
2016.
[Электронный
ресурс]
/
Режим
досутупа:
https://nplus1.ru/material/2016/11/04/recurrent-networks.
[19] Рекуррентная
нейронная
сеть
//
Википедия.
[Электронный
ресурс]
/
Режим
досутупа:
https://www.wikipedia.org/wiki/Рекуррентная_нейронная_сеть.
[20] Greydanus S. / Differentiable memory and the brain — 2017. [Электронный ресурс] / Режим досутупа: https://greydanus.github.io/2017/02/27/
differentiable-memory-and-the-brain/.
[21] Kahana M.J., Michael J. / Foundations of human memory New York //
Oxford University Press. — 2012.
[22] Pérez-Ortiz J. A. / A bit-by-bit guide to the equations governing
differentiable neural computers — 2017. [Электронный ресурс] / Режим
доступа: https://jaspock.github.io/funicular/dnc.html.
[23] Grefenstette E., Hermann K. M., Suleyman M. / Learning to Transduce
with Unbounded Memory // ArXiv. — 2015. [Электронный ресурс] / Режим доступа: https://arxiv.org/pdf/1506.02516.pdf.
[24] [Электронный
ресурс]
/
Режим
доступа:
http://www.thespermwhale.com/jaseweston/babi/tasks_1-20_v1-2.tar.gz.
[25] Ross S., Gordon G. J. Bagnell J. A. / A reduction of imitation learning
and structured prediction to no-regret online learning. // Proc. Fourteenth
International Conference on Artificial Intelligence and Statistics. — 2010. —
P. 627–635.
82
[26] Объяснение нейронных машин Тьюринга. — 2017. [Электронный ресурс]
/ Режим доступа: https://savepearlharbor.com/?p=285721.
[27] Долгая
краткосрочная
память
//
Wikipedia
[Электронный
ресурс]
/
Режим
доступа:
https://ru.wikipedia.org/wiki/Долгая_краткосрочная_память.
[28] Байназаров Н.
/
Google
научил
искусственный
интеллект
ориентироваться
в
Лондонском
метро
//
Rusbase.
—
2016.
[Электронный
ресурс]
/
Режим
доступа:
https://ru.wikipedia.org/wiki/Долгая_краткосрочная_память.
[29] Franke J., Niehues J., Waibel A. / Robust and Scalable Differentiable
Neural Computer for Question Answering. // Proceedings of
the Workshop on Machine Reading for Question Answering. —
2018. — P. 47 – 59. [Электронный ресурс] / Режим доступа:
https://www.aclweb.org/anthology/W18-2606.
[30] Ba J. L., Kiros J. R., Hinton G. E. / Layer
ArXiv. — 2016. [Электронный ресурс] /
https://arxiv.org/pdf/1607.06450.pdf.
Normalization //
Режим доступа:
[31] Klambauer G., Unterthiner T., Mayr A., Hochreiter S. / Self-Normalizing
Neural Networks // ArXiv. — 2017. [Электронный ресурс] / Режим доступа: https://arxiv.org/pdf/1706.02515.pdf.
[32] Srivastava N, G. Hinton, A. Krizhevsky, I. Sutskever, Salakhutdinov R.
/ Dropout: A Simple Way to Prevent Neural Networks from
Overfitting // Journal of Machine Learning Research. — vol. 15. —
2014. — P. 1929 – 1958. [Электронный ресурс] / Режим доступа:
http://jmlr.org/papers/volume15/srivastava14a.old/srivastava14a.pdf.
[33] Chan W., Jaitly N., Le Q. V., Vinyals O. / Listen, Attend and
Spell // ArXiv. — 2015. [Электронный ресурс] / Режим доступа:
https://arxiv.org/pdf/1508.01211.pdf.
[34] Chorowski J., Bahdanau D., Serdyuk D., Cho K., Bengio Y. / AttentionBased Models for Speech Recognition // ArXiv. — 2015. [Электронный
ресурс] / Режим доступа: https://arxiv.org/pdf/1506.07503.pdf.
83
[35] Xu K., Ba J., Kiros R., Cho K., Courville A., Salakhutdinov R., Zemel R.,
Bengio Y. / Show, Attend and Tell: Neural Image Caption Generation with
Visual Attention // ArXiv. — 2015. [Электронный ресурс] / Режим доступа: https://arxiv.org/pdf/1502.03044.pdf.
[36] Bahdanau D., Cho K., Bengio Y. /Neural Machine Translation by Jointly
Learning to Align and Translate // ArXiv. — 2014. [Электронный ресурс]
/ Режим доступа: https://arxiv.org/pdf/1409.0473.pdf.
84
Приложения
Приложение 1. Схемы нейросетевых моделей и примеры выполнения операций, связанных с адресацией
Рис. 1: Нейронная машина Тьюринга c контроллером FFNN
(пошаговая схема работы).
Рис. 2: Нейронная машина Тьюринга c контроллером LSTM
(пошаговая схема работы).
85
Рис. 3: Процесс обучения нейронной машины Тьюринга
86
Рис. 4: Нейронная машина Тьюринга
−1
rm
…
r1
xn
…
x1
Controller
−1
hk
…
h1
Write head
Read head
87
1+relu
exp z j
()
∑ exp (z k )
ksoftmax
sigmoid
relu
relu
relu
sigmoid
1+relu
∑ exp z k
ksoftmax
exp z j
()
( )
sigmoid
relu
relu
o1
γt
st
gt
βt
kt
…
at
et
γt
st
gt
βt
kt
ok
…
Content
addressing
w tc(i) ←
uv
‖u‖‖v‖
w tc
(
)
rt
Addressing
mechanism
j=0
Reading from
the memory
w̃ t
Mt
j
∑ w̃ t(j) γ t
w̃ t(i) γ t
Sharpening
w t(i) ←
∑ w gt(j)s t(i − j)
R−1
n
Convolutional
shift
w̃ t(i) ←
Addressing mechanism
Interpolation
w gt
w gt ← g tw tc + 1 − g t w t − 1
exp β tK k t, M t(i)
( [
])
∑ exp (β tK [k t, M t(j) ])
j
K(u, v) =
m
M̃ t
wt
Writing to the
memory
wt − 1 ← wt
Рис. 5: Пример вычисления вектора чтения
Рис. 6: Пример обновления матрицы внешней памяти при помощи
вектора добавления
Рис. 7: Пример обновления матрицы внешней памяти при помощи
стирающего вектора
88
Рис. 8: Пример вычисления свёрточного сдвига
Рис. 9: Пример вычисления операции «уточнение»
89
Рис. 10: Пример последовательного вычисления весового вектора
90
Рис. 11: Пример аналогии NTM с компьютером
Рис. 12: Схема NTM с контроллером LSTM
91
Рис. 13: Схема адресации DNC
Рис. 14: Параметры адресации, получаемые от контроллера
92
Рис. 15: Использование матрицы внешней памяти в механизме
адресации DNC
Рис. 16: Создание новых весовых векторов записи
93
Рис. 17: Очистка памяти и запись новой информации в память
Рис. 18: Использование матрицы временных ссылок в механизме
адресации DNC
94
Рис. 19: Обновление матрицы временных ссылок
Рис. 20: Обновление вектора приоритета
95
Рис. 21: Создание нового весового вектора для операции чтения
Рис. 22: Чтение из памяти
96
Рис. 23: Детальная схема DNC
97
Научное издание
Александр Биданец
АНАЛИЗ И ВИЗУАЛИЗАЦИЯ НЕЙРОННЫХ СЕТЕЙ
С ВНЕШНЕЙ ПАМЯТЬЮ
Подписано в печать 25/11/ 2021. Формат 60х84 /8
Усл. печ. л. 11,39. Тираж 17 экз. Заказ 3054073.
Издательство «Полипринт»
г. Симферополь, ул. Караимская, 9/10 Тел./факс
+7(3652)248-178, +7(978)776-56-76
248178@mail.ru, www.prmt2u.ru
Отпечатано в типографии ИП Бирюков И.В.
г. Симферополь.
`Ìi`ÊÜÌ ÊÌ iÊ`iÊÛiÀÃÊvÊ
vÝÊ*ÀÊ* Ê `ÌÀÊ
/ÊÀiÛiÊÌ ÃÊÌVi]ÊÛÃÌ\Ê
ÜÜÜ°Vi°VÉÕV° Ì
Отзывы:
Авторизуйтесь, чтобы оставить отзыв