Нажмите ОК, если Вы выражаете свое согласие на обработку Ваших персональных данных в соответствии с Согласием на обработку персональных данных и Политикой конфиденциальности. Вы можете запретить обработку cookies через браузер.
ОК
  • /
  • /

Мастер-класс по обучению ИИ для детей: пишем и обучаем свою первую нейросеть на Python

Как научить компьютер понимать человеческий язык? Можно ли создать программу, которая не просто выполняет команды, а улавливает смысл вопросов и отвечает на них?

В этом мастер-классе по обучению ИИ для детей мы сделаем это своими руками. Мы напишем на Python простую нейросеть, которая сможет поддерживать диалог, понимать разные формулировки и даже учиться новому — для этого достаточно просто добавить примеры в ее базу знаний.

Попробуйте бесплатно!

Оставьте свой номер: мы позвоним, чтобы записать на бесплатное занятие и ответить на все ваши вопросы.

Как проходит обучение ИИ: объяснение для детей

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

Современные помощники, такие как Алиса, Siri или Google Ассистент, умеют распознавать речь, отвечать на вопросы, давать рекомендации. Поисковики Яндекс и Google используют ИИ, чтобы показывать самые подходящие результаты. Социальные сети предлагают нам посты и видео, опираясь на то, что нам понравилось раньше. Всё это — работа искусственного интеллекта.

Но как компьютер понимает слова? Ведь для него текст — просто набор символов. Чтобы программа могла работать со смыслом, текст нужно превратить в числа — такой процесс называется векторизацией. Каждое слово или целая фраза получает свой числовой «вектор», и если два текста близки по смыслу, их векторы тоже оказываются близки. Это похоже на координаты на карте: чем ближе точки, тем больше общего у объектов, которые они обозначают.

Это мастер-класс для детей по обучению ИИ, из которого вы узнаете, как создать собственного текстового помощника. Он будет уметь отвечать на вопросы, причём понимать не только точные формулировки, но и похожие по смыслу. А главное — мы подробно разберем процесс обучения ИИ, чтобы ребенок мог легко научить его новым вещам.

Подробный видеоурок по этой теме вы можете посмотреть на нашем Ютуб-канале, а если захотите научиться программировать на Python и создавать более сложные проекты с искусственным интеллектом, приходите на онлайн-курсы для детей в школе «Пиксель». Мы ждём всех, кто хочет разобраться в мире IT!
Скидка 10% для новых клиентов при записи в день обращения*
Отправьте заявку, и мы свяжемся с вами для консультации
* Скидка действует по промокоду на покупку первого абонемента от 12 занятий и более в день обращения. Новым считается клиент, прежде ни разу не приобретавший абонемент в школе.

Как ИИ рассчитывает «похожесть» текстов

Чтобы компьютер мог работать с текстом, нужно превратить слова в числа — это называется векторизацией. Каждое слово или целое предложение получает свой числовой код, а похожие по значению фразы имеют близкие коды.

Один из самых популярных способов такой векторизации называется TF-IDF. Это аббревиатура от английских слов Term Frequency — Inverse Document Frequency (частота термина — обратная частота документа). Звучит сложно, но на деле всё просто.

  • TF (частота слова) показывает, сколько раз слово встречается в конкретном тексте. Если в вопросе часто повторяется слово «искусственный», значит, оно важно для этого вопроса.
  • IDF (обратная частота документа) оценивает, насколько слово редкое или, наоборот, встречается почти во всех текстах. Например, слова «и», «в», «на» есть в любом тексте, они не помогают отличить один вопрос от другого, поэтому их вес снижается. А редкие слова, характерные только для определённой темы («нейросеть»), получают высокий вес.

В результате каждый текст превращается в вектор — длинный набор чисел, где каждое число соответствует важности того или иного слова. Векторы живут в многомерном пространстве (системе координат, где осей очень много).

Когда у нас есть два вектора (например, вектор вопроса пользователя и вектор вопроса из базы), мы можем измерить, насколько они близки. Если угол между векторами маленький — значит, тексты очень похожи по смыслу. Если угол большой (векторы направлены в разные стороны) — тексты разные.

Наш ИИ будет устроен так: у него есть база знаний — набор заранее заготовленных вопросов и соответствующих им ответов. Когда пользователь задаёт свой вопрос, программа превращает его в вектор и сравнивает со всеми векторами вопросов из базы, вычисляя сходство. Затем выбирается вопрос с максимальным сходством, и выдаётся его ответ.

Такой подход называют обучением на примерах или обучением с учителем. Мы, как учителя, показываем программе образцы (вопросы и правильные ответы), а она запоминает и в дальнейшем пытается подобрать подходящий образец для любого нового вопроса. Чем больше и разнообразнее примеры, тем точнее будет работа.

Шаг 1. Создаём базу знаний

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

Чем больше и разнообразнее база, тем умнее будет казаться программа. Можно добавлять синонимы, разные формулировки одного и того же вопроса. Наряду с «Привет» можно включить «Здравствуйте», «Добрый день», «Салют» — и всем им сопоставить один и тот же ответ. Тогда ИИ будет понимать любую форму приветствия.

Шаг 2. Устанавливаем необходимые библиотеки

Для векторизации текста и сравнения векторов будем использовать библиотеку scikit-learn (часто её называют sklearn). Внутри неё есть множество полезных инструментов: и TF‑IDF векторизатор, и функции для вычисления косинусного сходства.

Что такое pip и как установить библиотеку

Библиотеки на Python устанавливаются с помощью специального менеджера пакетов — pip. Он обычно идёт вместе с Python, дополнительно ничего скачивать не нужно. Чтобы установить scikit-learn, нужно открыть терминал (или командную строку) и выполнить одну команду.

Как открыть терминал:

  • На Windows: нажмите клавиши Win + R, введите cmd и нажмите Enter. Или найдите в меню «Пуск» приложение «Командная строка».
  • На macOS: откройте «Терминал» через Finder (Программы → Служебные программы) или через поиск Spotlight.
  • На Linux: обычно терминал вызывается сочетанием клавиш Ctrl + Alt + T.

В открывшемся окне введите команду (для Python 3):

pip3 install scikit-learn

Нажмите Enter, и начнётся загрузка и установка. В конце должно появиться сообщение «Successfully installed scikit-learn...» — это значит, что всё прошло успешно.

Проверка установки в среде разработки

Теперь, когда библиотека установлена, откройте вашу среду для написания кода. Это может быть PyCharm, Visual Studio Code, Jupyter Notebook или даже простой текстовый редактор.

Если вы используете PyCharm или VS Code, обратите внимание на импорты, которые мы будем писать позже:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

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

Шаг 3. Пишем код: превращаем текст в числа

Теперь, когда библиотека установлена, можно приступать написанию кода — самому интересному моменту обучения ИИ для детей. Начнём с импорта необходимых инструментов и подготовки данных.

Импортируем нужные компоненты

В Python, чтобы использовать функции из библиотек, их нужно сначала подключить в файле — это называется импортом. Мы будем использовать два инструмента из библиотеки scikit-learn:

  • TfidfVectorizer — он превращает тексты в числовые векторы по методу TF-IDF.
  • cosine_similarity — функция, которая вычисляет косинусное сходство между векторами (то есть оценивает, насколько тексты похожи).

В начале файла с кодом напишем:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

После этих строк Python будет знать, что мы планируем использовать указанные компоненты.

Создаём списки вопросов и ответов

Запишем наши примеры:

questions = [
    "Привет",
    "Как тебя зовут?",
    "Что ты умеешь?",
    "Что такое искусственный интеллект?"
]

answers = [
    "Привет, рад тебя видеть!",
    "Я маленький ИИ, написанный на Python.",
    "Я умею отвечать на вопросы и учиться новому.",
    "ИИ — это когда компьютер учится на примерах и помогает людям решать задачи."
]

Инициализируем векторизатор

Теперь создадим объект векторизатора. Он будет отвечать за превращение текстов в числа. Пока что он пустой, но у него есть настройки. Мы создаём его командой:

vectorizer = TfidfVectorizer()

В скобках можно было бы указать дополнительные параметры (например, убрать слишком частые слова или игнорировать знаки препинания), но для нашей задачи подойдут настройки по умолчанию.

Обучаем векторизатор на вопросах

Теперь нужно, чтобы векторизатор познакомился с нашими вопросами. Он должен проанализировать все слова, которые встречаются, и решить, какие из них важные, а какие — нет. Этот процесс называется fit (подгонка, обучение). Мы передаём ему список вопросов:

vectorizer.fit(questions)

Векторизатор проходит по вопросам, составляет словарь всех уникальных слов, подсчитывает, в скольких вопросах встречается каждое слово, и вычисляет коэффициенты важности (IDF). После этого он готов превращать любой текст в вектор, используя эти расчёты.

Преобразуем список вопросов в матрицу векторов

Когда векторизатор обучен, мы можем применить его к нашим вопросам и получить числовое представление. Это делается методом transform:

question_vectors = vectorizer.transform(questions)

Результат question_vectors — это матрица (таблица чисел), где каждая строка соответствует одному вопросу, а каждый столбец — какому-то слову из нашего словаря. На пересечении стоит число, отражающее важность этого слова в данном вопросе (с учётом TF-IDF). Если слово не встречается в вопросе, там будет ноль.

Например, для вопроса «Привет» вектор будет содержать высокое значение для слова «привет» и нули для всех остальных слов.

Это база, которую нужно знать школьникам про обучение ИИ.

Шаг 4. Функция для получения ответа

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

def get_answer(user_input):
    # Превращаем запрос пользователя в вектор
    user_vector = vectorizer.transform([user_input])

    # Сравниваем со всеми вопросами из базы
    similarities = cosine_similarity(user_vector, question_vectors)

    # Находим индекс самого похожего вопроса
    best_index = similarities.argmax()
    best_score = similarities[0, best_index]

    # Если сходство слишком маленькое (порог сходства меньше 0.3), отвечаем, что не поняли
    if best_score < 0.3:
        return "Извините, я ещё не знаю ответа на этот вопрос."

    # Иначе возвращаем подходящий ответ
    return answers[best_index]

Зачем нужен порог сходства

Представьте, что пользователь задал вопрос, которого в базе вообще нет и который не похож ни на один из существующих. Например: «Как испечь пиццу?». В этом случае максимальное сходство может быть очень низким, 0.1 или 0.05. Если ИИ выдаст ответ на самый похожий вопрос (например, про приветствие), это будет неправильно — ответ не будет иметь смысла.

Поэтому вводят порог сходства (threshold). Если самое высокое сходство меньше этого порога, значит, запрос слишком далёк от всех имеющихся образцов и лучше честно сказать: «Я не знаю ответа». В нашем коде порог установлен на 0.3.

Без порога сходства обучение ИИ бессмысленно. Ребенок может сам поэкспериментировать со значением порога и проследить, как меняется поведение нейросети.
Error get alias

Шаг 5. Запускаем бесконечный цикл общения

Теперь, когда у нас есть функция get_answer, способная подобрать ответ на любой вопрос, организуем диалог. Мы хотим, чтобы программа работала непрерывно: задавала вопрос, получала ответ, снова задавала — и так до тех пор, пока пользователь не решит закончить. Для этого используется бесконечный цикл.

print("ИИ запущен. Напишите 'пока' для выхода.")
while True:
    user_input = input("Вы: ")
    if user_input.lower() in ["пока", "выход", "стоп"]:
        print("ИИ: До свидания!")
        break
    answer = get_answer(user_input)
    print("ИИ:", answer)

Зачем нужен break

Без break цикл никогда не закончится — даже если пользователь напишет «пока», программа продолжит бы спрашивать снова. Команда break даёт возможность выйти из цикла в нужный момент. Это стандартный способ организации диалоговых программ.

Варианты команд выхода

Мы предусмотрели несколько вариантов: «пока», «выход», «стоп». Можно добавить любые другие, например «до свидания», «exit», «quit». Главное, чтобы они были в списке. Преобразование в нижний регистр (lower()) делает проверку устойчивой к регистру.

Шаг 6. Тестируем ИИ: как он понимает смысл

Наконец-то настал самый захватывающий момент обучения ИИ для детей — запуск программы. Посмотрим, что умеет созданный нами искусственный интеллект. Код готов, библиотеки установлены, и мы можем начать диалог. Откройте среду разработки, запустите скрипт и наблюдайте.

Запуск и первое приветствие

Когда программа запускается, вы видите приглашение:

— ИИ запущен. Напишите 'пока' для выхода.

Попробуем ввести слово «Привет». Нажимаем Enter и видим:

— Привет, рад тебя видеть!

Всё работает. Здесь произошло точное совпадение с одним из вопросов в базе, поэтому ИИ без колебаний выбрал соответствующий ответ.

Проверка на синонимы

А теперь попробуем ввести «Здравствуйте» (нет в базе). ИИ отвечает:

— Привет, рад тебя видеть!

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

То же самое произойдёт, если ввести «Салют» или «Добрый день». Модель уловит смысловую близость и ответит приветствием.

Вопросы об ИИ

Спросим: «Что такое ИИ?»:

— ИИ — это когда компьютер учится на примерах и помогает людям решать задачи.
В базе есть вопрос «Что такое искусственный интеллект?». Хотя формулировка немного отличается, ключевые слова «ИИ» и «искусственный интеллект» тесно связаны, и векторы снова оказались близки.

Проверка на устойчивость к ошибкам

Интересный тест — ввести фразу с опечаткой. Если ошибка не слишком грубая, большинство значимых слов сохраняются, и вектор окажется ближе всего к правильному вопросу.

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

Что будет, если спросить незнакомое

Теперь зададим вопрос, который совсем не похож на те, что есть в базе: «как приготовить пиццу». В базе нет ничего про еду, кулинарию или рецепты. Максимальное косинусное сходство с любым из существующих вопросов будет очень низким, меньше порога 0.3, поэтому сработает заглушка:

— Извините, я ещё не знаю ответа на этот вопрос.

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

Выводы из тестирования

Наш эксперимент для школьников по обучению ИИ показал:

  • Искусственный интеллект действительно способен «улавливать» смысл, а не искать только точные совпадения.
  • Он понимает синонимы («привет» — «здравствуйте») и близкие по теме вопросы.
  • Он устойчив к небольшим опечаткам и перестановке слов.
  • ИИ можно научить говорить, что он не знает ответа, если вопрос слишком далёк от известных примеров.

Теперь вы можете самостоятельно экспериментировать: добавлять новые вопросы в базу, менять порог, пробовать разные формулировки и наблюдать, как меняется поведение программы.

Шаг 7. Учим ИИ новому: эксперимент с расширением базы

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

Добавляем новый вопрос и ответ

Открываем файл с кодом и находим списки questions и answers. Добавляем в конец каждого списка новый элемент. Важно сохранить соответствие: новый вопрос должен идти под тем же индексом, что и новый ответ.
Например, добавим:

questions.append("Какая сегодня погода?")
answers.append("Я пока не умею узнавать погоду, но могу научиться, если добавлю нужные данные.")

Перезапускаем программу и проверяем

Сохраняем файл и снова запускаем скрипт. Теперь в диалоге вводим: «Какая завтра погода?»:

— Я пока не умею узнавать погоду, но…

Работает. Обратите внимание: мы не меняли логику программы, не переписывали функцию get_answer, не трогали векторизатор. Единственное изменение — данные. ИИ «обучился» новой информации, просто получив дополнительный пример.

Что произошло внутри

Векторизатор при повторном запуске заново «увидел» все вопросы, включая новый. Он пересчитал частоты слов и важность терминов. Теперь в матрице question_vectors появилась ещё одна строка, соответствующая новому вопросу.

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

Наращивание базы знаний

Можно постепенно расширять кругозор нейросети. Добавлять новые темы, синонимы, уточнения. Например, можно ввести несколько вариантов вопроса о погоде: «Что там на улице?», «Какая температура?», «Будет дождь?» — и всем им сопоставить один и тот же ответ. Чем больше разнообразных примеров, тем точнее ИИ будет понимать, что именно спрашивает пользователь.

Это и есть машинное обучение

То, что мы делаем, — простейший пример машинного обучения. Программа не содержит жёстких правил типа «если пользователь написал слово "погода", ответить то-то». Вместо этого она обобщает на основе примеров. Мы показываем ей образцы, а она находит в них закономерности и применяет их к новым запросам.

Конечно, наш ИИ ещё очень примитивен. Он не умеет запоминать контекст разговора, не понимает сложных составных вопросов, не может рассуждать. Но принцип тот же, что и в больших языковых моделях: они тоже учатся на огромном количестве текстов, просто у них примеров в миллионы раз больше и архитектура намного сложнее.
Понравилась статья?

Читайте также:

    Подборка курсов

    Заполните заявку
    на доступ
    кбесплатным
    курсам для детей
    После заполнения формы вы получите доступ в личный кабинет
    Понадобится помощь взрослого*