Искусственный нейрон: из чего он сделан

Урок объясняет, что такое искусственный нейрон и как он превращает входы в выход.

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

Биологическая аналогия

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

Три части нейрона

Любой искусственный нейрон состоит из трёх шагов:

  • Веса (weights) — по одному числу на каждый вход. Вес показывает, насколько этот вход важен. Большой положительный вес усиливает сигнал, отрицательный — подавляет.
  • Смещение (bias) — одно число, которое сдвигает порог срабатывания. Без него нейрон всегда проходил бы через начало координат.
  • Функция активации — превращает взвешенную сумму в итоговый выход, добавляя нелинейность (про неё подробно — во втором разделе).

Формула одного нейрона словами: выход = активация(w1*x1 + w2*x2 + ... + wn*xn + b). Часть w1*x1 + ... + b называют взвешенной суммой или предактивацией.

Считаем нейрон руками

Реализуем нейрон с двумя входами. Веса и смещение пока зададим вручную — обучать их мы научимся позже. В роли активации возьмём sigmoid, которая сжимает любое число в диапазон от 0 до 1 (удобно трактовать как «уверенность»).

import math

def sigmoid(x):
    return 1.0 / (1.0 + math.exp(-x))

def neuron(inputs, weights, bias):
    s = 0.0
    for x, w in zip(inputs, weights):
        s += x * w
    s += bias
    return sigmoid(s)

inputs  = [1.0, 2.0]
weights = [0.5, -0.3]
bias    = 0.1

out = neuron(inputs, weights, bias)
weighted_sum = inputs[0]*weights[0] + inputs[1]*weights[1] + bias
print("Взвешенная сумма:", round(weighted_sum, 4))
print("Выход нейрона:", round(out, 4))

Вывод:

Взвешенная сумма: 0.0
Выход нейрона: 0.5

Взвешенная сумма получилась ровно 0, поэтому sigmoid(0) = 0.5 — нейрон «не уверен». Поменяйте веса или входы и запустите снова: вы почувствуете, как нейрон реагирует на сигналы.

Почему это уже полезно

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

Итог

  • Нейрон = взвешенная сумма входов + смещение, пропущенные через активацию.
  • Веса задают важность входов, смещение сдвигает порог.
  • Один нейрон проводит линейную границу; сила нейросетей — в их объединении.
Проверьте себя
1. Из каких трёх частей состоит искусственный нейрон?
AБаза данных, индекс и запрос
BВеса, смещение и функция активации
CСлои, эпохи и батчи
DГрадиент, потеря и оптимизатор
2. Что делает смещение (bias)?
AНормализует входные данные к диапазону 0..1
BСдвигает порог срабатывания нейрона
CСчитает производную функции потерь
DУменьшает число весов
3. Почему один нейрон с sigmoid выдал 0.5 в примере?
Asigmoid всегда возвращает 0.5
BВзвешенная сумма оказалась равна 0, а sigmoid(0)=0.5
CВеса были нулевыми
DТак работает округление
Поддержать проект