Computer science Data Science DL Термины

Нейронные сети. Основы.

Общие представления о современных нейронных сетях.

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

Простое определение

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

Сложное определение

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

Процесс обучения – это итеративный процесс вычисления весов для каждой связи между нейронами.

Из чего состоит нейросеть

Входные данные – это числовой вектор, полученный в результате предобработки исходных данных (табличные данные, изображение, звук и т.д.).

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

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

Нейроны – это математическое выражение вида X = f(b + w1*x1 + w2*x2 + … + wn*xn).

X – это результат работы нейрона.

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

b + w1*x1 + w2*x2 + … + wn*xn – это выражение означает линейную комбинацию (скалярное произведение) всех входов в нейрон с предыдущих нейронов, умноженных на их индивидуальные веса.

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

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

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

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

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

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

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

Выходной слой возвращает:

  • Для задачи классификации на N классов – вектор вероятностей длиной N, функция активации Softmax
  • Для задачи бинарной классификации – вектор длиной 1 с выводом вероятности от 0 до 1, функция активации Sigmoid
  • Для задачи регрессии – вектор он 1 до N с выводом конкретных числовых значений, функция активации отсутствует
  • Для построения языковой модели – вектор размером с размер словаря, с выводом вероятностей каждого слова, функция активации Softmax
  • Для задачи сегментации изображений – тензор размером WxHxC с выводом карты классов, функция активации Softmax (по каналам)

У нейросети может быть 2 и более выходных слоев. Такие нейросети называют multi-head (многоголовыми). Такая архитектура используется для решения сложных комплексных задач, когда, например, один выходной слой делает классификацию изображения, а второй – координаты рамки (задача регрессии).

Как работает нейросеть

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

Входные данныевходной слой

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

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

Проход данных через скрытые слои

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

И так далее.

Выход нейронной сети

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

Алгоритм обратного распространения ошибки

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

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

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

Какие бывают нейросети

Разновидности нейросетей называют архитектурами. Наиболее распространены в настоящее время следующие архитектуры:

Полносвязные нейросети (Fully Connected Neural Networks, FNN)

Каждый нейрон слоя соединен со всеми нейронами соседнего слоя. Является основой для работы с табличными данными.

Сверточные нейросети (Convolutional Neural Networks, CNN)

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

Рекуррентные нейросети (Concurrent Neural Networks, RNN)

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

Трансформеры (Transformers)

Архитектура основана на механизме внимания, который определяет, на какие части входной последовательности обращать внимание. Является стандартом для современного NLP. Не использует рекуррентные слои, так как вся последовательность обрабатывается параллельно. Механизм self-attention вычисляет вес значимости элемента относительно других.

Автоэнкодеры (Autoencoders)

Сети для обучения сжатию и восстановлению данных (без учителя). Состоят из энкодера (сжимает данные в “латентное пространство”) и декодера (восстанавливает данные).

Применяются для:

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

Важные разновидности – вариационные автоэнкодеры (VAE) — для генерации новых данных.

Генеративно-состязательные сети (Generative Adversarial Networks, GAN)

Графовые нейросети (Graph Neural Networks, GNN)

Нейросети с вниманием (Attention Based Networks, ABN)

Капсульные сети (Capsule Networks)

Гибридные сети

Сочетание разных типов нейросетей в одной архитектуре. Например:

  • CNN + RNN – при работе с видео
  • Transformer + CNN – в компьютерном зрении

Типы нейросетей и области их применения

FNN – классика для табличных данных

CNN – для работы с изображениями

RNN/LSTM/GRU – для последовательностей (тексты, временные ряды)

Transformers – для текстов и в наше время для всех остальных задач

GAN/VAE – для генерации данных

GNN – для графов

Вставить формулу как
Блок
Строка
Дополнительные настройки
Цвет формулы
Цвет текста
#333333
Используйте LaTeX для набора формулы
Предпросмотр
\({}\)
Формула не набрана
Вставить