OrderedMNIST - бенчмарк, который никому не нужен, но который мы заслужили
На мой взгляд, за прорывом в ML далеко ходить не нужно. Даже на основе базовой задачи MNIST можно придумать решаемую задачу, которую текущий ML решить не в состоянии.
Итак, берём чёрный ящик, представляющий ML-систему. Над ним совершаем такую манипуляцию - сначала подаём туда по одной все пары (картинка, метка) из тренировочного набора MNIST, а потом переключаем его в другой режим и подаём по одной картинке, запрашивая метку класса. Далее считаем точность и получаем оценку на бенчмарке.
Если все картинки перемешаны заранее, набрать 98% на бенчмарке становится тривиальным. Кладём в ящик свёрточную нейросеть, обучаем градиентным спуском и готово.
Как понятно из названия бенчмарка, в предложенной задаче скрыт пранк - картинки упорядочены по классам - сначала все нули, потом все единицы и т.д.
Классическое обучение в этой ситуации покинет помещение через окно. Что же делать?
Первое, что важно заметить - у задачи есть решение. Представим, что наш чёрный ящик будет хранить внутри все ранее полученные данные, и после каждого нового объекта переобучать свёрточную сеть на нём.
Оно выдаст тот же результат, что и классический подход, но это очень дорого по вычислениям и памяти. Но самое главное, что у нас есть proof of existence.
Есть вменяемое решение с точки зрения вычислений, и это алгоритмы на основе Nearest Neighbors. Пофиг, что данные упорядочены, мы их все просто сложим в память, а на тесте будем отвечать через поиск соседей. Качество будет хуже, и память всё ещё нужна.
Альтернативный вариант - хорош и по памяти, и по скорости, зато по качеству говно. Будем хранить для каждого класса средний вектор признаков, и применять через поиск ближайшего среднего вектора. На упорядоченность данных алгоритму тоже всё равно.
Бенчмарк вообще-то не мешает сделать и такое - берём уже обученную нейросеть, кладём в ящик, игнорируем тренировочные данные и потом применяем. Это решение страдает уже от другого параметра - размер алгоритма.
Напоминаю про оси измерения AI-алгоритмов - компьют, память, размер алгоритма, эффективность/качество. У нас есть несколько решений, каждое из которых страдает по одной из этих осей.
Я утверждаю, что существует такой чёрный ящик, который будет отражать оптимальный баланс с точки зрения всех параметров. Есть такая матрично-векторная конструкция, который способна проглатывать упорядоченные объекты по одному, хитрым образом одновременно учить их внутреннее представление, сжимать данные и хорошо предсказывать метку класса, который при этом будет занимать мало места перед запуском.
Уверен, что даже на основе текущих методов возможно собрать какую-то схему из говна и палок, которая будет это неплохо делать. А если так, то такую схему точно можно обучить с помощью meta-learning в случае верной параметризации.
А зачем вообще всё это?
На мой взгляд, машина, способная решать этот бенчмарк, должна обладать способностями к continual learning - адаптации к новым данным и изменениям по ходу дела - то, чего так не хватает современным алгоритмам. Алгоритм, который, умея работать на 9 цифрах, легко дообучается на 10-ю, потенциально способен быстро научиться водить машину, перед этим просмотрев весь YouTube.
@knowledge_accumulator
Post #318
2.53K
- 👍 16
- ❤ 5
- 🔥 3
- 😁 1