Самая базовая штука для любого DS’а

Может я скажу банальную вещь. Но очень часто натыкаюсь на то что многие люди этого не делают. Процесс берёт верх над результатом. И люди не используют критическое мышление. А ведь критическое мышление – это именно то что требуется от человека который должен делать Data Scince | Computer Vision.

Поймите, каждое исследование, каждый результат, каждое утверждение – могут содержать ошибку. И вам важно находить и опираться на те их них которые наиболее вероятные. Ну, из последнего – https://habr.com/ru/post/471282/ (изначальную версию статьи автор поправил, статья тут – https://www.kaggle.com/natevegh/pneumonia-detection-98-acc-fastai-2019-update сильно ближе).

Человек написал статью на Хабре о том как по какому-то датасету получил точность на порядок выше чем любой другой исследователь. Причём как получил… Взял очередной ML-автообучатель, написал пять строчек запуска – получил результат. Его (а так же кучу читателей) не смутило что:

  • В фреймворке нет ничего нового по сравнению с другими решениями
  • Есть другие решения на базе той же сетки с точностью сильно ниже
  • Все остальные решения +-сходились к одной и той же точности

Если бы это был единичный случай… Но я видел много таких примеров в продакшне. Человек делает явно ошибочную метрику/решению и начинает затирать какой он классный вместо того чтобы искать ошибку.
Например в CherryLabs я очень долго добивался чтобы все члены команды машинного обучения относились критично к любой проделанной работе.
Причём это проблема чаще всего свойственна тем кто в своей жизни не делал ничего кроме машинного обучения.

Правильная тактика, на мой взгляд, сомневаться вообще во всём. В любом утверждении. Это во многом противоестественно, но сильно помогает. Причём помогает в многих вариантах. Недавно Александр (автор сайта https://spark-in.me/ и соответствующего телеграмм канала ) прислал такое видео (человек сделал детектор оружия и предлагает гонять его для камер безопасности в школах):

Я долго ржал с этой идеи, ответив вот этим кадром:

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

Короче. Это должен был быть краткий пост с общим посылом – “будьте критичнее”. И краткий набор советов:

  • Смотрите как решают задачу другие люди. Используйте это в качестве референса.
    • Вы сделали что-то на порядок круче? Ищите ошибку. Проверьте все возможные варианты прежде чем утверждать это.
    • Никто не решает вашу задачу? Хотите стать первопроходцем? Обычно это очень плохая идея. Скорее всего есть скрытые причины почему вашу задачу никто не смог решить. Вообще это очень плохая идея делать что-то первым. С вероятностью 90% вы обречены на провал.
  • Сделайте прототип в котором вместо алгорита работает человек. Цена такого прототипа в миллион раз меньше чем у системы на базе машинного обучения. Не надо собирать базу/размечать/настраивать. Зато соберёте самую важную метрику – “максимально допустимая точность”. Это критичный параметр в котором нельзя сомневаться (кстати, для того примера с пневманией, с которого я начал – этот параметр более менее известен: человек по рентгенограммам ошибается примерно в 5-7% случаев).
  • Нашли новую модель которая на голову лучше старой? Исследуйте граничные условия и консистентность датасета. Например, из практики. OpenPose и AplhaPose – две самых популярных модели для поиска скелета человека. AlphaPose сильно точнее по открытым датасетам… Но вот только есть такой момент. В открытых датасетах люди обычно большие и хорошо видны. И OpenPose во многих примерах даёт точность на порядки выше за счёт лучшего потенциала детекции.
    Помните что “универсальные метрики” – нифига не универсальны.
  • Сомневайтесь в любом утверждении пока не проверите его.

Уфф. Надеюсь это вам немного поможет)