НЕЙРОННЫЕ СЕТИ: ИЗ БИОЛОГИИ В DS

НЕЙРОННЫЕ СЕТИ: ИЗ БИОЛОГИИ В DS

karpov.courses

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


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

● входной слой принимает данные,

● скрытые слои производят вычисления,

● выходной слой выводит результат.


Каждый нейрон принадлежит к какому-то одному слою и связан синапсами со всеми нейронами соседних слоёв, при этом внутри слоёв связи отсутствуют.

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

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


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

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

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


Но как, собственно, обучаются нейронные сети?


Как правило — с помощью supervised learning (обучения с учителем), о котором мы не раз писали в контексте разбора ML-алгоритмов.

Тезисно напомним его суть: 

● В процессе обучения мы пропускаем через нейросеть обучающую выборку: наборы пар «числовые признаки объекта + правильный ответ» — и она на ней учится.

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

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


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


Почему нейросети — крутая и перспективная сфера DS?


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





Report Page