Многие думают, что нейросеть - это что-то из области фантастики, доступное только исследователям из Google. Но на самом деле простейшую нейросеть можно написать на Python за 9 строк. Код занимает меньше времени, чем чтение новостной ленты. И сегодня я покажу, как это делается.
За основу возьмем классический пример - сеть, которая учится на трех входах и выдает один результат. Это самый простой перцептрон, но он отлично демонстрирует механику обучения. Понимание этого кода даст базу для более серьезных архитектур, которые уже решают реальные бизнес-задачи.
Что такое нейросеть на самом деле
Нейросеть - это просто функция, которая подбирает веса для входных данных. Никакой магии. Есть входные сигналы, есть веса (коэффициенты важности), есть функция активации, которая превращает взвешенную сумму в ответ. В процессе обучения меняются только веса.
Вот классическая аналогия с Хабра: представьте кролика, которому дуют в глаза струей воздуха. Кролик моргает. Это безусловный рефлекс. Теперь добавим звук щелчка перед струей. Через несколько повторений кролик начнет моргать просто на звук, без воздуха. Нейросеть работает примерно так: она связывает стимулы с реакцией через веса. Изначально все веса равны нулю - сеть пуста, как новорожденный. Обучение - это настройка весов под нужный результат.

В нашем примере сеть будет получать три сигнала (три кнопки) и выдавать один ответ. Звучит просто, но именно так работают базовые принципы любых нейросетей, даже ChatGPT.
Установка Numpy
Для математических операций нам понадобится библиотека Numpy. В ней есть матричные операции, которые критически важны для нейросетей. Установка простая:
pip install numpyИмпортируем в код:
import numpy as npБез этой библиотеки пришлось бы вручную писать умножение матриц, а это боль.
Пишем функцию активации
Функция активации решает, насколько сильно нейрон должен «зажечься» от суммы сигналов. Возьмем классическую сигмоиду. Она превращает любое число в диапазон от 0 до 1. Выглядит она так:
def sigmoid(x):
return 1/(1 + np.exp(-x))Сигмоида хороша для простых задач, потому что она гладкая и производная легко вычисляется. Для более сложных сетей используют ReLU, но сейчас нам это не понадобится.
Создаем класс NeuralNetwork
Теперь определим класс сети. В конструкторе зададим генератор случайных чисел и веса:
from numpy import exp, array, random, dot
class NeuralNetwork:
def __init__(self):
random.seed(1)
self.synaptic_weights = 2 * random.random((3, 1)) - 1random.seed(1) нужен, чтобы при каждом запуске веса генерировались одинаково - так мы можем проверить, что сеть действительно обучается. Веса инициализируем в диапазоне от -1 до 1.
Сеть принимает три входа, поэтому размер матрицы весов - 3 на 1. Именно эти веса будут меняться в процессе обучения.
Обучающие данные
Чтобы сеть чему-то научилась, нужны примеры. Возьмем таблицу истинности для логической операции. Например, результат равен 1, если первая кнопка нажата, независимо от остальных. Вот классический набор:
training_inputs = array([[0,0,1],[1,1,1],[1,0,1],[0,1,1]])
training_outputs = array([[0,1,1,0]]).TЗдесь четыре примера: входы и ожидаемые выходы. Обратите внимание, что выходы транспонированы - так они становятся вектор-столбцом.
Можно использовать и другой набор, главное, чтобы закономерность была.
Функция обучения
Теперь самое интересное - как сеть учится. Мы передаем входные данные, получаем предсказание и сравниваем с ожидаемым результатом. Ошибка - это разница между предсказанием и ответом. Затем подстраиваем веса на величину ошибки, умноженную на производную сигмоиды.
def train(self, training_inputs, training_outputs, iterations):
for iteration in range(iterations):
output = self.think(training_inputs)
error = training_outputs - output
adjustment = dot(training_inputs.T, error * output * (1 - output))
self.synaptic_weights += adjustmentТут output * (1 - output) - это производная сигмоиды. Она показывает, насколько сильно изменится выход при изменении весов. Мы умножаем ошибку на производную и прибавляем к весам.
Метод think - это просто прямое распространение:
def think(self, inputs):
return sigmoid(dot(inputs, self.synaptic_weights))Запускаем обучение на 10 000 итераций:
neural_network = NeuralNetwork()
neural_network.train(training_inputs, training_outputs, 10000)После обучения веса примут значения, которые минимизируют ошибку.
Полный код простейшей нейросети
Соберем все вместе. Вот как выглядит готовая программа из 9 строк:
from numpy import exp, array, random, dot
class NeuralNetwork():
def __init__(self):
random.seed(1)
self.synaptic_weights = 2 * random.random((3, 1)) - 1
def think(self, inputs):
return 1 / (1 + exp(-(dot(inputs, self.synaptic_weights))))
def train(self, inputs, outputs, iterations):
for _ in range(iterations):
output = self.think(inputs)
error = outputs - output
adjustment = dot(inputs.T, error * output * (1 - output))
self.synaptic_weights += adjustment
neural_network = NeuralNetwork()
training_inputs = array([[0,0,1],[1,1,1],[1,0,1],[0,1,1]])
training_outputs = array([[0,1,1,0]]).T
neural_network.train(training_inputs, training_outputs, 10000)
print(neural_network.think(array([1, 0, 0])))Запустите код в любом Python-окружении. Результат будет около 0.9999 - сеть уверенно говорит, что при единице на первом входе ответ 1. Если подать [0, 1, 1], получим около 0.0001 - то есть ноль.
Что дальше: от игрушечной сети к реальным задачам
Эта нейросеть - лишь основа. В реальной работе никому не придет в голову обучать перцептрон вручную. Современные фреймворки скрывают всю математику, но принцип тот же: данные, веса, функция потерь, оптимизатор. Разница лишь в масштабе.
Например, сейчас я активно использую такие возможности, как генерация текста, создание изображений и видео. Это помогает в контенте, маркетинге, автоматизации рутины. Запускать свои GPT-модели локально дорого и сложно. Но есть готовое решение - 3GPT от 3SELLER.
3GPT: доступ к флагманским нейросетям из России
Если вам нужны рабочие инструменты - Chat GPT 6, Claude Fable 5, генерация видео и изображений без ограничений - в России достаточно открыть 3GPT. Это ИИ-роутер, который дает прямой доступ к последним флагманским моделям:
- Chat GPT 6 Astra, Chat GPT 6.1 Sol, Chat GPT 5.5
- Claude Fable 5, Fable 5.1, Opus 5.5
- Nano Banana для создания изображений и генерации видео
Стоимость - от 149 рублей. Оплата российской картой, через СБП или крипту. Никаких иностранных карт не нужно.
Можно использовать для повседневных бизнес-задач: создавать продающие тексты, обрабатывать изображения, генерировать голос и ролики. В интерфейсе есть готовые ИИ-агенты под разные задачи - выбирайте агента и общайтесь. Модель агента можно менять прямо в чате.

Понимание простейшей нейросети помогает осознанно пользоваться такими сервисами. Вы видите не магию, а математику. Это дает преимущество: вы знаете, что ИИ может ошибаться, что нужны хорошие данные, что веса нужно настраивать. Но всю рутину гораздо проще доверить готовой платформе.
Попробуйте написать свой перцептрон. Это займет пять минут. А если захотите решать серьезные задачи без кода - переходите на 3GPT. Там уже есть все нейросети, о которых вы мечтали, и для доступа нужен только аккаунт и российская карта.