Эндрю Ын: «Beam Search позволяет находить гораздо более качественные предложения»

DeepLearning.AI 95,6 тыс. 11 мин 3 мин 05.02.2018
Главное

В задачах машинного перевода или распознавания речи недостаточно просто выдать случайную последовательность слов — необходимо найти наиболее вероятный и грамматически верный вариант. В этом видео Эндрю Ын, основатель DeepLearning.AI, подробно разбирает алгоритм Beam Search (лучевой поиск), который является промышленным стандартом для выбора оптимальных последовательностей в нейронных сетях.

🔍 Проблема выбора в генеративных моделях 0:00

В контексте машинного перевода, имея на входе предложение на французском (например, «Jane visite l'Afrique en septembre»), мы хотим получить на выходе не просто корректный, а максимально вероятный перевод на английский — «Jane visits Africa in September» . Аналогично в системах распознавания речи: по входному аудиоклипу алгоритм должен восстановить наиболее точную текстовую транскрипцию, а не случайный набор слов, похожих на звуки .

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

📏 Понятие ширины луча (Beam Width) 1:20

Основное отличие Beam Search от «жадного поиска» (Greedy Search) заключается в количестве рассматриваемых вариантов на каждом шаге.

Если мы установим ширину луча $B = 3$, алгоритм будет одновременно отслеживать три наиболее вероятных варианта последовательности, а не один . Если $B = 10$, в памяти будут удерживаться десять лучших кандидатов .

🔢 Первый шаг: выбор начального слова 1:59

Процесс начинается с пропуска входного французского предложения через энкодер (зеленый блок нейросети) и первый блок декодера (фиолетовый блок) .

  1. Декодер выдает распределение вероятностей через softmax по всему словарю (в примере используется словарь из 10 000 слов) .
  2. Вместо выбора одного слова, Beam Search сохраняет в памяти $B$ слов с самой высокой вероятностью $P(y^{<1>} | x)$ .
  3. Например, если самыми вероятными оказались слова «in», «Jane» и «September», алгоритм запоминает их все для следующего этапа .

🌳 Расширение дерева поиска: второй шаг 2:50

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

Согласно правилам условной вероятности, вероятность пары выражается формулой: $P(y^{<1>}, y^{<2>} | x) = P(y^{<1>} | x) \times P(y^{<2>} | x, y^{<1>})$ .

Процесс выглядит следующим образом:

В итоге на втором шаге мы рассматриваем $B \times 10,000$ (в данном случае 30 000) возможных комбинаций . Из этого огромного списка алгоритм снова выбирает только три самые вероятные пары и сохраняет их в памяти .

Важный нюанс: если в тройку лучших пар попали, например, «in September», «Jane is» и «Jane visits», это означает, что слово «September» как вариант первого слова теперь отброшено алгоритмом, так как оно не вошло ни в одну из топовых пар .

⚙️ Вычислительная эффективность 8:25

Несмотря на то что на каждом шаге рассматривается 30 000 вариантов, нет необходимости создавать 30 000 копий нейронной сети. Эндрю Ын подчеркивает, что достаточно иметь лишь столько копий, какова ширина луча ($B = 3$) . Эти три копии позволяют эффективно вычислить значения softmax для всех 10 000 слов одновременно, что значительно ускоряет работу .

🏁 Завершение процесса 9:33

Алгоритм продолжает добавлять по одному слову на каждом шаге:

  1. Берет лучшие фрагменты из предыдущего шага (например, «Jane visits») .
  2. Оценивает вероятность третьего слова («Jane visits Africa») при условии входного текста и уже выбранного префикса .
  3. Снова выбирает топ-3 комбинации .

Процесс повторяется итеративно, пока алгоритм не придет к символу завершения предложения (end of sentence) . По мнению Эндрю Ына, благодаря рассмотрению нескольких путей одновременно, Beam Search обычно находит гораздо более качественные переводы, чем «жадный» поиск .

💬 Цитаты

«Beam Search — это наиболее широко используемый алгоритм для того, чтобы найти наиболее вероятную текстовую транскрипцию.»

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

👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Beam Search
Эвристический алгоритм поиска, используемый в задачах генерации последовательностей для выбора наиболее вероятного варианта.
Beam Width (B)
Параметр, определяющий количество лучших частичных последовательностей, которые алгоритм хранит на каждом шаге.
Greedy Search
Алгоритм, который на каждом шаге выбирает только один вариант с самой высокой локальной вероятностью.
Softmax
Функция в нейронных сетях, которая превращает вектор чисел в распределение вероятностей.
📊 Цифры
⚖️ Другая сторона
Искусственный интеллект Beam Search Эндрю Ын DeepLearning.AI машинный перевод NLP