TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
gonzo-обзоры ML статей

25 Jan 2022, 22:36

Открыть в Telegram Поделиться Пожаловаться

Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
Alethea Power, Yuri Burda, Harri Edwards, Igor Babuschkin, Vedant Misra
Статья: https://arxiv.org/abs/2201.02177

Недавняя (на самом деле уже не совсем, она была на ICLR 2021 на 1st Mathematical Reasoning in General Artificial Intelligence Workshop) прикольная работа от OpenAI из серии про природу вещей, вернее про природу обучения и генерализации в нейросетях.

Авторы продемонстрировали прикольный феномен, который они назвали “grokking” (“врубание” или “схватывание”? Кстати, я не знал, что это слово придумал Хайнлайн, https://en.wikipedia.org/wiki/Grok), когда нейросеть резко переходит от качества случайного угадывания к идеальному качеству, причём случается это сильно после точки оверфиттинга (когда на обучающем датасете уже идеально, а на тестовом всё фигово).

Классный пример работы, когда фундаментально интересный результат можно обнаружить на весьма скромных ресурсах без всяких там кластеров и суперкомпьютеров, хоть на домашнем GPU.

Что делали?

Авторы взяли алгоритмически сгенерированный датасет с бинарными операциями вида a∘b=c, где все эти “a”, “b”, “c”, “=” и “∘” — это просто токены, а сами операции — это различные варианты бинарных операций в модулярной арифметике (по модулю 97, но не уверен, только или ещё и по другим модулям тоже) типа сложения/вычитания, умножения/деления, суммы квадратов и т.п.

Каждое из 97 чисел кодируется отдельным дискретным символом, ни про какую внутреннюю структуру элементов сеть ничего не знает и должна выучить их свойства из данных.

На датасете таких вот примеров обучается маленький декодер трансформера с causal attention masking, который должен предсказывать результат операции, то есть по факту он должен заполнить пропуски в таблице бинарной операции. Обучаются на разных пропорциях обучающей выборки относительно всего датасета. Итоговая точность предсказания считается только по части, соответствующей правой части уравнения.

В трансформере всего 2 слоя, 4 головы внимания, размер эмбеддинга 128, это даёт около 400K параметров без учёта эмбеддингов. По дефолту обучают AdamW.

Собственно главный феномен в том, что точность на обучающей выборке довольно быстро добирается до близкой к идеальной (например, за 1K шагов оптимизации), но на тестовой выборке генерализации не видно до 100K шагов, а в районе 1М точность на тестовом датасете наконец добирается до уровня точности на обучающем.

Этот эффект проверили на разных моделях, оптимизаторах и размерах датасета и более-менее везде на маленьких датасетах он воспроизводится. На более крупных датасетах кривые качества на трейне и тесте следуют друг другу более тесно, а с уменьшением датасета время оптимизации до достижения высокого уровня качества быстро растёт. Для некоторых операций (например, x^3 + xy^2 + y (mod 97)) генерализации в пределах заданного вычислительного бюджета не случается на любом размере датасета вплоть до 95%.

В абляциях пробовали разные интервенции: Adam в различных вариантах — обычный и с полными батчами (точный градиент на всём датасете), с полным батчем и градиентным шумом, с шумом для весов модели, с низким или высоким learning rate, с residual dropout, а также AdamW с двумя разными вариантами weight decay — к началу координат или к инициализации.

Большой эффект на data efficiency оказывает weight decay (L2-лосс на веса модели), особенно wd к началу координат (это и стало потом дефолтом во всех экспериментах), сокращая необходимое число сэмплов более чем в два раза по сравнению с другими изменениями.

Я не до конца понял, опускается ли лосс на трейне прямо до нуля, или он какой-то ненулевой и этого хватает, чтобы понемногу куда-то выбраться по ландшафту приспособленности и перестроить веса сети. Или он прям нулевой и они на одном weight decay добираются до нужной точки. Поскольку это работает (хоть и сильно хуже) и без weight decay, и даже на full-batch Adam (где градиенты типа точные), то я склоняюсь к первому варианту.
Grok
neologism coined by American writer Robert A. Heinlein

2.1k 11 60 6 11
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot