Знакомство с ML.NET: кросс-платформенная, проверенная и открытая структура машинного обучения

Tags: machine learning

Сегодня в // Build 2018 инженеры .NET рады объявить предварительный просмотр ML.NET, кросс-платформенной платформы для  машинного обучения с открытым исходным кодом. ML.NET позволит разработчикам .NET разрабатывать свои собственные модели и внедрять пользовательский ML в свои приложения без предварительного опыта в разработке или настройке моделей машинного обучения.

ML.NET был первоначально разработан в Microsoft Research и в течение последнего десятилетия превратился в серьезную структуру; он используется во многих группах продуктов в Microsoft, таких как Windows, Bing, Azure и т. д.

В этом первом предварительном выпуске ML.NET позволяет выполнять ML-задачи, такие как классификация (например, категоризация текста и анализ настроений) и регрессия (например, прогнозирование  цен). Наряду с этими возможностями ML, этот первый выпуск ML.NET также предоставляет первый проект .NET API для учебных моделей, используя модели для прогнозов, а также основные компоненты этой структуры, такие как алгоритмы обучения, преобразования и основные структуры данных ML.

ML.NET - это прежде всего инфраструктура, что означает, что ее можно расширить, чтобы добавить популярные ML-библиотеки, такие как TensorFlow, Accord.NET и CNTK. Команда .NET стремится предоставить полный опыт внутренних возможностей ML.NET для ее версии с открытым исходным кодом.

Со временем ML.NET позволит использовать другие сценарии ML, такие как системы рекомендаций, обнаружение аномалий и другие подходы, такие как глубинное обучение, за счет использования популярных библиотек глубинного обучения, таких как TensorFlow, Caffe2 и CNTK, и общих библиотек машинного обучения, таких как Accord.NET.

ML.NET также дополняет опыт, который предоставляет Azure Machine Learning и Cognitive Services, позволяя использовать основанный на кодах подход, поддерживает локальное развертывание приложений и возможность создавать собственные модели.

Остальная часть этого сообщения в блоге содержит более подробную информацию о ML.NET по следующим разделам:

  • Основные компоненты ML.NET
  • Классификация тональности с помощью ML.NET
  • Перспективы
  • Помогите создать ML.NET для ваших нужд

Основные компоненты ML.NET

ML.NET запускается как часть .NET Foundation, и сегодня репо содержит API .NET C # для обучения и потребления модели, а также различные преобразования и пособия, необходимые для многих популярных задач ML, таких как регрессия и классификация.

ML.NET нацелен на обеспечение рабочего процесса E2E для вливания ML в приложения .NET при предварительной обработке, разработке функций, моделировании, оценке и внедрении.

ML.NET поставляется с поддержкой типов и времени выполнения, необходимых для всех аспектов машинного обучения, включая основные типы данных, расширяемые конвейеры, высокопроизводительную математику, структуры данных для гетерогенных данных, поддержку инструментальных средств и многое другое.

В приведенной ниже таблице описывается весь список компонентов, которые выпускаются как часть ML.NET 0.1.

.NET стремится сделать общие API-интерфейсы ML.NET такими, что другие платформы, такие как CNTK, Accord.NET, TensorFlow и другие библиотеки, могут стать пригодными для использования через один общий API.

Начало работы по установке

Чтобы начать работу с ML.NET, установите ML.NET NuGet из командной строки, используя:

dotnet add package Microsoft.ML

Из менеджера пакетов:

Install-Package Microsoft.ML

Вы можете создать структуру непосредственно из https://github.com/dotnet/machinelearning.

Классификация тональности с помощью ML.NET

Обучите свою собственную модель

Вот простой фрагмент для обучения модели классификации тональности:

var pipeline = new LearningPipeline();

pipeline.Add(new TextLoader<SentimentData>(dataPath, separator: ","));

pipeline.Add(new TextFeaturizer("Features", "SentimentText"));

pipeline.Add(new FastTreeBinaryClassifier());

pipeline.Add(new PredictedLabelColumnOriginalValueConverter(PredictedLabelColumn = "PredictedLabel"));

var model = pipeline.Train<SentimentData, SentimentPrediction>();

 

Давайте рассмотрим это чуть подробнее. Мы создаем LearningPipeline, которая будет инкапсулировать загрузку данных, обработку данных / функционирование и алгоритм обучения. Это шаги, необходимые для подготовки модели машинного обучения, которая позволяет нам принимать входные данные и выводить предвычисление.

Первой частью конвейера является TextLoader, который загружает данные из нашего учебного файла в наш конвейер. Затем мы применяем TextFeaturizer для преобразования столбца SentimentText в числовой вектор, называемый функциями, который может использоваться алгоритмом машинного обучения (поскольку он не может принимать текстовый ввод). Это наша стадия предварительной обработки / featurization.


FastTreeBinaryClassifier - это учебник дерева решений, который мы будем использовать в этом конвейере. Как и шаг featurization, испытание других учебников, доступных в ML.NET, и изменить их параметры, может помочь выявить лучшие результаты. PredictedLabelColumnOriginalValueConverter преобразует предсказанные метки модели обратно в исходное значение или формат.

pipe.Train <SentimentData, SentimentPrediction> () тренирует конвейер (загружает данные, тренирует featurizer и обучаемого). Эксперимент не выполняется до тех пор, пока это не произойдет.

Используйте обученную модель для прогнозирования


SentimentData data = new SentimentData
{
   SentimentText = "Today is a great day!"
};

SentimentPrediction prediction = model.Predict(data);

Console.WriteLine("prediction: " + prediction.Sentiment);

Чтобы получить прогноз, мы используем model.Predict () для новых данных. Обратите внимание, что входные данные являются строкой, а модель включает в себя featurization, поэтому наш конвейер остается синхронным во время обучения и прогнозирования. Нам не нужно было писать код предварительной обработки / featurization специально для предсказаний.

Для получения дополнительных сценариев сперва обратитесь пожалуйста к изучению документации, детально описывающей анализ тональности и прогнозирование taxi fare.

Перспективы

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

  • Дополнительные задачи и сценарии ML
  • Глубокое обучение с помощью TensorFlow и CNTK
  • Поддержка ONNX
  • Масштабирование на Azure
  • Улучшенный графический интерфейс для упрощения задач ML
  • Интеграция с VS Tools для AI
  • Языковые инновации для .NET

Помогите создать ML.NET для ваших нужд

Возьмите его в оборот, создайте что-нибудь с ним и расскажите команде .NET, что в ML.NET должно быть лучше. Создайте пару вопросов и предложений на GitHub и помогите создатьть ML.NET для ваших нужд.

 

https://github.com/dotnet/machinelearning

No Comments

Add a Comment