Искусственная нейронная сеть

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

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

Обзор

Есть два способа представить себе нейронную сеть. Первый - как человеческий мозг. Второй - как математическое уравнение.

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

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

A c t i v a t i o n ( W ( e i g h t s ) ∗ X + b ( i a s ) ) {\displaystyle Активация(W(eights)*X+b(ias))} {\displaystyle Activation(W(eights)*X+b(ias))}

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

Пример

Рассмотрим программу, которая проверяет, жив ли человек. Она проверяет две вещи - пульс и дыхание. Если у человека есть пульс или он дышит, программа выводит "жив", в противном случае - "мертв". В программе, которая не обучается со временем, это было бы записано как:

function isAlive(pulse, breathing) { if(pulse || breathing) { return true; } else { return false; } }

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

Single neuron which takes the values of pulse (true/false) and breathing (true/false), and outputs value of alive (true/false).

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

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

Методы обучения

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

Недавно исследовательская группа из Университета Хартфордшира (Великобритания) использовала обучение с подкреплением, чтобы заставить человекоподобного робота iCub научиться произносить простые слова с помощью лепета.

Вопросы и ответы

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


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

В: Как нейронная сеть сопоставляется с биологическим мозгом?


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

В: Какой тип программ может создавать искусственно интеллектуальные программы?


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

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


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

В: Что нужно для того, чтобы глубокое обучение было успешным?


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

В: Как машинное обучение связано с созданием искусственно интеллектуальных программ?



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

AlegsaOnline.com - 2020 / 2023 - License CC3