tgoop.com/neural_cat/12
Last Update:
Казалось бы, какие еще способы декодирования для языковых моделей можно придумать, кроме greedy, top-k, top-p, beam search?
В статье Typical Decoding for Natural Language Generation (также разбор от Yannic) предлагается посмотреть на задачу с точки зрения теории информации. Мы (люди) стараемся передавать друг другу информацию эффективно, но также стараемся избежать риск недопонимания.
По сути, две стороны медали: я могу говорить (писать), максимизируя вероятность следующего слова (токена) или вероятность всего предложения, но тогда в моем сообщении будет мало информации (так как всё, что я говорю, вы и так ожидаете). Но для вас ведь интереснее (=больше информации) читать то, что вы не ожидаете, верно? Например, ожидали ли вы услышать словосочетание БАХЧЕВЫЕ КУЛЬТУРЫ? 🍉
Так вот, а почему тогда мы в декодировании всегда ориентируемся на максимизацию вероятностей (даже когда сэмплируем, ведь более вероятным токенам мы ставим бОльший вес)? В статье предлагается выбирать токены, информационный контент которых близок к ожидаемому инфомрационному контенту (прочитайте статью, там просто).
Что-то подобное заметили в статье про Nucleus sampling. Люди не максимизируют вероятности! (см. скрин)
P.S.
Новый метод уже доступен в transformers — model.generate(..., typical_p=0.95)
BY Нейронный Кот
Share with your friend now:
tgoop.com/neural_cat/12
