Концепции ИИ на Python

Нейроны и функции активации на Python

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

Суть простыми словами

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

Соберите искусственный нейрон на чистом Python: взвешенная сумма входов плюс смещение, пропущенная через sigmoid или ReLU.

Главные идеи

  • Веса показывают, насколько важен каждый вход; смещение сдвигает результат вверх или вниз.
  • Без активации даже много слоёв нейронов дают лишь линейную модель (прямую).
  • Sigmoid выдаёт значение от 0 до 1, поэтому подходит для вероятностей.
  • ReLU быстро считается и обычно используется в скрытых слоях современных сетей.

Когда это использовать?

  • Понять, что происходит внутри нейронных сетей и библиотек ИИ.
  • Разобраться в идее до того, как реализовать её в соответствующих задачах.
  • Подготовиться к курсам по машинному обучению, собеседованиям и проектам.

Посмотрите в действии

Двигайте ползунки, чтобы менять входы, веса и смещение. Следите, как взвешенная сумма z движется по кривым sigmoid и ReLU.

Пример кода

Запустить код →
main.py
import math

# A neuron multiplies each input by a weight, adds them up and adds a bias.
def dot(a, b):
    return sum(x * y for x, y in zip(a, b))

def sigmoid(z):
    return 1 / (1 + math.exp(-z))   # squashes any number into (0, 1)

def relu(z):
    return max(0.0, z)              # keeps positives, turns negatives into 0

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

z = dot(inputs, weights) + bias      # weighted sum
print("weighted sum z =", round(z, 3))
print("sigmoid(z) =", round(sigmoid(z), 3))
print("relu(z) =", relu(z))

# The activation decides how strongly the neuron "fires".
for value in [-2, 0, 2]:
    print(f"z={value:>2}  sigmoid={sigmoid(value):.3f}  relu={relu(value)}")

Ожидаемый результат

weighted sum z = -0.7
sigmoid(z) = 0.332
relu(z) = 0.0
z=-2  sigmoid=0.119  relu=0.0
z= 0  sigmoid=0.500  relu=0.0
z= 2  sigmoid=0.881  relu=2

Как это работает

dot() вычисляет взвешенную сумму z. Sigmoid сжимает z в значение от 0 до 1, а ReLU сохраняет положительные значения и превращает отрицательные в 0. Цикл показывает, как каждая активация реагирует на отрицательный, нулевой и положительный вход.

Измените значения и запустите программу в онлайн-компиляторе Python CodeUtility без локальной установки Python.

Практические задания

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

  1. Измените входные данные или веса и предскажите результат до запуска.
  2. Выводите промежуточные значения, чтобы проследить каждый шаг вычислений.
  3. Решите задачи по ссылкам ниже, чтобы самостоятельно реализовать идею.
Запустить в Python IDE →

Попрактикуйтесь на задаче

Примените материал этого урока к реальной задаче. Каждая задача запускается в браузере, с мгновенными тестами и разбором от ИИ.

Все задачи