Нейронные сети способны распознавать объекты

Смогут ли нейронные сети распознавать и создавать оптические иллюзии?

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

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

Хорошим примером будет чтение, или определение искусственных объектов – машин, самолётов, дорожных знаков, и т.п. Но у зрительной системы есть хорошо известный набор недостатков, воспринимаемых нами, как оптические иллюзии.

Обратите внимание

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

Концентрические круги?

Воспользуйтесь нашими услугами

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

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

Тут на сцену выходят Роберт Уильямс и Роман Ямпольский из Университета Луисвилля в Кентукки. Эти ребята попробовали провернуть такое дело, но обнаружили, что всё не так просто. Существующие системы машинного обучения не способны выдавать собственные оптические иллюзии – по крайней мере, пока. Почему же?

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

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

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

 генеративно-состязательная сеть (ГСС) – способны научить друг друга создавать реалистичные и совершенно искусственные изображения лиц.

Уильямс и Ямпольский задумали научить нейросеть определять оптические иллюзии. Вычислительных мощностей достаточно, а подходящих баз данных не хватает. Поэтому их первой задачей стало создание базы данных оптических иллюзий для тренировки.

Важно

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

А это серьёзное препятствие для современных систем машинного обучения. «Создание модели, способной научиться на таком небольшом и ограниченном наборе данных, станет огромным скачком вперёд для генеративных моделей и понимания зрения человека», — говорят они.

Поэтому Уильямс и Ямпольский собрали базу данных из более чем 6000 изображений оптических иллюзий, и натренировали нейросеть распознавать их. Затем они создали ГСС, которая должна самостоятельно создавать оптические иллюзии.

Результаты их разочаровали. «После семи часов тренировок на Nvidia Tesla K80 ничего ценного создано не было», — говорят исследователи, открывшие базу данных для использования всеми желающими.

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

А системы машинного зрения не могут. «Маловероятно, что ГСС сможет научиться обманывать зрение, не понимая принципов, лежащих в основе иллюзий», — говорят Уильямс и Ямпольский.

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

А пока Уильямс и Ямпольский не проявляют оптимизма: «Судя по всему, набора данных с иллюзиями может быть недостаточно для создания новых иллюзий», — говорят они. Так что, пока оптические иллюзии остаются бастионом человеческого восприятия, неподвластным машинам.

Источник: http://integral-russia.ru/2018/12/18/smogut-li-nejronnye-seti-raspoznavat-i-sozdavat-opticheskie-illyuzii/

Признаковые распознающие нейронные сети

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

Современные признаковые распознающие нейронные сети (ПРНС), так же как и растровые нейронные распознаватели, можно считать развитием перцептрона Ф. Розенблатта. Часто между ними вообще не делают различия, называя перцептроном любой распознаватель, построенный с использованием формальных нейронов.

Будем проводить условную границу между перцептроном и ПРНС, называя перцептроном растровый распознаватель, а ПРНС – признаковый. (С оговоркой, что фиксированное множество независимых двоичных признаков фактически является растром.

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

Совет

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

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

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

При создании ПРНС на первое место вышла практическая цель – распознавание.

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

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

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

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

Что касается живого мозга, информация в зрительный анализатор коры головного мозга передается и как растровая проекция, и как признаки.

Обратите внимание

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

Проблема получения признаков, тем более формирования их иерархии, в современных распознающих нейронных сетях обычно не рассматривается.

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

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

Если эта сумма меньше порога, то выход нейрона равен -1, если больше порога, то +1. Это иллюстрирует сплошная линия на рис. 12.1.

Условие срабатывания нейрона:

где- значение признака,

– весовой коэффициент,

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

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

Рис. 12.1.

Часто, рассматривая условие срабатывания нейрона, забывают о том, что формальный нейрон просто строит разделяющую гиперплоскость в пространстве признаков, и говорят о весе-ro признака, о вкладе признака в сумму, о различной значимости признаков в зависимости от их веса и тому подобное. По-видимому, может вводить в заблуждение термин “вес признака”. В действительности- это не вес, а просто коэффициент в уравнении разделяющей гиперплоскости, определяющий ее положение в пространстве признаков.

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

Важно

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

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

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

Рис. 12.2.

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

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

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

Читайте также:  Телемедицина – очередные разработки россиян

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

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

Совет

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

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

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

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

Нейрон второго выходного уровня строит разделяющую плоскость в пространстве значений выходов нейронов первого уровня.

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

Классический формальный нейрон, реализуя приведенное уравнение срабатывания, строит разделяющую плоскость в-мерном пространстве признаков (при- прямую линию).

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

Обратите внимание

Например, нейрон может строить не уравнение гиперплоскости, а уравнение-мерного эллипсоида (на плоскости – эллипса), то есть считать взвешенную сумму квадратов значений признаков.

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

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

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

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

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

Это же можно реализовать и на формальных нейронах. При этом в распознавании ровным счетом ничего не изменится.

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

Важно

Например, нельзя, построив при обучении разделяющую плоскость в трехмерном пространстве признаков, уменьшить мерность пространства признаков и пытаться распознавать, используя не плоскость, а разделяющую прямую линию.

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

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

На рис. 12.1 сплошной линией показана выходная характеристика классического формального нейрона. В современных ПРНС обычно используются нейроны, у которых пороговый скачок от -1 к +1 заменяется плавным дифференцируемым, чаще всего сигмаобразным переходом, показанным на рис. 12.1 пунктиром.

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

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

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

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

Совет

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

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

Источник: http://www.intuit.ru/studies/courses/2191/423/lecture/9633

Нейронные сети: 1. Основы

Введение

Этим документом начинается серия материалов, посвящённых нейронным сетям.

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

Чаще всего архитектура сети и параметры её обучения являются предметом многочисленных экспериментов. Сеть при этом оказывается чёрным ящиком, происходящее в котором загадочно даже для её учителя.

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

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

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

Объекты и их признаки

Пусть есть однотипные объекты (бутылки с вином, посетители в больнице, позиции на шахматной доске):

Каждый объект характеризуется набором (вектором) признаков x={x1,x2,…,xn}. Признаки могут быть:

  • вещественными (вес, рост)
  • бинарными (женщина/мужчина)
  • нечисловыми (красный,синий,…)

Далее будем считать признаки вещественными числами из диапазона [0…1].

Этого всегда можно достичь при помощи нормировки, например: x -> (x-xmin)/(xmax-xmin). Бинарные признаки, соответственно, принимают значение или 1. Нечисловые признаки, увеличив размерность вектора x, можно сделать бинарными (красный/не красный, синий/не синий).

Кроме этого, пока будем считать, что объекты между собой причинно не связаны и их порядок не существенен.

Обратите внимание

Пусть объекты данного типа разбиваются на классы (человек: {здоровый, больной}, вино: {итальянское, французское, грузинское}).

С каждым объектом можно также связать некоторое число y (степень преимущества белых в шахматной позиции; качество вина по усреднённому мнению экспертов и т.д.).

Часто решаются следующие две, тесно связанные задачи:

  • Классификация: к какому из K классов принадлежит объект.
  • Регрессия: какое число y соответствует объекту.

Примеры:

  • 1) 3 признака: x={температура, уровень гемоглобина, количество холестерина}; 2 класса: {: здоровый, 1: больной};
  • 2) w*h признаков: x={яркости пикселей картинки шириной w и высотой h}; 10 классов: {0-9: цифра на картинке}.
  • 3) 8*8*13 признаков: x={коды шахматных фигур в ячейках}; регрессия: {преимущество белых на чёрными = [-1…1]}.

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

Однажды Джед и Нед захотели различать своих лошадей. Джед сделал на ухе лошади царапину. Но лошадь Неда поцарапала о колючку тоже самое ухо.

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

Они тщательно измерил высоту лошадей, и оказалось, что черная кобыла Джеда на один сантиметр выше белого жеребца Неда.

Обучение с учителем

Пусть есть множество объектов, каждый из которых принадлежит одному из k пронумерованных (0,1,2,…k-1) классов. На этом обучающем множестве, предоставленнным “учителем” (обычно человеком), система обучается.

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

Число признаков n называется размерностью пространства признаков. Пусть признаки лежат в диапазоне [0…1]. Тогда любой объект представим точкой внутри единичного n-мерного куба в пространстве признаков.

Важно

Распознающую систему представим в виде чёрного ящика. У этого ящика есть n входов, на которые подаются значения признаков x={x1,x2,…,xn} и k выходов y={y1,…,yk} (по числу классов). Значение выходов также будем считать вещественным числами из диапазона [0…1].

Система считается правильно обученной, если при подаче на входы признаков, соответствующих i-тому классу, значение i-того выхода равно 1, а всех остальных . На практике, такого результата добиться трудно и все выходы оказываются отличными от нуля.

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

Читайте также:  Антивирус с искусственным интеллектом - выходец из россии

Когда есть только два класса, ящик может иметь один выход. Если он равен , то это один класс, а если 1 – то другой. При нечётком распознавании вводятся пороги уверенности. Например, если значение выхода лежит в диапазоне y=[0 … 0.3] – это первый класс, если y=[0.7 … 1] – второй, а при y=(0.3 … 0.7) система “отказывается принимать решение”.

Ящик с одним выходом может также аппроксимировать функцию y=f(x1,…,xn), значения y которой непрерывны и обычно также нормируются на единицу, т.е. y=[0 … 1]. В этом случае решается задача регрессии.

Нейрон

Нейронная сеть – одно из возможных наполнений чёрного ящика. Узел сети – это нейрон, имеющий n входов x={x1,x2,…,xn} и один выход y.

С каждым входом связан вещественный параметр синаптического веса ω={w1,w2,…,wn}. Кроме этого, нейрон имеет также “параметр смещенияw0.

Таким образом, любой нейрон с n входами полностью определяется n+1 параметром.

Совет

Выход нейрона вычисляется следующим образом. Значение каждого входа xi умножают на соответствующий ему синаптический вес wi и эти произведения складывают. К сумме добавляют параметр смещения w0. Результат d приводят к диапазону [0 … 1] при помощи нелинейной сигмоидной функции y=S(d):

d = w0 + w1x1 + … + wnxn,         y = S(d) = 1/(1+exp(-d)).

Сигмоидная функция стремится к 1 при больших положительных d и к при больших отрицательных d. Когда d=0, она равна S(0)=0.5. Таким образом, нейрон это нелинейная функция n переменных порогового вида:

Сеть нейронов

Сеть является множеством соединённых между собой нейронов. Возможны различные способы соединения и, следовательно, различные архитектуры сети. Пусть нейроны располагаются слоями и значения выходов нейронов i-того слоя подаётся на входы всех нейронов следующего i+1 слоя.

Такую сеть называют полносвязной сетью прямого распространения. Входы сети мы будем обозначать квадратиками и называть входными нейронами. В отличии от “обычных” нейронов – это просто линейная функция y=x.

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

Ниже на первом рисунке сеть состоит из трёх входов (нулевой слой) и двух выходных нейронов. Такую архитектуру будем кодировать следующим образом: [3,2], где цифры – это число нейронов в слое. Первая цифра – всегда количество входов, а последняя – количество выходов. На следующем рисунке представлена сеть [2,3,1].

Она содержит один скрытый слой с тремя нейронами. Он скрыт в том смысле, что находится внутри чёрного ящика (пунктир) между входным и выходным слоем (нейроны выходного слоя, впрочем, также частично скрыты и наружу “торчат” только их выходы). На третьем рисунке представлена сеть [2,3,3,2] с двумя скрытыми слоями.

Эти сети названы сетями прямого распространения потому, что данные (признаки объекта) подаются на вход и последовательно, без петель, передаются (распространяются) к выходам. К такому же типу сетей относятся т.н.

свёрточные сети, в которых соединены между собой не все нейроны двух соседних слоёв (ниже первый рисунок). Часто при этом веса у всех нейронов свёрточного слоя одинаковые. Подробнее о таких сетях будет говориться при распознавании изображений.

На втором рисунке ниже представлен вариант сети в которой понятие слоя отсутствует, однако это по-прежнему сеть прямого распространения.

Обратите внимание

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

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

Такое поведение полезно, если объекты упорядочены во времени (например при предсказании временных рядов).

Обучение любой сети состоит в подборе параметров w0,w1,…,wn каждого нейрона, таким образом, чтобы для данного объекта (подаём на входы сети x1,…,xn), выходы сети имели значения, соответствующие классу объекта.

Отметим, что, хотя нейрон всегда имеет только один выход, он может “подаваться” на входы различных нейронов. Аналогично, в живых нейронах аксон расщепляется на отдельные отростки, каждый их которых воздействует на синапсы (“точки соединения”) дендридов других нейронов. Если нейрон возбудился, то это возбуждение передаётся по аксону к дендридам его соседей.

Нейрон как гиперплоскость

Чтобы чёрный ящик распознающей системы сделать прозрачнее, рассмотрим геометрическую интерпретацию нейрона. В n-мерном пространстве каждая точка задаётся n координатами (вещественными числами x = {x1,…,xn}).

Плоскость (как и в обычном 3-мерном пространстве) задаётся вектором нормали ω={w1,…,wn} (перпендикуляр к плоскости) и произвольной точкой x0={x01,…,x0n}, лежащей в этой плоскости.

Когда n > 3 плоскость принято называть гиперплоскостью.

Расстояние d от гиперплоскости до некоторой точки x={x1,…,xn} вычисляется по формуле

d = w0 + w1 x1 + … + wn xn,     где     w0 = -(w1 x01 + … + wn x0n).

Важно

При этом d > 0, если точка x лежит с той стороны плоскости, куда указывает вектор ω и d < 0, если с противоположной. Когда d = 0 – точка x лежит в плоскости. Это ключевое для дальнейшего изложения утверждение, которое стоит запомнить.

Изменение параметра w0 сдвигает плоскость параллельным образом в пространстве. Если w0 уменьшается, то плоскость смещается в направлении вектора ω (расстояние меньше), а если w0 увеличивается – плоскость смещается против вектора ω. Это непосредственно следует из приведенной выше формулы.

◄ Вывод этой формулы (который можно пропустить) проведём в векторных обозначениях. Запишем вектор x – x0, начинающийся в точке x0 (лежащей в плоскости) и направленный в точку x (см. рисунок справа; векторы складываются по правилу треугольника). Положение точки x выбрано в основании вектора ω, поэтому ω и x – x0 коллинеарны (лежат на одной прямой). Если вектор ω единичный (ω2=1), то скалярное произведение векторов x – x0 и ω равно расстоянию точки x до плоскости:d = w·(x-x0) = –w·x0 + w·x = w0 + w·x.

Если длина w=|ω| вектора ω нормали к плоскости отлична от единицы, то d в w раз больше (w>1) или меньше (w

Источник: http://synset.com/ai/ru/nn/NeuralNet_01_Intro.html

Нейронные сети: практическое применение22.02.2017 17:33

Наталья Ефремова погружает публику в специфику практического использования нейросетей. Это — расшифровка доклада Highload++.

Добрый день, меня зовут Наталья Ефремова и я research scientist в компании N-TechLab. Сегодня я буду рассказывать про виды нейронных сетей и их применение.

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

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

Соответственно мы одна из лидирующих компаний в распознавании лиц и обработке биометрических изображений.

Первая часть моего доклада будет посвящена тем, кто не знаком с нейтронными сетями. Я занимаюсь непосредственно Deep Learning, в этой области я работаю более 10 лет, хотя она появилась немножко меньше чем 10 лет назад, но раньше были некие зачатки нейронных сетей, которые были похожи на систему Deep Learning.

В последние 10 лет Deep Learning и компьютерное зрение развивались неимоверными темпами. Все что сделано значимого в этой области, было сделано в последние лет 6.

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

Совет

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

Так же я расскажу про нестандартное применение Deep Learning то, что только выходит из научных институтов и пока что еще мало применяется на практике, как это может применяться и почему это сложно применить.

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

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

Я расскажу, как работают convolutional neural network (CNN), распознавание изображений на примере из распознавания лиц.

Немного расскажу про рекуррентные нейронные сети recurrent neural network (RNN) и обучение с подкреплением на примере систем Deep Learning.

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

Итак, часть первая.

Нейронные сети, что это такое?

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

Две трети всей сенсорной информации, которая к нам попадает, попадает к нам с органов восприятия зрительных. От одной трети поверхности нашего мозга, в которой расположены две самые главные зрительные зоны — дорсальный зрительный путь и вентральный зрительный путь.

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

Все важное распознавание образов, которые у нас происходит все смыслонесущее, то что мы осознаём проходит именно там же за ушами.

Почему это важно?

Потому что часто для понимания нейронных сетей.

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

Обратите внимание

В далекие 60-е годы прошлого века, когда только начиналось изучение зрительных зон мозга, первые эксперименты проводились на животных, потому что не было fMRI, исследовали мозг с помощью электродов вживлённых в различные зрительные зоны.

Первая зрительная зона была исследована Дэвидом Хьюбелем и Торстеном Визелем в 1962 году. Они проводили эксперименты на кошках. Кошкам показывались различные движущиеся объекты и на что клетки мозга реагировали, то и было тем стимулом, которое распознавало животное.

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

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

У каждой клетки своё рецептивное поле. Это же свойство сохраняется и в нейронных сетях, как вы, наверное, все знаете.

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

Читайте также:  Зачем нужны искусственные нейронные сети?

Здесь вы видите примеры сложности стимулов, различных двухмерных форм, которые распознаются в зонах V2 V4 и различных частях височных полей у макак. Так же проводиться некоторое количество экспериментов на МРТ.

Здесь вы видите, как раз, как проводятся такие эксперименты. Это 1 нанометр часть зон IT cortex’a мартышки при распознавании различных объектов. Подсвечено то, где распознается.
Важное свойство, которое мы хотим перенять у зрительных зон — это то, что возрастают размеры рецептивных полей и увеличивается сложность объектов, которые мы распознаем.

Важно

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

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

Но сначала немного о простейшем персептроне.

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

Слева это входные части нейрона, справа выходные части нейрона.

Простейший персептрон способен выполнять только самые простые операции. Для того, чтобы выполнять более сложные вычисления, нам нужна структура с большим количеством скрытых слоёв.

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

И так, что же происходит при распознавании изображения, я расскажу на пример лиц.

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

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

Описать объект, описать взаимосвязи объекта, как могут эти части относиться к друг другу, потом найти это изображение на объекте, сравнить их и получить то, что мы распознали плохо. Раньше это было чуть лучше, чем подбрасывание монетки. Чуть лучше, чем chance level.

Совет

Сейчас это происходит не так. Мы разбиваем наше изображение на пиксели либо на некие патчи: 2×2, 3×3, 5×5, 11×11 пикселей, как удобно создателям системы, в которой они служат входным слоем в нейронную сеть.

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

Условно все эти части можно разделить на три класса, мы их обозначим X, W и Y, где Х — это дано наше входное изображение, Y — это набор лейблов, и нам нужно получить наши веса.

Как же мы вычислим W?

При наличии нашего Х и Y кажется это просто. Однако то, что обозначено звездочкой очень сложная не линейная операция, которая к сожалению, не имеет обратной. Даже имея 2 заданных компонента уравнения, очень сложно ее вычислить. Поэтому нам нужно постепенно, методом проб и ошибок, подбором веса W, сделать так, чтобы ошибка максимально уменьшилась, желательно чтобы стала нулю.

Это процесс происходит итеративно, мы постоянно уменьшаем, пока не находим то значение веса W, которое нас достаточно устроит.

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

Перед вами первая сеть, которая победила на международном соревновании ImageNet в 2012 году. Это AlexNet, так называемый.

Обратите внимание

Это сеть, которая впервые заявила о себе, о том, что существует convolutional neural network’s и с тех самых пор на всех международных состязаниях уже convolutional neural net«s не сдавали своих позиций никогда.

Несмотря на то, что эта сеть достаточно мелкая, в ней всего 7 скрытых слоёв, тем не менее она содержит 650 тысяч нейронов с 60 миллионами параметров. Для того, чтобы итеративно научиться находить нужные веса нам нужно очень много примеров.

Как же учится наша нейронная сеть?

Она учится на примере картинки и лейбла, как нас в детстве учат «это кошка, а это собака», так же нейронные сети обучаются на большом количестве картинок. Но дело в том, что до 2010 не существовало достаточно большого data set«a, который способен был бы научить такое количество параметров распознавать изображения.

Самые большие базы данных, которые существовали до этого времени это были Pascal voc, в который было всего 20 категорий объектов, и Caltech 101, который был разработан в California Institute of Technology, в нем была 101 категория, и это было много.

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

Однако, в 2010 году появилась база ImageNet, в которой было 15 миллионов изображений и разделённые на 22 тысячи категорий. Это решило нашу проблему обучения нейронных сетей.

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

По сравнению с предыдущими data set«ами это очень большая база данных.

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

В этом году победила сеть, созданная в Китае, в ней было 269 слоёв. И параметров, подозреваю, тоже много.

Как же выглядит архитектура глубины нейронной сети?

Условно ее можно разделить на 2 части: которая учится, и которая не учится.

Чёрным обозначены те части, которые не учатся, все остальные слои способны обучаться. Существует множество определений того, что находится внутри каждого сверточного слоя. Одно из принятых обозначений это — обозначают один слой с тремя компонентами: convolution stage, detector stage и pooling stage.

Не буду вдаваться в детали, еще будет много докладов, в которых подробно рассмотрено, как это работает. Расскажу на примере.

Поскольку организаторы просили меня не упоминать много формул, я их выкинула совсем.

Важно

Итак, входное изображение попадает в сеть слоёв, которые можно назвать фильтрами разного размера и сложности элементов, которые они распознают. Эти фильтры составляют некий свой индекс или набор признаков, который потом попадает в классификатор. Обычно это либо SVM, либо MLP — многослойный перцептрон, кому что удобно.

По образу и подобию с биологической нейронной сетью объекты распознаются разной сложности. По мере увеличения количества слоёв это все потеряло связь с cortex«ом, поскольку там ограничено количество зон в нейронной сети.

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

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

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

Есть люди, которые утверждают, что человек всегда распознаёт лучше, чем сеть, так ли это?

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

Они взяли 2 самые лучшие на данный момент сети — это AlexNet и сеть Мэттью Зиллера и Фергюса, и сравнили с откликом разных зон мозга макаки, которая тоже была научена распознавать какие-то объекты.

Совет

Объекты были из животного мира, чтобы обезьяна не запуталась, и были проведены эксперименты «кто же распознаёт лучше?».

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

Оказалось, что в нормальных условиях клетки мозга реагировали так же хорошо, как и state of the art model на тот момент, то есть сеть Мэттью Зиллера.

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

Какие же у нас есть классические задачи, которые способны выполнять сверточные нейронные сети?

Ну их, на самом деле, не так много, они относятся в общем к трём классам.

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

На примере этого изображения рассмотрим, что же делает каждая из задач?

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

Определение вектора к нормали позволяет нам реконструировать трёхмерное изображение из двухмерного.

Определение объектов внимания — это то, на что обратил бы внимание человек при рассмотрении этой картинки.

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

Семантическое выделение границ — это выделение границ, разбитых на классы.
Выделение частей тела человека — это понятно.

И самая высокоуровневая задача — распознавание самих объектов, которое мы сейчас рассмотрим на примере распознавания лиц.

Как же у нас происходит распознавание лиц?

Обратите внимание

Первое, что мы делаем это пробегаем face detector’ом по изображению для того, чтоб найти лицо. Далее мы нормализуем, центрируем лицо и запускаем его на обработку в нейронную сеть.

После чего получаем набор или вектор признаков однозначно описывающий фичи этого лица.

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

Именно таким образом работает наш продукт FindFace, это бесплатный сервис, который помогает искать профили людей в базе ВКонтакте.

Кроме того, у нас есть API для компаний, которые хотят попробовать наши продукты. Мы предоставляем сервису по детектированию лиц, по верификации и по идентификации пользователей. У нас разработано сейчас 2 сценария. Первый — это идентификация, это поиск лица по базе данных.

Второе — это верификация, это сравнение двух изображений с некой вероятностью, что это один и тот же человек.

Кроме того, у нас сейчас в разработке распознавание эмоций, распознавание изображений на видео и Liveness Detection — это понимание живой ли человек перед камерой или фотография.

Немного статистики. При идентификации, при поиске по 10 тысячам фото у нас точность около 95%, в зависимости от качества базы. 99% точность верификации.

Важно

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

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

Источник: https://pcnews.ru/blogs/nejronnye_seti_prakticeskoe_primenenie-754405.html

Ссылка на основную публикацию
Adblock
detector