*Вся информация, представленная ниже, получена по ссылке, добавленной в конце*

В этой части курса Джабрил Эш знакомит нас с «Как заставить ИИ читать ваш почерк».

Например, при создании инструмента искусственного интеллекта мы можем использовать язык под названием Python в пространстве под названием Google Collaboratory.

В качестве отказа от ответственности: в последнем случае вы можете написать свой код, запустить его и объяснить, что вы сделали. Вы когда-нибудь использовали SPPSS для анализа данных? Это аналогичный инструмент, но разработанный Google.

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

«Но мой почерк не такой, как у моего друга…»

Точно! Вот почему мы будем обучать машину распознавать скороговорку, а не запоминать конкретную букву, как указал Джабриль.

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

Шаг 1: Поиск/создание помеченного набора данных для обучения НС.

Мы будем использовать это как в тренировочном, так и в тестовом наборе.

Шаг 2: Создайте NN.

Мы настраиваем его с входным, скрытым и выходным слоями.

Шаг 3: протестируйте и исправьте наш код.

Шаг 4: задействуйте алгоритм!

Шаг 1: Найдите или создайте помеченный набор данных.

Если вы планируете создать размеченный набор данных… удачи.

Мы можем использовать наборы данных, которые уже помечены и доступны для нашего использования. Примером, представленным в курсе, является набор данных Extended Modified National Institute of Standards and Technology (EMNIST).

Чтобы поддерживать точность, нам нужно обучать и тестировать машину отдельно, гарантируя, что машина не видела изображения раньше.

Каждый пиксель представляет собой значение шкалы серого от 0 до 255. Чтобы идентифицировать изображения, машина получит значение 1 пикселя и разделит его между 255. Это приведет к значению в диапазоне от 0 до 1 для каждого пикселя и каждого изображения. Чтобы упростить обработку данных, мы используем метод, называемый предварительной обработкой, и для каждого типа данных требуется свой метод.

Сбор данных является ключевым шагом для правильного обучения нашей нейронной сети.

Шаг 2: Создайте NN.

В ходе курса они используют нейронную сеть многослойного персептрона (MLP) для этого тематического исследования.

В Python есть несколько библиотек, содержащих код для построения NN. В этом случае мы будем использовать библиотеку SKLEARN, сокращенную форму SCI KIT LEARN.

Дж. Эш добавляет в ходе курса, что «если наше изображение имеет ширину и высоту 28 пикселей, и каждый из этих пикселей представлен одним входным нейроном. Итак, всего у нас будет 784 нейрона. Каждый из этих пикселей имеет разную шкалу серого и, следовательно, значение от 0 до 1 благодаря обработке, которую мы выполнили на предыдущих этапах».

Теперь, когда вы знаете, что у нас будет 784 нейрона, как вы думаете, насколько большим будет выходной слой?

Что ж, размер будет зависеть от # типов меток, которые мы просим угадать NN. В данном случае в ходе курса они пытаются угадывать буквы, а в английском алфавите их 26, в результате чего в итоге получается 26 выходных нейронов.

О скрытых слоях…?

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

После предположения машина сравнивает его с размеченными данными и корректирует свои веса, пока оно не станет максимально точным. После нескольких эпох догадки будут лучше. В ходе обучения они обучают НС с 50 скрытыми слоями и 20 эпохами. Эш указывает на недостатки использования библиотек для создания NN, учитывая, что мы не совсем осознаем, что происходит в строках кода, которые мы используем. По этой причине вам нужно несколько библиотек.

Шаг 3: Обучите, протестируйте и исправьте свою NN.

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

В коллаборатории Google вы получите тестовый балл. «Чтобы понять, почему он допустил большинство ошибок, мы можем создать матрицу путаницы, которая представляет количество элементов в этой ячейке, а более яркий цвет означает большее количество элементов».

Эта матрица содержит ось правильных значений и ось прогнозируемых значений, которые в данном случае содержат числа от 0 до 26, учитывая, что мы берем в качестве эталона английский алфавит, который состоит из 26 букв — . В этом случае 0=А, 1=В, 2=С…

Наша машина, однако, может прекрасно спутать букву U с буквой V или букву I с буквой L. Когда это происходит, мы хотим повысить точность, запрограммировав другую нейронную сеть. По ходу рекомендуется добавлять больше эпох, больше слоев и больше нейронов в скрытых слоях.

Шаг 4: запустите NN!

  1. получить данные в нужном формате: отсканируйте документы, которые вы хотите преобразовать в печатный текст.
  2. Импортируйте их в Google Collaboratory, предварительно сохранив их в репозитории GitHub, чтобы получить их онлайн.
  3. Измените размер каждого изображения и поместите его в тот же формат.
  4. Вы можете инвертировать код каждого изображения, поставив черный фон и белый почерк.
  5. Запустите код.

По ходу случается ошибка. Знаете какой?

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

Для этого было изучено, как обрабатывался набор данных EMNIST, чтобы сделать наши изображения более похожими на наш набор обучающих данных. На веб-сайте EMNIST мы можем найти «дополнительную информацию о содержании набора данных и процессе преобразования».

Вы можете найти его здесь: https://arxiv.org/abs/1702.05373v1

К счастью, Эш предоставил нам резюме. Что они сделали:

А. Примените фильтр к изображениям, чтобы смягчить края.

B. Отцентрируйте каждую букву на квадратном изображении.

C. Изменение их размера.

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

Подробнее о распознавании рукописного ввода читайте здесь:



Вы можете получить доступ к курсу здесь:

Вы можете подписаться на меня в LinkedIn здесь:



Подробнее о технологии можно прочитать здесь: