2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Генерация датасета как основа понимания (рассуждений)
Сообщение27.12.2025, 13:17 
Началось всё с рассмотрения конкретной проблемы. Лучшие нейросети делают в лучшем случае около 20 ошибок на тестовых данных при распознавании цифр MNIST:
post1710682.html#p1710682
Человек же делает максимум 10 ошибок (на себе потренировался, правда я взял не все 10000 примеров, а только те, которые не поддались нейросети). Если же добавить рассуждения (thinking), то количество ошибок можно уменьшить.

Здесь я развивал идею, которая объясняет причину превосходства человека над нейросетью на примере задачи классификации цифр MNIST:
1) post1710355.html#p1710355
2) post1710996.html#p1710996
3) post1711355.html#p1711355

Итак, вкратце перескажу мысль: человек понимает принцип, как эти цифры появляются на бумаге и в конечном итоге в датасете. Используя эти знания, человек распознаёт каракули лучше, благодаря вниманию к деталям.
То есть, грубо, в терминах ML, датасет изображений цифр нужно дополнить датасетом генерации этих цифр и тем самым расширить модальность нейросети. Это тупиковый подход, ибо создать такой дополнительный датасет - это гораздо более сложная задача, чем задача классификации. Я же хочу применить ленивый подход, пускай нейросеть сама решит эту задачу.
Я могу лишь помочь нейросети в следующем: я объясню, что цифра появляется в результате желания её написать и результат (изображение) зависит только от этого желания и правил написания цифры, которые одинаково справедливы для всех изображений этой цифры во всем датасете.

Модель строится следующим образом:
Правила написания цифр - это набор из 10 эмбеддингов, допустим, из 1024 признаков каждый. Мы берём конкретную цифру, по лейблу подгружаем нужный эмбеддинг, прогоняем через дополнительную нейросеть - генератор изображения цифры, получаем некоторое псевдоизображение, которое каким-то образом отличается от реального изображения, которое требуется распознать.
Думаю нужно рассматривать изображение как неупорядоченный набор пикселей $(i, j, value)$. Тогда можно сделать сравнение изображений с помощью функции потерь Range Uncovery (непокрытие диапазона). Здесь определение:
post1679466.html#p1679466
Генератор изображений обучается независимо от классификатора, обучаются не только веса генератора, но и его эмбеддинги.

Помощь генератора при классификации применяется после его обучения и получения эмбеддингов-правил.

Допустим классификатор имеет сомнения - софтмакс выдаёт высокие вероятности для двух-трёх цифр. Генерируем эти цифры и сравниваем.

Обучение генератора будет сравнительно затратным по вычислительной сложности, но цель - уменьшение числа ошибок распознавания этого заслуживает. Пока никаких алгоритмов нет, просто наивная идея.

 
 
 
 Re: Генерация датасета как основа понимания (рассуждений)
Сообщение09.01.2026, 12:46 
Я нахожусь в процессе решения. Немного скорректировал генератор, который описывал здесь выше. Слишком дискретная модель для моей задачи получилась.
Теперь мой генератор генерирует не изображение 28х28, а значение пикселя в указанных координатах, то есть производит вычисления $value = f(embedding(label), i, j)$

Подход не нов. Известны архитектуры CoordConv и CPPN, CPPN-NEAT (2007). Очень интересные визуализации здесь:
https://blog.otoro.net/2016/04/01/gener ... t-vectors/
https://blog.otoro.net/2016/06/02/gener ... -part-two/

Автор работы по первой же ссылке признается, что получил всего лишь генератор красивостей (идей изображений), который можно скрестить с каким-нибудь более реальным генератором для получения реальных изображений.

1. У меня же идея другая, не генерация ради генерации, а генерация ради понимания (ради улучшения решения обратной задачи - задачи распознавания).

2. У меня уже есть практичный код с моей функцией потерь RangeUncoveryLoss, которая должна вытянуть решение задачи генерации на более высокие показатели. Функция потерь способна сравнивать искажённые изображения.

3. Мой генератор генерирует не одно изображение цифры, а несколько разных. Например, в датасете могут быть цифры "7" с чертой и без черты, с разными наклонами и возможно толщинами. Все эти разновидности изображений цифр называю прототипами, то есть нейросеть учится генерировать изображения разных типов. Можно выбирать ближайший из прототипов, учитывая, что есть функция сравнения (потерь). LLM подсказывает, что этот подход близок к MoE (mixture of experts).

4. Пока на уровне непроверенной идеи, но считаю, что это перспективный подход: для помощи в распознавании цифр мы анализируем, как можно изменить веса генератора, чтобы изменённая модель лучше соответствовала распознаваемому изображению. Идея заключается в расширении функции потерь для работы с испорченными изображениями (недорисованными по причине плохой шариковой ручки и случайно дрогнувшей руки, лишними штрихами из-за дрогнувшей руки). Именно такое большинство изображений можно зрительно увидеть среди тех, которые нейросеть неправильно распознаёт. Изображения цифр смотреть тут: http://dxdy.ru/post1710682.html#p1710682 Подход в каком-то смысле соответствует LLM fine tuning, но может быть не совсем fine.

 
 
 [ Сообщений: 2 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group