# Янник Кильчер: «Зачем спорить, если ИИ может решить 2+2 за нас?»

Источник: https://www.youtube.com/watch?v=udS2OPohs_s
Канал: Yannic Kilcher
Опубликовано: 06.08.2020

---

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

## 🛠️ Стек технологий и архитектура модели
[[JUMP:0:00]]

Янник Кильчер начинает проект с выбора инструментов, подчеркивая, что для серьезных задач в области ИИ необходимо использовать библиотеку PyTorch [0:56]. По мнению ведущего, проверка доступности CUDA (интерфейса для вычислений на видеокартах) является обязательным шагом, который он иронично называет «магией в мире ИИ» [1:08].

В качестве основы для своего эксперимента Кильчер выбирает архитектуру генеративно-состязательных сетей (GAN). Однако он вносит в классическую схему существенные изменения:

*   **Генератор:** отвечает за создание изображения с результатом вычислений [1:49].
*   **Отказ от Дискриминатора:** Янник Кильчер в шутку утверждает, что «в области ИИ нет места дискриминации», поэтому он исключает этот компонент из архитектуры, напрямую связывая потери (loss) генератора с целевыми данными [7:32].

Кильчер отмечает, что использование архитектуры с названием «состязательная» (adversarial) может показаться опасным, но считает это оправданным риском для решения столь фундаментальной задачи [1:22].

## 📊 Подготовка данных: MNIST и «проблема плюса»
[[JUMP:2:14]]

Для обучения модели был выбран классический датасет MNIST, содержащий тысячи образцов рукописных цифр [2:26]. Кильчер называет его «крем-де-ла-крем» среди наборов данных, подчеркивая, что для компьютера это просто наборы чисел, но для человека они наполнены глубоким смыслом [2:40].

Процесс подготовки данных столкнулся с неожиданным препятствием:

*   В датасете MNIST отсутствуют знаки арифметических операций [3:58].
*   По шутливому предположению Кильчера, MNIST был изобретен еще до того, как человечество придумало символ «плюс» [4:12].
*   Для решения проблемы ведущий самостоятельно генерирует знак плюса, используя функцию `meshgrid` в Python, называя результат «самым красивым плюсом в истории ИИ» [4:25].

В итоге каждый обучающий пример представляет собой склейку трех изображений: «двойка», «плюс» и еще одна «двойка», образуя входное полотно размером 28 на 84 пикселя [5:19].

## 🧠 Обучение и «оракул» истины
[[JUMP:6:10]]

Одной из главных проблем стала разметка данных. Чтобы ИИ узнал, чему равно 2+2, ему нужны правильные ответы (метки). Кильчер отказывается нанимать аспирантов для этой работы, так как они тоже люди и могут ошибаться [6:10].

Вместо этого он использует «эвристический метод»:

*   В качестве «оракула» выступает сам интерпретатор Python, где выражение `2 + 2` дает результат `4` [6:25].
*   Кильчер подчеркивает: хотя в данном случае результат оказался равен четырем, в других условиях «это могло бы быть что угодно» [6:52].
*   Для обучения генератора используется L2-loss (квадратичная ошибка). По мнению ведущего, это «самая мощная функция потерь», и для такой задачи нужно использовать только лучшие инструменты [8:38].

В процессе оптимизации используется алгоритм Adam [9:30]. Кильчер выбирает специфическую скорость обучения (learning rate) `3e-4`, обосновывая это тем, что в этой записи есть и цифры, и буквы, и тире, что кажется ему «хорошим знаком» [9:17].

## 🚀 Финальный тест и обобщающая способность
[[JUMP:10:12]]

После 9000 шагов обучения, в каждом из которых обрабатывалось по 64 примера [3:45], наступил этап тестирования. Кильчер использует тестовый набор данных MNIST, который модель никогда не видела в процессе обучения, чтобы проверить её «способность к обобщению» (generalization) [10:26].

Для финального прогона были выбраны две случайные рукописные двойки из тестовой выборки [10:38]. Чтобы подчеркнуть важность момента, Янник Кильчер:

*   Поместил тестовый образец в генератор.
*   Назвал переменную вывода капсом (`OUTPUT`), чтобы «дать модели понять важность вычислений» [10:53].
*   Несколько раз перезапустил ячейку с кодом для уверенности в результате [11:06].

Видео завершается на моменте демонстрации финального результата, который, по словам Кильчера, должен стать «историческим событием для всего человечества» [11:24].