Мой Племянник Против Машинного Обучения

Мой четырехлетний племянник Яли очень заинтересовался покемонами.

У него есть тонна этих игрушек и несколько карточек коллекционной карточной игры (TGG).

Вчера он обнаружил, что у меня большая коллекция карточек ТГГ, а теперь карточек у него так много, что он просто не может с ними справиться.

Проблема в том, что Яли слишком молод, чтобы понимать, как играют в игру, поэтому он придумал свою собственную версию игры.

Цель игры — рассортировать карты по категориям (Покемоны, Энергия и Тренировочная карта).

Он не спросил, откуда я узнал, что это за карта.

Он просто взял несколько карточек и спросил, какого они типа.

Получив несколько ответов, ему удалось разделить несколько карточек по типам (допустив при этом несколько ошибок).

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

Поскольку я компьютерный компьютерщик и энтузиаст машинного обучения, я начал писать программу, способную конкурировать с Yali. Вот как выглядит типичная карта покемона:

Мой племянник против машинного обучения

Взрослому, умеющему читать, легко понять, что это за карточка – на ней написано.

Но Яли 4 года, и она не умеет читать.

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

Я просто взял эту карту и предоставил ее для изучения нейросети MLP. Спасибо сайту pkmncards Я мог загружать картинки уже рассортированные по категориям, поэтому проблем с данными не возникло.

Алгоритму машинного обучения нужны функции, и моими функциями были пиксели изображения.

Я конвертировал 3 цвета RGB в одно целое число.

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

Найдя максимальную высоту и ширину картинок, я добавил нули к меньшим картинкам.



Мой племянник против машинного обучения

Быстрый контроль качества перед запуском самой программы.

Я случайным образом вытягивал по две карты каждого типа и делал прогноз.

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

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

Память закончилась.

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

Самое большое изображение было 800x635, оно было слишком большим, и изменение размера изображения решило мою проблему.

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

для тренировки.

Я использовал 1533 модели.

Различные размеры изображения, несколько скрытых слоев (до 3), длина слоя (до 100), цвета изображения, способы чтения изображения (все изображение, верхняя часть, каждый второй пиксель и т. д.).

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

9 моделей из 1533 сработали с результатом 2 ошибки.



Мой племянник против машинного обучения

Комбинация моделей давала мне результат с 1 ошибкой, если я поднимал порог выше 44%.

Для теста я использовал порог 50%.

Я подождал месяц, пока Яли поигрался с картами и протестировал.



Мой племянник против машинного обучения



Мой племянник против машинного обучения



Мой племянник против машинного обучения

Возникают ошибки при распознавании энергетических карт. На pkmncards было всего 130 таких карт, в отличие от тысяч других типов карт. Меньше примеров для изучения.

Я спросил Яли, как он узнал карты, и он сказал, что видел некоторых покемонов в сериалах или книгах.

Так он узнал уши Райчу или узнал, что Вапореон был водным Иви.

В моей программе таких данных не было, только карты.

Победив Яли в игре в покемонов и получив награду, наш машинный интеллект отправляется навстречу новым приключениям.



Мой племянник против машинного обучения

Теги: #Машинное обучение #Игры и игровые приставки #искусственный интеллект #Pokemon

Вместе с данным постом часто просматривают: