РАЗРАБОТКА И ВНЕДРЕНИЕ МЕТОДИЧЕСКИХ МАТЕРИАЛОВ К КУРСУ ПО МАШИННОМУ ОБУЧЕНИЮ В АСТРАХАНСКОМ ГОСУДАРСТВЕННОМ УНИВЕРСИТЕТЕ

Научная статья
DOI:
https://doi.org/10.23670/IRJ.2017.63.049
Выпуск: № 9 (63), 2017
Опубликована:
2017/09/18
PDF

Сидоров К.С.1, Ахунжанов Р.К.2

1ORCID: 0000-0003-0395-286X, студент, ФГБОУ ВО «Астраханский государственный университет», 2Кандидат физико-математических наук, доцент кафедры математики и методики её преподавания, ФГБОУ ВО «Астраханский государственный университет»

РАЗРАБОТКА И ВНЕДРЕНИЕ МЕТОДИЧЕСКИХ МАТЕРИАЛОВ К КУРСУ ПО МАШИННОМУ ОБУЧЕНИЮ В АСТРАХАНСКОМ ГОСУДАРСТВЕННОМ УНИВЕРСИТЕТЕ

Аннотация

В данной статье обоснована важность преподавания машинного обучения в Астраханском государственном университете и необходимость внедрения адаптированных методических материалов к курсу «Машинное обучение». Упомянуты современные тенденции машинного обучения и их связь с прикладными задачами как информатики, так и других областей науки. Обоснована необходимость рассмотрения прикладных задач анализа данных внутри курса. Для реализации методического сопровождения к курсу используется система Moodle, что аргументировано в тексте статьи. Кроме того, перечислены темы, освещаемые в данном курсе, и аргументирована необходимость их включения в курс.

Ключевые слова: машинное обучение, анализ данных, высшее образование, методические материалы, информационные технологии.

Sidorov K.S.1, Akhunzhanov R.K.2

1ORCID: 0000-0003-0395-286X, Student, FSBEI of Higher Education “Astrakhan State University”, 2PhD in Physics and Mathematics, Associate Professor of the Department of Mathematics and Methods of Teaching, FSBEI of Higher Education “Astrakhan State University”

DEVELOPMENT AND IMPLEMENTATION OF METHODICAL MATERIALS TO THE COURSE ON MACHINE TRAINING IN ASTRAKHAN STATE UNIVERSITY

Abstract

This article substantiates the importance of teaching machine learning in Astrakhan State University and the necessity to implement adapted methodological materials into the course “Machine Learning.” Modern trends in machine learning and their relation with applied problems in both computer science and other areas of science are discussed. The need of considering applied problems of data analysis within the course is substantiated. The Moodle system is used to implement methodological support for the course, which is explained in the text of the article. In addition, the topics covered in this course are listed and the necessity of their inclusion in the course is discussed.

Keywords: machine learning, data analysis, higher education, methodological materials, information technology.

Введение

Наверное, не будет преувеличением сказать, что важной частью современной науки и техники являются исследования в области искусственного интеллекта – направления computer science, в рамках которого разрабатываются интеллектуальные агенты и методики их построения [1]. Такой бурный рост был бы невозможен без развития методов машинного обучения — науки о том, как писать программы, которые пользуются своим опытом для того, чтобы улучшать свою производительность в определённой задаче [2], [3].

Отличительной чертой методов машинного обучения является их ориентированность на работу с данными: чаще всего они работают с некоторой выборкой данных, извлекают из неё закономерности и строят какие-либо предсказания по новым, ранее не наблюдаемым данным. Поэтому для названия этой области знания также используется термин «анализ данных». Хотя между терминами «машинное обучение» и «анализ данных» имеются некоторые тонкие различия, в данной статье для простоты восприятия эти различия освещаться не будут и указанные два термина будут использоваться взаимозаменяемо.

Методы машинного обучения используются в самых разнообразных отраслях человеческой деятельности. Помимо классических применений в рекомендательных системах (для построения профилей пользователей и рекомендуемых объектов и построения персонализированных рекомендаций) [4], поисковых машинах (для расчёта релевантности документа поисковому запросу) [5], банковской деятельности (для построения моделей кредитного скоринга) [6] и интеллектуальной обработке текстовой информации (для построения системы IBM Watson, одержавшей победу над двумя лучшими игроками телевикторины Jeopardy!, в России более известной под названием «Своя игра») [7], в последние годы стали появляться приложения к анализу элементарных частиц (для фильтрации событий, связанных с распадом бозона Хиггса в тау-лептоны, в общем – и достаточно интенсивном — потоке событий, происходящих в Большом адронном коллайдере) [8], обработке изображений (для классификации фотореалистичных изображений по объектам, изображённым на них) [9], а также к принятию оптимальных решений (для создания программ для ведения игр, которые из-за большого пространства поиска, коэффициента ветвления и/или отсутствию полной информации не поддавались другим методам – например, программа AlphaGo для игры в го или DeepStack для игры в покер — обе этих программы смогли вести соответствующие игры лучше, чем лучшие игроки мира, благодаря внедрению функциональности самообучения) [10], [11]. Следует заметить, что применения машинного обучения в заявленных областях не ограничиваются указанными в скобках примерами — они приведены лишь в иллюстративных целях.

Постановка проблемы

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

Недавно к этому тренду присоединился и Астраханский государственный университет. На кафедре математики и методики её преподавания была начата работа над курсом по машинному обучению. Впрочем, в первом запуске курса было выявлено несколько проблем:

  • Трудности с подбором практических сюжетов и задач подходящего уровня сложности. Машинное обучение берёт идеи из разных областей математики — к примеру, математической оптимизации, линейной алгебры, математической статистики. Но машинное обучение — в первую очередь инженерная дисциплина. В первом запуске курса это учтено не было, и поэтому материал, рассказываемый в курсе, был смещён в сторону математических областей машинного обучения.
  • Отсутствие единого методического пособия, используемого для преподавания данного курса. Хотя существует множество ресурсов, посвящённых машинному обучению, они очень разнородны по уровню предоставляемого материала, теоретических построений, а также по стилистике. Это вызывало проблемы у студентов, пытавшихся самостоятельно закрепить свои знания после лекций.

Концепция и цели курса

Сложившаяся ситуация создаёт естественные условия для составления методической базы для студентов технических специальностей АГУ, используемой для хранения конспектов лекций, а также для приёма и отправки домашних заданий. В более широком смысле авторы пытались достичь курса по машинному обучению, все части которого подчинялись бы единой концепции. А именно, такой курс должен быть адаптирован под специфику Астраханского государственного университета, который был бы прикладным, давал бы математические основы машинного обучения, но в то же время не был перегружен рассмотрением теоретических вопросов. Важно то, что данный курс должен закладывать адекватное представление о машинном обучении — как о его возможностях, так и его границы применимости.

С учётом сформулированной концепции курса авторы поставили перед собой следующие цели:

  • Дать слушателям курса прикладные знания в области анализа данных.
  • Развить интерес к методам и достижениям машинного обучения.
  • Дать объективную оценку методам машинного обучения, а также их сильных и слабых сторон.

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

К примеру, в предпоследней части показывается создание простейшего спам-фильтра. Конкретные технические средства, используемые на курсе, будут обсуждаться позднее, однако фрагмент соответствующего методического материала всё же приводится далее (оригинальное форматирование сохранено):

«Здесь мы будем анализировать Enron spam dataset - набор писем, пришедших разным сотрудникам компании Enron и размеченных по принципу "спам / не спам". Далее мы сфокусируемся на архиве писем одного из сотрудников (ссылка на архив).

Как всегда, импортируем стандартные библиотеки и фиксируем random seed:

import numpy as np import pandas as pd np.random.seed(888)

Далее следует код для загрузки данных в память. (Предполагается, что из архива было извлечено содержимое папки enron1.)

import os import codecs ham_mail, spam_mail = list(), list() for label in ['ham', 'spam']: for el in os.listdir(label): try: lines = open(label + '/' + el, 'r', encoding='utf8').readlines() except UnicodeDecodeError: continue if label == 'ham': ham_mail.append(''.join(lines)) else: spam_mail.append(''.join(lines))

Теперь сохраним данные в формате массива Numpy, а также создадим вектор ответов:

X_text = np.array(ham_mail + spam_mail, dtype=object) y = np.ones_like(X_text, dtype=np.int32) y[:len(ham_mail)] = 0

Как уже упоминалось, нам нужно представление мешка слов. Построим его:

from sklearn.feature_extraction.text import CountVectorizer vec = CountVectorizer() X_count = vec.fit_transform(X_text)

Теперь оценим производительность логистической регрессии - единственного из алгоритмов, который разбирался ранее на курсе и способного обработать данные такой большой размерности:

from sklearn.linear_model import LogisticRegression clf_lin = LogisticRegression(n_jobs=-1) from sklearn.model_selection import cross_val_score print(cross_val_score(clf_lin, X_count, y).mean())

Здесь мы получим достаточно высокую цифру в 97,5%. Теперь создадим наивный байесовский классификатор и оценим его производительность: …»

Считаем нужным обратить внимание читателя на то, что программная реализация данного примера (от загрузки обучающей выборки до оценки качества модели) составляет всего 27 строк кода на языке Python, несмотря на то, что данный пример — завершающий пример курса. Этим мы даём понять слушателям курса, что машинное обучение — технология, которая относительно легко применется к прикладным проблемам и оказывает ощутимую помощь в их решении.

Техническая реализация

Для реализации данной идеи была использована система Moodle, которая обладает рядом достоинств, обуславливающих её использование в данном курсе. Во-первых, у Астраханского государственного университета уже имеется Moodle-сервер, который используется для организации других курсов, поэтому технически внедрение методических материалов выполняется достаточно просто. Во-вторых, Moodle по умолчанию поддерживает вёрстку формул, набранных с помощью языка LaTeX, с помощью расширения MathJax, что очень важно для любого курса по машинному обучению, поскольку машинное обучение активно использует терминологию линейной алгебры, оптимизации и математической статистики.

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

Обзор тем, освещаемых в курсе

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

В вводной части курса рассказывается о работе с Numpy — библиотекой для научных расчётов для языка Python. Далее в курсе все темы иллюстрируются с помощью языка Python и библиотек для него, которые уже много лет используются практиками машинного обучения и анализа данных. Как уже упоминалось выше, во всех дальнейших темах, помимо самих алгоритмов, демонстрируются прикладные задачи анализа данных и успешная работа описываемых алгоритмов в соответствующей задаче.

В частности, в данном курсе освещаются следующие темы:

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

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

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

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

В конце курса показаны методы обучения без учителя – методы для извлечения закономерностей из неразмеченных данных (к примеру, если рассматривать задачу анализа тональности текста, то всем предыдущим методам нужны не только тексты писем, но и метки «Спам» и «Не спам»). В частности, рассказываются такие темы, как кластеризация и понижение размерности.

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

Методика контроля за усвоением материала

Для контроля за усвоением знаний авторы курса сочли удобной тестовую форму, поскольку данный метод имеет неоспоримое достоинство – объективность. Отметим, что тесты индивидуальны и состоят из расчётных и качественных вопросов.

Естественно, тестовые вопросы строятся так, чтобы у студентов выстраивалось понимание тонкостей работы с методами машинного обучения. К примеру, один из имеющихся тестовых вопросов выглядит так: «В какую строну — увеличения или уменьшения — следует изменять параметр k в методе ближайших соседей, если необходимо избежать явления переобучения? Ответ обосновать.»

Заключение

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

Список литературы / References

  1. Russell S. J. Artificial Intelligence: A Modern Approach / Stuart J. Russell, Peter Norvig. - 3rd edition. - Prentice Hall, 2009. - 1152 p.
  2. Mitchell T. Machine learning / Tom Mitchell. - McGraw Hill, 1997. - 432 p.
  3. Schmidhuber J. Deep Learning in Neural Networks: An Overview / Jürgen Schmidhuber // Neural networks: the official journal of the International Neural Network Society. - 2015. - Vol. 61 - P. 85-117. - doi:10.1016/j.neunet.2014.09.003
  4. Pazzani M. J. Content-Based Recommendation Systems. / Michael J. Pazzani, Daniel Billsus; edited by Peter Brusilovsky, Alfred Kobsa, Wolfgang Nejdl // The Adaptive Web. - 2007. - P. 325-341. - doi:10.1007/978-3-540-72079-9_10
  5. Joachims T. Optimizing search engines using clickthrough data. / Thorsten Joachims // Proceedings of the eighth ACM SIGKDD international conference on Knowledge discovery and data mining. - 2002. - P. 133-142. - doi:10.1145/775047.775067
  6. Abdou H. A. Credit Scoring, Statistical Techniques and Evaluation Criteria: A Review of the Literature. / Hussein A. Abdou, John Pointon // Int. Syst. in Accounting, Finance and Management. - 2011. - Vol. 18 - P. 59-88. - doi:10.1002/isaf.325
  7. Ferrucci D. A. Building Watson: An Overview of the DeepQA Project. / David A. Ferrucci, Eric W. Brown, Jennifer Chu-Carroll and others // AI Magazine. - 2010. - Vol. 31 - P. 59-79.
  8. Perez J. ML2014: Higgs Boson Machine Learning Challenge. / Jocelyn Perez, Ravi Ponmalai, Alex Silver and others - 2014.
  9. Russakovsky O. ImageNet Large Scale Visual Recognition Challenge. / Olga Russakovsky, Jia Deng, Hao Su and others // International Journal of Computer Vision - 2015. - Vol. 115 - P. 211-252. - doi:10.1007/s11263-015-0816-y
  10. Silver D. Mastering the game of Go with deep neural networks and tree search. / David Silver, Aja Huang, Chris J. Maddison and others // Nature - 2016. - Vol. 529 7587 - P. 484-489. - doi: 10.1038/nature16961
  11. Moravčík M. DeepStack: Expert-level artificial intelligence in heads-up no-limit poker. / Matej Moravčík, Martin Schmid, Neil Burch Science and others // Science - 2017. - Vol. 356 6337 - P. 508-513. - doi:10.1126/science.aam6960