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

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

Например, в 2016 году нейронная сеть Google AlphaGo одержала победу над одним из лучших профессиональных игроков в го в мире в серии 4–1. YouTube также объявил, что они будут использовать нейронные сети, чтобы лучше понять его видео

, Десятки других историй могут прийти на ум.

Но что такое нейронная сеть? Как это работает? И почему он так популярен в машинном обучении?

Компьютер как мозг

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

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

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

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

последовательная или параллельная обработкаИзображение предоставлено: ExplainThatStuff

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

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

Способность учиться

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

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

убедитесь, что они работают правильно.

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

От нейронов к узлам

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

архитектура нейронной сети

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

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

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

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

От синапсов к соединениям

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

нейронный вес нетто

Как вы можете видеть, вес соединения B выше, чем у соединений A и C. Допустим, скрытый узел 4 будет срабатывать только в том случае, если он получит общий входной сигнал 2 или больше. Это означает, что если 1 или 3 стреляют самостоятельно, то 4 не сработают, но 1 и 3 вместе приведут в действие узел. Узел 2 также может запускать узел самостоятельно через соединение B.

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

Используя вышеуказанные соединения и веса, узел 4 может срабатывать только в том случае, если температура ниже 0 ° F и ветер выше 30 миль в час, или он срабатывает, если вероятность снега превышает 70%. Температура будет подаваться в узел 1, наматывается на узел 3, а вероятность попадания снега в узел 2. Теперь узел 4 может учитывать все это при определении того, какой сигнал отправить на выходной слой.

Лучше, чем простая логика

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

пример нейронной сетиImage Credit: Нейронные сети и глубокое обучение Майкл А. Нильсен

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

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

глубокая нейронная сетьImage Credit: Нейронные сети и глубокое обучение Майкл А. Нильсен

Исправление ошибки

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

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

, На входе может быть изображение автомобиля, а правильным выводом будет слово «автомобиль».

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

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

Это упрощение, но нейронные сети могут изучать очень сложные операции, используя аналогичные принципы.

Постоянное улучшение

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

Это может быть так же просто, как распознавание изображений или так же сложно, как играть в Го.

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

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

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

Вопросы глубины

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

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

нейронная сеткаИзображение предоставлено: Song Han

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

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

Приложения нейронной сети

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

Для чего мы можем использовать эти увлекательные системы?

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

Поэтому, когда вы спрашиваете Сири

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

Сири значок

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

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

Распознавание изображений, оптическое распознавание символов

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

Будущее нейронных сетей

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

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

Знаете ли вы о каких-либо интересных использованиях нейронных сетей? У вас есть опыт работы с ними? Что вы находите наиболее интересным в этой технологии? Поделитесь своими мыслями в комментариях ниже!

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