How to Keep Learning about Machine Learning
Статья Eugene Yan о том, как продолжать учиться в быстро развивающейся области machine learning. Автор предлагает пять практических стратегий: пробовать новые инструменты в каждом проекте, делать личные проекты на пределе своих возможностей, посещать митапы и конференции, регулярно читать научные статьи и находить менторов, которые на несколько шагов впереди. Красной нитью проходит идея письменной фиксации полученных знаний — через блог-посты, демо или обзоры конференций. В завершение автор призывает сохранять «ум новичка» и каждую неделю осваивать что-то новое, будь то статья, инструмент или прототип.
How to Keep Learning about Machine Learning
Как продолжать учиться в области Machine Learning
[ learning career machinelearning ] · 6 мин. чтения
An edited version of this essay was published in The Batch, a newsletter by DeepLearning.AI. Here’s the original version—which do you prefer?
Отредактированная версия этого эссе была опубликована в The Batch — рассылке DeepLearning.AI. Здесь представлена оригинальная версия — какая вам нравится больше?
Machine learning progresses fast. Word2vec (2013) replaced the use of one-hot encoding with word embeddings. Transformers and self-attention (2017) parallelized a previously sequential training process and was adopted across most NLP tasks and even computer vision and recommendation systems. Spark (2014) eclipsed Hadoop as the big data tool of choice, while TensorFlow (2015) and PyTorch (2016) succeeded Theano and Torch.
Machine learning развивается стремительно. Word2vec (2013) заменил one-hot encoding векторными представлениями слов. Трансформеры и механизм self-attention (2017) распараллелили ранее последовательный процесс обучения и были внедрены в большинство задач NLP и даже в компьютерное зрение и рекомендательные системы. Spark (2014) вытеснил Hadoop как главный инструмент для работы с big data, а TensorFlow (2015) и PyTorch (2016) пришли на смену Theano и Torch.
How do we keep up with the deluge of new papers and tools? Here’s what worked for me as I continue to learn about machine learning (or really, anything in general).
Как поспевать за потоком новых статей и инструментов? Вот что помогало мне на пути изучения machine learning (да и вообще чего угодно).
Try something different in each new project. If you typically use pandas for data processing, try Spark or Dask. If you usually rely on decision trees for machine learning, experiment with deep learning. While your exploration may not pay off immediately in the current project, it paves the way towards solving previously unapproachable problems (e.g., big data that can’t fit in memory, machine learning on unstructured data).
Пробуйте что-то новое в каждом проекте. Если вы обычно используете pandas для обработки данных — попробуйте Spark или Dask. Если привыкли полагаться на деревья решений — поэкспериментируйте с deep learning. Ваши эксперименты могут не принести немедленной пользы в текущем проекте, но проложат путь к решению ранее неподъёмных задач (например, big data, не помещающиеся в память, или machine learning на неструктурированных данных).
Regardless of whether it works, share what you learned with your team so they also benefit from your exploration. A 10-minute demo or short blog post will do. Just be sure to balance the explore-exploit trade-off and time-box yourself, so the project doesn’t get derailed.
Независимо от того, сработало что-то или нет, поделитесь полученными знаниями с командой — пусть и они извлекут пользу из вашего исследования. Десятиминутного демо или короткого поста в блоге будет достаточно. Только следите за балансом между исследованием и эксплуатацией (explore-exploit trade-off) и ограничивайте себя по времени, чтобы проект не сошёл с рельсов.
Do a personal project that stretches you. It’s a practical way to gain hands-on experience outside of work. It could be learning a new programming language, trying a new framework, or building an app. Pick a project that aligns with your interests. This makes it more fun and thus more likely to finish. Also, good projects are scary—if you’re not worried about failing, it’s probably not challenging enough to provide much learning. Personally, I’m motivated to finish projects where I can help others, learn something new, and have fun along the way.
Делайте личный проект, который вас растягивает. Это практический способ получить практический опыт за пределами работы. Это может быть изучение нового языка программирования, новый фреймворк или создание приложения. Выбирайте проект, который совпадает с вашими интересами — так будет веселее и вероятнее, что вы доведёте его до конца. Кроме того, хорошие проекты — пугающие: если вы не боитесь потерпеть неудачу, значит, задача, скорее всего, недостаточно сложна, чтобы дать ощутимый рост. Лично меня мотивирует завершать проекты, в которых я могу помочь другим, узнать что-то новое и получить удовольствие от процесса.
In addition, pick a pace that’s sustainable for you instead of trying to do as many projects as possible. I tend to do one project a year, completing it over three to six months. This leaves room for vacations and when work or life gets hectic. Track progress via milestones/features and quantifiable output (e.g., lines of code, mistakes made lessons learned). Wrap up your project by sharing your experience via a blog post or at a meetup. This reinforces your learning and as a bonus, adds to your portfolio.
Кроме того, выберите темп, который устойчив именно для вас, вместо того чтобы пытаться делать как можно больше проектов. Я обычно берусь за один проект в год и завершаю его за три-шесть месяцев. Это оставляет место для отпусков и периодов, когда работа или жизнь становятся особенно напряжёнными. Отслеживайте прогресс через майлстоуны/фичи и измеримые результаты (например, строки кода, совершённые ошибки и извлечённые уроки). Завершите проект, поделившись опытом в блоге или на митапе — это закрепит знания и, в качестве бонуса, пополнит ваше портфолио.
Attend meetups and conferences. You get to hear from, and interact with, people who push the boundaries on research and applying machine learning in industry. I usually find out about such events from my peers and tech Twitter. You can also search on meetup.com. There are also specialized conferences on tools (e.g., Spark Summit) and domains (e.g., RecSys) that tend to be more in-depth. I try to attend one or two conferences a year, and a meetup each month.
Посещайте митапы и конференции. Вы сможете послушать и пообщаться с людьми, которые двигают границы исследований и применения machine learning в индустрии. Обычно я узнаю о таких мероприятиях от коллег и из технического Twitter. Также можно искать на meetup.com. Существуют и специализированные конференции по инструментам (например, Spark Summit) и доменам (например, RecSys), которые, как правило, более глубокие. Я стараюсь посещать одну-две конференции в год и один митап в месяц.
After a conference or meetup, consolidate your knowledge by writing about what you learned. (Do you see the pattern around writing here?) For example, here are some great recaps of RecSys 2021. And if you hear of a technique or tool that excites you, make time to apply it at work or in a personal project to take your learning further.
После конференции или митапа закрепите полученные знания, написав о том, что узнали. (Замечаете закономерность с письмом?) Например, вот несколько отличных обзоров RecSys 2021. А если вы услышите о технике или инструменте, который вас вдохновил, — найдите время применить его на работе или в личном проекте, чтобы углубить обучение.
Read papers, consistently. It’s one of the simplest ways to stay up to date and widen your perspective. If you’re not already doing this, conduct a literature review for each new project at work: How have others solved similar problems? What were the challenges and what worked? A few days of lit review prevents unnecessary reinventing of the wheel and saves weeks of effort. Another way to build the habit is to organize a paper reading group with your team. Every two weeks, someone picks a relevant paper to present and discuss. For a start, here’s a list of papers/tech blogs around applying machine learning in industry.
Читайте статьи — регулярно. Это один из самых простых способов оставаться в курсе и расширять кругозор. Если вы ещё этого не делаете — проводите литературный обзор для каждого нового проекта на работе: как другие решали похожие задачи? Какие были трудности и что сработало? Несколько дней обзора литературы предотвращают ненужное изобретение велосипеда и экономят недели работы. Другой способ выработать привычку — организовать группу чтения статей в команде. Раз в две недели кто-то выбирает релевантную статью для презентации и обсуждения. Для начала — вот список статей и техблогов о применении machine learning в индустрии.
If you’re starting to build the habit, it can be daunting to read scientific papers. I find the classic three-pass approach helpful:
Если вы только начинаете формировать эту привычку, чтение научных статей может пугать. Мне помогает классический подход в три прохода:
Первый проход (5–10 минут): Релевантна ли статья моей текущей работе? Второй проход (1 час): В чём основная идея статьи? Третий проход (4–5 часов): Как я могу мысленно воспроизвести статью?
Find mentors who are a few steps ahead. Where do you see yourself in 3 years? Focused on analytics, research, or MLOps? Your goal will influence what you learn. I found it helpful to consult people who were 2 - 3 steps ahead: What did you learn and demonstrate to make the transition (e.g., from data analyst to data scientist)? Of the most effective people in this role, what skills/traits do they have? The key is to find people who are just slightly ahead. For example, if you want to switch from data engineering to ML engineering, someone who made the change recently can provide more relevant advice than a CTO or head of ML.
Найдите менторов, которые на несколько шагов впереди. Кем вы видите себя через 3 года? В аналитике, исследованиях или MLOps? Ваша цель повлияет на то, что вы изучаете. Мне помогало консультироваться с людьми, которые были на 2–3 шага впереди: что вы изучили и продемонстрировали для перехода (например, от дата-аналитика к data scientist)? Какими навыками и качествами обладают наиболее эффективные люди на этой позиции? Ключ в том, чтобы найти людей, которые лишь немного впереди. Например, если вы хотите перейти из data engineering в ML engineering, человек, совершивший такой переход недавно, даст более актуальный совет, чем CTO или руководитель ML-направления.
For a start, reach out to one person each month. And if you hit it off with them, ask to have a follow-up chat in a quarter or two where you can share your progress. Consider them your informal mentors. Start with finding mentors within your company—they share the same context and can provide more relevant advice. LinkedIn, being an online resume, is another helpful resource. Also, here are some example questions and responses from mentors in the field of ML.
Для начала обращайтесь к одному человеку в месяц. А если вы нашли общий язык, предложите встретиться снова через квартал-два, чтобы поделиться прогрессом. Считайте их своими неформальными менторами. Начните с поиска менторов внутри компании — у них тот же контекст и они смогут дать более релевантные советы. LinkedIn, будучи онлайн-резюме, тоже полезный ресурс. А вот примеры вопросов и ответов от менторов в сфере ML.
Finally, adopt a Beginner’s mind. Regardless of our experience and expertise, we can adopt a beginner’s mind by staying curious and constantly trying new things—someone with a beginner’s mind is likely already practicing some combination of the above.
И наконец, развивайте «ум новичка». Независимо от опыта и экспертизы, мы можем сохранять ум новичка, оставаясь любопытными и постоянно пробуя новое — человек с умом новичка, скорее всего, уже практикует какую-то комбинацию перечисленных выше подходов.
In the beginner’s mind, there are many possibilities, but in the expert’s there are few. —Shunryu Suzuki
В уме новичка множество возможностей, в уме эксперта — лишь немногие. —Shunryu Suzuki
Thus, I challenge you to stay a beginner and learn one new thing each week, either by reading a paper, trying a new tool/technique, or hacking a prototype. After a year or two, you’ll be surprised when problems that were previously out of reach are now child’s play.
Поэтому я бросаю вам вызов: оставайтесь новичком и каждую неделю узнавайте что-то новое — будь то чтение статьи, освоение нового инструмента или создание прототипа. Через год-два вы удивитесь, обнаружив, что задачи, которые раньше казались недосягаемыми, теперь решаются играючи.
P.S. What other ways have you found helpful for learning?
P.S. Какие ещё способы обучения вы нашли полезными?
Thanks to Yang Xinyi for reading drafts of this.
Благодарности: спасибо Yang Xinyi за вычитку черновиков.
If you found this useful, please cite this write-up as:
Если этот материал оказался полезен, пожалуйста, цитируйте его так:
Yan, Ziyou. (Jan 2022). How to Keep Learning about Machine Learning. eugeneyan.com. https://eugeneyan.com/writing/how-to-keep-learning/.
Yan, Ziyou. (Jan 2022). How to Keep Learning about Machine Learning. eugeneyan.com. https://eugeneyan.com/writing/how-to-keep-learning/.
or
или
@article{yan2022learning,
title = {How to Keep Learning about Machine Learning},
author = {Yan, Ziyou},
journal = {eugeneyan.com},
year = {2022},
month = {Jan},
url = {https://eugeneyan.com/writing/how-to-keep-learning/}
}
@article{yan2022learning, title = {How to Keep Learning about Machine Learning}, author = {Yan, Ziyou}, journal = {eugeneyan.com}, year = {2022}, month = {Jan}, url = {https://eugeneyan.com/writing/how-to-keep-learning/} }
Join 11,800+ readers getting updates on machine learning, RecSys, LLMs, and engineering.
Присоединяйтесь к 11 800+ читателям, получающим обновления о machine learning, RecSys, LLM и инженерии.