Муниципальное автономное общеобразовательное учреждение
Средняя школа № 8
Индивидуальный проект
по информатике
на тему: «Создание нейронной сети с целью прогнозирования исхода футбольного матча на языке программирования Python»
Выполнил ученик 11 «Б» класса
Кирсанов Алексей Сергеевич
Руководитель проекта: учитель информатики
Кустова Юлия Евгеньевна
г.о.г. Бор
2024 год
Введение 1
Глава 1. Принципы функционирования нейронной сети 4
1.1. Понятие – нейронная сеть 4
1.2 История возникновения и области применения нейронных сетей 4
1.3 Виды обучения нейросетей 5
1.4 Негативное воздействие нейросетей 6
Глава II. Создание нейросети для прогнозирования результата матча 7
2.1 Формирование таблицы с характеристиками игроков 7
2.2 Создание архитектуры сети 7
2.2.1 Характеристики нейросети 8
2.2.2 Выборка тренировочных данных 9
2.2.3 Метод ошибки 10
2.3 Итоговые предсказания 12
Список литературы 1
Введение
Актуальность: В последнее время произошёл рост интереса к нейронным сетям. На сегодняшний день нейронные сети облегчают работу в различных областях человеческой жизни. За нейронными сетями и их обучением стоит ближайшее будущее.
Знакомство с нейронными сетями активно внедряется в школы через всероссийские платформы, например, РЭШ, Урок цифры, на уроках Россия – мои горизонты. Именно эти причины повлияли на интерес и выбор темы индивидуального проекта.
Цель проектной работы: написать нейронную сеть с использованием языка программирования Python, которая смогла бы сделать прогноз исхода футбольного матча.
Предмет исследования: нейронные сети, машинное обучение
Гипотеза: в результате работы над проектом у меня получится создать нейронную сеть, которая сможет прогнозировать итог матча.
Предметные области: математика, информатика, логика, теория вероятностей.
Задачи:
1) Рассмотреть информацию о принципе функционирования нейронных сетей;
2) Сформировать таблицу с характеристиками игроков и прошедших матчей;
3) Создать архитектуру нейросети;
4) Сформулировать прогноз на матчи;
5) Подвести итоги.
Глава 1. Принципы функционирования нейронной сети
1.1. Понятие – нейронная сеть
Нейронная сеть – это метод в искусственном интеллекте, который учит компьютеры обрабатывать данные таким же способом, как и человеческий мозг.
Виды нейронных сетей различны, среди основных можно выделить следующие:
1) Прямого распространения – искусственные нейронные сети, в которых сигнал распространяется строго от входного слоя к выходному;
2) Сверточные –нейронные сети, использующие элементы зрительной памяти, которые часто применяются при распознавании чего-либо;
3) Рекуррентные – вид нейронных сетей, где связи между элементами образуют направленную последовательность.
1.2 История возникновения и области применения нейронных сетей
История создания первой в мире нейросети насчитывает более полувека и связана с работами различных выдающихся учёных и исследователей. Одним из ключевых моментов становится работа Уоррена Маккаллока и Уолтера Питта в 1943 году, когда они создали модель нейрона, которая впоследствии стала основой для развития нейросетей.
В 1950 году американский ученый Дональд Хебб ввел основную идею обучения нейросетей на основе ассоциативной памяти и понятия "клеток Хебба". Он предложил, что связи между нейронами укрепляются при синхронной активации, что позволило нейросети "запоминать" предыдущие входные данные и использовать их для принятия решений.
В 1957 году французские учёные Жак Арлекан и Жерар Кортетт доказали, что нейронные сети могут решать сложные математические проблемы с использованием перцептронов (простейших форм нейросетей). Это был важный шаг в развитии нейросетей и появлении новых возможностей их применения.
Однако в последующие годы развитие нейросетей замедлилось из-за ограничений вычислительной мощности и недостаточного объема данных для обучения. Возрождение нейросетей произошло в конце 1980-х и начале 1990-х годов благодаря работе Йоханнеса Руммельхарта и Дэвида Румельхарта, Минга Ли и Джеффа Хинтона, которые разработали алгоритмы обратного распространения ошибки и нейронных сетей глубокого обучения.
В последующие годы нейросети претерпели значительное развитие, благодаря разработке новых алгоритмов, архитектур и вычислительных технологий. В 2006 году Геоффри Хинтон и его коллеги продемонстрировали эффективность глубоких нейронных сетей на примере обучения на больших наборах данных.
Сегодня нейронные сети применяются вразличных областях: компьютерное зрение, обработка естественного языка, рекомендательные системы и др. Они стали мощным инструментом для решения сложных задач и продолжают развиваться, открывая новые возможности для применения в науке и промышленности.
На территории нашей страны активным развитием нейросетей занимается Яндекс, в пример можно привести их коммерческий продукт Алиса GPT. В сентябре 2022 года Правительство РФ назначило Высшую школу экономики куратором проектов внедрения ИИ в государственном секторе.
1.3 Виды обучения нейросетей
Рассмотрим несколько видов обучения:
Машинное обучение с учителем – это направление машинного обучения, объединяющее алгоритмы и методы построения моделей на основе множества примеров.
Машинное обучение без учителя – это один из способов машинного обучения, при котором испытуемая система спонтанно обучается выполнять поставленную задачу без вмешательства со стороны экспериментатора.
Машинное обучение с частичным привлечением учителя – способ машинного обучения, разновидность обучения с учителем, которое также использует неразмеченные данные для тренировки — обычно небольшое количество размеченных данных и большое количество неразмеченных данных.
В проектной работе будет использоваться первый вид машинного обучения.
1.4 Негативное воздействие нейросетей
Подчеркивая полезность нейросетей можно судить о том, что в настоящий момент времени в части областей человеческой деятельности они просто незаменимы. Однако, наблюдаются и недостатки:
Человек «атрофирует свой мозг» – мы часто прибегаем к помощи нейросетей. Например, написание доклада на выбранную тему или решение задач.
Наблюдается снижение социального контакта между ячейками общества – сейчас очень много нейросетей, которые заменяют обществу живое общение. Нельзя не отметить тот факт, который влечет негативное влияние на социализацию в обществе.
Приватность данных –при обучении нейронных сетей используются большие объемы данных, включая личную информацию пользователей. Не сохранение или неправильная обработка этих данных может привести к утечкам информации и нарушению приватности.
Автономные системы – в некоторых случаях нейронные сети используются в автономных системах, например, адаптивный круиз контроль автомобиля. Возможны ситуации, когда эти системы принимают неправильные решения или демонстрируют опасное поведение, что может привести к несчастным случаям.
Глава II. Создание нейросети для прогнозирования результата матча
Для достижения цели проекта я сформулировал следующие задачи:
1) Сформировать таблицу с характеристиками игроков и прошедших матчей;
2) Создать архитектуру нейросети;
3) Сформулировать прогноз на матчи;
4) Подвести итоги.
2.1 Формирование таблицы с характеристиками игроков
Перед тем как пошагово разобрать алгоритм нейронной сети, введем термины: форма команды и оценка игрока. Формой мы будем называть последовательность из шести цифр (от -1 до 1 включительно), где -1 это поражение, 0 это ничья, 1 это победа. Форма характеризует 6 последних игр команды. Ещё один очень важный параметр, который понадобится нашей нейросети – это готовность команды к матчу, которая равна средней оценки игроков. В свою очередь, оценка – это коэффициент полезного действия игрока (отборы, перехваты, выносы, обводки, ключевые передачи, удары по воротам, точные навесы плюс результативные действия). Для прогнозирования необходимо собрать все выше перечисленные данные в таблицу Excel и подать в виде числовых показателей нашей модели машинного обучения. Нейросеть будет давать прогноз на матч после предоставления идентификатора игроку основного состава (становится известен за час до начала игры) Так происходит тестовая выборка. Фрагмент таблицы приведен в приложении 1.
2.2 Создание архитектуры сети
Разработать нейросеть, используя встроенные инструменты Python не получится сразу, сначала необходимо будет импортирвать библиотеки. Библиотека – набор связанных модулей, объединенных вместе для решения определенной задачи или предоставления определенного функционала. Библиотеки можно представить как расширение базового функционала Python, которое помогает разработчикам решать совершенно различные задачи.
Cписок импортированных библиотек и их функционал:
Pandas – библиотека Python для обработки и анализа структурированных данных, её название происходит от «paneldata» («панельные данные»). Панельными данными называют информацию, полученную в результате исследований и структурированную в виде таблиц. Для работы с такими массивами данных и создан Pandas; NumPy – библиотека для работы с одномерными и многомерными массивами и математическими функциями. Она предоставляет эффективные методы для обработки числовых данных. Tenzorflow – открытая программная библиотека для машинного обучения, разработанная компанией Google для решения задач построения и тренировки нейронной сети с целью автоматического нахождения и классификации образов, достигая качества человеческого восприятия. Scikit-learn (sklearn) – один из наиболее широко используемых пакетов Python для Data Science и Machine Learning. Он содержит функции и алгоритмы для машинного обучения: классификации, прогнозирования или разбивки данных на группы.
Для использования библиотек необходимо написать слово import и указать название нужной библиотеки. Далее, чтобы использовать нужный инструмент из библиотеки которую мы импортировали необходимо написать название библиотеки, поставить точку и написать название необходимого инструмента (пример: numpy.array[]). Как осуществился импорт на языке программирования приведено в приложении 2.
2.2.1 Характеристики нейросети
Перейдём к характеристикам нейросети:
Первый слой: на данном этапе находятся 2 входных нейрона, которым присваивается значение средней оценки игроков и формы команды в виде массива. Затем нейросеть приступает к вычислению Второй слой: называют скрытым, обычные пользователи с ним не взаимодействуют. В нём находится 32 нейрона, с помощью которых происходит вычисление. Чем больше нейронов, тем выше точность предсказания. Третий слой: заключительный. Здесь нейросеть выдаёт предсказание в процентной вероятности победы каждой команды. Веса: числовые значения, которые присваиваются каждому связанному узлу (нейрону) в сети. Они определяют силу и влияние связей между нейронами. Именно эти веса позволяют нейронной сети "учиться" и настраиваться на задачу, которую она должна решать. Выбрав самые главные параметры, которые нужны для предсказания футбольного матча, веса можно приравнять к единице.
Функция активации: нелинейная математическая функция, которая применяется к выходу каждого нейрона в нейронной сети. Она определяет, должен ли нейрон активироваться и передать свой выход следующему слою в нейронной сети. Функция активации важна для добавления нелинейности и гибкости в нейронную сеть. Без нелинейных функций активации нейронная сеть была бы ограничена только линейными преобразованиями. Нелинейность позволяет моделировать более сложные отношения и обрабатывать более сложные данные. В нашем случае используется функция ReLU: f(x) = max(ax, x), где a - маленькое положительное число. Она имеет небольшую наклонную линию для отрицательных значений, чтобы избежать проблемы с "мертвыми" нейронами (мертвым нейрон считается, если значение, которое в нём получилось равно 0 ) Модель приведена в приложении 3.
2.2.2 Выборка тренировочных данных
Каждая нейросеть, которая даёт предсказания, опирается на данные, которые ей предоставит разработчик и то, что получится у неё на выходе зависит от предоставленных данных. Поэтому очень важно обратить внимание на точность и актуальность информации, на основе которой мы хотим получить прогноз.
В нашем случае, необходимо корректно предоставить готовность команды к матчу в процентном виде. Для этого я использовал модель линейной регрессии. Линейная регрессия – это статистический метод, используемый для моделирования отношений между зависимой переменной и одной или несколькими независимыми переменными. Он основан на предположении, что зависимая переменная линейно зависит от независимых переменных. Линейная регрессия является одним из наиболее распространенных методов анализа данных и оценки взаимосвязей между переменными. Она используется во многих областях, включая экономику, физику, медицину и машинное обучение.
Как уже было сказано, линейная регрессия является частью машинного обучения, но полноценной нейросетью её назвать нельзя в связи с отсутствием нейронных связей и весовых коэффициентов. Линейная регрессия отлично подходит для анализа данных, оценки эффекта и т.д. Модель линейной регрессии приведена в приложении 5.
2.2.3 Метод ошибки
Главной задачей нейросети, которая даёт прогноз, сделать минимум ошибок и для контроля этого процесса ввели такое понятие как анализ ошибок.
Анализ ошибки в нейронных сетях является процессом изучения, интерпретации и понимания ошибок, которые совершает модель во время обучения или применения. Он позволяет выявить причины ошибок и определить способы улучшения производительности модели.
Анализ ошибки в нейросетях включает следующие шаги:
Визуализация и понимание ошибок: первый шаг – это визуализация ошибок, чтобы понять характер ошибок и возможные причины их возникновения. Это может быть представление неправильных классификаций, неверно распознанных объектов и т.д. Визуальный анализ ошибок может помочь обнаружить схожие паттерны ошибок и понять, какие аспекты данных или модели могут быть улучшены.
Анализ ошибок на уровне данных: следующий шаг – это изучение данных, на которых модель совершила ошибки. Это может включать анализ распределения классов, нарушений в данных, ошибок разметки и других факторов, которые могут привести к ошибочным предсказаниям. В результате анализа можно принять меры по улучшению структуры данных, такие как удаление шума, балансировка классов или обновление разметки.
Анализ ошибок на уровне модели: затем проводится анализ ошибок, связанных с самой моделью. Это может включать исследование архитектуры нейронной сети, настройки гиперпараметров, выбора функции потерь и других аспектов, которые могут влиять на производительность модели. Часто используются методы, такие как градиентный спуск, анализ весов или активаций нейронов, чтобы понять, как изменения в модели могут помочь устранить ошибки.
Итеративный процесс улучшения: анализ ошибок в нейросетях является итеративным процессом, где после каждого анализа принимаются меры для улучшения модели и повторного обучения. Это может быть изменение модели, алгоритма обучения или предобработки данных. Часто также используются техники, такие как аугментация данных или передаточное обучение, для повышения производительности модели.
Анализ ошибок в нейросетях является важным этапом в разработке и применении моделей машинного обучения. Он позволяет идентифицировать и устранять причины ошибок и поэтапно повышать качество и эффективность модели.
В нашем случае используется метод средней квадратичной ошибки. Метод средней квадратичной ошибки (MeanSquaredError, MSE) является одним из популярных критериев оценки ошибки в задачах регрессии. Он используется для измерения разницы между предсказанными значениями модели и фактическими значениями целевой переменной.
Для понимания принципа работы MSE, предположим, что у нас есть модель, которая предсказывает некоторую величину y_pred для каждого входного примера, а у нас также есть фактические значения этой величины, обозначенные как y_true. MSE измеряет среднеквадратичное отклонение предсказанных значений от фактических значений и вычисляется следующим образом:
MSE = (1/n) * Σ(y_pred - y_true)^2,
где n - количество примеров в выборке, Σ - сумма значений, а y_pred и y_true - предсказанные и фактические значения соответственно.
Метод средней квадратичной ошибки придает больший вес большим разницам между предсказанными и фактическими значениями. Это означает, что большое отклонение будет иметь более значительный вклад в общую оценку ошибки.
Преимуществом MSE является то, что он распространен, хорошо интерпретируем и дифференцируем (что упрощает его использование в оптимизационных задачах, таких как градиентный спуск). Однако он имеет некоторые недостатки, такие как чувствительность к выбросам в данных, поскольку большие ошибки вносят большой вклад в общую оценку.
Использование метода средней квадратичной ошибки обычно включает минимизацию этой ошибки при обучении модели. Цель состоит в том, чтобы найти такие параметры модели, чтобы максимально снизить MSE. Это может осуществляться с помощью различных алгоритмов оптимизации, например, градиентным спуском, который находит оптимальные значения параметров, минимизируя MSE. Ошибка приведена в приложении 4.
2.3 Итоговые предсказания
Созданная нейросеть в результате работы над проектом была рассчитана исключительно на чемпионат России (из-за наличия данных о российском чемпионате), следовательно сделать прогноз только на российские команды. Таблица с предсказаниями нейросети на 19 тур РПЛ (см. Таблица 1). Необходимо учесть, отсутствие стартовых составов команд, по этой причине в проекте использован предварительный состав.
Таблица 1.
Матчи | Вероятность победы команды 1 | Вероятность победы команды 2 |
Ростов – Крылья Советов | 32.36943 | 27.07383 |
ЦСКА –Оренбург | 45.48923 | 15.58631 |
Краснодар – Рубин | 58.43984 | 19.45697 |
Ахмат – Урал | 18.79842 | 19.03204 |
Зенит – Спартак | 43.45236 | 36.41238 |
Пари НН – Факел | 32.43624 | 28.56324 |
Динамо – Локомотив | 48.13654 | 46.78921 |
Балтика – Сочи | 19.45687 | 17.46871 |
В данный момент чемпионат нашей страны находится на зимней паузе и проверить правильность прогнозов можно только первого, второго и третьего марта, когда стартует РПЛ.
Список литературы
Библиографический список:
Лекун Ян – Как учится нейронная сеть (2021)
Р. Тадеусович – Нейронные сети. Толковый словарь (2023)
Ростовцев В. С. – Искусственные нейронные сети (2023)
Интернет-ресурсы
https://blog.skillfactory.ru/glossary/nejronnaya-set/
https://ru.wikipedia.org/wiki/
Приложения
Приложение 1
Приложение 2
Приложение 3
Приложение 4
Приложение 5