Надеюсь, кто-то ещё помнит, что кроме градиентного спуска и нейросетей существует и остальной ML. Существуют не просто разные архитектуры моделей, но и разные способы обучения и применения.
Если абстрагироваться от деталей, существует несколько "осей", по которым их можно измерять и сравнивать между собой, абстрагируясь от деталей. На мой взгляд, не все из них попадают в поле зрения.
Рассмотрим всю ML-систему целиком как чёрный ящик, в который просто поступают данные. Итак, перейдём к характеристикам:
- Флопы
Тут понятно - количество потраченного компьюта
- Размер обучаемого состояния
В классических схемах обучаемым состоянием является вектор весов нейросети, но обучаемое состояние может принимать и другие формы. Например, в методе ближайших соседей это весь датасет, который кладётся в память. Строго говоря, вектор моментов из оптимизатора это тоже часть обучаемого состояния.
- Размер алгоритма
Это не то же самое. Алгоритм - это информация, которая в наличии до применения его к данным, например, код обучения. Обычно он занимает мало места, но не всегда. Например, в In-Context трансформерах все веса модели являются частью алгоритма. Если нейросеть дообучают на новую задачу, инициализацию тоже можно считать частью алгоритма.
- Эффективность алгоритма
Самая фатальная ошибка современного ML заключается в игнорировании существования такой оси. При фиксировании всего вышеперечисленного, разные алгоритмы будут выдавать разное качество после обучения на данных. Как я понимаю, ML-щикам кажется, что есть некий потолок эффективности обучения, который достигается использованием банальных методов вроде градиентного спуска.
Проблема становится очевидной, когда мы выходим за рамки классического Supervised Learning на одной задаче. Текущие методы Transfer learning это один большой костыль, который работает кое-как.
Почему про всё это важно думать? Рассуждая в таких категориях, люди смогли сформулировать сильную гипотезу, почему текущие meta-learning подходы не работают вне обучаемого распределения:
- Если
размер алгоритма >> размера обучаемого состояния, то система запомнит все обучаемые задачи. Если размер алгоритма << размера обучаемого состояния, то система выучит способ учиться.Логика такой гипотезы проста - запоминать задачи тупо проще, чем выучить способ на них учиться, и поэтому алгоритм будет идти по пути наименьшего сопротивления. Только создав нужное давление на мета-систему, вы получите алмаз. Экспериментальное подтверждение можно найти, например, в этой статье, про которую я уже писал пост.
Но лучшей демонстрацией этой логики является мой любимый VSML. Если мы обучаем большую meta-RNN распознавать MNIST, то она не будет работать на Fashion MNIST. Но если ограничить meta-RNN, очень сильно понизив ранг матрицы обучаемых весов, то всё начинает работать.
Одна лишь проблема - задача мета-оптимизации становится сложнее, и поэтому приходится обучать уже генетическим алгоритмом. В этой же парадигме у каждого вектора этой meta-RNN есть своя эффективность. Крайне сомневаюсь, что оптимальный набор такой сети соответствует эффективности банальных алгоритмов, но это уже вопрос будущих исследований.
Я сформулировал идею для очень простого бенчмарка, в котором все вышеуказанные характеристики можно легко измерить и оптимизировать. Расскажу про неё в следующий раз.
@knowledge_accumulator