tgoop.com/knowledge_accumulator/239
Last Update:
Combining Induction and Transduction for Abstract Reasoning [2024]
В прошлом посте про ARC я расссказал про решение, которая даёт 62% в комбинации с так называемым синтезатором программ. Сегодня мы поговорим о том, что это за зверь.
Авторы рассматривают 2 подхода к решению ARC:
1) Transduction - это когда у нас есть нейросеть, получающая на вход тренировочные пары вход-выход + тестовый вход и предсказывающая тестовый выход - такую модель мы как раз и видели в тот раз.
2) Induction - получая на вход тренировочные пары вход-выход, мы генерируем программу на питоне, превращающую вход в выход. Затем мы применяем её на тестовом входе
Итак, начнём с того, как авторы собирали датасет для Induction-модели.
Сначала авторы собирают вручную так называемый seed-датасет - это 100 ARC-задач, для которых вручную написаны программы на питоне, а также текстовые описания этих задач. Далее GPT-4 просят наплодить большой датасет синтетических задач, рекомбинируя описания и код изначальных ста.
На таких данных можно делать нечто похожее на обучение задачкам по программированию: дообучаем LLM по задаче гененировать питон код, а во время инференса генерируем много программ-кандидатов, которые потом можно фильтровать, проверяя на тренировочных парах.
Интересный сюжетный поворот - задачи, которые решают Transduction и Induction-модели, даже если их учить на одних и тех же сетах задач, пересекаются далеко не полностью. В самом топовом запуске Induction набирает 38%, Transduction 43%. а их ансамбль аж 57%. Авторы проверили, что это не результат случайной инициализации.
Ансамблировать их, кстати, можно и вслепую - если Induction-модель не сгененировала ни одну программу, которая подходит под тренировочные примеры, мы в качестве решения выдаём Transduction-кандидата.
Интересно понять - откуда берётся такое отличие в решаемых задачах у 2 подходов, даже если их учат на одном и том же? Немножко пролить на это свет помогает Ablation на задачах из ConceptARC - упрощённом датасете, в котором применяется одна "абстрактная концепция".
Например, программный синтезатор сильно лучше справляется с извлечением объектов и подсчётом, тогда как трансдуктор лучше в раскрасках и чём-то подобном. Примеры задач, приведённые автором, я прикрепил к посту.
Статья интересная, правда, есть те же опасения по поводу утечки задач через эту самую синтетику. Маленькая версия их модели, которую они засабмитили в настоящий тест, дала 18% через Transduction и только 4% через Induction (ансамбль дал 19%, SOTA = 55.5%) - это может говорить о том, что базовые операции сильно отличаются у скрытого теста и так просто справиться с ним не выйдет. Будем следить за развитием событий.
@knowledge_accumulator
BY Knowledge Accumulator
![](https://photo2.tgoop.com/u/cdn4.cdn-telegram.org/file/mk1P-fKCSS__FRycKgMCrwAGatDjrhbFxcfgJOBuI107PuTN54RiNng_tR05jFz-FPL7ZM4jz6zIgn01HLJzf5Viz4-XwL12OW5jpLYC90AN9_UfV9fAFpj316aCRDFZu8VDankxNVjpPDsuZs8I_hlZtqdMbXkarhAgl9Y_ctwiKP9bZjurxxoC0r0xHpZrR4mloKqTV4hUgvVJ-BEOiY31wmaJhVWyoQpPGXaVTUe5aACIVceVM43R6stZKa2tk7bUlh0pnrdkgf_kdBFd74x6Jk4KZiG_gXdPgTXpN82_70zn6Og7NRppn1QxuJYh1jI7ps2a3S7r0uuUSta8fw.jpg)
Share with your friend now:
tgoop.com/knowledge_accumulator/239