tgoop.com/neural_cat/118
Last Update:
Боремся с проклятыми токенами
Люблю статьи от авторов phi — очень простые с топорными методами, но работают хорошо.
В тех репорте phi-4 показали, что
🔹 Проклятые (и благословенные) токены существуют
🔹 Предложили, как с этим бороться
Для задач, где есть правильный ответ, мы можем найти токены, которые негативно или позитивно влияют на вероятность успешного ответа p(success)
Как найти такие токены? — авторы называют их pivotal tokens
Считаем условную вероятность, что ответ будет правильным при заданном префиксе ответа. То есть просто эмпирически считаем, какой процент правильных ответов будет при префиксе `import Flask`
Таким макаром находим все pivotal tokens в нашем трейн сете. И учим модель различать хорошие токены от плохих. Для этого формируем пары
prompt = promt + answer prefix
good response = good token
bad response = bad token
И запускаем DPO на этих парах. Еще раз: мы учим предсказывать только один токен! ⚠️
Если бы мы просто делали SFT или DPO на полных ответах, то учились бы предсказывать эти проклятые токены, которые негативно влияют на вероятность успешного ответа.
В таблице 9 можно посмотреть, как DPO на pivotal tokens (stage 1) накидывает в качестве по сравнению с обычным DPO и SFT
📖 Статья
@neural_cat