Как работает ИИ: популярные фреймворки, языки и библиотеки в основе ИИ



Давайте сделаем шаг назад и поговорим о тех, кто решения на базе AI разрабатывает. Что используют они? Итак, сегодня в подкасте серии «Эра искусственного интеллекта» TAdviser Cветлана Вронская, эксперт департамента аналитических решений ГК «КОРУС Консалтинг» расскажет об инструментарии искусственного интеллекта и машинного обучения.

Надо сказать, что технология настолько продвинулась вперед, что с помощью специальных инструментов внедрять решения искусственного интеллекта в свои процессы могут любые компании, вне зависимости от размера организации. Тем, кто хочет использовать искусственный интеллект на практике, доступно большое количество платформ для этой цели. И сейчас совсем необязательно нанимать огромный штат сотрудников, которые будут создавать модели машинного обучения с нуля. Для разработки собственных уникальных решений можно применять облачные платформы и фреймворки. Практически все из них используют открытый код, но главное – они избавляют разработчиков от самых трудных этапов работы.

Итак, наша первая остановка – это фреймворки, своего рода мастерские для создания моделей машинного обучения. Фреймворк — это набор инструментов и стандартных реализаций для обеспечения более быстрой разработки какого-либо программного продукта. В нашем случае это решения на базе искусственного интеллекта. Давайте посмотрим, какие фреймворки пользуются на рынке наибольшей популярностью.

Прежде всего, это TensorFlow, комплексная платформа для машинного обучения с открытым исходным кодом. Она была разработана командой Google Brain как продолжение закрытой системы машинного обучения DistBelief, однако в 2015 году Google передумали и открыли фреймворк для свободного доступа. За счёт мультиплатформенности TensorFlow позволяет обучать и разворачивать модели в облаке и локально, независимо от используемого пользователем языка. TensorFlow хорош для продвинутых проектов, таких как создание многослойных нейронных сетей, но может использоваться и для распознавания речи, лиц, объектов и изображений, а также для работы с текстом. При этом TensorFlow постоянно развивается за счёт открытого исходного кода и огромного сообщества энтузиастов. За счёт его популярности есть множество уже решённых задач, что существенно упрощает жизнь разработчикам-новичкам.

Следующий популярный фреймворк – PyTorch, среда машинного обучения на языке Python с открытым исходным кодом. Она была разработана Facebook, представлена в 2016 году и через полгода открыта для сторонних разработчиков. PyTorch подойдёт в случае, когда необходимо обучить модели быстро и эффективно. Он удобен для быстрого прототипирования в исследованиях, а также для любителей и небольших проектов.

Едем дальше: Keras — открытая среда глубокого обучения, тоже написанная на Python. Она была разработана одним инженером из Google и представлена в 2015 году. Keras ориентируется на оперативную работу с нейросетями и является компактным, модульным и расширяемым. Подходит для небольших проектов, так как создать что-то масштабное на нём сложно, и он явно будет проигрывать в производительности нейросетей тому же TensorFlow. Но он хорош в кейсах, связанных с переводом, распознаванием изображений и речи.

Следующий широко используемый фреймворк – Darknet, также на базе открытого кода, написанный на языке C. Он быстрый, лёгкий и удобный в использовании. Darknet подходит для небольших проектов и неплохо работает в задачах обнаружения.

Наверно, последняя из «мастерских» для создания решений на базе искусственного интеллекта – XGBoost. Это фреймворк с открытым исходным кодом, который предлагает систему градиентного бустинга для языков C++, Java, Python, R, Julia. Он разработан для обеспечения высокой эффективности и гибкости и изначально был исследовательским проектом Distributed [Deep] Machine Learning Community, но позже был расширен и представлен публике на конференции в 2016 году, где произвёл фурор. XGBoost может использоваться для решения задач регрессии, классификации, упорядочивания и пользовательских задач для предиктивной аналитики.

С фреймворками, средами, разобрались. Однако для полноценной разработки нам нужен еще один важный инструмент: мы должны владеть языком программирования, на котором мы будем работать. Рассказать о всех языках в нашем подкасте мы не сможем – это будет очень долго, - поэтому упомянем только основные.

Python – самый популярный язык программирования для наших целей, прежде всего за счет своей простоты. Синтаксис для программирования на Python может быть легко изучен любым, кто интересуется программированием. То же самое относится и к реализации алгоритмов этого языка. При этом Python - универсальный язык, который поддерживает разные стили программирования. Они включают в себя объектно-ориентированное, функциональное и процедурное программирование. Язык имеет множество библиотек, которые поддерживают искусственный интеллект.

Следующий, Lisp, является одним из старейших языков программирования, которые идеально подходят для разработки ИИ. Он был изобретен в 1958 году и идеально подходит для обработки символической информации. По сути, это динамический язык, который можно использовать для разработки превосходных прототипов и динамического создания новых объектов.

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

Prolog, помимо Lisp, еще один язык, специально созданный для разработки ИИ. Он имеет целый ряд функций, которые делают его идеальным языком для машинного обучения. Одной из его выдающихся особенностей является сопоставление с образцом. Все эти функции применяются в различных аспектах развития ИИ. Prolog также поддерживается целым рядом платформ, которые значительно упрощают программирование.

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

Несмотря на популярность языков программирования, о которых я только что сказала, постоянно появляются новые языки и согласно данным аналитиков, самые топ-топ языки для работы над AI-решениями, это Rust, TypeScript, Kotilin и Swift. Посмотрим, за ними ли будущее?

Еще один инструмент, который помимо фреймворков и языков программирования, требуется для разработки моделей – это библиотеки, набор стандартных реализаций, функций и структур данных, облегчающих решение какой-либо задачи.

Cреди них особенно популярны pandas, библиотека для обработки и анализа данных, Matplotlib, библиотека для построения 2D-графиков, scikit-learn, которая позиционируется как простая библиотека с большим количеством примеров на официальном сайте, из-за чего хорошо подходит новичкам и Eclipse Deeplearning4j, библиотека глубокого обучения с открытым исходным кодом для виртуальной машины Java.

Чуть в сторону, но нельзя забывать про Kaggle, который предоставляет интерактивную среду разработки, в которой можно найти готовые датасеты, модели и даже программный код для решения разных задач, а также про Torch, научную вычислительную среду, библиотеку обучения с открытым исходным кодом и язык скриптов, основанный на языке программирования Lua. Torch используется исследовательской группой Facebook AI и ранее использовался DeepMind, прежде чем те были приобретены Google и перешли на TensorFlow.

Что же делать тем, кто не хочет программировать? Есть хорошая новость. Можно не программировать. Теперь существуют системы, не требующие кода, но позволяющие создавать собственные модели машинного обучения. Среди них CreateML, для создания собственных пользовательских моделей и работы над классификаторами изображений до передачи стилей и обработки естественного языка и создания систем рекомендаций. Это и Google AutoML, который работает примерно также, как CreateML, только в облаке. Это и MakeML для создания моделей обнаружения объектов и семантической сегментации, реализованный в виде приложения для macOS. Любопытно, что у MakeML также есть некоторые бесплатные готовые хранилища с наборами данных для компьютерного зрения, таким образом обучить нейронную сеть можно вообще всего за несколько кликов.

Еще стоит отметить Fritz AI, развивающуюся платформу машинного обучения, которая помогает преодолеть разрыв между разработчиками мобильных приложений и дата-сайентистами. И RunwayML, разработанную специально для начинающих AI-разработчиков. Она предоставляет визуальный интерфейс для быстрого обучения моделей от генерации текста и изображений до захвата движения, обнаружения объектов и т.д. И все это без необходимости писать код.

Obviously AI использует обработку естественного языка для выполнения сложных задач над данными. Идея состоит в том, чтобы загрузить набор данных, выбрать столбец для прогноза, ввести вопросы на естественном языке и оценить результаты. Платформа обучает модель машинного обучения, выбирая подходящий для вас алгоритм. Таким образом, всего за несколько кликов вы можете получить прогноз — будь то прогноз дохода или прогнозирование спроса на товары. Это невероятно полезно для сегмента SMB, который хочет окунуться в сферу искусственного интеллекта, не имея собственной команды по анализу данных.

Есть еще SuperAnnotate — платформа аннотаций на базе искусственного интеллекта, которая использует возможности машинного обучения (в частности, трансферное обучение) для ускорения процесса аннотации данных. Используя их инструменты для аннотирования изображений и видео, вы можете быстро аннотировать данные с помощью встроенных прогнозных моделей.

А еще есть готовые платформы для создания чат-ботов, вроде Microsoft Bot Framework, Chatfuel, Botkit, инструменты для машинного обучения с машинным зрением вроде Cloud AutoML Vision от Google, Caffe2 от Facebook и Accord.NET. А еще есть IBM со своей платформой Watson, оснащенной множеством инструментов, предназначенных как для разработчиков, так и для бизнес-пользователей.

В общем, инструментарий для разработки решений на базе искусственного интеллекта и машинного обучения огромен. Каждый месяц на рынке появляется новая библиотека или язык программирования или фреймворк для того, чтобы максимальное количество пользователей во всем мире cмогли, не обладая глубокими техническими знаниями, поработать на благо AI. Может быть, попробовать и нам?

Источник: TAdviser