В разгар бесконечных споров в социальных сетях о том, чему равно два плюс два — четыре или пять, исследователь в области машинного обучения Янник Кильчер (Yannic Kilcher) предложил радикальное решение. Вместо того чтобы полагаться на субъективные человеческие суждения, он решил создать искусственный интеллект, который должен поставить точку в этом вопросе.
🛠️ Стек технологий и архитектура модели 0:00
Янник Кильчер начинает проект с выбора инструментов, подчеркивая, что для серьезных задач в области ИИ необходимо использовать библиотеку PyTorch . По мнению ведущего, проверка доступности CUDA (интерфейса для вычислений на видеокартах) является обязательным шагом, который он иронично называет «магией в мире ИИ» .
В качестве основы для своего эксперимента Кильчер выбирает архитектуру генеративно-состязательных сетей (GAN). Однако он вносит в классическую схему существенные изменения:
- Генератор: отвечает за создание изображения с результатом вычислений .
- Отказ от Дискриминатора: Янник Кильчер в шутку утверждает, что «в области ИИ нет места дискриминации», поэтому он исключает этот компонент из архитектуры, напрямую связывая потери (loss) генератора с целевыми данными .
Кильчер отмечает, что использование архитектуры с названием «состязательная» (adversarial) может показаться опасным, но считает это оправданным риском для решения столь фундаментальной задачи .
📊 Подготовка данных: MNIST и «проблема плюса» 2:14
Для обучения модели был выбран классический датасет MNIST, содержащий тысячи образцов рукописных цифр . Кильчер называет его «крем-де-ла-крем» среди наборов данных, подчеркивая, что для компьютера это просто наборы чисел, но для человека они наполнены глубоким смыслом .
Процесс подготовки данных столкнулся с неожиданным препятствием:
- В датасете MNIST отсутствуют знаки арифметических операций .
- По шутливому предположению Кильчера, MNIST был изобретен еще до того, как человечество придумало символ «плюс» .
- Для решения проблемы ведущий самостоятельно генерирует знак плюса, используя функцию
meshgridв Python, называя результат «самым красивым плюсом в истории ИИ» .
В итоге каждый обучающий пример представляет собой склейку трех изображений: «двойка», «плюс» и еще одна «двойка», образуя входное полотно размером 28 на 84 пикселя .
🧠 Обучение и «оракул» истины 6:10
Одной из главных проблем стала разметка данных. Чтобы ИИ узнал, чему равно 2+2, ему нужны правильные ответы (метки). Кильчер отказывается нанимать аспирантов для этой работы, так как они тоже люди и могут ошибаться .
Вместо этого он использует «эвристический метод»:
- В качестве «оракула» выступает сам интерпретатор Python, где выражение
2 + 2дает результат4. - Кильчер подчеркивает: хотя в данном случае результат оказался равен четырем, в других условиях «это могло бы быть что угодно» .
- Для обучения генератора используется L2-loss (квадратичная ошибка). По мнению ведущего, это «самая мощная функция потерь», и для такой задачи нужно использовать только лучшие инструменты .
В процессе оптимизации используется алгоритм Adam . Кильчер выбирает специфическую скорость обучения (learning rate) 3e-4, обосновывая это тем, что в этой записи есть и цифры, и буквы, и тире, что кажется ему «хорошим знаком» .
🚀 Финальный тест и обобщающая способность 10:12
После 9000 шагов обучения, в каждом из которых обрабатывалось по 64 примера , наступил этап тестирования. Кильчер использует тестовый набор данных MNIST, который модель никогда не видела в процессе обучения, чтобы проверить её «способность к обобщению» (generalization) .
Для финального прогона были выбраны две случайные рукописные двойки из тестовой выборки . Чтобы подчеркнуть важность момента, Янник Кильчер:
- Поместил тестовый образец в генератор.
- Назвал переменную вывода капсом (
OUTPUT), чтобы «дать модели понять важность вычислений» . - Несколько раз перезапустил ячейку с кодом для уверенности в результате .
Видео завершается на моменте демонстрации финального результата, который, по словам Кильчера, должен стать «историческим событием для всего человечества» .