Добро пожаловать в последний пост в моей серии инструментов для машинного обучения, где мы рассмотрели основы NumPy, Pandas, визуализации данных, основ машинного обучения и, наконец, мы готовы поговорить о платформах машинного обучения! Если вы пропустили последний пост об основах машинного обучения, где я пытался познакомить вас с такими вещами, как искусственные нейроны, нейронные сети, как они обучаются и какие функции/параметры используются в процессе. Не обязательно читать это, прежде чем вы приступите к этому, но я думаю, что это было бы полезно. Если вы решите это сделать, вы можете найти его здесь.

В любом случае, без лишних слов, приступим!

Как вы можете догадаться, кодировать алгоритмы машинного обучения с нуля — непростая задача, не говоря уже о том, чтобы обеспечить функциональность/гибкость, чтобы иметь возможность использовать их в конвейерах или масштабировать по мере роста вашего проекта. Именно здесь приходят на помощь такие фреймворки, как Tensorflow, Scikit-Learn, Keras и многие другие. Они позволяют нам легко использовать наиболее распространенные алгоритмы ML, такие как K-Means, Decision Tree, SVM, или создавать ANN через API (т.е. Tensorflow имеет высокоуровневый API Keras). Поскольку они интегрированы с другими инструментами, такими как Weights & Biases для отслеживания экспериментов (см. WandB Tensorflow Hooks), Google Colab, Docker, Amazon Sagemaker и многими другими, они значительно облегчают жизнь людям, занимающимся DS/ML. Существует также множество хорошо документированных, правильно помеченных наборов данных, удобных для начинающих, включенных почти во все фреймворки, что очень помогает новичкам, поскольку они могут просто импортировать набор данных напрямую в одну строку и следовать официальному примеру в указанном документации фреймворка, чтобы получить представление о вещах, когда они только начинают.

Вместо того, чтобы тратить часы и дни на кропотливые попытки построить нейронную сеть, вы можете просто построить простую сеть для компьютерного зрения всего за 10 строк. Мы рассмотрим пример позже в посте.

Scikit Learn

До появления Tensorflow самой популярной (возможно, до сих пор) платформой машинного обучения была Scikit Learn (или sklearn). Это фреймворк, благодаря которому Python сегодня так широко используется в машинном обучении. Python, конечно, не был создан с учетом этого, поэтому то, что сделал Scikit Learn, было довольно новаторским. То, что началось как проект Google Summer of Code в 2007 году, было поднято на совершенно другой уровень группой талантливых разработчиков в 2010 году и опубликовано как платформа машинного обучения с открытым исходным кодом. Scikit Learn построен на основе SciPy в качестве зависимости, которая представляет собой библиотеку Python, которая обеспечивает научные вычисления, необходимые для того, чтобы Scikit Learn мог создавать модели и обучать алгоритмы. Если вы хотите внедрить современные модели глубокого обучения, вы не найдете то, что ищете, в Scikit Learn. Это инструмент, который лучше всего подходит для создания традиционных приложений машинного обучения и надежных конвейеров. Вы можете обрабатывать свои данные, преобразовывать их, обучать модель с помощью большого набора алгоритмов и масштабировать ее в облаке. Но от него мало пользы, если вы занимаетесь глубоким обучением, поскольку Scikit Learn в лучшем случае поддерживает простые модели многослойного персептрона. Нет LSTM, CNN или RNN. Для этого вам нужно обратиться к другим фреймворкам, таким как Tensorflow, Keras и PyTorch. Существуют «оценщики», которые вы можете использовать для регрессии, кластеризации, классификации и уменьшения размерности. Если вы только начинаете, я настоятельно рекомендую вам начать с использования Scikit Learn, так как он прост для понимания, надежен и позволит вам понять, как работает типичный рабочий процесс ML и какие шаги вы должны предпринять. процесс.

Тензорный поток

Tensorflow, пожалуй, самый популярный фреймворк ML/DL. Он был создан исследовательской группой Google в Google Brain и стал открытым исходным кодом в 2015 году. С тех пор он приобрел большую популярность и стал основой для большинства исследователей и для многих компаний в отрасли, которые вы, вероятно, знакомы с такими как Uber, AirBnB, Twitter и даже NASA. Своей популярностью Tensorflow обязан большому количеству вкладов со всего мира за то, что он является открытым исходным кодом, что позволяет адаптироваться к потребностям отрасли с постоянными обновлениями и новыми функциями. (Конечно, поддержка на StackOverflow тоже помогает 😁). Еще одним огромным преимуществом Tensorflow является то, что он совместим со многими языками, кроме Python. Вы можете использовать Tensorflow, даже если вы пишете на Java, C++ и Javascript. Вы можете использовать Tensorflow.js для реализации решений машинного обучения в браузерах. Вы даже можете внедрить машинное обучение на устройстве и встроенное в смартфоны, компьютеры и даже микроконтроллеры с помощью Tensorflow Lite. Если они не убедили вас в популярности Tensorflow и почему вы должны его использовать, я не знаю, что вас убедит.

Простой пример компьютерного зрения

Теперь давайте посмотрим на очень простой пример, который позволяет нам классифицировать изображения в Tensorflow. Это взято из примера набора данных Fashion MNIST, который по сути представляет собой Hello World компьютерного зрения.

Благодаря Tensorflow и Keras, всего в 9 коротких строках у нас есть рабочая (вероятно, не очень) модель классификации изображений. Теперь все, что вам нужно сделать, это вызвать для него метод компиляции и выбрать оптимизатор и функции потерь. Затем вы можете просто использовать my_simple_cv_model.fit() и передавать тренировочные изображения и метки в скомпилированную модель для обучения.

Другие преимущества использования платформ и библиотек машинного обучения

Очевидно, что не нужно создавать алгоритмы с нуля самостоятельно, но есть и другие интересные вещи, которые приходят с Tensorflow и тому подобным:

  • Если вы только начинаете свой путь в машинном обучении и хотите попробовать что-то простое, чтобы немного лучше понять суть вещей, вы можете импортировать готовые к использованию наборы данных и работать с ними. Эти наборы данных обычно представляют собой очень популярные общедоступные наборы данных с точными аннотациями. Вы можете использовать эти наборы данных, не беспокоясь об их поиске, импорте в свой проект и их обработке. Просто вызовите на них свою модель tf.keras и приступайте к обучению. Обычно это «игрушечные наборы данных», что означает, что они в основном используются в образовательных целях. Вы можете найти эти наборы данных почти во всех фреймворках от Scikit Learn до Tensorflow.
  • Вот некоторые из задач, которые вы можете использовать с наборами данных tensorflow: компьютерное зрение (обнаружение объектов, классификация изображений), обработка естественного языка (перевод, суммирование, упрощение текста, ответы на вопросы), кластеризация, рекомендации и многое другое.
  • Еще одним преимуществом использования фреймворков является то, что они позволяют вам выполнять «переносное обучение», что является причудливым способом сказать, что вы используете предварительно обученные модели на своем собственном наборе данных и настраиваете параметры в соответствии с вашими результатами. Хорошо, это все еще немного причудливо, я думаю. Это означает, что вы можете использовать действительно точные модели, построенные на терабайтах данных такими компаниями, как Google, OpenAI и т. д., и подогнать их под свои данные. Вы можете использовать MobileNetV2 (созданный Google) в Tensorflow для классификации изображений, которая имеет около 3,4 миллиона параметров, или вы можете использовать массивную модель НЛП GPT-3 (созданную OpenAI, с 175 миллиардами параметров), чтобы выполнить свои задачи НЛП. Хотя, очевидно, не через Tensorflow, OpenAI выпустил API тонкой настройки для GPT-3. Это подводит нас к Hugging Face.

✨Обнимающее лицо✨

То, что началось в 2016 году как компания, создающая чат-ботов, с годами превратилось в компанию, которая является лидером в области НЛП и делает невероятные вещи, чтобы демократизировать машинное обучение для всех. Huggin Face получил свое название, как вы уже догадались, 🤗. Они только что достигли оценки в 2 миллиарда долларов и находятся на пути к тому, чтобы стать GitHub машинного обучения. Некоторые из самых крутых вещей, которые они сделали, включают в себя:

  • Библиотека Transformers. Изменив механизм внимания, используемый в моделях NLP, и позволив нам использовать предварительно обученные модели через их API, мы сделали огромный шаг в демократизации ML и NLP. API имеет разные уровни абстракции, так что практически каждый может его использовать. Вы можете просто вызвать конвейер() и выбрать, какую предварительно обученную модель вы хотите использовать, и получить свои результаты, если вы собираетесь использовать полную абстракцию. Давайте посмотрим, сколько строк нам понадобится, чтобы получить наши результаты.

Хотите верьте, хотите нет, но это так.

  • HuggingFace Hub: HF Hub — это платформа, на которой вы можете размещать свои модели, наборы данных и демонстрационные приложения, размещенные в HF Spaces. Вы можете найти модели, загруженные другими пользователями, просмотреть их метаданные, чтобы узнать об их задачах, поддерживаемых языках и т. д. См. карточки моделей, чтобы узнать о предвзятости и ограничениях модели. Hub также поддерживает управление версиями для ваших моделей. Вы можете видеть свою историю коммитов, ветки и все остальное, точно так же, как GitHub, но для машинного обучения. Добавьте виджет логического вывода в свою размещенную модель, чтобы любой мог прийти и настроить параметры или задачу модели и поэкспериментировать с ней. И, насколько я знаю, нет ограничений на размер файла для хранения набора данных. Вы можете использовать его с личной учетной записью или открыть учетную запись организации для вашей компании. И все это бесплатно.
  • Пространства. Здесь вы можете продемонстрировать свою работу, разместить свои демонстрационные приложения независимо от того, делитесь ли вы ими с людьми, с которыми работаете, или хотите представить простую демонстрацию Gradio заинтересованным сторонам в вашей компании, чтобы что вы можете лучше передать свои идеи и результаты. Это также отличное место для инженеров машинного обучения, где они могут создать портфолио и показать свою работу, подобно профилю Kaggle.

И это конец этого поста. Надеюсь, вы извлекли из него что-то полезное. Это может быть немного разбросано, так как у меня были довольно длинные перерывы между разделами, этот месяц был довольно загруженным, поэтому я также отстаю от графика на пару дней, но я все равно хотел опубликовать это, чтобы не нарушать “ 1 месяц = ​​1 пост» Я себе поставил. Большое спасибо, если вы прошли весь этот путь, и я надеюсь, что это стоило вашего времени.

Как всегда, если вы заметили какие-либо ошибки в сообщении, грамматические или технические, пожалуйста, не стесняйтесь обращаться ко мне в Твиттере или оставить комментарий здесь. Я публикую статьи примерно в одно и то же время каждый месяц, но если вы хотите получать уведомления о выходе следующей статьи, вы можете просто нажать здесь, чтобы получить электронное письмо, когда она будет опубликована.

Еще раз спасибо за чтение, и до встречи в следующем посте!