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


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


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

Немного истории

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

Следующим важным шагом стала разработка Дональдом Хеббом первого алгоритма вычисления ИНС в 1949 году, который стал основополагающем на несколько последующих десятилетий. В 1958 году Фрэнком Розенблаттом был разработан парцептрон - система, имитирующая процессы головного мозга. В свое время технология не имела аналогов и до сих пор является основополагающей в нейронных сетях. В 1986 году практически одновременно, независимо друг от друга американскими и советскими учеными был существенно доработан основополагающий метод обучения многослойного перцептрона . В 2007 году нейронные сети перенесли второе рождение. Британский информатик Джеффри Хинтоном впервые разработал алгоритм глубокого обучения многослойных нейронных сетей, который сейчас, например, используется для работы беспилотных автомобилей.

Коротко о главном

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

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

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

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

Сегодняшнее положение

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

На сегодняшний день рынок нейронных сетей огромен - это миллиарды и миллиарды долларов. Как показывает практика, большинство технологий нейросетей по всему миру мало отличаются друг от друга. Однако применение нейросетей - это очень затратное занятие, которое в большинстве случаев могут позволить себе только крупные компании. Для разработки, обучения и тестирования нейронных сетей требуются большие вычислительные мощности, очевидно, что этого в достатке имеется у крупных игроков на рынке ИТ. Среди основных компаний, ведущих разработки в этой области можно отметить подразделение Google DeepMind, подразделение Microsoft Research, компании IBM, Facebook и Baidu.

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

Почему нейросети еще далеки до человеческого мозга?

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

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

Итог

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

Для тех, кто хочет знать больше

  • Большая нейронная война: что на самом деле затевает Google
  • Как когнитивные компьютеры могут изменить наше будущее
  • Мозг
  • Когда, за бутылкой пива, я заводил разговор о нейронных сетях - люди обычно начинали боязливо на меня смотреть, грустнели, иногда у них начинал дёргаться глаз, а в крайних случаях они залезали под стол. Но, на самом деле, эти сети просты и интуитивны. Да-да, именно так! И, позвольте, я вам это докажу!

    Допустим, я знаю о девушке две вещи - симпатична она мне или нет, а также, есть ли о чём мне с ней поговорить. Если есть, то будем считать это единицей, если нет, то - нулём. Аналогичный принцип возьмем и для внешности. Вопрос: “В какую девушку я влюблюсь и почему?”


    Можно подумать просто и бескомпромиссно: “Если симпатична и есть о чём поговорить, то влюблюсь. Если ни то и ни другое, то - увольте.”


    Но что если дама мне симпатична, но с ней не о чем разговаривать? Или наоборот?


    Понятно, что для каждого из нас что-то одно будет важнее. Точнее, у каждого параметра есть его уровень важности, или вернее сказать - вес. Если помножить параметр на его вес, то получится соответственно “влияние внешности” и “влияние болтливости разговора”.


    И вот теперь я с чистой совестью могу ответить на свой вопрос:


    “Если влияние харизмы и влияние болтливости в сумме больше значения “влюбчивость” то влюблюсь…”



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



    Собственно, это правило и есть нейрон.


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


    Сделаем ещё несколько выводов:

    • Если оба веса будут малыми, то мне будет сложно влюбиться в кого бы-то ни было.
    • Если же оба веса будут чересчур большими, то я влюблюсь хоть в столб.
    • Заставить меня влюбиться в столб можно также, понизив порог влюбчивости, но прошу - не делайте со мной этого! Лучше давайте пока забудем про него, ок?

    Кстати о пороге

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

    Нейронная сеть

    Не бывает однозначно симпатичных и однозначно общительных дам. Да и влюблённость влюблённости рознь, кто бы что ни говорил. Потому давайте вместо брутальных и бескомпромиссных “0” и “1”, будем использовать проценты. Тогда можно сказать - “я сильно влюблён (80%), или “эта дама не особо разговорчива (20%)”.


    Наш примитивный “нейрон-максималист” из первой части уже нам не подходит. Ему на смену приходит “нейрон-мудрец”, результатом работы которого будет число от 0 до 1, в зависимости от входных данных.



    “Нейрон-мудрец” может нам сказать: “эта дама достаточно красива, но я не знаю о чём с ней говорить, поэтому я не очень-то ей и восхищён”



    Немного терминологии

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


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


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


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


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



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

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

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



    Ладно, конечно же, не всё так просто (в плане женщин). Привнесём немного драматизма и реальности в наш простой и радужный мир. Во-первых, сделаем нейрон "женюсь - не женюсь" - мудрым. Сомнения же присущи всем, так или иначе. И ещё - добавим нейрон "хочу от неё детей" и, чтобы совсем по правде, нейрон “держись от неё подальше".


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


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

    Долой максимализм.

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


    Но тут я сталкиваюсь с проблемой:


    Если я ставлю вес денег отрицательным, то чем меньше денег - тем лучше для путешествий.
    Если положительным, то чем богаче - тем лучше,
    Если ноль - тогда деньги “побоку”.


    Не получается мне вот так, одним весом, заставить нейрон распознать ситуацию “ни много -ни мало”!


    Чтобы это обойти, я сделаю два нейрона - “денег много” и “денег мало”, и подам им на вход денежный поток от нашей дамы.


    Теперь у меня есть два суждения: “много” и “мало”. Если оба вывода незначительны, то буквально получится “ни много - ни мало”. То есть, добавим на выход ещё один нейрон, с отрицательными весами:



    “Нимногонимало”. Красные стрелки - положительные связи, синие - отрицательные


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



    Или-или. Красные стрелки - положительные связи, синие – отрицательные




    можно заменить “мудрые” нейроны на “максималистов” и тогда получим логический оператор XOR. Главное - не забыть настроить пороги возбуждения.


    В отличие от транзисторов и бескомпромиссной логики типичного программиста “если - то”, нейронная сеть умеет принимать взвешенные решения. Их результаты будут плавно меняться, при плавном изменение входных параметров. Вот она мудрость!


    Обращу ваше внимание, что добавление слоя из двух нейронов, позволило нейрону “ни много - ни мало” делать более сложное и взвешенное суждение, перейти на новый уровень логики. От “много” или “мало” - к компромиссному решению, к более глубокому, с философской точки зрения, суждению. А что если добавить скрытых слоёв ещё? Мы способны охватить разумом ту простую сеть, но как насчёт сети, у которой есть 7 слоёв? Способны ли мы осознать глубину её суждений? А если в каждом из них, включая входной, около тысячи нейронов? Как вы думаете, на что она способна?


    Представьте, что я и дальше усложнял свой пример с женитьбой и влюблённостью, и пришёл к такой сети. Где-то там в ней скрыты все наши девять нейрончиков, и это уже больше похоже на правду. При всём желании, понять все зависимости и глубину суждений такой сети - попросту невозможно. Для меня переход от сети 3х3 к 7х1000 - сравним с осознанием масштабов, если не вселенной, то галактики - относительно моего роста. Попросту говоря, у меня это не получится. Решение такой сети, загоревшийся выход одного из её нейронов - будет необъясним логикой. Это то, что в быту мы можем назвать “интуицией” (по крайней мере – “одно из..”). Непонятное желание системы или её подсказка.


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

    Обучение.

    Несколькими строчками ранее я обмолвился о хорошо настроенной сети, чем вероятно спровоцировал немой вопрос: “А как мы можем настроить сеть, состоящую из нескольких тысяч нейронов? Сколько “человеколет” и погубленных жизней нужно на это?.. Боюсь предположить ответ на последний вопрос. Куда лучше автоматизировать такой процесс настройки - заставить сеть саму настраивать себя. Такой процесс автоматизации называется обучением. И чтобы дать поверхностное о нём представление, я вернусь к изначальной метафоре об “очень важном вопросе”:


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


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


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


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



    Всё вышесказанное справедливо для искусственной нейронной сети типа “персептрон”. Остальные сети похожи на нее по основным принципам, но имеют свою нюансы.


    Хороших вам весов и отличных обучающих выборок! Ну а если это уже и не нужно, то расскажите об этом кому-нибудь ещё.


    Теги:

    • нейронные сети
    • алгоритмы
    Добавить метки

    Соответственно, нейронная сеть берет на вход два числа и должна на выходе дать другое число - ответ. Теперь о самих нейронных сетях.

    Что такое нейронная сеть?


    Нейронная сеть - это последовательность нейронов, соединенных между собой синапсами. Структура нейронной сети пришла в мир программирования прямиком из биологии. Благодаря такой структуре, машина обретает способность анализировать и даже запоминать различную информацию. Нейронные сети также способны не только анализировать входящую информацию, но и воспроизводить ее из своей памяти. Заинтересовавшимся обязательно к просмотру 2 видео из TED Talks: Видео 1 , Видео 2). Другими словами, нейросеть это машинная интерпретация мозга человека, в котором находятся миллионы нейронов передающих информацию в виде электрических импульсов.

    Какие бывают нейронные сети?

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

    Для чего нужны нейронные сети?

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

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

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

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

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

    Что такое нейрон?

    Нейрон - это вычислительная единица, которая получает информацию, производит над ней простые вычисления и передает ее дальше. Они делятся на три основных типа: входной (синий), скрытый (красный) и выходной (зеленый). Также есть нейрон смещения и контекстный нейрон о которых мы поговорим в следующей статье. В том случае, когда нейросеть состоит из большого количества нейронов, вводят термин слоя. Соответственно, есть входной слой, который получает информацию, n скрытых слоев (обычно их не больше 3), которые ее обрабатывают и выходной слой, который выводит результат. У каждого из нейронов есть 2 основных параметра: входные данные (input data) и выходные данные (output data). В случае входного нейрона: input=output. В остальных, в поле input попадает суммарная информация всех нейронов с предыдущего слоя, после чего, она нормализуется, с помощью функции активации (пока что просто представим ее f(x)) и попадает в поле output.


    Важно помнить , что нейроны оперируют числами в диапазоне или [-1,1]. А как же, вы спросите, тогда обрабатывать числа, которые выходят из данного диапазона? На данном этапе, самый простой ответ - это разделить 1 на это число. Этот процесс называется нормализацией, и он очень часто используется в нейронных сетях. Подробнее об этом чуть позже.

    Что такое синапс?


    Синапс это связь между двумя нейронами. У синапсов есть 1 параметр - вес. Благодаря ему, входная информация изменяется, когда передается от одного нейрона к другому. Допустим, есть 3 нейрона, которые передают информацию следующему. Тогда у нас есть 3 веса, соответствующие каждому из этих нейронов. У того нейрона, у которого вес будет больше, та информация и будет доминирующей в следующем нейроне (пример - смешение цветов). На самом деле, совокупность весов нейронной сети или матрица весов - это своеобразный мозг всей системы. Именно благодаря этим весам, входная информация обрабатывается и превращается в результат.

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

    Как работает нейронная сеть?


    В данном примере изображена часть нейронной сети, где буквами I обозначены входные нейроны, буквой H - скрытый нейрон, а буквой w - веса. Из формулы видно, что входная информация - это сумма всех входных данных, умноженных на соответствующие им веса. Тогда дадим на вход 1 и 0. Пусть w1=0.4 и w2 = 0.7 Входные данные нейрона Н1 будут следующими: 1*0.4+0*0.7=0.4. Теперь когда у нас есть входные данные, мы можем получить выходные данные, подставив входное значение в функцию активации (подробнее о ней далее). Теперь, когда у нас есть выходные данные, мы передаем их дальше. И так, мы повторяем для всех слоев, пока не дойдем до выходного нейрона. Запустив такую сеть в первый раз мы увидим, что ответ далек от правильно, потому что сеть не натренирована. Чтобы улучшить результаты мы будем ее тренировать. Но прежде чем узнать как это делать, давайте введем несколько терминов и свойств нейронной сети.

    Функция активации

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

    Линейная функция


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

    Сигмоид


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

    Гиперболический тангенс


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

    Тренировочный сет

    Тренировочный сет - это последовательность данных, которыми оперирует нейронная сеть. В нашем случае исключительного или (xor) у нас всего 4 разных исхода то есть у нас будет 4 тренировочных сета: 0xor0=0, 0xor1=1, 1xor0=1,1xor1=0.

    Итерация

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

    Эпоха

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


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

    Ошибка

    Ошибка - это процентная величина, отражающая расхождение между ожидаемым и полученным ответами. Ошибка формируется каждую эпоху и должна идти на спад. Если этого не происходит, значит, вы что-то делаете не так. Ошибку можно вычислить разными путями, но мы рассмотрим лишь три основных способа: Mean Squared Error (далее MSE), Root MSE и Arctan. Здесь нет какого-либо ограничения на использование, как в функции активации, и вы вольны выбрать любой метод, который будет приносить вам наилучший результат. Стоит лишь учитывать, что каждый метод считает ошибки по разному. У Arctan, ошибка, почти всегда, будет больше, так как он работает по принципу: чем больше разница, тем больше ошибка. У Root MSE будет наименьшая ошибка, поэтому, чаще всего, используют MSE, которая сохраняет баланс в вычислении ошибки.


    Root MSE



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

    Задача

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

    Данные: I1=1, I2=0, w1=0.45, w2=0.78 ,w3=-0.12 ,w4=0.13 ,w5=1.5 ,w6=-2.3.

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

    Что такое многослойный персептрон кратко

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

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

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

    Использование нейронных сетей

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

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

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

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

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

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

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

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

    Дело в том, что головной мозг состоит из 10 миллиардов нейронов, каждый из которых имеет по 10 000 связей. Это чрезвычайно энергоэкономичная и помехоустойчивая система, созданная миллионами лет . В чем же состоит отличие?

    Различия принципа работы мозга и нейронных сетей

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

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

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

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

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

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

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

    Об этом интереснейшем классе импульсных нейронных сетей мы поговорим далее:

    Видео на тему сути нейронный сетей простым языком:

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

    Краткое описание феномена

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

    • Машинное обучение - разновидность искусственного интеллекта. Особенность его заключается в постепенном обучении на примере миллионов однотипных задач;
    • В робототехнике система используется в выработке многочисленных алгоритмов для железных «мозгов» автоматических систем;
    • Архитекторы компьютерных систем находят в нейросетях одно из решений проблемы параллельных вычислений;
    • Также имеются многие другие варианты имплементации: разрешение сугубо математических проблем, моделирование естественного интеллекта на основе ЭВМ и др.

    Основными элементами такой сети являются:

    1. Искусственные нейроны - элементарные, связанные между собой единицы;
    2. Синапс - соединение, которое служит для отправки-получения данных между нейронами;
    3. Сигнал - информация, подлежащая передаче.

    Сверточные нейронные сети

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

    • Они прекрасно масштабируются и могут применяться для распознавания образов сколь угодно большого разрешения;
    • В них применяются объемные (трехмерные) нейроны. Нейроны внутри слоя связаны только небольшими областями, которые называются рецептивным полем;
    • Нейроны соседних слоев подключаются по механизму пространственной локализации. Укладка множества таких слоев обеспечивает появление нелинейных фильтров, которые начинают реагировать на все большее число пикселей;
    • Каждый фильтр расширяется на все поле зрения. Данные единицы тиражируются, делятся имеющимися параметрами и формируют карту. Тем самым все нейроны определенного сверточного слоя начинают реагировать на один и тот же объект (в пределах конкретной области ответа).

    Экскурс в историю

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

    • Первая вычислительная модель пороговой логики на основе математики и алгоритмов была построена Уорреном Маккалоком и Уолтером Питттсом в 1943 году;
    • В конце 1940-х годов Дональд Хебб разработал механизм нейронной пластичности и тем самым заложил правила обучения автоматов;
    • 1954 годом датируется первое применение теоретических открытий в работе ЭВМ. Элисон Кларк использовал для этих целей обычный калькулятор;
    • Фрэнк Розенблатт в 1958 году разработал алгоритм распознавания образов и математическую нотацию к нему;
    • В конце 1960-х научный интерес к проблематике заметно угас ввиду невозможности его применения на аппаратных мощностях того времени;
    • Кибернетики вернулись к нейронным сетям лишь в начале 1980-х: появилась система с механизмом обратной связи, разработаны алгоритмы самообучения и заложены основы дисциплины data mining;
    • К 2000-м вычислительная мощность ЭВМ выросла настолько, что позволила реализовать самые смелые чаяния кабинетных ученых. Широкое распространение получили программы распознавания голоса, компьютерного зрения и т. д.

    Нейронная сеть Хопфилда

    В 1982 году американский ученый Джон Хопфилд описал новый вид вычислительной системы, которая теперь носит его имя. Среди ее характерных особенностей:

    1. Блоки в сети могут принимать только два значения для описания их состояния: 1 и -1. Каждая пара единиц значения говорит о возможности или невозможности подключения узлов графа;
    2. Обновление одного узла в графе моделирования искусственных нейронов выполняется асинхронно или синхронно. В первом случае обновляется только один блок, который может быть выбран случайным образом. Во втором случае все блоки обновляются одновременно;
    3. Сеть характеризуется состоянием, которое называется «энергией». Обновления сетей всегда происходят при максимальных значениях энергии;
    4. Правила обучения сети аналогичны механизмам человеческого интеллекта. Возможно подключение новых данных как с использованием старых данных (локальное правило), так и без обращения к старым образцам (добавочное правило).

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

    Основные ограничения и проблемы

    Список основных претензий к современным методам интеллектуального анализа данных сводятся к следующему:

    1. Требуются значительные затраты времени на сбор подходящей информации и последующее обучение машины. В первую очередь касается робототехники;
    2. Ни одна из существующих ныне систем не способна решить фундаментальные математические проблемы (задача коммивояжера и факторизация больших чисел);
    3. Высокая сложность создания, настройки и обслуживания систем. Для этого требуются специалисты с очень высокой квалификацией, оплачивать услуги которых могут позволить себе только очень крупные корпорации;
    4. Для эффективной работы необходимо наличие высокопроизводительных ферм ЭВМ и программного обеспечения. Проблема постепенно решается благодаря увеличению аппаратной мощности графических процессоров: с 1991 по 2015 годы она возросла в миллион раз.

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

    Рекуррентные нейронные сети

    Если соединения между блоками образуют ориентированный цикл (начинаются и заканчиваются на одной и той же вершине графа), то речь идет о рекуррентной нейронной сети :

    • Каждое соединение имеет определенный вес (приоритет);
    • Узлы делятся на два типа: вводные, узлы вывода и скрытые;
    • Информация может передаваться не только по прямой (слой за слоем), но и между нейронами. Так отдельные элементы могут получать данные о предыдущем положении системы;
    • Отличительной чертой является так называемая концепция внимания: машине можно указать на определенные фрагменты данных, требующих углубленной обработки.

    Благодаря особенностям конструкции сеть используется для решения широкого круга задач:

    • Распознавание вербальных и текстовых данных;
    • В то же время, понимание смысла текста затруднено: машина «видит» лишь визуальную картинку без привязки к качественным характеристикам;
    • РНН в настоящее время используется в системах автоматизированного перевода текста (например, Яндекс.Переводчик).

    Если в XX веке умнейшие люди планеты занимались проектированием ракет, то ныне объектом приложения их интеллектуального потенциала являются нейронные сети. Что это, сложно сегодня не знать, ведь о достижении в этой области трубят ведущие СМИ на каждом шагу. Самые известные примеры: голосовой помощник Apple Siri, онлайн-переводчик Google Translate, поисковый движок Яндекса «Палех». И это только начало на пути к полноценному искусственному интеллекту.

    Видео про устройство нейронных сетей

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

    Случайные статьи

    Вверх