Что такое нейрон и нейросеть
Один искусственный нейрон — это крошечный калькулятор, который сам по себе почти ничего не умеет. Но если соединить тысячи таких калькуляторов в сеть, получится система, способная отличить кошку от собаки и угадать следующее слово во фразе.
Главная мысль урока: нейрон — это простая формула «взвесь входы, сложи, реши». Нейросеть — это куча таких нейронов, выстроенных слоями, где выход одного становится входом для следующего. Вся сила не в одном нейроне, а в том, как они соединены и как настроены их веса.
Зачем тебе вообще этот «нейрон»
Представь, что ты листаешь ленту в телефоне. Приложение само понимает, что на фото — кот, и подписывает альбом «Котики». Откуда оно это знает? Никто не писал в коде правило «если усы и треугольные уши — значит кот»: таких правил пришлось бы написать миллион, и всё равно нашлась бы кошка без усов или собака с треугольными ушами.
Вместо жёстких правил внутри работает нейросеть — система, которая сама нашла нужные закономерности, разглядывая тысячи размеченных картинок. К концу этого урока ты будешь точно представлять, из чего она собрана: один маленький кирпичик-нейрон, повторённый много раз и соединённый в слои.
В прошлом уроке про признаки, метки и предсказания мы вручную выбирали признаки — форму ушей, длину усов — и умножали их на веса, чтобы получить ответ «кошка или собака». Сегодня мы посмотрим на тот же самый расчёт под другим углом и увидим: то, что мы делали руками, — это и есть работа одного нейрона. А дальше соберём из таких нейронов сеть.
Нейрон — простой элемент, который берёт несколько чисел на входе, умножает каждое на свой вес, складывает и по результату решает, насколько сильно «зажечься».
Метафора: нейрон как строгий вахтёр на входе
Вообрази вахтёра у входа в клуб, который решает, пускать тебя или нет. Он смотрит на несколько вещей сразу: есть ли приглашение, как ты одет, сколько тебе лет. Но не всё для него одинаково важно. Приглашение он ценит очень высоко, одежду — средне, а на причёску почти не смотрит.
В голове у вахтёра как будто стоят множители — насколько сильно каждый признак влияет на решение. Он мысленно складывает: «много баллов за приглашение, чуть-чуть за приличный вид, ноль за причёску». Если итог перевалил за некоторый порог — пускает. Не дотянул — разворачивает.
Искусственный нейрон устроен ровно так же:
| Вахтёр у клуба | Искусственный нейрон |
| Что он разглядывает (приглашение, одежда, возраст) | Входы — признаки объекта |
| Насколько важен каждый пункт | Веса — по числу на каждый вход |
| Складывает баллы в уме | Считает взвешенную сумму входов |
| Порог «пускать / не пускать» | Функция, которая превращает сумму в ответ |
| Решение: впустил или нет | Выход нейрона — число от 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) и доработай его сам.
- Добавь третий признак
verticalPupil— вертикальный ли зрачок:1у кошки,0у собаки. - Заведи ему вес
w3(поставь, например,1.3) и включи в сумму:roundEars * w1 + longWhiskers * w2 + verticalPupil * w3 + bias. - Прогони животное со всеми тремя признаками за кошку и убедись, что выход стал ещё ближе к 1, чем был с двумя признаками.
- Теперь поиграй со сдвигом
bias: сделай его сильно отрицательным, например-3. Что произойдёт с ответами? (Подсказка: нейрон станет «строгим вахтёром» и почти всех будет записывать в собаки.)
Поэкспериментируй и со знаком веса: поставь w2 отрицательным и подумай, что это значит — теперь длинные усы будут понижать уверенность в кошке. Так ты на пальцах почувствуешь, что веса бывают не только «за», но и «против».
Итоги
Сегодня ты собрал базовый кирпичик всех современных ИИ — и заглянул внутрь.
- Нейрон — простой элемент: взвесил входы, сложил, прогнал через порог (функцию активации) и выдал число-ответ. Это туповатый вахтёр, а не мыслитель.
- Вес показывает, насколько каждый вход важен; именно веса настраиваются при обучении. Входы приходят снаружи, веса живут внутри модели — не путай их.
- Нейросеть — это много нейронов, выстроенных слоями: выход одного слоя становится входом следующего, и понятия укрупняются снизу вверх.
- Сеть сама находит, какие промежуточные признаки ловить; человек задаёт только общую структуру.
- Аналогия с мозгом полезна на старте, но искусственный нейрон — грубое упрощение, а не живая клетка. Сеть не понимает и не думает.
- И «кошка против собаки», и «Кошка пьёт ...» решаются одними и теми же кирпичиками — меняются лишь входы и размер сети.
Мы пока ставили веса руками, чтобы увидеть схему. В следующем уроке мы поговорим подробнее про веса и слои: откуда берутся правильные веса, что значит «глубокая» сеть и почему добавление слоёв позволяет ловить всё более хитрые сочетания признаков. Кирпичик ты теперь знаешь — пора разобраться, как из него строят небоскрёбы.