Нейроны и функции активации на Python
Искусственный нейрон - это крошечная функция. Он умножает каждый вход на вес, прибавляет смещение и пропускает результат через функцию активации, которая решает, насколько сильно он «срабатывает».
Суть простыми словами
Искусственный нейрон - это крошечная функция. Он умножает каждый вход на вес, прибавляет смещение и пропускает результат через функцию активации, которая решает, насколько сильно он «срабатывает».
Соберите искусственный нейрон на чистом Python: взвешенная сумма входов плюс смещение, пропущенная через sigmoid или ReLU.
Главные идеи
- Веса показывают, насколько важен каждый вход; смещение сдвигает результат вверх или вниз.
- Без активации даже много слоёв нейронов дают лишь линейную модель (прямую).
- Sigmoid выдаёт значение от 0 до 1, поэтому подходит для вероятностей.
- ReLU быстро считается и обычно используется в скрытых слоях современных сетей.
Когда это использовать?
- Понять, что происходит внутри нейронных сетей и библиотек ИИ.
- Разобраться в идее до того, как реализовать её в соответствующих задачах.
- Подготовиться к курсам по машинному обучению, собеседованиям и проектам.
Посмотрите в действии
Двигайте ползунки, чтобы менять входы, веса и смещение. Следите, как взвешенная сумма z движется по кривым sigmoid и ReLU.
Пример кода
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.
Практические задания
Изменяйте входные данные и проверяйте граничные случаи перед работой с большими наборами.
- Измените входные данные или веса и предскажите результат до запуска.
- Выводите промежуточные значения, чтобы проследить каждый шаг вычислений.
- Решите задачи по ссылкам ниже, чтобы самостоятельно реализовать идею.
Попрактикуйтесь на задаче
Примените материал этого урока к реальной задаче. Каждая задача запускается в браузере, с мгновенными тестами и разбором от ИИ.
- Скалярное произведение двух векторов Перемножьте два вектора поэлементно и сложите результаты — это основная операция любого нейрона. Легко
- Функции активации Примените sigmoid, ReLU, Leaky ReLU или tanh к каждому значению списка. Легко
- Один искусственный нейрон Вычислите выход одного нейрона: взвешенная сумма входов плюс смещение, пропущенная через сигмоиду. Легко