Создание собственного искусственного интеллекта
-
Это увлекательный процесс (а может быть и нет
), и Python — отличный выбор для этого благодаря богатой экосистеме библиотек.
Шаг 1
Начнем с простого, понимание что такое ИИ:
- Машинное обучение (ML) — обучение модели на данных.
- Нейронные сети — более сложные модели, особенно глубокие (Deep Learning).
- Генеративные модели — например, чат-боты, генератор текста.
Но начать нужно с простого — попробуем обучить модель предсказывать что-то.
Шаг 2
Предварительно установим Python (лучше 3.8+, надеюсь вы знаете как установить?), затем установи нужные библиотеки:
pip install numpy pandas scikit-learn matplotlib tensorflow torch jupyter
Что тут у нас:
scikit-learn
— для простого машинного обучения.numpy
— работа с массивами.pandas
— обработка данных.matplotlib
— визуализация.
Шаг 3
Теперь попробуем создать простую модель, которая предсказывает зарплату по стажу работы.
Пример 1: Простая модель
# Создадим файл linear_regression.py или main.py без разницы import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split # 1. Сгенерируем данные np.random.seed(42) стаж = np.random.randint(1, 20, 100) # стаж в годах зарплата = стаж * 3000 + np.random.normal(0, 5000, 100) # зарплата с шумом # 2. Подготовим данные X = стаж.reshape(-1, 1) # признаки (стаж) y = зарплата # целевая переменная (зарплата) # 3. Разделим на обучение и тест X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 4. Создаём и обучаем модель model = LinearRegression() model.fit(X_train, y_train) # 5. Делаем предсказания y_pred = model.predict(X_test) # 6. Оцениваем качество score = model.score(X_test, y_test) print(f"Точность модели (R²): {score:.2f}") # 7. Визуализация plt.scatter(X_test, y_test, color='blue', label='Реальные данные') plt.plot(X_test, y_pred, color='red', label='Предсказание') plt.xlabel('Стаж (лет)') plt.ylabel('Зарплата (руб)') plt.legend() plt.show()
Это простая ИИ — модель, которая “учится” на данных и делает предсказания.
И да! Python 3 полностью поддерживает кириллицу в именах переменных, функций, комментариях и строках. Так что использовать русские слова — абсолютно нормально с точки зрения синтаксиса ну или меня
Шаг 4:
Плавно переходит к нейросетям, попробуем нейронную сеть с помощью
TensorFlow/Keras
.Пример 2: Нейросеть для той же задачи
# neural_network.py import numpy as np from sklearn.model_selection import train_test_split from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense # 1. Данные (те же) np.random.seed(42) стаж = np.random.randint(1, 20, 100) зарплата = стаж * 3000 + np.random.normal(0, 5000, 100) X = стаж.reshape(-1, 1) y = зарплата X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 2. Создаём нейросеть model = Sequential([ Dense(10, activation='relu', input_shape=(1,)), # скрытый слой Dense(1) # выходной слой (предсказание) ]) # 3. Компилируем model.compile(optimizer='adam', loss='mse', metrics=['mae']) # 4. Обучаем history = model.fit(X_train, y_train, epochs=100, verbose=0, validation_split=0.2) # 5. Оценка loss, mae = model.evaluate(X_test, y_test, verbose=0) print(f"Средняя ошибка: {mae:.2f} руб") # 6. Предсказание new_experience = np.array([[5]]) # 5 лет стажа predicted_salary = model.predict(new_experience, verbose=0) print(f"Предсказанная зарплата для 5 лет стажа: {predicted_salary[0][0]:.0f} руб")
А это у нас уже искусственный интеллект на основе нейросети.
Шаг 5
Хотим что-то “умное”, как ChatGPT? Начнем с простого ответчика на ключевые слова.
Пример 3: Простой чат-бот
# chatbot.py import random # База знаний бота responses = { "привет": ["Привет!", "Здравствуйте!", "Приветствую!"], "как дела": ["Хорошо, спасибо!", "Отлично, а у тебя?"], "пока": ["Пока!", "До свидания!", "Удачи!"], "спасибо": ["Пожалуйста!", "Всегда рад помочь!"] } def get_response(user_input): user_input = user_input.lower() for key in responses: if key in user_input: return random.choice(responses[key]) return "Извините, я не понял." # Тест while True: user = input("Вы: ") if user.lower() == "выход": break print("Бот:", get_response(user))
А что дальше ?
Глубокое обучение - стоит попробовать
transformers
от Hugging Face для создания настоящих языковых моделей.Пример:
from transformers import pipeline chatbot = pipeline("text-generation", model="gpt2") response = chatbot("Как стать программистом?", max_length=100) print(response[0]['generated_text'])
Обучение своей модели:
- Собери датасет (например, диалоги)
- Дообучи модель (fine-tuning) с помощью
HuggingFace Transformers
.
-
А почему в линейной регрессии мы используем train_test_split? Не лучше ли сразу все данные на обучение, чтобы модель точнее была?
-
Думаю, что если тестировать на тех же данных, что и обучали — модель может переобучиться и плохо работать на новых данных. Разделение помогает оценить реальную точность.
-
В примере с нейросетью зачем нужен скрытый слой с 10 нейронами? Почему не просто один выходной слой? Что именно дает такая комбинация?
-
Тут скрытый слой позволяет открывать нелинейные зависимости. Если бы связь между стажем и зарплатой была не линейной (например, после 10 лет рост замедляется), простая регрессия не справилась бы.
-
А насколько точны такие предсказания? В примере ошибка в несколько тысяч рублей — это нормально для реальных данных?
-
Для синтетических данных с шумом — да. Но в реальности точность зависит от качества данных. Если в выборке будут выбросы или нелинейная зависимость — ошибка может быть больше.
-
Интересно, почему в чат-боте используется именно словарь, а не какая-то нейросеть? Это же очень примитивно, можно было бы сделать больше возможностей.
-
Для простых задач хватит и словаря. Нейросеть нужна, когда нужно понимать контекст или синонимы. Но для начала и такой бот сгодится — главное, чтобы работал.
-
Мне интересно, а стоит ли сразу лезть в трансформеры типа GPT? Или лучше сначала освоить базовые модели, а уже потом поступенчато продвигаться выше?
-
Начинай с линейной регрессии и простых нейросетей. Трансформеры требуют мощного железа и глубоких знаний. Не стоит бежать перед ходьбой.
-
Какой минимальный набор данных нужен для обучения своей модели? 100 примеров как в примере — это достаточно?
-
Для линейной задачи хватит и 100. Для нейросетей лучше от 1000 примеров. Для языковых моделей типа GPT — миллионы. Все зависит от сложности задачи.
-
Можно ли использовать русские названия переменных в продакшене? Не замедлит ли это выполнение кода? Или есть определенные запросы и лучше с ними и работать?
-
На производительность не влияет, но в команде могут быть разработчики, которые не знают русского. Лучше использовать английские названия — это стандарт.
-
Теперь понятно, что начинать нужно с простых моделей и постепенно усложнять. Главное -то не бояться экспериментировать.
-
А можно ли создать чат бот, который по запросу пользователя сможет собирать данные из определенных источников или вообще полность из яндекса и гугла и уже дать полноценный сформированный ответ опираясь на эти данные? Хочу что-то на подобии дипсика, только чтобы он мог общаться собирая данные из инэта
-
А можно ли создать чат бот, который по запросу пользователя сможет собирать данные из определенных источников или вообще полность из яндекса и гугла и уже дать полноценный сформированный ответ опираясь на эти данные? Хочу что-то на подобии дипсика, только чтобы он мог общаться собирая данные из инэта
@itrace Ну это по сути что-то вроде аля парсера, на примере того же perplexity
© 2024 - 2025 ExLends, Inc. Все права защищены.