Нихиль Будума - Основы глубокого обучения

Здесь есть возможность читать онлайн «Нихиль Будума - Основы глубокого обучения» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2020, ISBN: 2020, Издательство: Манн, Иванов и Фербер, Жанр: economics, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Основы глубокого обучения: краткое содержание, описание и аннотация

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

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

Основы глубокого обучения — читать онлайн ознакомительный отрывок

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

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

Рис 88 Ввод одной последовательности и серии входных последовательностей На - фото 229

Рис. 8.8. Ввод одной последовательности и серии входных последовательностей

На рис. 8.9 показана визуализация действий DNC, обученного на серии размера 4, где каждая последовательность содержит пять двоичных векторов и знак окончания. Здесь всего 10 ячеек памяти, и все 20 векторов ввода сохранить нельзя. Контроллер с прямым распространением сигнала обеспечивает, чтобы никакие данные не хранились в рекуррентном состоянии, а единственная головка чтения использована для большей наглядности. Эти ограничения должны заставить DNC научиться освобождению и повторному использованию памяти для успешного копирования всего ввода. Так и происходит.

Рис 89 Визуализация работы DNC над проблемой копирования На визуализации - фото 230

Рис. 8.9. Визуализация работы DNC над проблемой копирования

На визуализации видно, как DNC записывает каждый из пяти векторов последовательности в одну ячейку памяти. После получения знака окончания головка чтения начинает считывать из ячеек в соответствии с порядком записи. Можно видеть, как занятые и свободные вентили чередуют активацию между фазами записи и чтения для каждой последовательности в серии. На графике вектора использования внизу заметно, что после записи в ячейку памяти ее значение использования становится равным 1, а затем снижается до 0 сразу после считывания, показывая, что ячейка освобождена и может быть использована снова.

Эта визуализация — часть открытой реализации архитектуры DNC, выполненной Мостафой Самиром [101]. В следующем разделе мы познакомимся с важными приемами, которые позволят нам реализовать более простую версию DNC для работы с проблемой понимания при чтении.

Реализация DNC в TensorFlow

Реализация архитектуры DNC — по сути, прямое применение математики, о которой мы только что говорили. Полная реализация приведена в репозитории кода для этой книги, здесь же мы сосредоточимся на самых трудных местах и попутно расскажем о некоторых новых методах работы с Tensor Flow.

Основная часть реализации находится в файле mem_ops.py : там реализованы все наши механизмы внимания и доступа. Файл импортируется и используется контроллером.

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

def Lt(L, wwt, p, N):

L_t = tf.zeros([N,N], tf.float32)

for i in range(N):

for j in range(N):

if i == j:

continue

_mask = np.zeros([N,N], np.float32);

_mask[i,j] = 1.0

mask = tf.convert_to_tensor(_mask)

link_t = (1 — wwt[i] — wwt[j]) * L[i,j] + wwt[i] * p[j]

L_t += mask * link_t

return L_t

Здесь мы воспользовались уловкой, поскольку TensorFlow не поддерживает назначения для элементов тензоров. Можно понять, что тут не так, если вспомнить, что TensorFlow — образец символического программирования, при котором каждое обращение к API не проводит операцию и не изменяет состояние программы, а определяет узел графа вычислений как символ для операции, которую мы хотим выполнить. После того как граф полностью определен, для него задаются конкретные значения, и он выполняется. Получается, как на рис. 8.10, в большинстве итераций цикла for к графу вычислений добавляется новый набор узлов, соответствующий телу цикла. Поэтому для N ячеек памяти мы получаем ( N 2− N ) идентичных копий одних и тех же узлов — по одной на итерацию.

Рис 810 Граф вычислений операции обновления матрицы ссылок созданный с - фото 231

Рис. 8.10. Граф вычислений операции обновления матрицы ссылок, созданный с помощью цикла for

Каждая копия отъедает немного оперативной памяти и времени на обработку. Если N — небольшое число, например 5, получится 20 одинаковых копий, что не так плохо. Но если нам нужна большая память, например N = 256, то будет уже 65 280 одинаковых копий узлов, а это катастрофа и для памяти, и для времени обработки!

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Основы глубокого обучения»

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


Светлана Маркова - Основы быстрого обучения
Светлана Маркова
Отзывы о книге «Основы глубокого обучения»

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

x