VIP STUDY сегодня – это учебный центр, репетиторы которого проводят консультации по написанию самостоятельных работ, таких как:
  • Дипломы
  • Курсовые
  • Рефераты
  • Отчеты по практике
  • Диссертации
Узнать цену

Разработка системы распознавания изображений на основе аппарата искусственных нейронных сетей

Внимание: Акция! Курсовая работа, Реферат или Отчет по практике за 10 рублей!
Только в текущем месяце у Вас есть шанс получить курсовую работу, реферат или отчет по практике за 10 рублей по вашим требованиям и методичке!
Все, что необходимо - это закрепить заявку (внести аванс) за консультацию по написанию предстоящей дипломной работе, ВКР или магистерской диссертации.
Нет ничего страшного, если дипломная работа, магистерская диссертация или диплом ВКР будет защищаться не в этом году.
Вы можете оформить заявку в рамках акции уже сегодня и как только получите задание на дипломную работу, сообщить нам об этом. Оплаченная сумма будет заморожена на необходимый вам период.
В бланке заказа в поле "Дополнительная информация" следует указать "Курсовая, реферат или отчет за 10 рублей"
Не упустите шанс сэкономить несколько тысяч рублей!
Подробности у специалистов нашей компании.
Код работы: K011618
Тема: Разработка системы распознавания изображений на основе аппарата искусственных нейронных сетей
Содержание
Размещено на http://www.allbest.ru/

Введение



Темой данного исследования является разработка системы распознавания изображений на основе аппарата искусственных нейронных сетей. Задача распознавания изображений является очень важной, так как возможность автоматического распознавания компьютером изображений приносит множество новых возможностей в развитии науки и техники, таких, как разработка систем поиска лиц и других объектов на фотографиях, контроля качества производимой продукции без участия человека, автоматического управления транспортом и множество других.

Что касается искусственных нейронных сетей, то в последние годы данный раздел машинного обучения получается все большее развитие в связи со значительным повышением вычислительных мощностей существующих компьютеров и повсеместном распространении применения графических карт для вычислений, что позволяет обучать нейронные сети гораздо большей глубины и сложной структуры чем раньше, которые, в свою очередь, показывают значительно лучшие результаты по сравнению с другими алгоритмами для многих задач, в особенности задачи распознавания изображений. Данное направление развития нейронных сетей получило название deep learning (“глубокое обучение”) и является одним из наиболее успешных и быстро развивающихся в настоящее время. Так, например, по результатам ежегодного соревнования по распознаванию изображений ImageNet-2014 подавляющее большинство успешных алгоритмов использовало глубокие сверточные сети.

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

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

Выполнение аналитического обзора литературы по теме искусственных нейронных сетей и их применения для задачи распознавания изображений

Разработка алгоритма для распознавания дорожных знаков с применением аппарата искусственных нейронных сетей

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

Проведение экспериментальных исследований. Необходимо провести исследования  и оценить точность работы полученного алгоритма

В ходе проведенного исследования все поставленные задачи были выполнены. Конкретные результаты по каждой из них будут описаны в основной части работы.


1. Обзор литературы



1.1 Машинное обучение



Нейронные сети, которые подробно рассматриваются в данной работе, являются одной из разновидностей алгоритмов машинного обучения, или machine learning. Машинное обучение – это один из подразделов искусственного интеллекта. Основным свойством алгоритмов machine learning является их способность обучаться в процессе работы. Например, алгоритм построения дерева решений, не имея никакой предварительной информации о том, что представляют собой данные и какие в них существуют закономерности, а только некоторый входной набор объектов и значения некоторых признаков для каждого из них вместе с меткой класса, в процессе построения дерева сам выявляет скрытые закономерности, то есть обучается, и после обучения способен предсказывать класс уже для новых объектов, которые он не видел ранее.

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

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

Среди всех алгоритмов машинного обучения выделяют несколько основных семейств [15]. Если речь идет о задаче классификации, к наиболее популярным таким семействам относятся, например:

Классификаторы, основанные на правилах (Rule-based Classifiers) – основная идея таких классификаторов заключается в поиске правил отнесения объектов к тому или иному классу в форме “IF – THEN”. Для поиска таких правил обычно используются некоторые статистические метрики, также часто встречается построение правил на основе дерева решений.

Логистическая регрессия – основная идея заключается в поиске линейной плоскости, максимально точно разделяющей пространство на два полупространства так, что объекты разных классов принадлежат разным полупространствам. При этом уравнение целевой плоскости ищется в виде линейной комбинации входных параметров. Для обучения подобного классификатора может применяться, например, метод градиентного спуска.

Байесовский классификатор – как следует из названия, классификатор основан на теореме Байеса, которая записывается в форме




нейронный сеть машинный обучение

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







Хотя данное допущение обычно является далеким от реальности, наивный байесовский классификатор часто показывает неплохие результаты [29].

Деревья решений – в упрощенном виде, данный алгоритм заключается в построении дерева, в котором каждый узел соответствует некоторому тесту, который выполняется над параметрами объекта, а листьями являются итоговые классы. Существует множество разновидностей деревьев решений и алгоритмов их построения. Например, один из наиболее популярных алгоритмов – C4.5.

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

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

Ленивые классификаторы (Lazy learners) – особая разновидность алгоритмов классификации, которые, вместо того чтобы предварительно строить модель и в дальнейшем принимать решения об отнесении объекта к тому или иному классу на ее основе, основываются на идее, что похожие объекты чаще всего имеют один и тот же класс. Когда такой алгоритм получается на вход объект для классификации, он ищет среди просмотренных ранее объектов похожие на него и, пользуясь информацией об их классах, формирует своей предсказание относительно класса целевого объекта.

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



1.2 Нейронные сети



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

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

Выделяется несколько основных типов архитектур нейронных сетей:

Сеть прямого распространения (feed-forward network) – подразумевает, что нейроны и связи между ними образуют ациклический граф, где сигналы распространяются только в одном направлении. Именно такие сети являются наиболее популярными и широко изученными, и их обучение представляет наименьшие трудности.

Рекуррентные нейронные сети (recurrent neural networks) – в таких сетях, в отличие от сетей прямого распространения, сигналы может передаваться в обоих направлениях, и могут поступать на один и тот же нейрон несколько раз в процессе обработки одного входного значения. Частной разновидностью рекуррентных нейронных сетей является, например, машина Больцмана. Основной трудностью в работе с такими сетями является их обучение, так как создать эффективный алгоритм для этого в общем случае является сложной задачей и до сих пор не имеет универсального решения.

Самоорганизующиеся карты Кохонена – нейронная сеть, предназначенная в первую очередь для кластеризации и визуализации данных.

В истории развития нейронных сетей выделяют 3 основных периода подъема. Первые исследования в области искусственных нейронных сетей относятся к 40-м годам 20 века. В 1954 году Дж. Маккалок и У. Питтс опубликовали работу «Логическое исчисление идей, относящихся к нервной деятельности» [27], в которой были изложены основные принципы построения искусственных нейронных сетей. В 1949 году была опубликована книга Д.Хебба «Организация поведения», где автор рассмотрел теоретические основы обучения нейронных сетей и впервые сформулировал концепцию обучения нейронных сетей как настройку весов между нейронами. В 1954 году В.Кларк впервые осуществил попытку реализовать аналог сети Хебба с помощью компьютера. В 1958 году Ф. Росенблатт предложил модель персептрона, который представлял собой по сути нейронную сеть с одним скрытым слоем [31]. Принципиальный вид персептрона Росенблатта представлен на рисунке 1.





Рисунок 1. Персептрон Росенблатта



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

Однако интерес к нейронным сетям существенно снизился после публикации М. Минским и С. Папертом книги «Персептроны» (“Perceptrons”) в 1969 году [28], где они описали существенные ограничения, которые имеет модель персептрона, в частности, невозможность представления функции исключающего или, а также указали на слишком высокие требования к требуемой вычислительной мощи компьютеров для обучения нейронных сетей. Так как данные ученые имели очень высокий авторитет в научном сообществе, нейронные сети были на некоторое время признаны малоперспективной технологией. Ситуация изменилась только после создания в 1974 году алгоритма обратного распространения ошибки.

Алгоритм обратного распространения ошибки (backpropagation algorithm) был предложен в 1974 году одновременно и независимо двумя учеными, П.Вербосом и А. Галушкиным. Данный алгоритм основан на методе градиентного спуска. Основная идея алгоритма заключается в распространении информации об ошибке от выходов сети к ее входам то есть в обратном направлении по отношению к стандартному походу. При этом веса связей корректируются на основе дошедшей до них информации об ошибке. Основное требование, которое накладывает данный алгоритм – то, что функция активации нейронов должна быть дифференцируема, так как метод градиентного спуска, что неудивительно, вычисляется на основе градиента.

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

Алгоритм backpropagation, в то же время, имеет ряд проблем. Так, использование градиентного спуска предполагает риск схождения к локальному минимуму. Другой важной проблемой является долгое время обучения алгоритма при наличии большого количества слоев, так как ошибка в процессе обратного распространения имеет свойство все сильнее уменьшаться при приближении к началу сети, соответственно, обучение начальных слоев сети будет происходить крайне медленно. Еще одним недостатком, свойственным нейронным сетям в целом, является сложность в интерпретации результатов их работы.  Обученная модель нейронной сети представляет собой некоторое подобие черного ящика, на вход которой подается объект и на выходе получается прогноз, однако определить, какие признаки входного объекта при этом учитывались и какой из нейронов за что отвечает, обычно достаточно проблематично. Это делает нейронные сети во многом менее привлекательными по сравнению, например, с деревьями решений, в которых обученная модель сама по себе представляет некоторую квинтессенцию знаний о рассматриваемой предметной области и исследователю легко понять, почему данный объект был отнесен к тому или иному классу.

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

Этот спад завершился только в 2000-х годах 21 века, когда появилось и стало распространяться понятие deep learning, или глубокого обучения. Возрождению нейронных сетей способствовало появление новых архитектур, таких, например, как сверточные сети, restricted bolzman machines, стэковые автоенкодеры и т.д., которые позволили добиться существенно более высоких результатов в таких сфера машинного обучения, как распознавание изображений и речи. Существенным фактором для их развития стало также появление и распространение мощных видеокарт и их применение для вычислительных задач. Видеокарты, отличаясь значительно большим количеством ядер по сравнения с процессором, пусть и меньшей мощности каждое, идеально подходят для задач обучения нейронных сетей. Это в сочетании с существенно возросшей в последнее время производительностью компьютеров в целом и распространением вычислительных кластеров позволило обучать существенно более сложные и глубокие архитектуры нейронных сетей, чем ранее.



1.3 Deep learning



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

Однако такой подход имеет существенные недостатки. Во-первых, данный подход подразумевает существенный объем работы по выявлению признаков, причем эта работа осуществляется вручную исследователем и может требовать больших затрат времени. Во-вторых, выявление признаков, на основании которых можно получить качественный алгоритм, в данном случае становится во многом случайным, к тому же, таким образом маловероятно, что будут приняты во внимание признаки, которые могут оказывать важное влияние на внутреннюю структуру изображения, но при этом неочевидны для человека. Таким образом, особенно привлекательной выглядит идея автоматического определения признаков, которые в дальнейшем могут быть использованы для работы алгоритмов машинного обучения. И именно такую возможность предоставляет использование подхода deep learning.

С точки зрения теории машинного обучения, deep learning является подмножеством так называемого representation learning. Основная концепция representation learning – как раз таки автоматический поиск признаков, на основании которых в дальнейшем будет работать некоторый алгоритм, например, классификации.

С другой стороны, еще одна важная проблема, с которой приходится сталкиваться при использовании машинного обучения – это наличие факторов вариации, которые могут оказать существенное влияние на внешний вид исходных данных, однако при этом не имеют отношения к самой их сути, которую исследователь и пытается анализировать [5]. Так, в задаче распознавания изображений такими факторами могут являться угол, под которым предмет на изображении повернут к наблюдателю, время суток, освещение и т.д. Так, в зависимости от точки зрения и погоды красная машина может иметь на фотографии различный оттенок и форму. Поэтому для подобных задач, например, идентификации предмета, изображенного на фотографии, выглядит разумным учитывать не конкретные низкоуровневые факты, такие как цвет определенного пикселя, а характеристики более высокого уровня абстракции, например, наличие колес. Однако очевидно, что определить на основе исходного изображения, присутствуют ли у него колеса – задача нетривиальная, и ее решение напрямую может быть весьма сложным. Кроме того, наличие колес – только одно из огромного множества возможных признаков, и определение их всех и составление алгоритмов для проверки изображения на наличие их выглядит не очень реалистичным. Именно здесь исследователи могут использовать все преимущества подхода deep learning. Deep learning основан на предоставлении исходного объекта в виде иерархической структуры признаков, таким образом, что каждый следующий уровень признаков строится на основе элементов предыдущего уровня. Так, если речь идет об изображениях, в качестве самого низшего уровня будут выступать исходные пиксели изображения, следующим уровнем будут отрезки, которые можно выделить среди этих пикселей, затем – углы и другие геометрические фигуры, в которые складываются отрезки. На следующем уровне их фигур образуются уже узнаваемые для человека объекты, например, колеса, и наконец, последний уровень иерархии отвечает за конкретные предметы на изображении, например, автомобиль.

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

Распространению данного подхода и, в связи с этим, очередному расцвету нейронных сетей, послужило три взаимосвязанных причины:

Появление новых архитектур нейронных сетей, заточенных для решения определенных задач (сверточные сети, машины Больцмана и т.д.)

Развитие и доступность вычислений с использованием gpu и параллельных вычислений в целом

Появление и распространение подхода послойного обучения нейронных сетей, при котором каждый слой обучается отдельно с помощью стандартного алгоритма backpropagation (обычно на неразмеченных данных, то есть по сути происходит обучение автоенкодера), что позволяет выявить существенные признаки на данном уровне, а затем все слои объединяются в единую сеть и происходит дообучение сети уже с применением размеченных данных для решения конкретной задачи (fine-tuning). Данный подход имеет два существенных преимущества. Во-первых, таким образом существенно повышается эффективность обучения сети, так как в каждый момент времени обучается не глубокая структура, а сеть с одним скрытым слоем – в результате исчезают проблемы с уменьшением значений ошибки по мере повышения глубины сети и соответствующим снижением скорости обучения. И во-вторых, данный подход к обучению сети позволяет использовать при обучении неразмеченные данные, которых обычно гораздо больше чем размеченных – что делает обучение сети более простым и доступным для исследователей. Размеченные данные в таком подходе требуются только в самом конце для донастройки сети на решение определенной задачи классификации, и при этом, поскольку общая структура признаков, описывающих данные, уже создана в процессе предыдущего обучения, для донастройки сети требуется значительно меньше данных, чем для первоначального обучения с целью выявления признаков. Кроме сокращения требуемого количества размеченных данных, использование подобного подхода позволяет обучить один раз сеть с использованием большого количества неразмеченных данных и затем использовать полученную структуру признаков для решения различных задач классификации, донастраивая сеть с помощью различных наборов данных – за гораздо меньшее время, чем потребовалось бы в случае полного обучения сети каждый раз.

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

Многослойный персептрон – представляет собой обычную полносвязную нейронную сеть с большим количество слоев. Вопрос о том, какое количество слоев считается достаточно большим, не имеет однозначного ответа, но обычно сети, имеющие 5-7 слоев, уже считаются «глубокими». Данная архитектура нейронных сетей, хотя и не имеет принципиальных отличий от сетей, которые использовать ранее до распространения понятия глубокого обучения, может оказаться весьма эффективной в случае успешного решения задачи ее обучения, что являлось главной проблемой работы с такими сетями ранее. В настоящее время данная проблема решается путем использования для обучения сети графических карт, что позволяет ускорить обучение и, соответственно, провести большее количество итераций обучения, или послойного обучения сети, упомянутого ранее. Так, в 2012 году Ciresan с коллегами опубликовали статью «Deep big multilayer perceptrons for digit recognition» [11], в которой сделали предположение, что многослойный персептрон с большим количеством слоев, в случае достаточной продолжительности обучения (которая достигается за разумное время с использованием параллельных вычислений на gpu) и достаточном количестве данных для обучения (которое достигается путем применения различных случайных трансформаций к исходному множеству данных) может показать результативность не худшую чем другие, более сложные модели. Их модель, представляющая собой нейронную сеть с 5 скрытыми слоями, при классификации цифр из датасета MNIST, показала процент ошибки 0.35, что лучше, чем опубликованные ранее результаты более сложных моделей. Также, путем объединения нескольких обученных таким образом сетей в единую модель, им удалось снизить показатель ошибки до 0.31%. Таким образом, несмотря на кажущуюся простоту, многослойный персептрон является вполне успешным представителем алгоритмов глубокого обучения.

Stacked autoencoder (стэковый автоенкодер) – данная модель тесно связана  с многослойным персептроном и в целом с задачей обучения глубоких нейронных сетей. Именно с использованием стэкового автоенкодера реализуется послойное обучение глубоких сетей. Однако данная модель используется не только для целей обучения других моделей, а часто имеет большое практическое значение сама по себе. Чтобы описать суть стэкового автоенкодера, рассмотрим сначала понятие обычного автоенкодера. Автоенкодер представляет собой алгоритм обучения без учителя, в котором в качестве ожидаемых выходных значений нейронной сети выступают ее же входные значения. Схематически модель автоенкодера представлена на рисунке 2:





Рисунок 2. Классический автоенкодер



Очевидно, что задача обучения подобной модели имеет тривиальное решение, если количество нейронов в скрытом слое равно количеству входных нейронов – тогда скрытому слоя достаточно просто транслировать свои входные значения на выход. Поэтому при обучении автоенкодеров вводятся дополнительные ограничения, например, количество нейронов в скрытом слое устанавливается значительном меньшим чем во входном слое, либо применяются особые методики регуляризации, направленные на то, чтобы обеспечить высокую степень разреженности нейронов скрытого слоя [2].  Одно из наиболее распространенных применений автоенкодеров в чистом виде – это задача получения сжатого представления исходных данных. Так, например, автоенкодер с 30 нейронами в скрытом слое, обученный на датасете  MNIST, позволяет восстановить на выходном слое исходные изображения цифр практически без изменений, что означает, что на самом деле каждое из исходных изображений можно достаточно точно описать только 30 числами.  В данном своем применении автоенкодеры часто рассматриваются в качестве альтернативы методу главных компонент. Стэковый же автоенодер представляет собой по сути комбинацию нескольких обычных автоенкодеров, обучаемых слой за слоем. При этом выходные значения обученных нейронов скрытого слоя первого из автоэнкодеров выступают в качестве входных значений для второго из них и т.д.

Сверточные сети – одна из наиболее популярных в последнее время моделей глубокого обучения, применяющаяся в первую очередь для распознавания изображений [23]. Концепция сверточных сетей построена на трех основных идеях:

Локальная чувствительность (local receptive fields) – если говорить о задаче распознавания изображений, это означает, что на распознавание того или иного элемента на изображении должно в первую очередь оказывать влияние его непосредственное окружение, в то время как пиксели, находящиеся в другой части изображения, скорее всего с данным элементом никак не связаны и не содержат информации, которая помогла бы правильно его идентифицировать

Разделенные веса (shared weights) – наличие в модели разделенных весов фактически олицетворяет предположение, что один и тот же объект может быть найден в любой части изображения, при этом для его поиска во всех частях изображения применяется один и тот же паттерн (набор весов)

Сабсемплинг (subsampling) – концепция, позволяющая сделать модель более устойчивой к незначительным отклонениям от искомого паттерна – в том числе, связанным с мелкими деформациями, изменением освещения и т.д. Идея сабсемплинга заключается в том, что при сопоставлении с паттерном учитывается не точное значение для данного пикселя или области пикселей, а его агрегация в некоторой окрестности, например, среднее или максимальное значение.

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

Ограниченные машины Больцмана (Restricted Boltzmann Machines) – еще одна разновидность моделей глубокого обучения, в отличие от сверточных сетей, применяемая в первую очередь для задачи распознавания речи. Машина Больцмана в своем классическом понимании представляет собой неориентированный граф, ребра в котором отражают зависимости между узлами (нейронами). При этом часть нейронов является видимыми, а часть скрытыми. С точки зрения нейронных сетей машина Больцмана представляет собой по сути рекуррентную нейронную сеть, с точки зрения статистики – случайное марковское поле. Важными понятиями для машин Больцмана являются понятия энергии сети и состояния равновесия. Энергия сети зависит от того, какое количество сильно связанных между собой нейронов одновременно находятся в активированном состоянии, задача же обучения такой сети состоит в ее схождении к состоянию равновесия, при котором ее энергия минимальна. Основным недостатком подобных сетей являются большие проблемы с обучением их в общем виде. Для решения данной проблемы Дж. Хинтоном с коллегами была предложена модель ограниченно машины Больцмана (Restricted Boltzmann Machines), которая накладывает ограничение на структуру сети, представляя ее в виде двудольного графа, в одной части которого находятся только видимые нейроны, а в другой – только скрытые, соответственно, связи присутствуют только между видимыми и скрытыми нейронами. Данное ограничение позволило разработать эффективные алгоритмы для обучения сетей такого вида, благодаря чему был осуществлен существенный прогресс в решении задач распознавания речи, где данная модель практически вытеснила популярную ранее модель скрытых сетей Маркова.

Теперь, рассмотрев основные понятия и принципы глубокого обучения, кратко рассмотрим основные принципы и эволюцию развития распознавания изображений и то, какое место в нем занимает deep learning.



1.4 Распознавание изображений



Распознавание  изображений является важным и интересным разделом компьютерной науки, имеющим самые различные применения в реальной жизни. Так, распознавание изображений может применяться для задачи распознавания автомобильных номеров, идентификации наличия.......................
Для получения полной версии работы нажмите на кнопку "Узнать цену"
Узнать цену Каталог работ

Похожие работы:

Отзывы

Очень удобно то, что делают все "под ключ". Это лучшие репетиторы, которые помогут во всех учебных вопросах.

Далее
Узнать цену Вашем городе
Выбор города
Принимаем к оплате
Информация
Онлайн-оплата услуг

Наша Компания принимает платежи через Сбербанк Онлайн и терминалы моментальной оплаты (Элекснет, ОСМП и любые другие). Пункт меню терминалов «Электронная коммерция» подпункты: Яндекс-Деньги, Киви, WebMoney. Это самый оперативный способ совершения платежей. Срок зачисления платежей от 5 до 15 минут.

По вопросам сотрудничества

По вопросам сотрудничества размещения баннеров на сайте обращайтесь по контактному телефону в г. Москве 8 (495) 642-47-44