Содержание статьи
Топ 5 библиотек машинного обучения для Java
Стадия 1. Разочарование
Когда мы говорим о создании хотя бы простых ботов, глаза наполняются блеском, а в голове мелькают сотни идей, что он должен уметь делать. Однако, когда дело доходит до реализации, оказывается, что ключом к разгадке реальной модели поведения является математика. Да-да, искусственный интеллект куда сложнее написания прикладных программ — одних знаний о проектировании ПО вам не хватит.
Когда спесь немного сбита студенческой литературой, можно приступать к практике. Бросаться на LISP или другие функциональные языки пока не стоит — сначала стоит освоиться с принципами проектирования ИИ. Как для быстрого изучения, так и дальнейшего развития прекрасно подойдёт Python — это язык, чаще всего используемый в научных целях, для него вы найдете множество библиотек, которые облегчат ваш труд.
Ссылка на библиотеку: https://moa.cms.waikato.ac.nz/ MOA (Massive On-Line Analysis) — фреймворк для разработки потоков данных. Он включает инструменты для оценки и набор алгоритмов машинного обучения, эффективными по времени и с точки зрения использования памяти. Данная библиотека с открытым исходным кодом используется непосредственно для машинного обучения и сбора информации в потоках данных в режиме реального времени. MOA написана на Java, так что её без проблем можно использовать вместе с Weka для решения масштабных и сложных задач. Набор алгоритмов машинного обучения MOA и механизмы оценки полезны для регрессионного анализа, классификации, обнаружения выбросов, кластеризации, рекомендательных систем. MOA также может оказаться полезной для изменяющихся наборов и потоков данных, а также данных, произведённых устройствами интернета вещей (IoT, Internet of Things).
Теперь же, когда вы уже вполне ясно представляете, как ИИ создавать и чем при этом пользоваться, пора выводить свои знания на новый уровень. Во-первых, для этого потребуется изучение дисциплины, которое носит название «Машинное обучение». Во-вторых, необходимо научиться работать с соответствующими библиотеками выбранного языка программирования. Для рассматриваемого нами Python это Scikit-learn, NLTK, SciPy, PyBrain и Numpy. В-третьих, в развитии никуда не обойтись от функционального программирования. Ну и самое главное, вы теперь сможете читать литературу о ИИ с полным пониманием дела:
Машинное обучение — подход, при котором искусственный интеллект изначально не знает, как решать конкретную задачу, но обучается этому процессу с помощью решения сходных задач. Для построения взаимосвязей используются разные математические методы. Глубокое или глубинное обучение — подвид машинного обучения, чаще всего использует нейронные сети, имитирующие принятие решений человеком. Глубокое обучение чаще всего требует огромных массивов данных для обучения. Например, если нужно настроить алгоритм для узнавания саксофона, программе придётся скормить не только изображения саксофонов, но также других похожих медных инструментов, чтобы в дальнейшем алгоритм их не путал.
Естественно, начинать следует с самых простых ботов. Для этого вспомните старую-добрую игру «Крестики-нолики» при использовании поля 3х3 и постарайтесь выяснить для себя основные алгоритмы действий: вероятность победы при безошибочных действиях, наиболее удачные места на поле для расположения фигуры, необходимость сводить игру к ничьей и так далее.
Мини-глоссарий
Ссылка на библиотеку: https://www.cs.waikato.ac.nz/ml/weka/index.html Weka — наш абсолютный фаворит, и в этом нет ничего удивительного. Данный продукт задумывался как современная среда для разработки методов машинного обучения и применения их к реальным данным, среда, которая сделает методы машинного обучения доступными для повсеместного применения. С помощью Weka специалист в прикладной области может использовать методы машинного обучения для извлечения полезных знаний непосредственно из данных, возможно, очень большого объёма. Weka 3 — свободное программное обеспечение, написанное на Java. Продукт отлично интегрируется в другой код, поскольку предоставляет прямой доступ к библиотеке реализованных в ней алгоритмов. То есть вы сможете использовать уже написанные алгоритмы из других систем, реализованных на Java Кроме того, у Weka есть собственный пользовательский интерфейс Explorer, компонентный интерфейс Knowledge Flow, но также можно использовать командную строку. Кроме того, для Weka разработано приложение Experimenter для сравнения предсказательной способности алгоритмов машинного обучения на заданном наборе задач.
Данный пакет программ поддерживает статистическую обработку естественного языка, кластеризацию, классификацию документов, информационный поиск, вопросы моделирования и другие приложения углублённого изучения. Главный конёк MALLET — современные инструменты для классификации документов, такие как эффективные стандартные процедуры для преобразования текста. Он поддерживает широкий спектр алгоритмов, включая наивный Байесов алгоритм, дерево принятия решений, алгоритм максимальной Decision Trees и метод максимума энтропии, а также код для анализа работоспособности классификатора.
Ссылка на библиотеку: http://mallet.cs.umass.edu/ MALLET — это open-source инструментарий Java, его авторы — Эндрю Маккалум (Andrew McCallum) и студенты UMASS и UPenn. Эта библиотека разработана в первую очередь для обработки текста с применением машинного обучения. Расшифровка названия библиотеки — MAchine Learning for LanguagE Toolkit.
Deeplearning4j — отличный DIY-инструмент для Java-, Scala- и Clojure-программистов, которые работают с Hadoop, фреймворком для разработки и выполнения распределённых программ, работающих на кластерах с тысячами узлов. Hadoop обладает огромной вычислительной мощностью и возможностью обработки практически неограниченного числа параллельных задач. Глубокие нейронные сети и глубокое обучение с подкреплением (deep reinforcement learning) способны к распознаванию образов и целевому машинному обучению. Это означает, что Deeplearning4j очень полезен для определения моделей и настроений в речи, звуке и тексте. Кроме того, библиотеку можно использовать для обнаружения аномалий в данных временных рядов, таких как финансовые транзакции.
Рабочий процесс в MOA следует простой схеме: сначала выбирается и настраивается поток данных (канал, генератор), затем избирается алгоритм (например, классификатор), задаются его параметры. На третьем шаге выбирается метод оценки или мера, после чего будет получен результат.
К слову, если вы всё-таки взялись за язык Python, то создать довольно простого бота можно, обратившись к этому подробному мануалу. Для других языков, таких как C++ или Java, вам также не составит труда найти пошаговые материалы. Почувствовав, что за созданием ИИ нет ничего сверхъестественного, вы сможете смело закрыть браузер и приступить к личным экспериментам.