Робинзон готовится печь хлеб, но между зерном и лепёшкой обнаруживается целое хозяйство. Нужна ступка, чтобы получить муку, потом придётся замесить тесто и придумать, где его испечь. Пест — тяжёлая палка для толчения — важен именно в этой цепочке: следующему действию нужен подготовленный материал.
В разговоре о нейросети тоже полезно спросить: в каком виде данные понадобятся следующему действию? На красивой картинке видны входы, несколько рядов кружочков и ответ. Стрелки стройными колоннами уходят в середину, а дальше возвращаются уже с готовым решением. Хочется заглянуть им за спину и понять, что произошло по дороге. Для этого проследим два небольших вычисления от начала до конца.
Для примера хватит бумаги и карандаша. Нарисуем четыре карточки, на каждой два окошка. Они могут быть пустыми или закрашенными. Наша игра: отмечать карточку, если закрашено ровно одно окошко. На подходящие карточки кладём зелёную фишку, остальные оставляем пустыми. Получилась семейная лаборатория: четыре листка, две фишки, оборудование со вчерашнего чаепития пока сдвигаем локтем. Зато результат уже перед глазами, и с ним можно сверить любое объяснение.
Где работает скрытый слой в нейросети
Назовём состояние левого окошка первым входом, правого — вторым. Пустое обозначим нулём, закрашенное — единицей. У двух окошек всего четыре сочетания: оба пусты; правое закрашено; левое закрашено; оба закрашены.
Входные признаки — это те два числа, с которых начинается разбор. Итоговая метка тоже будет числом: единица означает «отметить», ноль — «не отмечать». Между ними мы сейчас построим два промежуточных признака. Их значения и станут маленьким скрытым слоем.
В уроке Google о слоях и узлах скрытыми называют слои между входным и выходным. Следующий слой получает результаты предыдущего. Слово «скрытый» здесь указывает на положение в устройстве сети: промежуточный результат можно вычислить и рассмотреть.
Пока ни одного промежуточного вычисления у нас нет. Есть только исходные карточки и правило игры. Сначала выясним, почему привычного простого разделения для них мало.
Четыре точки упрямятся
Представим карточки точками на листе. По горизонтали отложим левое окошко, по вертикали — правое. Нули и единицы дадут четыре угла квадрата. Два подходящих случая окажутся в противоположных углах: левое закрашено отдельно и правое закрашено отдельно. В двух других углах оба состояния одинаковы.
Кругом отмечено ровно одно закрашенное окошко. Одна прямая не оставит оба круга по одну сторону и оба креста — по другую.
Попробуйте приложить линейку так, чтобы разделить эти группы. Если отсечь один круг, второй останется среди крестов. Соедините оба круга отрезком, затем оба креста другим отрезком. Они пересекутся в центре квадрата. Если бы одна прямая развела группы по разным сторонам, их отрезки не могли бы так пересечься. На нашей картинке этого избежать нельзя.
Модель, которая просто складывает входы с постоянными коэффициентами и сравнивает сумму с порогом, проводит именно такую прямую границу. Для нашей игры её недостаточно. Это устройство задачи: подходящие случаи лежат наискосок друг от друга.
У правила есть короткое название — исключающее ИЛИ, или XOR. Для двух входов оно означает «есть одно или другое, но не оба вместе». Название пригодится, если захочется найти этот пример в учебнике; четыре карточки по-прежнему объясняют его без справочника.
Два промежуточных вопроса
Посмотрим на те карточки, где лежат зелёные фишки. У одной закрашено только левое окошко, у другой только правое. Значит, можно сначала выделить эти случаи по отдельности. Первый промежуточный вопрос: насколько левое значение больше правого? Второй: насколько правое больше левого? Отрицательные результаты в обоих случаях заменим нулём.
На наших нулях и единицах первый признак срабатывает только на карточке «левое закрашено, правое пусто». Второй — на зеркальной карточке. Если состояния одинаковы, обе разности равны нулю.
Возьмём левое 1 и правое 0. Первое вычисление: 1 − 0 = 1, оставляем единицу. Второе: 0 − 1 = −1, заменяем отрицательное число нулём. Промежуточная пара получилась 1 и 0. На выходе складываем её и получаем 1: карточку отмечаем.
Промежуточный слой выделил два разных случая. Выходу осталось сложить их значения.
Если хочется пройти расчёт с собеседником, откройте DeepSeek и вставьте небольшой запрос. Просите разобрать ту строку, на которой остановились, — готовить программу или покупать подписку для этого не нужно.
Помоги разобраться с маленькой сетью для четырёх карточек.
Два входа x и y принимают значения 0 или 1.
Первый промежуточный признак: x − y, но всё отрицательное
заменяем нулём.
Второй: y − x с той же заменой.
Выход — сумма двух промежуточных признаков.
Сначала разбери только x=1, y=0: обе разности,
замену отрицательного числа нулём и итог.
Объясни обычными словами и дождись моего ответа.
Затем предложи мне самому разобрать зеркальный случай 0,1.
Если я ошибусь, покажи конкретный шаг ошибки.
Проверка первого ответа уже есть над запросом: 1 и −1 превращаются в 1 и 0, сумма равна 1. Если помощник перепутает порядок вычитания, можно назвать точное расхождение: «во второй разности должно быть 0 минус 1». Зелёная фишка здесь суровее экзаменатора: предъявите две разности и сумму, иначе карточка никуда не проходит. Проверка умещается прямо рядом с объяснением.
Что изменяет замена отрицательного нулём
Мы добавили важное действие: после вычитания пропускаем положительный результат и обнуляем отрицательный. Этот приём называется ReLU — так обозначают одну из функций активации. Функция активации преобразует полученное нейроном число перед передачей дальше.
Правило можно записать коротко: ReLU(z) = max(0, z). Из двух чисел, нуля и результата, берём большее. Для −1 получим 0, для 0 — 0, для 1 — 1. Ровно это мы и сделали на карточке.
В уроке Google о функциях активации объясняется, почему сети нужна нелинейность. На нашем примере её легко увидеть: до нуля результат обнуляется, после нуля проходит без изменения. График такого правила имеет излом.
Уберём это действие и просто сложим две разности: (x − y) + (y − x). Они взаимно уничтожатся. На карточке 1,0 это 1 плюс −1, то есть ноль. Зелёную фишку уже некуда поставить, хотя по правилу игры она здесь нужна. Для остальных входов тоже выйдет ноль. Промежуточных действий столько же, а нужного различия больше нет.
Более общая причина такая: цепочка одних линейных преобразований остаётся линейным преобразованием. Дополнительные ряды кружочков сами по себе не решают задачу с нашими диагоналями. Значение имеет то, какие преобразования выполняются между входом и ответом.
Проверим всю маленькую сеть
Теперь можно спокойно пройти четыре строки. Сначала посмотрите на карточку, затем на два промежуточных числа, потом на сумму. Здесь входы и параметры заданы заранее; это ручной разбор устройства, без этапа обучения.
| Левое x | Правое y | Первый признак | Второй признак | Итог |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 0 |
Два разных подходящих входа превратились в промежуточные пары, которые легко объединить суммой.
Посмотрите особенно на оба закрашенных окошка. Если считать только количество закрашенных, их два — больше, чем у остальных. Но нам нужно ровно одно. Две встречные разности дают здесь 0 и 0: одинаковые входы не дают преимущества ни одному окошку.
Если перепутать первый признак со вторым в одной строке, итоговая сумма может случайно остаться верной. Поэтому полезно смотреть обе промежуточные колонки: они показывают, какой путь действительно сработал.
На схеме маленькой сети это два входных узла, один скрытый слой из двух вычисляющих узлов и один выходной. Первый промежуточный узел вычитает правый вход из левого и применяет ReLU; второй делает обратное. Выход складывает их результаты.
Коэффициенты тоже можно назвать, если хочется заглянуть глубже. У первого узла перед входами стоят 1 и −1, у второго — −1 и 1; добавляемое смещение равно нулю. Смещение — отдельное число, которое прибавляют к взвешенной сумме; здесь оно результат не меняет. У выхода оба коэффициента равны 1. Эти числа описывают именно нашу небольшую конструкцию, а не все нейросети.
Почему слой нельзя читать как коробочку с мыслью
В примере мы дали двум промежуточным признакам удобные имена. Их смысл виден, потому что сами выбрали формулы и всего четыре входа. В большой обученной сети похожую подпись нельзя назначать произвольно: одно число может участвовать в разных сочетаниях, которые используют следующие вычисления.
У обучаемой модели параметры подстраиваются по примерам и ошибкам. Мы же специально собрали маленькую сеть с готовыми коэффициентами, чтобы проследить каждое действие. Поэтому таблица показывает работу преобразования, но не рассказывает, как обучение нашло бы именно такие числа.
Слово «скрытый» также не означает, что внутри находится запертый текст с ответом. В этом слое у нас две величины, зависящие от конкретной входной карточки. Поменяли окошки местами — поменялись промежуточные результаты. Постоянными остались выбранные коэффициенты и правило обработки отрицательных чисел.
Разница между слоями и узлами теперь тоже видна. Два узла срабатывают параллельно на одних входах — это один слой шириной два. Два последующих этапа преобразования означали бы другое устройство. Количество кружочков в ряду и количество рядов отвечают на разные вопросы.
Из этого не следует, что для любого задания нужно добавлять побольше слоёв. На наших карточках хватает двух промежуточных вычислений. Для другой задачи устройство подбирают и проверяют по результату; сама пышность схемы ещё не объясняет, что она научилась различать.
Маленькая проверка понимания
Закройте таблицу и попробуйте объяснить случай «оба окошка закрашены». Если вы можете получить две разности, применить правило нуля и назвать итог, промежуточный слой уже перестал быть туманной серединой картинки. Потом проверьте случай, где закрашено только правое окошко.
Можно попросить помощника поменять порядок строк и проверять ваши ответы по одному. Само правило оставьте прежним. Если ошиблись, назовите место: разность, обнуление или сложение. Помощник сможет пояснить именно этот шаг. Когда порядок карточек перестанет влиять на ответ, вы уже восстанавливаете вычисление, а не вспоминаете расположение единиц в таблице.
На этом примере скрытый слой в нейросети нужен для перехода к другим признакам: два отдельных состояния превращаются в два направленных различия. Следующий узел использует уже их. Нелинейное обнуление сохраняет полезные различия, и сумма даёт требуемую метку.
Если захочется так же разобрать другое непонятное объяснение, пригодится способ поставить ИИ конкретную задачу: дать маленький исходник и попросить показать по одному преобразованию. А первое задание для нейросети поможет перенести разговор с карточек на собственный материал.
Несколько вопросов о внутренних слоях
Почему слой называют скрытым?
Он находится между входом и выходом модели. Это название его места в вычислении, а не обещание спрятанного знания или самостоятельной мысли.
Почему в примере отрицательные значения заменены нулём?
Так действует выбранная функция ReLU. Сначала посчитайте взвешенную сумму, затем примените это правило. Порядок этих двух действий нужен для сверки результата.
Можно проверить объяснение без запуска большой модели?
Да: пройдите все четыре входные пары нашего маленького примера и сравните промежуточные числа. Эта арифметика проверяет пример, не устройство любой большой нейросети.
Карточки можно оставить на столе для семейной игры. Пусть следующий участник объяснит, почему у двух закрашенных окошек нет зелёной фишки. Вчера на этом месте лежали крошки, сегодня здесь проходят аттестацию нейросетей. Для маленькой сети все основания у вас на руках.


