Объяснение технологий

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

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

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

Например, в 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

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

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

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

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

Для чего мы можем использовать эти захватывающие системы?

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

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

Сири значок

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

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

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

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

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

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

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

Похожие посты
Объяснение технологий

Как работает жесткий диск? [Технология объяснила]

Объяснение технологий

Что такое программное обеспечение с открытым исходным кодом? [MakeUseOf Объясняет]

Объяснение технологий

Разрешения графического дисплея - что означают цифры? [MakeUseOf Объясняет]

Объяснение технологий

Как переформатировать внешний жесткий диск, не теряя на нем все