3SELLER Journal 3SELLER →

Как создать простейшую нейросеть на Python за 9 строк

01.11.2026

Многие думают, что нейросеть - это что-то из области фантастики, доступное только исследователям из 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)) - 1

random.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. Это ИИ-роутер, который дает прямой доступ к последним флагманским моделям:

Стоимость - от 149 рублей. Оплата российской картой, через СБП или крипту. Никаких иностранных карт не нужно.

Можно использовать для повседневных бизнес-задач: создавать продающие тексты, обрабатывать изображения, генерировать голос и ролики. В интерфейсе есть готовые ИИ-агенты под разные задачи - выбирайте агента и общайтесь. Модель агента можно менять прямо в чате.

ИИ-агенты в 3GPT

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

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

← Вернуться к блогу

Читать дальше