Для использования модели на практике можно выполнить рекомендованное сетью действие, применить его к конфигурации и взять новую конфигурацию за основу для следующего шага (извлечение признаков, предсказание действия и его выполнение). Этот процесс показан на рис. 7.10.
Рис. 7.10. Нейронная схема разбора зависимостей с помощью метода стандартных дуг
Все эти идеи лежат в основе SyntaxNet от Google, выдающейся открытой реализации разбора зависимостей. Вдаваться в подробности мы не будем, детали есть в открытом репозитории [86], который содержит реализацию Parsey McParseface — самого точного из публично описанных парсеров английского языка на момент публикации этой книги.
Лучевой поиск и глобальная нормализация
В предыдущем разделе мы описали наивную стратегию практического применения SyntaxNet. Она была жадной : мы выбирали самые вероятные предсказания, не заботясь о том, что можем загнать себя в угол, сделав ошибку на раннем этапе. В примере с частями речи неверное предсказание по сути не влекло никаких последствий. В этом случае его можно считать независимой проблемой, поскольку его результаты не влияют на входные данные на следующем шаге. Но это предположение в SyntaxNet не подтверждается, поскольку наше предсказание на шаге n влияет на входные данные, которые используются на шаге n + 1. Отсюда следует, что любая ошибка повлияет на все дальнейшие решения. Более того, нет простого способа «вернуться» и исправить огрехи, когда они станут очевидными. Крайний случай — предложения с подвохом . Рассмотрим такое предложение: The complex houses married and single soldiers and their families [ «Комплекс обеспечивает жильем женатых и одиноких солдат и их семьи»]. На первый взгляд выглядит странно: большинство людей решат, что complex — прилагательное, houses — существительное, а married — глагол прошедшего времени. Смысла мало [дословно «сложные дома женились»], и мы в недоумении, когда добираемся до конца предложения. Тут нам становится ясно, что complex — существительное (военный комплекс), а houses — глагол («обеспечивает жильем»). Иными словами, предложение сообщает, что военный комплекс дает жилье солдатам (как одиноким, так и женатым) и их семьям. Жадная версия SyntaxNet не сможет исправить первичную ошибку восприятия complex houses как «сложных домов» и создать верную трактовку предложения. Для устранения этого недостатка используется стратегия лучевого поиска, показанная на рис. 7.11.
Рис. 7.11. Пример использования лучевого поиска (с размером луча 2) при разворачивании обученной модели SyntaxNet
Обычно она применяется как раз в ситуациях вроде SyntaxNet, когда выводы сети на определенном шаге влияют на входные данные, используемые на следующих шагах. Основная идея — не быстро выбирать самое вероятное предсказание на каждом шаге, а определять луч наиболее вероятной гипотезы ( фиксированного размера b ) для последовательности первых k действий и связанных с ними возможностей. Лучевой поиск можно разбить на две основные стадии: расширение и отсечение.
Во время расширения мы анализируем каждую гипотезу, рассматривая ее как возможный ввод в SyntaxNet. Допустим, SyntaxNet выдает распределение вероятностей по количеству действий | A |. Затем мы вычисляем вероятность b | A | возможных гипотез для последовательности первых ( k + 1) действий. А во время отсечения мы оставляем только b гипотез с наибольшей вероятностью из b | A | вариантов.
Как показывает рис. 7.11, лучевой поиск позволяет SyntaxNet постфактум исправлять неверные предположения, задействуя с самого начала и менее вероятные гипотезы, которые, однако, могут впоследствии оказаться более плодотворными. Если углубляться в пример на рисунке, можно отметить, что жадный алгоритм предположил бы, будто верная последовательность шагов — СДВИГ плюс ЛЕВАЯ ДУГА. На самом деле лучшим (наиболее вероятным) вариантом будет использовать ЛЕВУЮ ДУГУ и за ней ПРАВУЮ ДУГУ.
Лучевой поиск с размером луча 2 отражает этот результат.
Полная версия с открытыми исходными кодами делает шаг вперед и пытается внедрить лучевой поиск в процесс обучения сети. В 2016 году Дэниел Андор и его коллеги [87]описали этот процесс глобальной нормализации . Он дает как хорошие теоретические результаты, так и очевидные практические преимущества перед локальной нормализацией . Во втором случае сеть получает задачу выбора лучшего действия в зависимости от конфигурации. Она выдает результат, который нормализуется слоем функции мягкого максимума. Так моделируется распределение вероятностей по всем возможным действиям, если они уже совершены. Функция потерь пытается довести распределение вероятностей до идеального выходного результата (например, вероятности 1 для правильного действия и 0 для всех остальных). И функция потерь — перекрестная энтропия — прекрасно с этим справляется.
Читать дальше
Конец ознакомительного отрывка
Купить книгу