🏷 Tags: #meta_learning #bayesian_inference
📄 Title: TabPFN: A Transformer that solves small tabular classification problems in a second & Transformers Can Do Bayesian Inference
🎥 Video: https://www.youtube.com/watch?v=XnngBWe2WYE
💻 Code: https://github.com/automl/TabPFN
Transformers Can Do Bayesian Inference (PFN)
🥱 TLDR: Байесовский вывод можно заменить одним проходом трансформера.
Мотивацией этой работы стала похожесть few-shot learning и bayesian inference:
- В задаче Few-shot learning мы хотим научиться хорошо решать задачи на различных датасетах за малое число примеров. Поэтому при обучении мы сэмплируем датасет c новой задачей и оптимизируем p(y|x, D).
- Для внедрение приорных знаний о наших датасетах p(t) и данных D в модель мы можем воспользоваться bayesian inference.
$$p(y|x, D) \propto \int p(y|x,t) p(D | t) p(t) dt$$
Однако мы не можем посчитать данный интеграл. Поэтому авторы предложили использовать трансформер Prior-Fitted network (PFN). На вход трансформера подаётся train датасет (объекты + разметка) + объекты, на которых мы хотим получить предсказание. Трансформер же тут используется из-за свойства permutation invariance (порядок входа данных не важен). Чтобы на тестовых объектов не было зависимости друг друга attention на этих объектах считается только с train объектами.
❗️NB: PFN очень похож на prompt engineering.
На вход мы подаем набор решенных примеров <2 + 2; 4>, <3 + 2; 5>; и просим решить новый пример <1 + 3>. Но различие в том, что вместо использования уже готового текстового prior от языковой модели, мы выучиваем этот приор с нуля.
---
TabPFN
🥱 TLDR: PFN можно эффективно применять как метод AutoML.
Одна из основных проблем табличных данных, которая мешает deep learning полноценно ворваться в эту область это отсутствие переносимости моделей. Если мы меняем датасет, на котором хотим учиться, то модель приходится учить с нуля. А PFN как раз и решает эту проблему!
Как это всё обучается?
1) Мы сэмплируем датасет и набор тестовых примеров с помощью Bayesian Neural Network (BNN) и Structural Causal Model (SCM).
2) Подаём на вход токенизированный датасет и токены тестовых примеров
3) Считаем лосс на тестовых объектах
4) Обновляем веса TabPFN.
📊 Результат
Выученная модель достигаем SOT качества в среднем по 67 датасетах из OpenML. При этом, что модель не требует обучения под заданный датасет
🤔 Выводы
+ Плюс данного подхода, что он даёт сопоставимое качество с AutoML за минимальное время (один проход нейронной сети) и потенциально может заменить весь цикл обучения моделей (подбор гиперпараметров, ...).
- Но минус очевидный это scalability. Мы не сможем засунуть огромный табличный датасет в трансформер. (Не говоря уже о ImageNet и текстовых корпусах). И вопрос: получится у авторов решить эту проблему?
Post #17
628
- 🤯 7
- 👍 5