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

Тут можно читать онлайн Нихиль Будума - Основы глубокого обучения - бесплатно ознакомительный отрывок. Жанр: Экономика, издательство Манн, Иванов и Фербер, год 2020. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Основы глубокого обучения
  • Автор:
  • Жанр:
  • Издательство:
    Манн, Иванов и Фербер
  • Год:
    2020
  • Город:
    Москва
  • ISBN:
    9785001464723
  • Рейтинг:
    3/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

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

Основы глубокого обучения - описание и краткое содержание, автор Нихиль Будума, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Глубокое обучение — раздел машинного обучения, изучающий глубокие нейронные сети и строящий процесс получения знаний на основе примеров. Авторы рассказывают об основных принципах решения задач в глубоком обучении и способах внедрения его алгоритмов.

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

Основы глубокого обучения - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Нихиль Будума
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

def lstm(input, hidden_dim, keep_prob, phase_train):

lstm = tf.nn.rnn_cell.BasicLSTMCell(hidden_dim)

dropout_lstm = tf.nn.rnn_cell.DropoutWrapper(lstm,

input_keep_prob=keep_prob,

output_keep_prob=keep_prob)

# stacked_lstm = tf.nn.rnn_cell.MultiRNNCell(

[dropout_lstm] * 2,

state_is_tuple=True)

lstm_outputs, state = tf.nn.dynamic_rnn(dropout_lstm,

input, dtype=tf.float32)

return tf.squeeze(tf.slice(lstm_outputs,

[0, tf.shape(

lstm_outputs)[1]-1, 0],

[tf.shape(lstm_outputs)[0],

1, tf.shape(

lstm_outputs)[2]])

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

def inference(input, phase_train):

embedding = embedding_layer(input, [30000, 512])

lstm_output = lstm(embedding, 512, 0.5, phase_train)

output = layer(lstm_output, [512, 2], [2], phase_train)

return output

Опустим остальной шаблонный код, который сохраняет сводную статистику, промежуточные состояния и создает сессию: он такой же, как и остальные модели, уже созданные в этой книге; вы можете посмотреть исходный код в репозитории GitHub. Теперь можно запустить и визуализировать работу модели при помощи TensorBoard (рис. 7.23).

Рис 723 Ошибка на обучающем и проверочном наборах данных а также - фото 167

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

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

Решение задач класса seq2seq при помощи рекуррентных нейронных сетей

Теперь мы хорошо понимаем работу рекуррентных нейронных сетей и можем вернуться к проблеме seq2seq. Мы начали эту главу примером задачи класса seq2seq — привязкой последовательности слов в предложении к последовательности меток частей речи.

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

Работа РНС с seq2seq во многом напоминает работу автокодера, о которой шла речь в предыдущей главе. Модель seq2seq состоит из двух отдельных сетей. Первая называется кодер (encoder) . Это рекуррентная сеть (обычно использующая нейроны LSTM), которая читает всю входную последовательность. Цель ее — создать сжатое понимание входных данных и выразить его в единой «мысли», представленной конечным состоянием сети. Затем используется декодер (decoder) , начальное состояние которой инициализируется конечным состоянием кодера. Символ за символом генерируется выходная последовательность. На каждом шаге декодер использует собственные выходные данные с предыдущего шага в качестве входных данных текущего шага. Весь процесс представлен на рис. 7.24.

Рис 724 Иллюстрация использования схемы рекуррентной сети кодерадекодера - фото 168

Рис. 7.24. Иллюстрация использования схемы рекуррентной сети кодера-декодера для решения задач класса seq2seq

В этом примере мы попробуем перевести предложение с английского на французский. Мы токенизируем входное предложение и используем плотное векторное представление (так же, как для модели анализа эмоциональных состояний, созданной в предыдущем разделе), загружая по слову в кодер. В конце предложения мы ставим специальную метку (end of sentence, EOS), которая отмечает конец входного предложения для кодера.

Теперь берем скрытое состояние последней для инициализации декодера. Первый элемент на входе в нее — метка EOS, а выходное значение интерпретируется как первое слово предсказанного французского перевода.

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

Архитектура РНС для seq2seq может быть использована и для обучения хорошим плотным векторным представлениям последовательностей. Например, Райан Кирос и коллеги в 2015 году ввели понятие вектора skip-thought [91], который по архитектурным характеристикам напоминал как структуру автокодера, так и модель Skip-Gram (см. главу 6). Вектор skip-thought был создан путем разбиения фрагмента на серию триплетов, состоящих из последовательных предложений. Авторы воспользовались одним кодером и двумя декодерами (рис. 7.25).

Рис 725 Архитектура skipthought для seq2seq порождает компактные векторные - фото 169

Рис. 7.25. Архитектура skip-thought для seq2seq порождает компактные векторные представления для целых предложений

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

she grabbed my hand.

"come on. "

she fluttered her back in the air.

"i think we're at your place. I ca n't come get you. "

he locked himself back up

" no. she will. "

kyrian shook his head [92]

Теперь, поняв, как применять рекуррентные нейронные сети к задачам класса seq2seq, мы почти готовы создать свой вариант. Но сначала нужно разобраться еще с одной проблемой, к которой мы и перейдем в следующем разделе: идеей внимания в РНС для seq2seq.

Дополнение рекуррентных сетей вниманием

Продолжим разговор о проблемах перевода. Если вы когда-то пытались выучить иностранный язык, то знаете, что именно помогает успешному переводу. Во-первых, стоит полностью прочесть предложение, чтобы понять, какую идею нужно передать. Затем вы слово за словом записываете перевод, и каждое слово вытекает из предыдущего. При этом, составляя новое предложение, вы часто обращаетесь к исходному тексту, сосредоточиваясь на определенных фрагментах, которые важны для текущего перевода. На каждом шаге вы обращаете внимание на самые важные в данный момент части «входных данных», чтобы принять наилучшее решение по поводу следующего слова, которое должно будет появиться на бумаге.

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

Интервал:

Закладка:

Сделать


Нихиль Будума читать все книги автора по порядку

Нихиль Будума - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Основы глубокого обучения отзывы


Отзывы читателей о книге Основы глубокого обучения, автор: Нихиль Будума. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x