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