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

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

Главная мысль урока: нейрон — это простая формула «взвесь входы, сложи, реши». Нейросеть — это куча таких нейронов, выстроенных слоями, где выход одного становится входом для следующего. Вся сила не в одном нейроне, а в том, как они соединены и как настроены их веса.

Зачем тебе вообще этот «нейрон»

Представь, что ты листаешь ленту в телефоне. Приложение само понимает, что на фото — кот, и подписывает альбом «Котики». Откуда оно это знает? Никто не писал в коде правило «если усы и треугольные уши — значит кот»: таких правил пришлось бы написать миллион, и всё равно нашлась бы кошка без усов или собака с треугольными ушами.

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

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

Нейрон — простой элемент, который берёт несколько чисел на входе, умножает каждое на свой вес, складывает и по результату решает, насколько сильно «зажечься».

Метафора: нейрон как строгий вахтёр на входе

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

В голове у вахтёра как будто стоят множители — насколько сильно каждый признак влияет на решение. Он мысленно складывает: «много баллов за приглашение, чуть-чуть за приличный вид, ноль за причёску». Если итог перевалил за некоторый порог — пускает. Не дотянул — разворачивает.

Искусственный нейрон устроен ровно так же:

Вахтёр у клубаИскусственный нейрон
Что он разглядывает (приглашение, одежда, возраст)Входы — признаки объекта
Насколько важен каждый пунктВеса — по числу на каждый вход
Складывает баллы в умеСчитает взвешенную сумму входов
Порог «пускать / не пускать»Функция, которая превращает сумму в ответ
Решение: впустил или нетВыход нейрона — число от 0 до 1

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

Зачем нейрону «порог»

Почему нельзя просто выдавать сумму баллов как есть? Потому что нам обычно нужен внятный ответ, а не сырое число вроде 7.3. Порог (его называют функцией активации) сжимает любую сумму в удобный диапазон — например, в число от 0 до 1, которое читается как «уверенность». Сумма большая — выход близок к 1 («да, кошка»). Сумма маленькая или отрицательная — выход близок к 0 («нет, не кошка»). Без этого сжатия нейроны нельзя было бы аккуратно складывать в слои.

Считаем один нейрон на пальцах

Вернёмся к нашему сквозному примеру — «кошка или собака». Дадим нейрону два знакомых признака:

  • roundEars — насколько уши круглые: 1 круглые (как у кошки), 0 острые;
  • longWhiskers — длинные ли усы: 1 длинные, 0 короткие.

У нейрона два веса — по одному на каждый признак — и порог-сдвиг. Пусть круглые уши и длинные усы тянут ответ в сторону «кошка». Вот как нейрон считает ответ для одного животного. Это всего пять строк арифметики, давай разберём их вслух.

const w1 = 1.5;   // вес признака "круглые уши"
const w2 = 1.0;   // вес признака "длинные усы"
const bias = -1.2; // сдвиг (порог)

// функция активации: сжимает любое число в диапазон 0..1
function squash(x) {
  return 1 / (1 + Math.exp(-x));
}

// один нейрон: взвесил входы, сложил, сжал
function neuron(roundEars, longWhiskers) {
  const sum = roundEars * w1 + longWhiskers * w2 + bias;
  return squash(sum);
}

console.log("круглые уши + длинные усы: " + neuron(1, 1).toFixed(2));
console.log("острые уши + короткие усы: " + neuron(0, 0).toFixed(2));
console.log("круглые уши, но короткие усы: " + neuron(1, 0).toFixed(2));

Вывод:

круглые уши + длинные усы: 0.79
острые уши + короткие усы: 0.23
круглые уши, но короткие усы: 0.57

Смотри, что получилось. Когда оба признака за кошку (1 и 1), нейрон выдаёт 0.79 — уверенно тянет к «кошке». Когда оба против (0 и 0), выходит 0.23 — склоняется к «собаке». А спорный случай — круглые уши, но усы короткие — даёт 0.57, то есть «скорее кошка, но я не уверен». Вот эта неуверенность в середине и есть честный ответ туповатого вахтёра: баллов набралось примерно поровну.

Заметь: мы нигде не написали слово «кошка». Нейрон оперирует только числами — входами, весами и суммой. Смысл «кошка/собака» живёт у нас в голове, а внутри — голая арифметика.

Из одного нейрона — в сеть

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

Решение простое и гениальное: поставим много нейронов и выстроим их слоями. Получится нейросеть — модель из множества простых связанных нейронов, организованных в слои.

СлойЧто делает в задаче «кошка или собака»
ВходнойПринимает признаки: пиксели картинки или такие фичи, как уши и усы
Скрытые (один или несколько)Каждый нейрон ловит своё сочетание: «округлая морда + усы», «вертикальный зрачок» и т.д.
ВыходнойСобирает всё вместе и выдаёт итог: 1 = кошка, 0 = собака

Фокус в том, что выход каждого нейрона одного слоя становится входом для нейронов следующего. Первый слой замечает простые штуки (края, пятна), следующий складывает их в детали покрупнее (ухо, глаз), а самый верхний — в понятие «кошка». Никто не задаёт эти промежуточные признаки вручную: сеть сама находит, на что обращать внимание, подкручивая веса при обучении.

function squash(x) { return 1 / (1 + Math.exp(-x)); }

// два нейрона скрытого слоя ловят разные сочетания признаков
function hiddenA(ears, whiskers) { return squash(ears * 1.5 + whiskers * 1.0 - 1.2); }
function hiddenB(ears, whiskers) { return squash(ears * 0.4 + whiskers * 1.8 - 1.0); }

// выходной нейрон смотрит уже не на признаки, а на ответы скрытого слоя
function output(ears, whiskers) {
  const a = hiddenA(ears, whiskers);
  const b = hiddenB(ears, whiskers);
  return squash(a * 2.0 + b * 2.0 - 1.5);
}

console.log("кошка (1,1): " + output(1, 1).toFixed(2));
console.log("собака (0,0): " + output(0, 0).toFixed(2));

Вывод:

кошка (1,1): 0.66
собака (0,0): 0.25

Тут важна не точность чисел — веса я выбрал руками для примера, — а сама схема. Видишь, что output вообще не смотрит на исходные признаки? Он смотрит на a и b — на то, что уже распознали нейроны под ним. Это и есть суть глубокой сети: каждый слой работает с выводами предыдущего, и понятия становятся всё сложнее по мере подъёма наверх.

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

А что с фразой «Кошка пьёт ...»?

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

Аналогия с мозгом — и где она ломается

Слово «нейрон» взято не случайно: идея подсмотрена у мозга. У тебя в голове реальные нейроны — это клетки, которые получают сигналы от соседей и, если суммарный сигнал достаточно сильный, «выстреливают» и передают возбуждение дальше. Похоже на нашего вахтёра с порогом, правда? Эта аналогия помогает ухватить главное: много простых элементов, связи между ними, сигнал, который усиливается или гасится.

Но дальше аналогию лучше отпустить, иначе она начнёт врать. Честно про различия:

  • В мозге человека около 86 миллиардов нейронов, и каждый связан с тысячами других через сложную химию. Искусственный «нейрон» — это пара строк арифметики, грубая карикатура на живую клетку.
  • Живые нейроны не «обучаются» обратным распространением ошибки и подкруткой весов, как наши модели. Биология работает иначе и до конца ещё не понята.
  • Нейросеть не думает, не хочет и ничего не чувствует. Она не «понимает» кошку — она нашла набор весов, при которых картинки кошек дают высокий выход. Это мы обсуждали честно и раньше.

Так что «нейросеть» — это удачное название и полезная метафора, а не маленький мозг внутри компьютера. Держи это в голове, когда в новостях пишут, что ИИ «мыслит как человек»: на деле там слои тех самых туповатых вахтёров.

Частые ошибки и подводные камни

Вот на чём чаще всего спотыкаются, когда впервые знакомятся с нейронами и сетями.

1. Думать, что один нейрон уже «умный»

Нет. Один нейрон умеет провести только одну прямую границу между «да» и «нет». Вся мощь рождается из количества нейронов и из того, как они соединены в слои. Сила — в сети, а не в отдельном кирпичике.

2. Путать веса с самими данными

Входы (признаки) и веса — это разные вещи. Входы приходят снаружи и для каждой картинки свои. Веса живут внутри модели, одни и те же для всех картинок, и именно они меняются при обучении. Если перепутать, кажется, будто модель «запоминает картинки» — а она на самом деле настраивает числа-веса.

3. Считать, что слои придумывает человек

Сколько слоёв и нейронов — это да, выбирает инженер (это называется архитектурой). Но что именно ловит каждый скрытый нейрон — «ухо», «край», «вертикальный зрачок» — человек не задаёт. Сеть находит эти промежуточные признаки сама в ходе обучения. Это часто удивляет новичков.

4. Думать, что нейросеть = мозг

Мы только что разобрали: аналогия с мозгом помогает на старте, но искусственный нейрон — грубое упрощение, а не живая клетка. Не приписывай сети мысли, желания и понимание. За уверенным ответом ChatGPT стоит арифметика по весам, а не размышление.

5. Бояться функции активации как «сложной математики»

Функция вроде squash выглядит пугающе из-за Math.exp, но её роль проста: сжать любое число в диапазон от 0 до 1, чтобы получился внятный ответ-уверенность. Тебе не нужно уметь считать её в уме — достаточно понимать, зачем она: превратить сырую сумму баллов в «насколько да».

Мини-практика: добавь нейрону третий признак

Возьми за основу самый первый пример с одним нейроном (w1, w2, bias) и доработай его сам.

  1. Добавь третий признак verticalPupil — вертикальный ли зрачок: 1 у кошки, 0 у собаки.
  2. Заведи ему вес w3 (поставь, например, 1.3) и включи в сумму: roundEars * w1 + longWhiskers * w2 + verticalPupil * w3 + bias.
  3. Прогони животное со всеми тремя признаками за кошку и убедись, что выход стал ещё ближе к 1, чем был с двумя признаками.
  4. Теперь поиграй со сдвигом bias: сделай его сильно отрицательным, например -3. Что произойдёт с ответами? (Подсказка: нейрон станет «строгим вахтёром» и почти всех будет записывать в собаки.)

Поэкспериментируй и со знаком веса: поставь w2 отрицательным и подумай, что это значит — теперь длинные усы будут понижать уверенность в кошке. Так ты на пальцах почувствуешь, что веса бывают не только «за», но и «против».

Итоги

Сегодня ты собрал базовый кирпичик всех современных ИИ — и заглянул внутрь.

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

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

Проверьте себя
1. Что делает один искусственный нейрон?
AХранит целую картинку в памяти и сравнивает её с новой
BУмножает входы на веса, складывает их и по результату решает, насколько "зажечься"
CПонимает смысл слова "кошка" так же, как человек
DПереводит текст с одного языка на другой
2. За что в нейроне отвечает вес?
AЭто сам входной признак, приходящий снаружи
BЭто число, показывающее, насколько сильно данный вход влияет на решение
CЭто количество слоёв в сети
DЭто размер картинки в пикселях
3. Чем нейросеть сильнее одного нейрона?
AОдин нейрон вообще ничего не считает, а сеть считает
BВ сети каждый нейрон по отдельности становится умнее
CМного нейронов в слоях ловят сложные сочетания признаков: выход одного слоя становится входом следующего
DСеть не использует веса, поэтому работает быстрее
4. Кто задаёт, что именно ловит каждый скрытый нейрон (например, "ухо" или "вертикальный зрачок")?
AИнженер прописывает это вручную для каждого нейрона
BНикто — сеть находит эти промежуточные признаки сама в ходе обучения
CЭто записано в операционной системе
DЭти признаки берутся из словаря готовых правил
5. В чём аналогия искусственного нейрона с настоящим перестаёт работать?
AИскусственный нейрон — это грубое упрощение из пары строк арифметики, он не думает и не чувствует
BНастоящие нейроны тоже умножают входы на веса формулой squash
CУ человека в мозге ровно столько же нейронов, сколько в любой нейросети
DИскусственная сеть полностью повторяет химию живого мозга
6. Зачем нейрону функция активации (порог), например squash?
AЧтобы замедлить работу сети
BЧтобы хранить обучающие картинки
CЧтобы сжать сырую сумму баллов в удобный диапазон, например число от 0 до 1 как "уверенность"
DЧтобы выбрать количество слоёв в сети