На этом шаге мы сформулируем решаемую задачу.
Распознавание текста, написанного от руки, - это настоящий вызов для испытания возможностей искусственного интеллекта, поскольку эта проблема действительно трудна и размыта. Она не столь ясная и четко определенная, как перемножение одного множества чисел на другое.
Корректная классификация содержимого изображений с помощью компьютера, которую часто называют распознаванием образов, десятилетиями выдерживала атаки, направленные на ее разрешение. В последнее время в этой области наблюдается значительный прогресс, и решающую роль в наметившемся прорыве сыграли технологии нейронных сетей.
О трудности проблемы можно судить хотя бы по тому, что даже мы, люди, иногда не можем договориться между собой о том, какое именно изображение мы видим. В частности, предметом спора может послужить и написанная неразборчивым почерком буква. Взгляните на следующую цифру, написанную от руки. Что вы видите: 4 или 9?
Существует коллекция изображений рукописных цифр, используемых исследователями искусственного интеллекта в качестве популярного набора для тестирования идей и алгоритмов. То, что коллекция известна и пользуется популярностью, означает, что никому не составит труда проверить, как выглядит самая последняя из его безумных идей по сравнению с идеями других людей (т.е. различные идеи и алгоритмы тестируются с использованием одного и того же тестового набора).
Этим тестовым набором является база данных рукописных цифр под названием "MNIST", предоставляемая авторитетным исследователем нейронных сетей Яном Лекуном для бесплатного всеобщего доступа по адресу http://yann.lecun.com/exdb/mnist/. Там же вы найдете сведения относительно успешности прежних и нынешних попыток корректного распознавания этих рукописных символов. Мы будем неоднократно обращаться к этому списку, чтобы проверить, в какой степени наши собственные идеи конкурентоспособны по сравнению с идеями, разрабатываемыми профессионалами!
Формат базы данных MNIST не относится к числу тех, с которыми легко работать, но, к счастью, другие специалисты создали соответствующие файлы в более простом формате (см., например, https://pjreddie.com/projects/mnist-in-csv/). Это так называемые CSV-файлы, в которых отдельные значения представляют собой обычный текст и разделены запятыми. Их содержимое можно легко просматривать в любом текстовом редакторе, и большинство электронных таблиц или программ, предназначенных для анализа данных, могут работать с CSV-файлами. Это довольно универсальный формат. На указанном сайте предоставлены следующие два файла:
Тренировочный набор содержит 60 000 промаркированных экземпляров, используемых для тренировки нейронной сети. Слово "промаркированные" означает, что для каждого экземпляра указан соответствующий правильный ответ.
Меньший тестовый набор, включающий 10 000 экземпляров, используется для проверки правильности работы идей или алгоритмов. Он также содержит корректные маркеры, позволяющие увидеть, способна ли наша нейронная сеть дать правильный ответ.
Использование независимых друг от друга наборов тренировочных и тестовых данных гарантирует, что с тестовыми данными нейронная сеть ранее не сталкивалась. В противном случае можно было бы схитрить и просто запомнить тренировочные данные, чтобы получить наибольшие, хотя и заработанные обманным путем, баллы.
Идея разделения тренировочных и тестовых данных распространена среди специалистов по машинному обучению. Присмотримся к этим файлам. Ниже показана часть тестового набора MNIST, загруженного в текстовый редактор.
Ого! Создается впечатление, будто здесь что-то не так. Напоминает кадры из кинофильмов 1980-х годов, содержащих сцены взлома компьютерных систем хакерами.
На самом деле все хорошо. В окне текстового редактора отображаются длинные строки текста, которые содержат числа, разделенные запятыми. Это легко можно увидеть. Текстовые строки такие длинные, потому что каждая из них занимает несколько строк на экране.
Содержимое этих записей, т.е. строк текста, легко понять.
Таким образом, первая запись представляет цифру "7", о чем говорит первое значение, тогда как остальная часть текста в этой строке - это пиксельные значения написанной кем-то от руки цифры "7". Вторая - рукописную цифру "2", третья - цифру "1". Можете выбрать любую строку из файлов данных MNIST, и ее первое число укажет вам маркер для последующих данных изображения.
Однако увидеть, каким образом длинный список из 784 значений формирует изображение рукописной цифры "7", не так-то просто. Мы должны вывести в графическом виде эти цифры и убедиться в том, что они действительно представляют цвета пикселей рукописной цифры.
На следующем шаге мы закончим изучение этого вопроса.