Этой осенью попал на две разные конференции по машинному обучению и его применению. Одну организовывал Роман (UseData – она была акцентирована скорее на разработчиков/тимлидов), вторая AiStories – она была скорее для бизнеса, о том как и куда внедрять.
Это не первые конференции на которых я был. Бывал и на более научных, и на более практических (хакатонах, семинарах). Но в глаза бросается сразу несколько вещей:
Может я скажу банальную вещь. Но очень часто натыкаюсь на то что многие люди этого не делают. Процесс берёт верх над результатом. И люди не используют критическое мышление. А ведь критическое мышление – это именно то что требуется от человека который должен делать Data Scince | Computer Vision.
Человек написал статью на Хабре о том как по какому-то датасету получил точность на порядок выше чем любой другой исследователь. Причём как получил… Взял очередной ML-автообучатель, написал пять строчек запуска – получил результат. Его (а так же кучу читателей) не смутило что:
В фреймворке нет ничего нового по сравнению с другими решениями
Есть другие решения на базе той же сетки с точностью сильно ниже
Все остальные решения +-сходились к одной и той же точности
Если бы это был единичный случай… Но я видел много таких примеров в продакшне. Человек делает явно ошибочную метрику/решению и начинает затирать какой он классный вместо того чтобы искать ошибку. Например в CherryLabs я очень долго добивался чтобы все члены команды машинного обучения относились критично к любой проделанной работе. Причём это проблема чаще всего свойственна тем кто в своей жизни не делал ничего кроме машинного обучения.
Правильная тактика, на мой взгляд, сомневаться вообще во всём. В любом утверждении. Это во многом противоестественно, но сильно помогает. Причём помогает в многих вариантах. Недавно Александр (автор сайта https://spark-in.me/ и соответствующего телеграмм канала ) прислал такое видео (человек сделал детектор оружия и предлагает гонять его для камер безопасности в школах):
Я долго ржал с этой идеи, ответив вот этим кадром:
Не говоря уже о том что оружие с момента того как его используют проще обнаружить детектором выстрела (эта система реализована в нескольких городах мира). Точности там сильно выше.
Короче. Это должен был быть краткий пост с общим посылом – “будьте критичнее”. И краткий набор советов:
Смотрите как решают задачу другие люди. Используйте это в качестве референса.
Вы сделали что-то на порядок круче? Ищите ошибку. Проверьте все возможные варианты прежде чем утверждать это.
Никто не решает вашу задачу? Хотите стать первопроходцем? Обычно это очень плохая идея. Скорее всего есть скрытые причины почему вашу задачу никто не смог решить. Вообще это очень плохая идея делать что-то первым. С вероятностью 90% вы обречены на провал.
Сделайте прототип в котором вместо алгорита работает человек. Цена такого прототипа в миллион раз меньше чем у системы на базе машинного обучения. Не надо собирать базу/размечать/настраивать. Зато соберёте самую важную метрику – “максимально допустимая точность”. Это критичный параметр в котором нельзя сомневаться (кстати, для того примера с пневманией, с которого я начал – этот параметр более менее известен: человек по рентгенограммам ошибается примерно в 5-7% случаев).
Нашли новую модель которая на голову лучше старой? Исследуйте граничные условия и консистентность датасета. Например, из практики. OpenPose и AplhaPose – две самых популярных модели для поиска скелета человека. AlphaPose сильно точнее по открытым датасетам… Но вот только есть такой момент. В открытых датасетах люди обычно большие и хорошо видны. И OpenPose во многих примерах даёт точность на порядки выше за счёт лучшего потенциала детекции. Помните что “универсальные метрики” – нифига не универсальны.
Сомневайтесь в любом утверждении пока не проверите его.
Решил сделать несколько видео на те темы, на которые всё не хватает времени написать нормальную статью. Начнём с банальной темы по распознаванию по лицам!
Почему они не работают?
Обилие курсов по машинному обучению в последнее время поражает. Разве что на заборах не пишут “стань ML экспертом за пять минут” . Есть реклама на Хабр, таргетированная реклама вконтакте. Крупные институты создают открытые курсы. Число online платных и бесплатных лекций зашкаливает. Но есть ли смысл в этом всем? Имеет ли смысл идти на эти курсы? Может ли информация которую там рассказывают принести пользу?
Краткий обзор вещей по датасетам на которые я наталкивался в последний год.
Я думаю, что все прекрасно понимают, что в нормальной работе по ComputerVision 80% работы может занимать взаимодействие с базой (картинку с заглавия утащил отсюда). Создание базы, разметка, выбор критериев, создание загрузки, модели зашумления, и.т.д. Конечно, я видел случаи, когда это и 95% занимает (медицина), и 20%(использование открытых датасетов). Всякое бывает.
Решил запечатлеть несколько вещей, на которые я натыкался в последний год.
Вы разворачиваете небольшой Computer Vision проект. Для себя, для заказчика, или ещё для кого. Вам нужен сервер для обучения. Понятно, что в ходе эксплуатации сервер будет применяться. И для постоянного переобучения. И, возможно, для внедрения. Как его сделать?
Есть пара подходов:
Аренда облака – Amazon, Azure, Google
Аренда сервера с GPU
Сборка своего сервера
Во-первых, я выскажу свои мысли на тему того что по нашему опыту получалось лучше. Во-вторых, любопытно послушать мнение читателей кто что использует.
На днях посетил конференцию SmartData. Весьма странное мероприятие, никогда таких раньше не видел. Организаторы (https://jugru.org/) обычно проводят программистские конференции. Ну, либо базы данных, продакшн, всё такое. А тут решили хайпануть и провести практически в той же стилистике конференцию по машинному обучению. Получилось причудливо.
Конечно, сам бы я на такое мероприятие билет не купил. Задушила жаба (всю информацию, очевидно, можно было бы найти и так). Но учитывая, что организаторы предложили в обмен на небольшую статью на хабр билет на конференцию с оплатой дороги, я согласился.
А между тем reinforsment learning достиг новых высот. Уже в Doom рубает (в Altari он начал играть всего пол года назад). Пошёл читать как они это делают. Пока что два главных вопроса:
Это Realtime?!
Как они это обучают и чем?! Какова функция пользы??
Этот блог посвящён путевым заметкам при разработке задач компьютерного зрения и машинного обучения. Вот тут я попробовал ответить на то, зачем этот блог нужен.