en ру

Какие технологии мы используем для решения задач?

Какие технологии мы используем для решения задач?

Машинное обучение (англ. Machine Learning) — это большой подраздел искусственного интеллекта, дисциплина, использующая разделы математической статистики, численных методов, теории вероятностей, дискретного анализа, и извлекающая дополнительные знания из накопленных данных. Особо бурно это направление развивается сейчас, так как появились большие объемы разнородных данных, которые требуется классифицировать тем или иным образом. Пусть имеется множество ситуаций и множество возможных реакций на них. Существует некоторая зависимость между ситуациями и реакциями, но она неизвестна. Известна только конечная совокупность прецедентов — пар «ситуация, реакция», называемая обучающей выборкой. На основе этих данных требуется восстановить зависимость, то есть построить алгоритм, способный для любой ситуации выдать достаточно точный ответ (реакцию). Для измерения точности ответов определённым образом вводится функционал качества (или функция потери). В реальных прикладных задачах входные данные о ситуациях могут быть неполными, неточными, нечисловыми, разнородными. Эти особенности приводят к большому разнообразию методов машинного обучения. Всевозможные перспективные программные разработки для машинного обучения появляются довольно регулярно, многие из них появились буквально в последние несколько лет. Например, компания Google выпустила библиотеку TensorFlow для работ с нейронными сетями в конце 2015 года. Для большинства новых библиотек отсутствует документация на русском языке.

Основным средством для разработки в нашем коллективе является язык программирования Python. Некоторые реализации пишутся на языке C в случае если для работы требуется очень высокая скорость и на PHP, если требуется интеграция с Web.

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

Используемые библиотеки для Python

  • numpy и pandas - работа с большими матрицами и таблицами, быстрый анализ данных
  • scipy и scikit-learn - библиотеки предназначены для выполнения научных и инженерных расчётов, содержат большое число методов и алгоритмов для машинного обучения.
  • xgboost - параллельная реализация перспективных алгоритмов Gradient Boosting.
  • keras - библиотека для работы с нейронными сетями. Работает в связке с Theano или TensorFlow. Использует GPU от Nvidia для быстрых параллельных расчётов на видеокартах.

Дополнительный инструментарий

  • LightGBM - свежая библиотека от Microsoft для решения задач классификации и регрессии.

Оборудование

В наличии несколько серверов на базе Intel XEON 32 ядра + 256 GB памяти. А также видеокарты Nvidia GTX 980 и 1080 для вычислений с использованием нейронных сетей.

Оставить заявку