Как выбрать метод? Или 25 тысяч слез, когда надо что-то рассказать.
В этом году стала совсем преподавателем и теперь у меня есть целый факультатив в ВШЭ. Но преподаю разные форматы (лекции, вебинары, гостевые) я, однако, не первый год, а основным центром моих материалов является степик.
И это всегда ужасные муки выбора — что включить в курс, а что выключить. Когда начинаешь разбирать что-то одно, то всегда попадаешь в воронку ссылок и модификаций и меня постоянно волнует вопрос: как преподать нужное, а не экзотическое и как не перечеррипикать информацию с bias-ом на то, что нравится мне.
Ответ всегда в чиселках. Я собираю статистику — и она иногда вырождается в забавные артефакты. Решила поделиться одним из — про градиентные методы интерпретации.
TLDR про градиентные методы: всегда на выходе отдают тепловую карту, всегда используют backward pass по модели (то есть дифференцируют ее, обычно по входу).
Почему в ходу: потому что очень удобно неспециалистам давать объяснение картинкой. Условно, «вот, модель посмотрела сюда».
Методов и модификаций ОЧЕНЬ много. И единой статистики по частоте использования градиентных методов нет. Есть несколько косвенных измерений.
🔤) Обычно, задача «посчитать кого где используют» волнует будто бы в основном медицину. Тут нашлись относительно свежие обзоры(ссылки отнесу в комменты):
— для классификации рака по снимкам (46 исследований за 2020–2026) показывает превалирование Grad-CAM — в 34 из 46 (73.9%). Авторы объясняют доминирование Grad-CAM тем, что его легко встроить в CNN по постановке (это правда так).
— для задач по разным доменам Saarela & Podgorelec (512 статей за 2021–2024): на табличных данных лидируют SHAP и LIME. На изображениях преобладают градиентные методы — (снова) Grad-CAM, Grad-CAM++, SmoothGrad, IG, LRP.
🔤) Поиск по имени, описанию и топикам репозиториев на GitHub по упоминаниям методов из моего курса тоже показывает превалирование Grad-CAM, топ такой (полный кину в комменты, как (1)):
Grad-CAM ~8 470
saliency map ~690*
Integrated Gradients ~405
* Сюда попадают и не XAI-работы — модели, предсказывающие, куда смотрит человек, что важно.
🔤) Звёзды библиотек светят тоже методу Grad-CAM: jacobgil/pytorch-grad-cam — 12 985, Captum — 5 707, iNNvestigate — 1 309, PAIR saliency — 997, Zennit — 248. То есть узкая библиотека, где есть только CAM-методы, имеет вдвое больше звёзд, чем универсальная Captum.
🔤) Поиск кода GitHub по Python-файлам, где имя класса стоит вместе с именем библиотеки (например, IntegratedGradients captum), дал следующее (полные тоже кину в комменты, как (2. 3)):
библиотека pytorch-grad-cam (метод и число файлов)
GradCAM 6 368
GradCAM++ 3 016
EigenCAM 2 432
библиотека Captum (метод и число файлов)
IntegratedGradients 7 248 (из них ~1 070 — LayerIntegratedGradients)
Saliency 2 984
DeepLift 1 892
А что видно?
Grad-CAM, как метод, выехал везде и вперед. Выехал он по постановке — для него в целом нужна только сеть и обратный проход (и он даже аппроксимируется на модели без сверточных слоев). Тут могла бы быть реклама курса, но продажник из меня говно, иначе я бы уже чиллила на Бали, поэтому постановку можно изучить в чьей-то неплохой статье на Хабр и в paper метода.
Из важных ограничений — метод дает размытую карту (из-за того, что на последнем слое, где метод обычно строят, у нас карты активаций маленькие, например 7х7, а вход обычно сильно больше (классика 224х224). Поэтому у него много-много модификаций (Guided, ++, Hires и прочие)
Второе важное, что хоть я обвешусь числами, у каждого способа оценки у меня своё смещение:
• Цитирования не равны использованию. Например, Springenberg et al. цитируют в основном за all-conv net, а не за guided backprop.
• Обзоры перекошены в сторону медицины.
• Звёзды перекошены в сторону удобства библиотеки.
• Поиск по коду считает приблизительно и не отличает рабочий проект от учебного скрипта, который импортирует все методы разом.
Post #579
1.42K
- ❤ 8
- 🔥 5