How Reading Papers Helps You Be a More Effective Data Scientist
Юджин Ян рассказывает, как чтение научных статей делает дата-сайентиста эффективнее. Он приводит пример коллеги, которая, прочитав о подходе LinkedIn (kNN + SVM для очистки меток), помогла команде довести точность классификатора продуктов до 95%. Автор объясняет, что статьи расширяют кругозор, помогают быть в курсе развития области (например, прорывов в NLP) и экономят время за счёт переиспользования чужих находок. Он рекомендует выбирать статьи по интересу, практической пользе или рекомендациям, и описывает свой метод чтения в три прохода: беглый обзор, выделение и заметки, синтез общих концепций. В конце даны ресурсы: Papers with Code, applied-ml, ml-surveys, Google Scholar Alerts и 42 Papers.
Как чтение научных статей помогает стать более эффективным дата-сайентистом
[ обучение ] · 6 мин чтения
«Вместо того чтобы вручную проверять наши данные, почему бы не попробовать то, что сделали в LinkedIn? Это помогло им достичь 95% precision и 80% recall».
Затем коллега рассказала, как LinkedIn использовал метод k-ближайших соседей для выявления несогласованных меток (в названиях должностей). Далее LinkedIn обучил SVM (метод опорных векторов) на согласованных метках, после чего SVM использовалась для обновления несогласованных меток. Это помогло им добиться 95% precision у классификатора названий должностей.
Это предложение оказалось самым полезным в нашем обсуждении. Следование ему привело к тому, что итоговая точность нашего классификатора продуктов составила 95%. Как ей удалось внести этот критически важный инсайт, спросил я. «Да я просто время от времени читаю статьи», — ответила она. Если конкретнее, она старается читать 1–2 статьи в неделю, обычно по темам, над которыми работает команда.
Читая статьи, мы узнаём, что у других (например, у LinkedIn) сработало (и что не сработало). Затем мы можем адаптировать их подход и не изобретать ракету заново. Это помогает нам выкатить работающее решение с меньшими затратами времени и сил.
Если я и видел дальше других, то потому, что стоял на плечах гигантов. — Исаак Ньютон
Чтение статей также расширяет наш кругозор. Хотя мы можем работать в узких срезах data science, разработки в смежных областях исследований часто оказываются полезными. Например, идея word embeddings и графов пригодилась в рекомендательных системах. Аналогично, идеи из компьютерного зрения — такие как transfer learning и data augmentation — оказались полезны для обработки естественного языка (NLP).
Чтение статей также помогает оставаться в курсе. Область NLP сильно продвинулась за последнее десятилетие. Тем не менее, прочитав десяток наиболее значимых работ, можно быстро войти в курс дела. Будучи в курсе, мы становимся эффективнее в работе, тратя меньше времени и сил. Это высвобождает больше времени на чтение и обучение, запуская добродетельный цикл.
Как выбирать, какие статьи читать?
Если мы только формируем эту привычку, можно просто читать всё, что нам интересно — почти каждая статья чему-то нас научит. Чтение на интересные темы также облегчает выработку привычки.
Можно также выбирать статьи исходя из практичности. Например, нам может понадобиться быстро разобраться в предметной области для проекта. Перед началом проекта я почти всегда выделяю время на обзор литературы. Пара дней погружения в статьи может сэкономить недели, если не месяцы, тупиковых попыток и ненужного изобретения колеса.
Рекомендации — ещё один удобный способ находить полезные статьи. Один из приёмов — подписываться на людей, которыми мы восхищаемся, в соцсетях или на тематические рассылки: я нахожу, что у таких источников высокое соотношение сигнал/шум.
Какие статьи читаю я? Из практических соображений я в основном читаю работы, связанные с моей работой. Это позволяет мне сразу применять прочитанное и тем самым закреплять знания. Помимо работы, мне интересны последовательности, и я обычно читаю про NLP и reinforcement learning. Особенно люблю статьи, в которых рассказывают, что сработало, а что нет — например, через ablation-исследования. К ним относятся работы о Word2vec, BERT и T5.
Как читать статьи?
Поиск в Google по «how to read papers» выдаёт бесчисленное количество полезных результатов. Но если вам кажется это перегруженным, вот пара материалов, которые я нашёл полезными:
Классический метод трёх проходов (и его трёхминутная видеоверсия) OMSCS 6460 How To Read An Academic Paper: советы от любимого профессора Интервью с учёными, в которых они делятся своим подходом Подход для инженерно-исследовательских статей Утешение, что мы не единственные, кому это даётся тяжело
Мой метод похож на подход с тремя проходами. В примере ниже я расскажу, как читал несколько статей по recsys, чтобы разобраться в метриках новизны, разнообразия, serendipity и т. п.
На первом проходе я просматриваю аннотацию, чтобы понять, есть ли в статье то, что мне нужно. Если есть, я пробегаюсь по заголовкам, чтобы выделить постановку задачи, методы и результаты. В этом примере я конкретно искал формулы расчёта различных метрик. Все статьи из списка я прогоняю через первый проход (и не приступаю ко второму, пока не закончу список). В этом примере примерно половина статей прошла во второй проход.
После первого прохода 30+ статей сократились до 14 — изрядная экономия усилий.
На втором проходе я ещё раз прохожусь по каждой статье и выделяю релевантные разделы. Это помогает быстро находить важные фрагменты, когда я обращаюсь к статье позже. Затем я делаю заметки по каждой работе. В этом примере заметки касались в основном метрик (методы, формулы). Если бы это был обзор литературы для прикладной задачи (например, recsys, классификация продуктов, выявление мошенничества), заметки сосредотачивались бы на методах, дизайне системы и результатах.
Пример заметок из трёх статей; заметки, относящиеся к метрикам, обведены красным.
Для большинства статей достаточно второго прохода. Я уже извлёк ключевую информацию и могу обратиться к ней в будущем, если понадобится. Тем не менее иногда я делаю и третий проход — если читаю статьи в рамках обзора литературы или хочу закрепить знания.
Чтение лишь поставляет уму материал для знаний; именно мышление делает прочитанное нашим. — Джон Локк
На третьем проходе я синтезирую общие концепции из разных статей в отдельные заметки. У разных работ свои методы измерения новизны, разнообразия, serendipity и т. д. Я свожу их в единую заметку и сравниваю плюсы и минусы. В процессе я часто нахожу пробелы в своих заметках и знаниях и вынужден возвращаться к исходной статье.
Пример заметок по метрикам serendipity и unexpectedness.
Наконец, если я считаю, что это будет полезно другим, я пишу о том, что узнал, и публикую онлайн. По сравнению с написанием с нуля, наличие моих заметок как опорного материала сильно упрощает работу. Так появились такие материалы, как:
Beating the Baseline Recommender with Graph & NLP in Pytorch Serendipity: Accuracy's Unpopular Best Friend in Recommenders NLP for Supervised Learning - A Brief Survey
Попробуйте сами
Прежде чем нырять в следующий проект, потратьте день-два на просмотр нескольких релевантных статей. Уверен, в среднесрочной и долгосрочной перспективе это сэкономит вам время и силы. Не знаете, с чего начать? Вот несколько полезных ресурсов:
Papers with Code: ML-исследования с кодом для их реализации applied-ml: статьи о том, как организации создавали и развёртывали ML-системы ml-surveys: обзорные статьи, обобщающие недавние достижения в ML Google Scholar Alerts: уведомления о новых публикациях по вашему запросу 42 Papers: трендовые статьи в AI и Computer Science
Зачем читать статьи? Потому что это: • Расширяет наш кругозор• Помогает оставаться в курсе• Помогает выкатывать с меньшими затратами времени и сил Здесь я поделюсь способами выбирать статьи, ресурсами с инструкциями и своим подходом (со скриншотами).https://t.co/7hGjxpkUvZ— Eugene Yan (@eugeneyan) 2 сентября 2020
Спасибо Yang Xinyi за вычитку черновиков.
Если этот материал оказался вам полезным, пожалуйста, ссылайтесь на него так:
Yan, Ziyou. (Aug 2020). How Reading Papers Helps You Be a More Effective Data Scientist. eugeneyan.com. https://eugeneyan.com/writing/why-read-papers/.
или
@article{yan2020read, title = {How Reading Papers Helps You Be a More Effective Data Scientist}, author = {Yan, Ziyou}, journal = {eugeneyan.com}, year = {2020}, month = {Aug}, url = {https://eugeneyan.com/writing/why-read-papers/} }
К 11 800+ читателей, получающих обновления о machine learning, RecSys, LLM и инженерии.