Введение
В современном мире машинное обучение стало обычным инструментом для решения почти всех задач, в которых требуется извлекать информацию из больших наборов данных [1].
Ежедневно создаются тысячи документов, требующих анализа и обработки. При обработке документов возникает задача распознавания рукописного текста. Для решения данной задачи потребуется применить нейронные сети. Нейронная сеть - алгоритм, который был вдохновлен связями нейронов в человеческом мозгу [2].
Существует большое количество различных архитектур нейронных сетей. В работе будет использована архитектура перцептрон (perceptrons, P). Такие сети передают информацию от входа к выходу. Считается, что у нейронных сетей есть слои, каждый из которых состоит из входных, скрытых или выходных нейронов. Нейроны одного слоя между собой не связаны, при этом каждый нейрон этого слоя связан с каждым нейроном соседнего слоя [3].
Подготовка набора данных
Набор данных представлен в виде коллекции изображений строчных букв формата png [4]. Обучающий набор данных содержит 3600 примеров, из которых 2600 примеров заимствованы из шрифтов Microsoft Office, а остальные 1000 примеров являются рукописными записями нескольких людей.
Моделирование
В большинстве нейронных сетей входные данные называют входным слоем. Входной слой выполняет задачу распределения входных сигналов между нейронами. Группа нейронов, на которые поступает сигнал от входного слоя, называется – скрытым слоем. Группу нейронов, с которых считываются данные (ответы сети), называют выходным слоем [5].
Имеется 900 входных значений пикселей, которые преобразуются в скрытые нейроны. Затем эти скрытые нейроны преобразуются в выходные значения, определяющие букву.
Каждый из 900 пикселей изображения является характеристикой, описывающей конкретную букву. По данным характеристикам НС создает некую границу возле каждой группы букв. Таким образом, при попадании в пределы этой границы (т.е. при совпадении характеристик), можно будет сделать предсказание. Однако необходимо изменить веса уравнения плоскости так, чтобы переориентировать плоскость и минимизировать расстояние между буквами. Функция расстояния минимизируется с помощью алгоритма градиентного спуска. Алгоритм градиентного спуска возвращает вектор весов граничной плоскости с минимальным расстоянием. Веса ориентируют плоскость таким образом, что она становится моделью предсказаний для буквы.
Описанный процесс сопоставления математических функций с данными – процесс обучения НС.
Программная реализация написана на языке Octave.
Анализ результатов
Нейронная сеть выполняет последовательность из двух линейных преобразований посредством двух умножений матриц. Сеть берет вектор пикселей и умножает его на матрицу весов. Это приводит к новой матрице, которую будем считать скрытым слоем. Скрытый слой умножается на другую матрицу весов, в результате чего получается вектор, который описывает предсказанную букву.
На вход подается буква, которую необходимо распознать (рис. 1).
Рисунок 1 – Буква, которую необходимо распознать
Далее происходит обработка изображения: изменение размеров изображения до квадрата размером 30 на 30 пикселей и выполнение бинарной пороговой обработки, в результате которой получаем следующее изображение:
Рисунок 2 – Преобразованное изображение
Преобразованное изображение затем подается на вход НС, которая в результате предсказывает букву «s» с точностью 78% (рис. 3):
Рисунок 3 – Предсказанное значение
Таким образом, в работе успешно разработана НС, которая распознает рукописные буквы.
Заключение
В статье описан процесс создания нейронной сети для распознавания рукописных букв. Результатом данной работы является корректное распознавание букв.
Некоторые из букв могут иметь различные варианты написания и, следовательно, могут не попадать в границы буквы, которые были созданы ранее. Для улучшения точности распознавания букв необходимо учесть новые вариации букв и скорректировать уравнения граничной плоскости. Также повышение точности распознавания возможно с помощью изменения архитектуры нейронной сети, например, увеличивая количество скрытых слоев.
Список источников и литературы
Шалев-Шварц Ш., Бен-Давид Ш. Идеи машинного обучения: от теории к алгоритмам [Книга] / перев. СлинкинаА. А.. - Москва : ДМКПресс, 2019. - стр. 436.
Perrotta P. Programming Machine Learning: From Coding to Deep Learning [Book] / [б.м.] : The Pragmatic Bookshelf, 2020. - 1 : p. 340.
Rosenblatt F. The perceptron: a probabilistic model for information storage and organization in the brain [Journal] // Psychological review. - 1958. - 6 : Vol. 65. - pp. 386-408.
A topic-centric list of HQ open datasets [Электронныйресурс] // GitHub. - 2014 г.. - Декабрь 2020 г.. - https://github.com/awesomedata/awesome-public-datasets#machinelearning.
Кан К. Нейронные сети. Эволюция [Книга] / - 2019.