Многослойная сеть: идея скрытых слоёв

Урок вводит архитектуру многослойной сети и объясняет роль скрытых слоёв.

Многослойный перцептрон (MLP) — это сеть из нескольких слоёв нейронов, где выход каждого слоя становится входом следующего.

Из чего состоит сеть

Типичная полносвязная сеть имеет три типа слоёв:

  • Входной слой — это просто признаки примера (числа на входе). Своих весов у него нет.
  • Скрытые слои — один или несколько слоёв нейронов между входом и выходом. Именно здесь происходит «магия»: сеть учится строить полезные промежуточные представления.
  • Выходной слой — выдаёт итоговый ответ: одно число (регрессия), вероятность (бинарная классификация) или набор вероятностей по классам.

«Полносвязная» (fully connected, dense) означает, что каждый нейрон слоя соединён со всеми нейронами предыдущего слоя.

Зачем нужны скрытые слои

В прошлом уроке мы выяснили: один слой проводит только прямые границы. Скрытый слой снимает это ограничение. Каждый нейрон скрытого слоя проводит свою прямую, а следующий слой комбинирует эти прямые в сложную, изогнутую границу. Чем больше скрытых слоёв — тем более хитрые зависимости сеть способна выразить. Отсюда и слово глубокое в «глубоком обучении»: глубина — это число слоёв.

Иерархия признаков

Удобная интуиция: ранние слои улавливают простые признаки, а поздние собирают из них сложные. На картинках это особенно наглядно:

СлойЧто распознаёт (для изображений)
1-й скрытыйкрая и перепады яркости
2-й скрытыйуглы, дуги, простые формы
3-й скрытыйчасти объектов: глаз, колесо, буква
выходнойобъект целиком: кот, машина, цифра

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

Схема прохода через сеть

Покажем структуру маленькой сети 2 → 2 → 1 (два входа, два нейрона в скрытом слое, один выход), просто посчитав, сколько в ней обучаемых параметров. Это поможет почувствовать масштаб.

def count_params(layers):
    # layers — список размеров: [вход, скрытый1, ..., выход]
    total = 0
    for i in range(len(layers) - 1):
        n_in  = layers[i]
        n_out = layers[i + 1]
        weights = n_in * n_out      # веса между слоями
        biases  = n_out             # по смещению на нейрон
        total += weights + biases
        print(f"Слой {i+1}: {n_in}->{n_out}, весов {weights}, смещений {biases}")
    return total

print("Сеть для XOR (2->2->1):")
print("Всего параметров:", count_params([2, 2, 1]))
print()
print("Сеть побольше (784->128->10):")
print("Всего параметров:", count_params([784, 128, 10]))

Вывод:

Сеть для XOR (2->2->1):
Слой 1: 2->2, весов 4, смещений 2
Слой 2: 2->1, весов 2, смещений 1
Всего параметров: 9

Сеть побольше (784->128->10):
Слой 1: 784->128, весов 100352, смещений 128
Слой 2: 128->10, весов 1280, смещений 10
Всего параметров: 101770

Крошечная сеть для XOR — всего 9 чисел. А сеть для распознавания рукописных цифр (вход 28×28=784 пикселя) — уже больше ста тысяч параметров. Современные модели исчисляют параметры миллиардами. Все они обучаются одним и тем же механизмом, который мы разберём дальше.

Итог

  • MLP = входной слой + скрытые слои + выходной слой.
  • Скрытые слои строят иерархию признаков от простых к сложным.
  • Глубина (число слоёв) задаёт выразительную мощность сети.
  • Число параметров быстро растёт с размером слоёв.
Проверьте себя
1. Что такое скрытый слой?
AСлой, который скрыт от обучения
BСлой нейронов между входом и выходом, строящий промежуточные представления
CРезервная копия выходного слоя
DСлой без весов
2. Почему направление называют «глубоким» обучением?
AИз-за глубины обучающих данных
BИз-за большого числа слоёв (глубины сети)
CПотому что обучение идёт глубоко ночью
DИз-за глубокой математики
3. Сколько обучаемых параметров у сети 2→2→1 из примера?
A4
B6
C9
D12
Поддержать проект