Введение в нейронные сети: структура и принципы
Ключевые тезисы:
Нейронная сеть — это сложная функция с тысячами параметров, способная решать задачи, сложные для прямого программирования (например, распознавание рукописных цифр).
Основная идея заимствована из биологии: сеть состоит из слоёв связанных нейронов, где активация одного слоя определяет активацию следующего.
Работа сети сводится к настройке весов и сдвигов (всего ~13 000 параметров в примере) в процессе обучения.
Слоистая структура позволяет сети выявлять иерархические признаки: от пикселей → к граням → к компонентам цифр → к самой цифре.
Задача-пример: распознавание рукописных цифр
- Вход: изображение 28×28 пикселей (в оттенках серого).
- Выход: число от 0 до 9 (определённая цифра).
- Прямое написание алгоритма для этой задачи крайне сложно, что демонстрирует актуальность машинного обучения.
Структура простейшей нейронной сети
Сеть для примера состоит из четырёх слоёв:
- Входной слой: 784 нейрона (по одному на каждый пиксель 28×28). Активация каждого нейрона — число от 0 (чёрный) до 1 (белый), выражающее яркость пикселя.
- Два скрытых слоя: по 16 нейронов в каждом (количество выбрано условно для наглядности).
- Выходной слой: 10 нейронов. Активация каждого показывает уверенность сети, что на входе соответствующая цифра (от 0 до 9).
Как может работать распознавание? (Идеальная модель)
Сеть может выявлять признаки иерархически:
- Второй слой распознаёт мелкие грани (черточки, кривые).
- Третий слой комбинирует грани в компоненты цифр (кружок, вертикальная линия).
- Выходной слой комбинирует компоненты в целые цифры.
Пример: Цифра 9 = кружок сверху + вертикальная линия справа. Нейрон, отвечающий за "кружок сверху", активируется и для 9, и для 8.
Механизм связи между слоями: Веса и сдвиги
Активация нейрона в следующем слое вычисляется на основе нейронов предыдущего:
Взвешенная сумма: Каждое соединение между нейронами имеет вес (число). Активации предыдущего слоя умножаются на эти веса и суммируются.
- Положительные веса (зелёные на визуализации) "поощряют" активацию.
- Отрицательные веса (красные) "подавляют" её.
Пример для нейрона, ищущего грань: Можно задать положительные веса для пикселей в центре области и отрицательные — для окружающих. Тогда нейрон активируется сильно, если центр ярче окружения (как у грани).
Сдвиг (bias): К взвешенной сумме прибавляется число (сдвиг). Оно задаёт порог, который должен быть превышен, чтобы нейрон "зажёгся".
Функция активации: Полученная сумма "сжимается" в диапазон от 0 до 1.
- Исторически использовалась сигмоида (логистическая кривая).
- В современных сетях чаще применяется ReLU (Rectified Linear Unit):
max(0, x). Она работает быстрее и лучше для глубоких сетей.
Масштаб параметров и компактная запись
- Между первым (784 нейрона) и вторым (16 нейронов) слоями уже есть 784 × 16 весов + 16 сдвигов.
- Вся рассмотренная сеть содержит около 13 000 параметров (весов и сдвигов). Обучение — это поиск их правильных значений.
- Компактное представление через линейную алгебру:
- Активации слоя → вектор.
- Веса → матрица.
- Переход между слоями выражается как:
Активации_нового_слоя = σ(Веса × Активации_старого_слоя + Сдвиги), где σ — функция активации (сигмоида или ReLU).
Нейронная сеть как функция
- Вся сеть — это одна сложная функция, которая:
- Принимает на вход 784 числа (яркости пикселей).
- Возвращает 10 чисел (уверенность в каждой цифре).
- Внутри содержит ~13 000 настраиваемых параметров и множество матричных умножений.
Выводы:
Нейронная сеть — не "чёрный ящик", а конкретная математическая конструкция, которую можно понимать и анализировать.
Её работа определяется весами и сдвигами, а обучение — процесс их настройки на данных.
Слоистая структура позволяет сети строить иерархию абстракций (пиксели → признаки → объекты), что является мощным подходом не только для распознавания образов, но и для многих других интеллектуальных задач (распознавание речи и т.д.).
Понимание базовой структуры и математики необходимо для освоения более современных и сложных архитектур.