Учебник непрофессионала по искусственным нейронным сетям

Посмотрите на картинку ниже и попытайтесь определить, что это такое:

Можно было бы сказать, что это жираф, несмотря на то, что он был странно толстым. Мы мгновенно распознаем образы и предметы, даже если эти образы представлены в форме, сильно отличающейся от того, что мы видели раньше. Мы делаем это с помощью 80 или более миллиардов нейронов в человеческом мозгу, работающих вместе для передачи информации. Замечательная система нейронов также послужила источником вдохновения для широко используемой техники машинного обучения под названием Искусственные нейронные сети (ИНС), которая обычно используется для распознавания изображений. В некоторых случаях компьютеры, использующие эту технику, даже превзошли людей в распознавании изображений.

Проблема

Распознавание изображений важно для многих передовых технологий, которые мы используем сегодня. Он используется в визуальном наблюдении, управлении автономными транспортными средствами и даже в определении наличия заболеваний по рентгеновским снимкам. Большинство современных смартфонов также поставляются с предустановленными программами распознавания изображений, которые распознают рукописный текст и преобразуют его в напечатанные слова.

В этой главе мы рассмотрим, как можно обучить алгоритм ИНС распознавать изображения рукописных цифр. Мы будем использовать изображения из знаменитой базы данных MNIST (Смешанный национальный институт стандартов и технологий).

Иллюстрация

Сначала мы обучаем нашу модель ИНС (более подробно это объясняется далее в этой главе), давая ей примеры из 10 000 рукописных цифр, а также правильный ответ. После того, как модель ИНС обучена, мы можем проверить, насколько хорошо модель работает, дав ей 1000 новых рукописных цифр без правильного ответа. Затем модель должна распознать фактическую цифру.

Вначале ИНС переводит рукописные изображения на понятный ей язык. Черным пикселям присваивается значение «0», а белым пикселям — значение «1». Каждый пиксель изображения называется переменной.

Из 1000 изображений, которые модель должна была распознать, она правильно идентифицировала 922 из них, что соответствует точности 92,2%. Мы можем использовать таблицу непредвиденных обстоятельств для просмотра результатов, как показано ниже.

Из таблицы видно, что при наличии рукописного изображения «0» или «1» модель почти всегда правильно его идентифицирует. С другой стороны, цифру «5» сложнее всего идентифицировать. Преимущество использования таблицы непредвиденных обстоятельств состоит в том, что она сообщает нам частоту ошибочной идентификации. Получив изображение цифры «2», он ошибочно идентифицирует ее как «7» или «8» примерно в 8% случаев. Давайте подробно рассмотрим некоторые из этих ошибочно идентифицированных цифр.

В то время как изображения явно выглядят как цифра «2» для человеческого глаза, ИНС иногда не может распознавать формы и особенности изображений, такие как конец цифры «2» (ограничения чтения). Еще одно интересное наблюдение: цифры «3» и «5» смешиваются моделью со значительной частотой (около 10%).

Нейроны, которые вдохновили сеть

Сначала мы посмотрим, как работают нейроны в нашем мозгу. В нашем мозгу есть большая сеть взаимосвязанных нейронов, которые служат магистралью для передачи информации из точки А в точку Б. использует другой маршрут, чтобы попасть из точки А в точку Б. Вот как может выглядеть типичный нейрон.

В каждом нейроне его дендриты получают входящие сигналы, посылаемые другими нейронами. Если нейрон получает достаточно высокий уровень сигналов в течение определенного периода времени, нейрон посылает в терминалы электрический импульс. Эти исходящие сигналы затем принимаются другими нейронами.

Техническое объяснение I: Как работает Модель

Точно так же в модели ИНС у нас есть входной узел, представляющий собой изображение, которое мы даем программе, и выходной узел, представляющий собой цифру, распознанную программой. Основные характеристики ИНС таковы:

  1. Когда входной узел получает изображение, он активирует уникальный набор нейронов в первом слое, запуская цепную реакцию, которая проложит уникальный путь к выходному узлу. В сценарии 1 нейроны A, B и D активируются в слое 1.
  2. Активированные нейроны посылают сигналы каждому связанному нейрону в следующем слое. Это напрямую влияет на то, какие нейроны активируются в следующем слое. В сценарии 1 нейрон A посылает сигнал E и G, нейрон B посылает сигнал E, а нейрон D посылает сигнал F и G.
  3. На следующем уровне каждый нейрон подчиняется правилу, определяющему, какие комбинации полученных сигналов будут активировать нейрон (более подробно это объясняется позже). В сценарии 1 нейрон E активируется сигналами от A и B. Однако для нейронов F и G их нейронные правила говорят им, что они не получили правильных сигналов для активации, и поэтому они остаются серыми.
  4. Шаги 2–3 повторяются для всех оставшихся слоев (в модели может быть более 2 слоев), пока не останется выходной узел.
  5. Выходной узел выводит правильную цифру на основе сигналов, полученных от нейронов в слое, непосредственно предшествующем ему (слой 2). Каждая комбинация активированных нейронов в слое 2 приводит к одному решению, хотя каждое решение может быть представлено различными комбинациями активированных нейронов. В сценариях 1 и 2 на вход подаются два изображения. Поскольку изображения разные, сеть активирует другой набор нейронов, чтобы перейти от входа к выходу. Однако вывод по-прежнему способен распознать, что оба изображения равны «6».

Техническое объяснение II: обучение модели

Сначала нам нужно определить количество слоев и количество нейронов в каждом слое для нашей модели ИНС. Хотя ограничений нет, хорошее начало — использовать 3 слоя, при этом количество нейронов пропорционально количеству переменных. Для ИНС распознавателя цифр мы использовали 3 слоя по 500 нейронов в каждом. Двумя основными ингредиентами, участвующими в обучении модели, являются: метрика для оценки точности модели, а также правила нейронов, которые сообщают им, активированы они или нет.

Обычно используется метрика суммы квадратов ошибок (SSE). Грубо говоря, квадрат ошибки показывает, насколько близка предсказанная цифра к реальной цифре. Модель ANN попытается минимизировать SSE, изменив правила нейронов, и это изменение определяется математической концепцией, известной как дифференциация.

Правило каждого нейрона имеет две составляющие — вес (то есть силу) входящих сигналов [w] и минимальную силу полученного сигнала для активации [m]. В следующем примере мы иллюстрируем правила для нейрона G. Сигналам от A и B присваивается нулевой вес (т. е. нет связи), а веса 1, 2 и -1 присваиваются сигналам от C, D, и Е соответственно. Значение m для G равно 2, поэтому G активируется, если:

  • D активирован, а E не активирован, или если,
  • C и D активированы.

Ограничения

  1. Вычислительно дорого. Мощность ЦП и время, затрачиваемое на обучение модели ИНС, значительно выше по сравнению с другими типами моделей, которые можно использовать для аналогичных целей (например, случайные леса), но результаты не лучше. Хотя ИНС известна давно, ранее она не использовалась широко и получила возрождение только благодаря достижениям в области аппаратного обеспечения, которые сделали возможными ее вычисления. Однако ИНС является основой для более продвинутых моделей, таких как глубокая нейронная сеть (ГНС), которую Google использовала в октябре 2015 года и марте 2016 года для победы над чемпионами среди людей в игре Го, широко рассматриваемой как нерешенная «большая задача» для искусственного интеллекта.
  2. Отсутствие распознавания признаков. ИНС не может распознать особенности изображения, если они имеют другую форму или расположение. Например, если мы хотим, чтобы наша ИНС распознавала изображения кошек, и предположим, что мы даем ей примеры, в которых кошка всегда появляется внизу изображения, тогда ИНС не будет распознавать тех же кошек, если они появляются вверху, или те же кошки более крупных размеров. Усовершенствованная версия ИНС под названием сверточные нейронные сети (СНС) решает эту проблему, просматривая различные области изображения. На самом деле, CNN также более эффективны и широко используются для распознавания изображений и видео. Для получения дополнительной информации ознакомьтесь с предыдущим сообщением в блоге Введение в сверточные нейронные сети.

Дополнительные примечания для опытных читателей

[Этот раздел предназначен для читателей, имеющих образование в области математики или компьютерных наук и желающих реализовать свою собственную ИНС.]

Правило нейрона, описанное в техническом объяснении, на самом деле является математической функцией, называемой «функцией активации». Он дает нулевой выход, когда вход низкий, и дает положительный выход, когда вход достаточно высокий. Некоторыми часто используемыми функциями активации являются сигмовидная функция и функция выпрямителя. Выходной узел также является функцией, и обычно используется функция softmax (обобщение логистической функции). Таким образом, ИНС можно рассматривать как «большую функцию функций». Именно поэтому мы используем дифференцирование, чтобы найти правильные веса с помощью градиентного спуска. Наконец, обратите внимание, что во время реализации необходимо нормализовать входные данные.

Попробуйте использовать ИНС, используя этот код C++ Бена Грэма: https://github.com/btgraham/Batchwise-Dropout

использованная литература

Понравилось? Дополнительные руководства по анализу данных см. на странице annalyzin.wordpress.com.