Пример исследовательской идеи, на основе которой была опубликована статья на NeurIPS 2022. Важно отметить, что в пропозале могут быть пропущены какие-то важные детали по введению в область/проблему, но если вы вдруг пишите про что-то, и не уверены насколько мы погружены в эту проблему -- то лучше расписать подробнее.
Опишите идею в паре предложений.
- Улучшение PonderNet, которое лучше учитывает неопределенность предсказаний модели и дает более точный результат
Опишите проблему, которую хочется решить. Почему это важно?
- Языковые модели становятся больше. Если мы дообучаем их на какой-то downstream задаче, то хочется, чтобы полученная модель могла работать быстро. Можно делать это разными способами. Один из них – ранний выход из вычислений. Более того, есть интуиция, что модели с ранним выходом могут работать даже лучше, чем без него.
Что уже есть по этой теме? В первую очередь статьи, потом имплементации и всё остальное. Напишите по 1-2 предложению для каждой из статьи, чтобы было понятно, о чем они, какие результаты они получили и насколько им можно доверять.
- 2020, PABEE
- Делают головы классификатора между каждым из слоёв Трансформера. Когда N классификаторов дают одно и то же предсказание в ряд – выходят из вычислений. Не совсем понятно, как этот метод применить для, например, QA моделей.
- 2021, PonderNet
- Схема для раннего выхода через нижнюю границу на правдоподобие. В отличии от PABEE, можно применять для произвольных задач
- Много других подходов: FastBERT, DeeBERT, BERxiT.
- Как правило, либо что-то в сторону, либо ортогональные накрутки поверх PABEE.
Как предлагается решить проблему? Что нового в этом решении? Здесь хочется увидеть достаточно подробное описание.
- PonderNet обучает Лямбда-слои, которые выдают вероятность выхода с каждого слоя. Однако, во время инференса, чтобы решить, стоит ли выходить со слоя, они сэмплируют решение с вероятностью, выданной Лямбда-слоем. Такой подход, очевидно, привносит большую неопределенность в предсказания: даже если Лямбда-слой говорит нам, что выходить нужно с 10% вероятностью на первом слое, в 1 из 10 случаев мы выйдем из модели слишком рано.
- Можно попробовать считать CDF Лямбда-слоев, и выходить из вычислений в тот момент, когда она достигает заданного трешхолда.
- Здесь, помимо более высоких чисел в табличках, можно поставить много интересных экспериментов (например, о том, как разные параметры обучения влияют на распределение слоев выхода).
Почему это будет работать? Может быть, есть работы, из которых можно сделать такой вывод или построить некую интуицию. Bonus: почему это может не заработать? На что стоит обратить внимание.
- В целом, сам PonderNet работает, нижним границам на правдоподобие сто лет в обед.
- Может не заработать потому что считать CDF для Лямбда-слоев мало чем обосновано. Но интуитивно кажется, что сделать так можно.
Как быстро проверить идею на работоспособность (условно, за пару недель), чтобы решить, стоит ли копать в нее дальше.
- PABEE, в первую очередь. Остальные методы, которые докручивают ортогональные обвесы вокруг PABEE, кажется что, не сильно интересны. Такие ортогональные обвесы можно докрутить и на PALBERT.
- PonderNet во вторую. Важно показать, что критерий раннего выхода влияет на качество. Здесь сложность, что PonderNet от DeepMind, а поэтому на офф реализацию можно не расчитывать. С другой стороны, метод тривиален для реализации.
Какие метрики будут использоваться, чтобы показать, что идея работает? Насколько сложно посчитать эти метрики
- Метрики соответствующих задач из GLUE/SuperGLUE. Все доступны в Hugging Face
Как решить спустя пару недель, работает ли идея? Какие для этого есть критерии? Какие критерии того, что идея все-таки не работает?
- Главный критерий: Получается улучшить числа PABEE
- Критерий остановки: Не получается улучшить числа даже относительно оригинального PonderNet
- На 4-8 GPU можно запустить перебор гиперпараметров для 3-4 датасетов и проверить идеи на них. Если там работает, то посчитаться на оставшихся датасетах.
- Исходные эксперименты можно будет репортить как ablation study.
Что делать, если идея все-таки заработает?
- Считаться на всех датасетах с разными бэкбонами (ALBERT, RoBERTa, etc).
- Важное: раз работаем лучше PonderNet, нужно показать, что дело именно в неопределенности предсказаний. Оригинальный критерий выхода с сэмплированием можно видеть как single-sample Monte-Carlo estimation. Для эксперимента можно посчитать честное матожидание предсказаний модели по вероятностям с каждого слоя и сравниться с сэмплированием. Важно посмотреть, как будут соотноситься эти критерии. Для статьи достаточно sampling < CDF <= Expectation.
- Анализ поведения модели. Как зависит качество/скорость от трешхолда CDF и от исходных гиперпараметров обучения.
- Дополнительное: можно попробовать докрутить Лямбда-слои до лучшего качества. Кажется, что один линейный слой, который работает поверх скрытых представлений текущего слоя Трансформера – это не самое умное, что можно придумать. Можно попробовать стакать несколько предыдущих скрытых представлений, чтобы ловить динамику в их изменении.