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

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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать
Рис 721 Разворачивание нейрона LSTM во времени На самом верху видно - фото 165

Рис. 7.21. Разворачивание нейрона LSTM во времени

На самом верху видно распространение вектора состояния, взаимодействия которого во времени в основном линейны. В результате градиент, который связывает входные данные, поступившие за несколько временных шагов до этого, с текущими выходными данными, не затухает так резко, как в обычной архитектуре РНС. А значит, LSTM может обучаться долгосрочным связям гораздо эффективнее, чем в исходной формулировке РНС.

Наконец, нужно понять, насколько легко порождать произвольные архитектуры при помощи нейрона LSTM. Насколько они «компонуемы»? Не придется ли при использовании нейронов LSTM вместо обычных РНС пожертвовать гибкостью? Мы можем соединять их для большей выразительности так же, как соединяли обычные нейроны РНС, где вход второго нейрона будет выходом первого, вход третьего — выходом второго и т. д. Иллюстрация того, как это работает, показана на рис. 7.22, где из двух нейронов LSTM составлено целое. Это значит, что обычные слои РНС всегда можно заменить нейронами LSTM.

Рис 722 Соединение нейронов LSTM ничем не отличается от соединения - фото 166

Рис. 7.22. Соединение нейронов LSTM ничем не отличается от соединения рекуррентных слоев нейронной сети

Итак, мы решили проблему исчезающего градиента и познакомились с работой нейронов LSTM. Теперь мы готовы заняться реализацией наших первых моделей РНС.

Примитивы TensorFlow для моделей РНС

TensorFlow предлагает несколько примитивов, которые можно использовать для создания моделей РНС. Во-первых, есть объекты tf.RNNCell, которые представляют либо слой РНС, либо LSTM:

cell_1 = tf.nn.rnn_cell.BasicRNNCell(num_units, input_size=None, activation=tanh)

cell_2 = tf.nn.rnn_cell.BasicLSTMCell(num_units, forget_bias=1.0, input_size=None, state_is_tuple=True, activation=tanh)

cell_3 = tf.nn.rnn_cell.LSTMCell(num_units, input_size=None, use_peepholes=False, cell_clip=None, initializer=None, num_proj=None, proj_clip=None, num_unit_shards=1, num_proj_shards=1, forget_bias=1.0, state_is_tuple=True, activation=tanh)

cell_4 = tf.nn.rnn_cell.GRUCell(num_units, input_size=None, activation=tanh)

Абстракция BasicRNNCell представляет обычный рекуррентный нейронный слой. BasicLSTMCell соответствует простейшей реализации LSTM, а LSTMCell — реализации с большим количеством возможностей конфигурации (замочные скважины, клипирование переменных состояния и т. д.). Библиотека TensorFlow также содержит разновидность нейрона LSTM, известную как вентильная рекуррентная единица (Gated Recurrent Unit, GRU) и предложенную в 2014 году группой Джошуа Бенджо. Важнейший параметр для всех этих нейронов — размер вектора скрытого состояния, или num_units.

Кроме примитивов, в нашем арсенале есть несколько надстроек. Если мы хотим соединить рекуррентные нейроны или слои, можно сделать следующее:

cell_1 = tf.nn.rnn_cell.BasicLSTMCell(10)

cell_2 = tf.nn.rnn_cell.BasicLSTMCell(10)

full_cell = tf.nn.rnn_cell.MultiRNNCell([cell_1, cell_2])

Также можно при помощи надстройки применить прореживание ко входам и выходам LSTM с указанными вероятностями остаточной памяти входа и выхода:

cell_1 = tf.nn.rnn_cell.BasicLSTMCell(10)

tf.nn.rnn_cell.DropoutWrapper(cell_1, input_keep_prob=1.0, output_keep_prob=1.0 seed=None)

Завершаем мы создание РНС, упаковывая всё в соответствующий примитив Tensor Flow:

outputs, state = tf.nn.dynamic_rnn(cell, inputs, sequence_length=None, initial_state=None, dtype=None, parallel_iterations=None, swap_memory=False, time_major=False, scope=None)

Ячейка (cell) — объект RNNCell, который мы уже создали. Если time_major == False (значение по умолчанию), входные данные должны быть тензором вида [batch_size, max_time, …]. Если же time_major == True, входной тензор должен принять форму [max_time, batch_size, …]. Подробности есть в документации TensorFlow, где можно узнать больше и о других параметрах конфигурации.

Результат обращения к tf.nn.dynamic_rnn — тензор, представляющий выход РНС вместе с вектором конечного состояния. Если time_major == False, вывод будет иметь форму [batch_size, max_time, cell.output_size]. Иначе тензор должен иметь вид [max_time, batch_size, cell.output_size]. Состояние, как можно ожидать, будет иметь форму [batch_size, cell.state_size].

Познакомившись с инструментами для создания рекуррентных нейронных сетей, которые есть в TensorFlow, мы построим первую LSTM, решающую задачу анализа эмоциональной окраски.

Реализация модели анализа эмоциональной окраски

Здесь мы попробуем проанализировать эмоциональную окраску рецензий на кинофильмы из базы данных Large Movie Review Dataset. Она состоит из 50 тысяч рецензий с сайта IMDB, каждая из которых помечена как положительная или отрицательная с эмоциональной точки зрения. Мы возьмем простую модель LSTM с прореживанием, чтобы понять, как классифицировать эмоциональную окраску. Рецензии будут поступать в модель по слову за раз. По окончании процесса мы возьмем выходное значение модели за основу двоичной классификации, которая пометит эмоциональную окраску как «положительную» или «отрицательную». Начнем с загрузки базы данных. Воспользуемся вспомогательной библиотекой tflearn. Установить ее можно с помощью следующей команды:

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

Интервал:

Закладка:

Сделать

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

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


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

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

x