Нейронные сети — что это такое и как они работают?

Содержание
  1. Нейросети для чайников
  2. Искусственные нейронные сети — история создания
  3. Как всё началось
  4. Когда эффективны ИНС?
  5. Преимущества и недостатки нейросети
  6. Преимущества нейросети
  7. Недостатки нейронных сетей
  8. Алгоритм работы нейронной сети
  9. О нейроне
  10. Что такое синапс?
  11. Биологическая основа нейросвязей
  12. Виды и классификация нейронных сетей
  13. Сверточные
  14. Рекуррентные
  15. Известные типы сетей
  16. Глубокие сети и мелкие сети
  17. Определение глубоких нейросетей (глубокого обучения) для новичков
  18. Какие задачи глубокое обучение решает сегодня?
  19. Какие есть популярные фреймворки для глубокого обучения?
  20. Создание небольшой нейронной сети с PyTorch
  21. Из чего состоит глубокая нейронная сеть?
  22. Сферы использования нейросетей
  23. От биологических сетей к ИНС
  24. Сравнение искусственной нейронной сети с человеческим мозгом
  25. Этапы решения задач
  26. Сбор данных для обучения
  27. Выбор топологии сети
  28. Экспериментальный подбор характеристик сети
  29. Экспериментальный подбор параметров обучения
  30. Собственно обучение сети
  31. Проверка адекватности обучения
  32. Обучение нейронной сети
  33. Что такое обучение сети?
  34. Обучение с учителем
  35. Обучение без учителя
  36. Нейронные сети — использование в реальной жизни
  37. Заключение

Нейросети для чайников

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

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

ИНС умеет все то же самое, но работает намного медленнее и сравнивая нейросеть с живым существом, ее мощность пока находится на уровне мухи. Все же наш мозг добился отличной работоспособности спустя 50 000 лет эволюции (если мы говорим о Homo sapiens), а нейросети существуют не более 65 лет. Современные технологии сильно шагнули вперед и нет никаких сомнений, что через 10-15 лет нейрокомпьютеры вплотную приблизятся по своим возможностям к человеческому мозгу благодаря стремительному развитию нейросетей и искусственного интеллекта в целом.

Искусственные нейронные сети — история создания

Впервые о нейронных сетях начали говорить в далеких 50-х годах прошлого века. В период с 1943 по 1950 год были представлены миру первые две основополагающие ученые работы. Одна из них — статья 1943 года от двух выдающихся ученых Уорена Маккалока и Уолтера Питтса освещала математическую модель нейронной сети, а в 1949 году канадский нейропсихолог Дональд Хебб выпустил книгу «Организация поведения», в которой было подробное описание процесса самообучения ИНС.

Позднее, в 1957 году известный американский ученый Фрэнк Розенблатт изобрел перцептрон — математическую (компьютерную) модель обработки информации человеческим мозгом. Данная разработка уже в те годы умела прогнозировать погоду и распознавать образы, однако вскоре перцептрон жестко раскритиковали из-за скандальной работы Марвина Минского. В 1969 году он выпустил статью, в которой разъяснялось, какие задачи перцептроном не могут быть решены и при каких условиях его работа неэффективна. После этого интерес к нейросетям угас, но не на долго.

В 1974 году Пол Вербос разработал алгоритм обратного распространения ошибки, который используется и по сей день для обучения ИНС. Начиная с 1985 года Джон Хопфилд предлагает миру свое виденье устройства и работы нейросети, которая способна решать некоторые виды задач. Именно работы Джона Хопфилда вновь разогревают нешуточный интерес мировой общественности к искусственным нейронным сетям. В 90-е годы прошлого века алгоритм обратного распространения ошибки получил существенное развитие, за счет чего былая критика Минского касательно неработоспособности сетей была окончательно опровергнута. На сегодняшний день ИНС является главным подразделом машинного обучения.

Как всё началось

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

Идею искусственной нейронной сети впервые описали математик Уолтер Питтс и нейропсихолог Уоррен Мак-Каллок в 1943 году. Их математическая модель упрощала понимание деятельности мозга до цепи взаимосвязанных элементов, каждый из которых способен обрабатывать информацию, а затем передавать её последующему элементу. Этими взаимосвязанными элементами были нейроны — устройства, способные оперировать двоичными числами.

Фрэнк Розенблатт, создатель одной из первых моделей нейронной сети — перцептрона

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

Когда эффективны ИНС?

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

Простые и средние по сложности, принцип решения которых известен:

  • легкие уравнения;
  • распечатка документа;
  • запуск программы.

Подобные задачи решаются с помощью обычного ПК.

Мало- среднесложные задачи с частичным знанием решения:

  • прогнозирование ситуации;
  • нахождение погрешности;
  • приблизительные ответ уравнения.

Такие задачи решаются при помощи статистики.

Высокая сложность задачи с неизвестным решением:

  • сложное прогнозирование;
  • распознавание речи;
  • распознавание образов.

Эти задачи решаются только при помощи нейронных сетей. Объясняю:

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

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

Преимущества и недостатки нейросети

К преимуществам искусственной нейронной сети относят:

  • Шум входных сигналов. Чтобы понять, о чем речь, представьте большой стадион со зрителями. Звуки музыки раздаются по всему периметру, люди общаются, смеются, кричат. В это время вы разговариваете с другом на трибуне: слышите посторонние голоса и звуки, но мозг их отметает, давая сосредоточиться только на беседе. Аналогичным качеством обладают и ИНС. Пройдя обучение, нейросети воспринимают только то, что нужно, отметая все лишнее, т. е. посторонние шумы.Виды угроз информационной безопасности: ищем источники и устраняем уязвимости
  • Приспособление к переменам. Например, у вас в телефоне установлена программа, которая долго не обновлялась. Но вот пришли апдейты, появились современные функции. Быстро ознакомившись с информацией, вы готовы начать пользоваться новшествами. Небольшие изменения не вызывают трудностей. Также и у ИНС. Они легко адаптируются к нововведениям, продолжая работу в своем режиме. Функция самообучения одна из важных в нейросетях.
  • Сохранение нейронной сетью работоспособности после отказа одной или нескольких составных частей. Такое умение системы можно сравнить с медицинской операцией. Например, у больного была удалена часть мозга. Благодаря тому, что оставшаяся зона взяла на себя функции удаленной, человек остался работоспособным и имеет возможность полноценно жить. ИНС наделены подобным свойством: если повреждаются некоторые нейроны, то получаемая информация остается логичной и правильной.
  • Высокая скорость работы. Каждый нейрон представляет собой своеобразный микропроцессор. Сеть же состоит из тысяч нейронов, которые взаимодействуют между собой, решая задачи с неимоверной скоростью. Это гораздо быстрее, чем при использовании стандартных методов решения.

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

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

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

Преимущества нейросети

1. Шум входных данных

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

2. Адаптация к изменениям

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

3. Отказоустойчивость

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

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

4. Быстрота работы

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

Недостатки нейронных сетей

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

1. Приблизительный ответ

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

2. Многошаговые решения

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

3. Вычислительные процессы

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

Алгоритм работы нейронной сети

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

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

Каждый из нейронов имеет два основных параметра: входные (input data) и выходные (output data) данные. Входная клетка — это когда input равен output. В других случаях, на месте input образуется информация от суммы всех нейронов предыдущего слоя. Затем при помощи функции активации, она стабилизируется и передается на место output.

Python переменные окружения: виды и способы использования

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

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

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

О нейроне

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

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

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

Формальный нейрон

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

Что вообще делает нейрон? На входе у нас есть некоторые данные. Эти данные передаются по специальным связям-синапсам для дальнейшего суммирования, преобразования и вывода. Каждый синапс имеет свой вес для каждого фактора, на который значение этого фактора умножается. Таким образом, суммирование факторов в сумматоре производится взвешенное. Результат этого суммирования затем преобразуется с помощью активационной функции, и информация передается по специальной связи-аксону для дальнейшего использования. Если синапсов у нейрона может быть много, то аксон — только один.

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

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

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

Синапс - связь между двумя нейронами

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

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

Биологическая основа нейросвязей

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

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

Нейронные связи

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

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

Но рассматривать всё это — как там думает нейрон, затухнет ли сигнал, когда он придет или не придет в IT не стали. А что голову морочить? И просто построили упрощенную модель.

В этой модели можно выделить две основные составляющие:

  • Алгоритм. В биологии нейрон думает. В программировании «думанье» заменяется алгоритмом — то есть набором команд. Например — если на вход пришла 1 отправь 0. Вот и все «мозги» нашего нейрона.
  • Вес решения. Все связи, затухания и т.д. решили заменить «весом». Вес это как сила решения, его важность. Это просто величина, чаще число. Нашему нейрону приходит решение с определенным весом, нашему нейрону приходит число. И если оно больше другого пришедшего числа то оно важнее. Это как пример.

Итого: есть алгоритм и есть вес решения. Это всё что нужно для построения простейшей нейросети.

Виды и классификация нейронных сетей

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

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

Принцип применения

Обучение с учителем (+) или без(-) или смешанное (с)

Сфера применения

Перцептрон Розенблатта

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

+

Практически любая сфера применения, кроме оптимизации информации

Хопфилда

Сжатие данных и ассоциативная память

Строение компьютерных систем

Кохонена

Кластеризация, сжатие данных, анализ данных, оптимизация

Финансы, базы данных

Радиально-базисных функций (RBF-сеть)

Принятие решений и управление, аппроксимация, прогнозирование

с

Управленческие структуры, нейроуправление

Свёрточная

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

+

Обработка графических данных

Импульсная

Принятие решение, распознавание образов, анализ данных

с

Протезирование, робототехника, телекоммуникации, компьютерное зрение

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

Сверточные

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

Основные характеристики: 

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

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

Рекуррентные

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

Известные типы сетей

  • Персептрон Розенблатта;
  • Многослойный перцептрон;
  • Сеть Джордана;
  • Сеть Элмана;
  • Сеть Хэмминга;
  • Сеть Ворда;
  • Сеть Хопфилда;
  • Сеть Кохонена;
  • Когнитрон;
  • Неокогнитрон;
  • Хаотическая нейронная сеть;
  • Осцилляторная нейронная сеть;
  • Сеть встречного распространения;
  • Сеть радиальных базисных функций (RBF-сеть);
  • Сеть обобщенной регрессии;
  • Вероятностная сеть;
  • Сиамская нейронная сеть;
  • Сети адаптивного резонанса.

Глубокие сети и мелкие сети

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

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

Точность предсказания нейронной сети зависит от ее веса и смещения.

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

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

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

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

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

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

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

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

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

Точность правильного предсказания стала настолько точной, что в последнее время на конкурсе Google Pattern Recognition Challenge человек сильно ударил.

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

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

Определение глубоких нейросетей (глубокого обучения) для новичков

Попытка 1

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

Сложно звучит? Давайте разобьём это определение на отдельные слова и составим более простое объяснение. Начнём с искусственного интеллекта, или ИИ.

Искусственный интеллект (ИИ) в наиболее широком смысле — это разум, встроенный в машину. Обычно машины глупые, поэтому, чтобы сделать их умнее, мы внедряем в них интеллект — в результате машина может самостоятельно принимать решения. К примеру, стиральная машина определяет необходимый объём воды, а также требуемое время для замачивания, стирки и отжима. Таким образом, она принимает решение, основываясь на конкретных вводных условиях, а значит делает свою работу разумнее. Или, например, банкомат, который выдаёт нужную вам сумму, составляя правильную комбинацию из имеющихся в нём банкнот. Такой интеллект внедряется в машины искусственным путём — отсюда и название “искусственный интеллект”.

Важно отметить, что интеллект здесь запрограммирован явно, то есть создан на основе подробного списка правил вида “если…, то…”. Инженер-проектировщик тщательно продумал все возможные комбинации и создал систему, которая принимает решения, проходясь по цепочке правил. А что если нам нужно внедрить интеллект в машину без явного программирования, то есть, чтобы машина училась сама? Здесь-то мы и подходим к теме машинного обучения.

Машинное обучение — это процесс внедрения интеллекта в систему или машину без явного программирования.

— Эндрю Ын, адъюнкт-профессор Стэнфордского университета

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

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

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

Попытка 2

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

Стало гораздо понятнее, правда? 

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

Какие задачи глубокое обучение решает сегодня?

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

  • популярные виртуальные помощники Siri/Alexa/Google Assistant;
  • предложение отметить друга на только что загруженной фотографии в Facebook;
  • автономное вождение в автомобилях Tesla;
  • фильтр с кошачьими мордами в Snapchat;
  • рекомендации в Amazon и Netflix;
  • недавно выпущенные, но получившие вирусную популярность приложения для обработки фото —  FaceApp и Prisma .

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

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

Какие есть популярные фреймворки для глубокого обучения?

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

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

Низкоуровневые фреймворки:

  1. TensorFlow
  2. MxNet
  3. PyTorch

Высокоуровневые фреймворки:

  1. Keras (использует TensorFlow на бэкенде)
  2. Gluon (использует MxNet на бэкенде)

Самый популярный сейчас фреймворк — TensorFlow от Google. Keras также довольно популярен благодаря быстрому прототипированию моделей глубокого обучения и, следовательно, упрощению работы. PyTorch от Facebook — ещё один фреймворк, который стремительно догоняет конкурентов. PyTorch может стать прекрасным выбором для многих специалистов по ИИ: он затрачивает меньше времени на обучение, чем TensorFlow, и может легко применяться на всех этапах создания модели глубокого обучения — от прототипирования до внедрения.

В этом руководстве для внедрения небольшой нейросети мы предпочтём именно PyTorch. Но прежде чем сделать свой выбор фреймворка изучите и другие варианты. В этой статье (eng) приводится отличное сравнение и детальное описание разных фреймворков — это поможет вам в выборе. Однако в ней нет введения в PyTorch — для этого я рекомендую ознакомиться с официальной документацией.

Создание небольшой нейронной сети с PyTorch

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

Из чего состоит глубокая нейронная сеть?

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


Глубокая нейросеть с N скрытых слоёв Neuron — Нейрон Input Data — Входные данные Output — Выход Layer — Слой Output Layer — Выходной слой Hidden Layer — Скрытый слой

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

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

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

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

Теперь, когда структура нейросетей понятна, давайте разберёмся, как происходит обучение. Из входных данных, которые мы предоставляем сети, на выходе получается прогноз (с серией матричных умножений), который может быть верным или неверным. В зависимости от выхода мы можем потребовать от сети более точных прогнозов, и система будет обучаться, меняя значения весов для нейронных связей. Чтобы правильно дать сети обратную связь и определить следующий шаг для внесения изменений, мы используем элегантный математический алгоритм “обратного распространения ошибок”. Повторение процесса шаг за шагом несколько раз с нарастающим объёмом данных позволяет нейросети обновлять веса соответствующим образом и создаёт систему, в которой сеть может делать прогноз на основе созданных ею через веса и связи правил.

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

Сферы использования нейросетей

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

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

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

Защита интеллектуальной собственности

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

Сферы использования нейросетей
Сферы использования нейросетей

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

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

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

От биологических сетей к ИНС

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

Таблица. Машина фон Неймана по сравнению с биологической нейронной системой

  Машина фон Неймана <> Биологическая нейронная система
Процессор Сложный Простой
Высокоскоростной Низкоскоростной
Один или несколько Большое количество
Память Отделена от процессора Интегрирована в процессор
Локализована Распределенная
Адресация не по содержанию Адресация по содержанию
Вычисления Централизованные Распределенные
Последовательные Параллельные
Хранимые программы Самообучение
Надежность Высокая уязвимость Живучесть
Специализация Численные и символьные oперации Проблемы восприятия
Среда функционирования Строго определенная Плохо определенная
Строго ограниченная Без ограничений

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

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

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

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

Кластеризация/категоризация. При решении задачи кластеризации, которая известна также как классификация образов «без учителя», отсутствует обучающая выборка с метками классов. Алгоритм кластеризации основан на подобии образов и размещает близкие образы в один кластер. Известны случаи применения кластеризации для извлечения знаний, сжатия данных и исследования свойств данных.

Аппроксимация функций. Предположим, что имеется обучающая выборка ((x1,y1), (x2,y2)…, (xn,yn)) (пары данных вход-выход), которая генерируется неизвестной функцией (x), искаженной шумом. Задача аппроксимации состоит в нахождении оценки неизвестной функции (x). Аппроксимация функций необходима при решении многочисленных инженерных и научных задач моделирования.

Предсказание/прогноз. Пусть заданы n дискретных отсчетов {y(t1), y(t2)…, y(tn)} в последовательные моменты времени t1, t2,…, tn . Задача состоит в предсказании значения y(tn+1) в некоторый будущий момент времени tn+1. Предсказание/прогноз имеют значительное влияние на принятие решений в бизнесе, науке и технике. Предсказание цен на фондовой бирже и прогноз погоды являются типичными приложениями техники предсказания/прогноза.

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

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

Управление. Рассмотрим динамическую систему, заданную совокупностью {u(t), y(t)}, где u(t) является входным управляющим воздействием, а y(t) — выходом системы в момент времени t. В системах управления с эталонной моделью целью управления является расчет такого входного воздействия u(t), при котором система следует по желаемой траектории, диктуемой эталонной моделью. Примером является оптимальное управление двигателем.

Сравнение искусственной нейронной сети с человеческим мозгом

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

Сравнение искусственной нейронной сети с человеческим мозгом
Сравнение искусственной нейронной сети с человеческим мозгом

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

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

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

В искусственной нейронной сети на этом моменте заострять внимание не стали. Просто построили упрощенную модель и выделили в ней две основные составляющие: алгоритм и вес решения:

  • Если в биологии нейрон наделен способностью «думать», то в программировании он следует алгоритмам и выполняет набор заданных команд. Пример: если поступил сигнал «1», то нужно отправить «0».
  • Связи между нейронами и их качество заменили «весом» — своего рода важностью решения. Этот параметр измеряется числом, конкретной величиной. Нейрон получает сигнал определенно веса: если его значение выше другого, то значит и важнее. Это как математический пример, где есть задача и вес решения. Из этого строятся простейшие нейросети.

Этапы решения задач

  • Сбор данных для обучения;
  • Подготовка и нормализация данных;
  • Выбор топологии сети;
  • Экспериментальный подбор характеристик сети;
  • Экспериментальный подбор параметров обучения;
  • Собственно обучение;
  • Проверка адекватности обучения;
  • Корректировка параметров, окончательное обучение;
  • Вербализация сети [11] с целью дальнейшего использования.

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

Сбор данных для обучения

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

  • Репрезентативность — данные должны иллюстрировать истинное положение вещей в предметной области;
  • Непротиворечивость — противоречивые данные в обучающей выборке приведут к плохому качеству обучения сети;

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

  • Нормировка выполняется, когда на различные входы подаются данные разной размерности. Например, на первый вход сети подается величины со значениями от нуля до единицы, а на второй — от ста до тысячи. При отсутствии нормировки значения на втором входе будут всегда оказывать существенно большее влияние на выход сети, чем значения на первом входе. При нормировке размерности всех входных и выходных данных сводятся воедино;
  • Квантование выполняется над непрерывными величинами, для которых выделяется конечный набор дискретных значений. Например, квантование используют для задания частот звуковых сигналов при распознавании речи;
  • Фильтрация выполняется для «зашумленных» данных.

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

Выбор топологии сети

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

Экспериментальный подбор характеристик сети

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

Экспериментальный подбор параметров обучения

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

Собственно обучение сети

В процессе обучения сеть в определенном порядке просматривает обучающую выборку. Порядок просмотра может быть последовательным, случайным и т. д. Некоторые сети, обучающиеся без учителя, например, сети Хопфилда просматривают выборку только один раз. Другие, например, сети Кохонена, а также сети, обучающиеся с учителем, просматривают выборку множество раз, при этом один полный проход по выборке называется эпохой обучения. При обучении с учителем набор исходных данных делят на две части — собственно обучающую выборку и тестовые данные; принцип разделения может быть произвольным. Обучающие данные подаются сети для обучения, а проверочные используются для расчета ошибки сети (проверочные данные никогда для обучения сети не применяются). Таким образом, если на проверочных данных ошибка уменьшается, то сеть действительно выполняет обобщение. Если ошибка на обучающих данных продолжает уменьшаться, а ошибка на тестовых данных увеличивается, значит, сеть перестала выполнять обобщение и просто «запоминает» обучающие данные. Это явление называется переобучением сети или оверфиттингом. В таких случаях обучение обычно прекращают. В процессе обучения могут проявиться другие проблемы, такие как паралич или попадание сети в локальный минимум поверхности ошибок. Невозможно заранее предсказать проявление той или иной проблемы, равно как и дать однозначные рекомендации к их разрешению.

Проверка адекватности обучения

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

Обучение нейронной сети

Теперь давайте чуть более подробно рассмотрим вопрос обучения нейронной сети. Что это такое? И каким образом это происходит?

Что такое обучение сети?

Искусственная нейронная сеть – это совокупность искусственных нейронов. Теперь давайте возьмем, например, 100 нейронов и соединим их друг с другом. Ясно, что при подаче сигнала на вход, мы получим что-то бессмысленное на выходе.

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

Что мы можем менять в нейронной сети?

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

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

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

Остается только один вариант – менять веса связей.

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

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

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

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

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

Обучающая выборка (Training set) — конечный набор входных сигналов (иногда вместе с правильными выходными сигналами), по которым происходит обучение сети.

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

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

Тестовая выборка (Testing set) — конечный набор входных сигналов (иногда вместе с правильными выходными сигналами), по которым происходит оценка качества работы сети.

Мы поняли, что такое «обучение сети» – подбор правильного набора весов. Теперь возникает вопрос – а как можно обучать сеть? В самом общем случае есть два подхода, приводящие к разным результатам: обучение с учителем и обучение без учителя.

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

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

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

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

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

Где взять правильные ответы?

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

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

И так далее…

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

Обучение без учителя

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

Что же происходит при таком обучении сети? Оказывается, что при таком «обучении» сеть начинает выделять классы подаваемых на вход сигналов. Короче говоря – сеть начинает кластеризацию.

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

Обучение без учителя (Unsupervised learning) — вид обучения сети, при котором сеть самостоятельно классифицирует входные сигналы. Правильные (эталонные) выходные сигналы не демонстрируются.

Нейронные сети — использование в реальной жизни

Искусственные нейронные сети используют практически везде. Например, все вы знаете о Google картах с режимом Street View. Так вот, при просмотре улиц каждый из нас замечал замазанные лица людей и номера машин — все это выполнили нейронные сети. Также при наборе текста посредством голоса (распознавание речи) используются нейронные сети. На просторах интернета существует множество развлекательных проектов с применением нейронных сетей. Это и приложение MSQRD — наложение всевозможных масок на лицо в реальном времени, и Андроид-приложение Mlvch, которое обрабатывает картинки при помощи ИНС, и многое другое.

Более серьезное применение нейроных сетей можно увидеть в яндексовском приложении Авто.ру, которое распознает автомобили на снимках; CaptionBot от Майкрософт — нейросеть автоматически придумывает подпись к изображениям, исходя из содержания картинок; WhatDog — распознавание породы собак, изображенных на фотографиях и т.п.

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

Заключение

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

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

Что же касается разговоров Масков и Цукербергов об искусственном интеллекте, который опасен для человечества, это не более, чем PR. До этого еще далеко.

tett
Зарплатто.ру - сайт о зарплатах и доходах, деньгах и финансах