Видео проигрыватель загружается.Воспроизвести видеоВоспроизвестиБез звукаТекущее время 0:00/Продолжительность 4:08Загрузка: 0.00%0:00Тип потока ОНЛАЙНSeek to live, currently behind liveОНЛАЙНОставшееся время -4:08 1xСкорость воспроизведения2x1.75x1.5x1.25x1x, выбрано0.75x0.5xГлавыГлавыОписанияОтключить описания, выбраноСубтитрынастройки субтитров, откроется диалог настройки субтитровСубтитры выкл., выбраноЗвуковая дорожкаPicture-in-PictureПолноэкранный режимThis is a modal window.Начало диалоговго окна. Кнопка Escape закроет или отменит окноТекстColorБелыйЧерныйКрасныйЗеленыйСинийЖелтыйПурпурныйГолубойTransparencyПрозрачностьПолупрозрачныйФонColorЧерныйБелыйКрасныйЗеленыйСинийЖелтыйПурпурныйГолубойTransparencyПрозрачностьПолупрозрачныйПрозрачныйОкноColorЧерныйБелыйКрасныйЗеленыйСинийЖелтыйПурпурныйГолубойTransparencyПрозрачныйПолупрозрачныйПрозрачностьРазмер шрифта50%75%100%125%150%175%200%300%400%Стиль края текстаНичегоПоднятыйПониженныйОдинаковыйТеньШрифтПропорциональный без засечекМоноширинный без засечекПропорциональный с засечкамиМоноширинный с засечкамиСлучайныйПисьменныйМалые прописныеСбросить сбросить все найстройки по умолчаниюГотовоЗакрыть модальное окноКонец диалогового окна.
У этого алгоритма есть несколько гиперпараметров. Первый (b) — это целое число (как правило, его берут равным примерно 10). Второй гиперпараметр (M) — это максимальная длина решения. Этот параметр ограничивает, как долго мы будем продолжать генерировать последовательности. Первый шаг — инициализация алгоритма. В ходе работы алгоритма мы будем поддерживать два списка. Первый список (это beam) — это множество частичных решений. Это множество состоит из префиксов результирующих текстов. На первом шаге "beam" содержит только b наиболее вероятных первых токенов. То есть это b токенов, с которых вообще может начаться результирующий текст. Второй список, который мы поддерживаем в процессе работы алгоритма — это список полных решений. То есть "beam" — список частичных решений (список префиксов), и, в ходе работы алгоритма, эти префиксы будут становиться законченными предложениями, и тогда они будут переходить в список результатов. Итак, дальше начинается цикл. Для каждого частичного решения из списка "beam" мы начинаем перебирать все возможные варианты продолжить этот префикс, удлинить его. Таким образом, мы перебираем все возможные токены, каждый токен конкатенируем к концу нашего рассматриваемого частичного решения (таким образом — удлиняем его). Оцениваем правдоподобие полученного нового частичного решения и добавляем это частичное решение в список "beam". Если текущий рассматриваемый вариант продолжения, то есть yky_kyk равен токену конца последовательности, то мы считаем (вот это) новое частичное решение законченным и помещаем его в список результатов. Дальше, когда мы закончили вот эти два цикла, то есть — когда закончили перебирать все частичные решения из beam и все токены для каждого частичного решения, то мы фильтруем список частичных решений и оставляем в нём только b решений с наилучшей оценкой, то есть b наиболее правдоподобных фрагментов текста. Далее мы повторяем шаги 2 и 3 до тех пор, пока не исчерпаем все возможности перебора (в этом случае у нас список "beam" окажется пустым), а также, пока в списке "beam" есть решения, более короткие чем M. Когда правило останова, описанное на шаге 4 выполнено, мы заканчиваем наш перебор, смотрим список "result" и выбираем из этого списка наилучшее решение, то есть решение с наибольшей оценкой — наиболее правдоподобное предложение. Алгоритм достаточно простой и эффективный. И — да, он не обязательно приводит к оптимальному решению, но он позволяет находить достаточно неплохие варианты декодирования. Но у него есть недостаток — он предпочитает короткие решения. Это не недостаток самого по себе лучевого поиска, это скорее недостаток функции оценки качества частичных решений. Это связано с тем, что, когда мы оцениваем правдоподобие более длинных предложений, мы вынуждены делать больше умножений условных вероятностей. А вероятности — это величины от 0 до 1. То есть, когда мы добавляем очередное умножение к какой-то оценке вероятности, мы не можем увеличить её, она всегда потихонечку уменьшается. Таким образом, более короткие последовательности, как будто бы, более вероятны. Но, с точки зрения здравого смысла, это не вполне так. В качестве решения, обычно, искусственно занижают правдоподобие более коротких решений.
К сожалению, у нас пока нет статистики ответов на данный вопрос,
но мы работаем над этим.