NeuroPro

нейронные сети
и анализ данных

Главная
Новости
Услуги
Нейронные сети
Программы
Статьи
Заметки
Ссылки
Вопросы и ответы
Об авторе / контакты
Заметки

Мировой рекорд точности распознавания изображений в задаче NORB

Задача NORB − одна из наиболее сложных и объемных на сегодняшний день свободно доступных задач распознавания изображений. Сначала (в своем "малом" варианте) она родилась как задача распознавания центрированного стереоизображения трехмерного объекта на однородном фоне (но при разной яркости освещения, т.е. при разной яркости объекта и фона), а затем усложнилась до включения сложного фона, небольших изменений положения объекта в кадре, появления объекта другого класса на краю кадра и добавления кадров, где отсутствует центральный объект при наличии объекта на краю кадра (такие изображения надо классифицировать как отдельный класс). Дополнительную сложность обоим постановкам задачи добавляет тот факт, что в обучающей и тестовой выборке для каждого класса используются различные объекты.

Упоминавшаяся на сайте статья [1] использовала именно задачу NORB для того, чтобы доказать не только теоретическую, но и практическую недейственность машин опорных векторов для распознавания изображений при необходимости обеспечить инвариантность распознавания к сдвигам положения объекта в кадре, изменениям размеров объекта. Такое однозначное ограничение круга приемлемых методов решения привело к тому, что существенного соревновательного интереса (в плане достижения наилучшей точности решения) данная задача не вызвала (о найденных мной статьях с результатами − далее). Второй причиной стала сложность практической реализации свёрточных нейронных сетей на практике − Ян ЛеКун в презентации одного своего доклада в 2007г даже пошутил над этим фактом, указав, что мнение масс таково: "only Yann can do it" ("только Ян может это сделать"). Третья причина − значительные объемы требуемых вычислений и самой выборки данных, что заставляет ориентироваться на суперкомпьютеры или самую современную программную и аппаратную конфигурацию настольного компьютера (более чем 8 гигабайт исходных данных, относящихся к сложной постановке задачи, требуют 64-разрядной операционной системы и указанного объема оперативной памяти, чтобы за данными не приходилось постоянно лазить на жесткий диск).

А теперь − да будет мне позволено порастопыривать пальцы извилины. Полтора года назад в указанной заметке про свёрточные нейросети я писал, что могу свободно замахиваться на задачи распознавания изображений с размером выборки данных от одного гигабайта и выше. В заметке про роль ноу-хау я прямо таки массово указывал программы, уступающие в скорости работы моей программе на порядок (в десять раз). В заметке про гиперболический тангенс я говорил, что у этой моей программы еще оставались существенные резервы по ускорению вычислений. Ну так вот − сообщаю, что такая работа по переделке своих нейросетевых программ мной проведена (действительно, давно уже надо было перепрограммировать основную нейроматематику для задействования всех возможностей современных процессоров). Кроме этого − практически опробован новый способ распараллеливания вычислений на несколько ядер многоядерного процессора, абсолютно минимальный по объему добавляемых накладных расходов, т.е. коэффициент распараллеливания (ускорения работы программы от использования не одного ядра, а двух, трех и т.д.) равен числу задействуемых ядер при любом их числе (вернее, отставание от теоретически предельного коэффициента ускорения наблюдается только при выходе объема используемых данных за пределы объема кэша процессора, т.к. каждый параллельный поток выделяет свои собственные объемы памяти, с которыми активно работает, и растущий, с ростом числа потоков, суммарный объем этих данных с какого-то момента перестает влазить в кэш).

Полученное в итоге ускорение работы программы в разы позволило замахнуться на решение сложного варианта задачи NORB даже на процессоре трехлетней давности (Intel Core 2 Duo E6420 с тактовой частотой 2.13ГГц). Хотя, я для проверки сохранения правильности работы всех своих программ (после каждого изменения их исходных кодов) гонял столько тестов, что мог взамен всех этих трудозатрат своего времени и компьютерных сил просто использовать старый вариант программы. Но переделывал-то всё я с расчетом на будущее, чтобы (опять же, растопыривая пальцы) можно было гарантировать всем заказчикам максимальную оперативность решения их задач. Ну и по пути с полезным итогом (выраженном в ускорении работы программ) я получил и приятное - два мировых рекорда точности обобщения, для двух постановок задачи NORB.

В литературе, которую мне удалось найти, озвучена такая рекордная точность решения тестовых выборок (результаты даю без ограничений только какими-то отдельными методами). Для простой постановки - 6.6% ошибок в [2], затем, 5.9% в [1] и 5.6% в [3]. Для сложной постановки - 7.1% в [2] и, затем, 5.9% в [1]. Работы [4-7] других авторов рекордных точностей не показали. Может, в высказывании, что "только Ян может это сделать", была доля правды? Может, и была − но теперь уже нет. Для простой постановки мне удалось довольно стабильно добиваться точности в 1080-1120 неправильно классифицированных тестовых примеров (это даёт ошибку в 4.4-4.6% от объема тестовой выборки). Для сложной постановки задачи мне со значительно большей трудностью, но всё же покорился уровень в 3390-3400 неправильно решенных тестовых примеров (5.8% ошибок на тестовой выборке). Был бы современный процессор (который в 3 раза шустрее моего, т.к. у него 4 ядра вместо двух и тактовая частота раза в 1.5 выше) − я бы добился для сложного варианта задачи улучшения рекорда не на копеечку, а на, скажем, две, т.к. относительно устаревший компьютер насиловать было всё же лень. Ну и обновленный саморекламный результат: теперь для моей программы реализации сверточных нейронных сетей можно границу перемалываемого объема данных в задачах распознавания изображений подвинуть вверх − гигабайт до двадцати-тридцати, если заказчик авансирует апгрейд моего компа до современного уровня, т.к. 8 гигабайт крутились всё же со скрипом (при возможном росте производительности процессора в 3 раза получаем, что базу изображений при сохранении минимальнейшего комфорта работы можно увеличить как раз до 20-30Гб). Ну а если новая задача вдруг позволит её решить с минимальным числом экспериментов по определению оптимальных настроек алгоритмов и размеров нейросети, то и 50Гб не будут пределом.

Естественно, эксперименты с задачей NORB я продолжать буду − и заметка эта может подвергнуться коррекции цифр результатов и включением новых участников в соревновательный забег (путём расширения списка литературы). Но о деталях использованной нейросетевой сверточной архитектуры и о настройках алгоритмов я тут умолчу. Действительно, на результат влияет очень много вещей (наличие-отсутствие нелинейностей нейронов на выходном слое, вид целевой функции для обучения нейронной сети, схема инициализации весов синапсов,...), и многое так и осталось до конца непроясненным. Скажу только, что кое-что противоречит оптимальным настройкам для другой задачи распознавания изображений (задачи MNIST), для которой я ранее использовал ту же самую программу и ту же самую (ну не точно ту же − размер был другой) сверточную нейронную сеть. Далее, ни я, ни иные исследователи пока активно не изучали эффект от построения коллектива решающих моделей − голосование нескольких нейросетей-экспертов может дать лучшую точность классификации. Ну и в связи со сказанным, и задача, и результаты являются громадным источником данных для научных статей, которые планируется писать всё же с чуть более достоверным доказательством правомерностей выбора алгоритмов и настроек (хотя-бы на основе статистических подтверждений), чем простое заявление о рекорде на словах.

И в заключение снова скажу, что нейронные сети всё еще живее всех живых.

Литература.
1. Bengio Y., LeCun Y. Scaling learning algorithms towards AI / Large-scale kernel machines (L.Bottou, O.Chapelle, D.DeCoste, J.Weston eds), MIT Press, 2007.
2. LeCun Y., Huang F., Bottou L. Learning methods for generic object recognition with invariance to pose and lighting / Proc. Int. Conf. on Computer Vision and Pattern Recognition (CVPR). IEEE Press, 2004.
3. Jarrett K., Kavukcuoglu K., Ranzato M., LeCun Y. What is the best multi-stage architecture for object recognition? / Proc. Int. Conf. on Computer Vision (ICCV), 2009.
4. Teo C.H., Tay Y.H., Lai W.K. A novel approach to improve the training time of convolutional networks for object recognition / Proc. Int. Conf. on Neural Information Processing (ICONIP), 2005.
5. Tu Z. Probabilistic boosting-tree: learning discriminative models for classification, recognition, and clustering / Proc. Int. Conf. on Computer Vision (ICCV), 2005.
6. Nair V., Hinton G.E. Rectified linear units improve restricted Boltzman machines / Proc. Int. Conf. on Machine Learning, 2010.
7. Salakhutdinov R., Larochelle H. Efficient learning of deep Boltzman machines / Proc. Int. Conf. on Artificial Intelligence and Statistics (AISTATS), 2010.