\documentclass{article}

\input{../common-preamble}
\input{../bmstu-preamble}
\input{../fancy-listings-preamble}
\author{Алфимцев Александр Николаевич}
\title{Мультиагентные интеллектуальные системы}
\date{2022-09-05}

\begin{document}
\maketitle
\tableofcontents

\section{Лекция 1}
по числителям
RL, MARL

\section{Лекция 2}
\subsection{Dynamic Programming}
семейство алгоритмов исп для вычисления оптимальных стратегий при условии что имеется идеальная модель окружающей среды в виде MDP. в управлении это решение задачи через решение меньших подзадач.

уравнение оптимальности Беллмана. недостаточно понять в каком мы состоянии, надо ещё понять что делать в этом состоянии. алгоритмы получаются преобразованием уравнений бэллмана в правила поведения.

Весь РЛ можно условно разбить на задачи управления и задачи предсказания.
\begin{enumerate}
  \item оценивание стратегии или состояния. оценку мы делаем до некоторого порога и с некоторой точностью, это называется итеративным оцениванием стратегии.
  \item важно что за шаг нужно не только поощрять, но и наказывать за неверный выбор
  \item теорема получения стратегий. идея в том чтобы понимать не только награду, но и будущие награды на каждом этапе. более оптимальные стратегии должны быть не хуже, чем текущая выбранная стратегия. если мы смогли улучшить стратегию, значит мы можем пересчитать ценности следующих шагов и получить ещё более хорошую стратегию. это называется итерацией по стратегиям
  \item стратегия стабилизируется если является жадной для текущей системы ценностей, а ценности стабилизируются когда мы подобрали оптимальную стратегию
\end{enumerate}
не очень хорошо подходит для больших алгоритмов, несмотря на сложность О(н+к). эти методы обычно работают в 100 раз быстрее линейных алгоритмов.
\subsection{monte-carlo}
антагоничны ДП. не говорим о среде, а есть группа методов, которые усредняют опыт. хорошо подходит об эпизодических алгоритмов. в некотором роде инкрементны. термин означает более широкий класс алгоритмов в которых присутствует значимый случайный компонент.

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

алгоритм стремится к идеальному алгоритму, но его не достигает. усреднённая оценка нужна для подсчёта совместных действий. Если действие не даёт результата - мы не получим никакой информации.

\subsection{Temporal Difference}
выполняет обновление старой оценки ценностей до новой оценки ценностей. делается для максимизации выгоды от цели. МК всегда стремится толкьо вверх, а ТД может меняться в зависимости от текущих предсказаний.

один из видов - Q-обучение, алгоритм SARSA

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

Есть возможность решить практическую любую задачу полным перебором древа решений (брутфорс). если мы идём только в глубину - это монтекарло.

\subsection{RL обучение с моделью}

\subsection{Теория игр в мультиагентном обучении с подкреплением}
\begin{itemize}
\item поиска экстремума стратегий
\item 
\item 
\end{itemize}

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

РН - это состояние в котором несколько игроков находят действие, и знают, что отклонение не принесёт ни им ни партнёру выгоды, и знают, что если партнёр отклонится - таже не будет достигнут профит. Movie: Beautiful mind.

Замена Q-таблиц - это матрицы (Матричные игры). Стохастические игры - это пространственные методы решения таких задач.

Один из первых алгоритмов - алгоритм частотного максимума Ку-значений, подсчитывал частоту получения максимальной награды при выполнении определённого действия. Помогал найти максимально полезное действие для мультиагентных систем.

Конечный автомат в обучении заменял Ку-обучение, и первая попытка перейти от матриц к стохастическим играм.

Созависимое обучение - первый алгоритм joint action Learning - каждый агент смотрит не на отдельные действия, а на результат именно совместных действий, самый простой - это минимакс. Количество состояний-действий увеличивается экспоненциально от количества агентов. Подход интуитивного решения был возможен к использованию только если не было необходимости кооперации агентов.

Матричная игра - это кортеж (н,а1,...,аи,р1,...,ри) где н - количество агентов, а - множество действий итого агента, р - функция наград итого агента.

Необходимо найти действие, приводящее к макимальной награде. Также применима игра с нулевой суммой. стратегия считается лучшей если совокупность наград лучше чем при предыдущей принятой стратгии. Равновесие Нэша в матричной игре - это множество оптимальных стратегий. В системе оптимальные индивидуальные стратегии приводят к совместному провалу. улучшение результата одного ухудшит результат другого - это оптимальность по Парето. Часто совпадает с равновесием Нэша.

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

Если все агенты пришли к стационарной стратегии, то система приходит к MDP. Пространство действий уменьшается со временем, также улучшается стратегия. Алгоритм PHC развили до Win or learn fast WoLF-PHC, алгоритм обладает свойством сходимости, заставляющем учиться быстрее. При добавлении параметра сходимости агенты меняют поведение не более оптимальное.

Марковский процесс принятия решений - это много сотояний и один агент. Стохастические игры - это соединение МДП и матричных игр.

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

Часто ставят знак равенства между теорией игр и машинным обучением.

\newpage
\section{Нейросетевое обучение мультиагентных систем}
\begin{itemize}
\item IQL - независимое ку-обучение, но не с таблицей, а с нейросетью
\item CDQN - центральное (централизованное) обучение (проигрывает децентрализованным системам).
\item VDN - представитель класса рекуррентных нейросетей.
\item MADDPG - полиси градиент, потом добавили детерминистик итд. максимально прощающая ошибки сеть.
\end{itemize}

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

Применяются глубокое обучение DL, получается глубокое обучение с подкреплением DRL. для аппроксимации оптимальных стратегий агентов или ценностей нейросети. Мультиагентное обучение применяет несколько приёмов:
\begin{itemize}
\item прямая коммуникация
\item дистилляция стратегий
\item разделение параметров
\item моделирование оппонента
\item и другие
\end{itemize}
Коммуникация между агентами возникла совсем недавно, обычно рассматриваются независимые. Решают задачи координации. Агентов мотивируют к коммуникации. Начинается всё с Табула Раса (ничего незнающих) агентов, и агенты нашли способ общаться (трёхслойный отправитель, четырёхслойный получатель).

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

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

Централизованное обучение подвержено ограничениям, поэтому нужно декомпозировать. Qmix показал себя в этом лучше всего.

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

Алгоритм независимого глубокого обучения с использованием полносвязной нейронной сети IQN, основан на алгоритме DQN. главные инновации:
\begin{itemize}
\item глубокие нейросети;
\item использование буфера воспроизведения;
\item целевая нейросеть.
\end{itemize}

Основан на алгоритме вычислении ценности. При обучении с подкреплением есть ряд ограничений в доказательной базе и нестабильность обучения. В обучении с учителем есть идеальный вариант, здесь же есть набор из состояний-действий-реакций-сред, на выборке из которого производится обучение. Алгоритм реализует идею независимого обучения, то есть у каждого агента обинаковые нейросети внутри.

\subsection{CDQN}

\section{Эволюционное обучение}
Генетические алгоритмы. Машинное обучение (МО) может быть использовано с оптимизацией, а не только МО и оптимизация сами по себе.

Эволюция - это необратимое развитие за счёт постепенного изменения материи. ЭА могут быть использованы в МО. Алгоритмов довольно много, но иногда их путают с nature-inspired.

\begin{itemize}
\item InGA
\item CoE - КоЭволюция
\end{itemize}

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

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

В 2017 алгоритм IS инвариантен к частотности действий, легко распараллеливался, на момент создания был самым эффективным.

Эволюционная теория игр Replicator Dynamics.

\subsection{Нейроэволюция}
Любое обучение где задействуется или нейросеть или генетический алгоритм. В отличие от обучения с учителем нужна только оценка среды в момент времени. Противопоставляют градиентному спуску в глубоком обучении. Функция награды заменяется на фитнес-функцию.

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

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



\appendix
\setcounter{secnumdepth}{2}
\setcounter{tocdepth}{2}
\section*{Приложения}
\addcontentsline{toc}{section}{Приложения}
\renewcommand{\thesubsection}{\Asbuk{subsection}}
\subsection{Семинар 1 (2022-09-06)}
Expectation-Maximization Algorithm. Алгоритм используется для нахождения оценок максимального правдоподобия параметров там, где модель зависит от ненаблюдаемых скрытых или скрытых переменных

\subsection{Семинар 2 (2022-09-27)}
0.4
Разработка нового мультиагентного окружения
- быть как джим путём максимального переиспользования джима
- стандартизировать своё решение
- сделать универсальный АПИ - много агентов
- агенты могут умирать и создаваться
- в каждом эпизоде среды могут участвовать разные агенты
- удобно для начинающих
- изменяемый апи

описаны бенефиты моделирования окружений для АПИ
описаны проблемы состояния гонки когда например два участника одновременно анализируют среду, один ходит а анализ второго сразу становится неактуальным, это особенно очевидно когда мы находимся в среде преследователя

\subsection{Семинар 3 (2022-10-11)}
Теория игр. Действия можно называть стратегиями

Оценка рациональности аудитории. написать число ближайшее к половине среднего арифместического.

Игра в мафию Ч Мф Мн. Ночь

Мн слева, Мф сверху
  \begin{tabular}{|c|c|c|} 
    \hline
       & Мф & Ч \\ 
    \hline
    Мн & Ч & Мф \\
    \hline
    Ч  & Мн & = \\
    \hline
  \end{tabular}

\[S_{Mf} = \{Mn,Ch\}\]
\[S_{Mn} = \{Mf,Ch\}\]

Смысл как в дуэли трёх лиц треугольник A0.9 -- B0.9 -- C0.01; сильные понимают угрозу от сильных и в итоге выигрывает слабейший. Важно, что игры такого рода играются один раз, то есть никакого сетапа быть не может и мы ничего не знаем о решении других участников. По парето доминирует итог, когда оба выигрывают, но это нужна предварительная кооперация. хотя предпочтительное поведение - признаваться.

\textbf{Игра в нормальной форме}

Ограниченное число игроков.

Множество стратегий каждого игрока.

Профиль стратегий - это декартово произведение всех стратегий. (все возможные комбинации всех элементов множества)

\textbf{Доминирующая стратегия.}
Стратегия игрока считается слабо доминирующей, если вне зависимости от того как поступают другие игроки получаемая выгода лучше других вариантов. Рациональные игроки не пользуются стратегиями над которыми идёт доминация. В начальной игре Равновесие Нэша достигается когда все люди напишут единицу. Но вопрос в том, насколько далеко мы предполагаем, что зайдут все остальные. В группе вышло число 12,5.

\textbf{Равновесие Нэша}
Множество игроков
Множество стратегий
Функция выгоды (декартово произведение множества стратегий)

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

Иногда в Нэша может входить и слабая стратегия (Олигополия Бертрана).
Две фирмы выпускают однородный продукт. фирмы не кооперируют. предельные издержки фирм одинаковые.цена выбирается независимо и одновременно.

Когда мы выбираем продавать по себестоимости - мы выходим в 0 и эта стратегия не лучше любой другой стратегии. Равновесие нэша достигается в точке себестоимости. Олигополия - это неразрешимость в которой компании конкурируют и нацелены на получение прибыли - они работают за себестоимость и не получают выгоды.

\subsection{Семинар 4 (2022-10-25)}

\subsection{Лабораторная работа 1}
\href{https://drive.google.com/drive/folders/1KoUxtNMcKU__8GqzRT-gRPZoTO-Scc-6}{GDrive}

\subsubsection{Введение в обучение с подкреплением}
Считается, что обучение с подкреплением сформировалось из трёх основных направлений:
\begin{enumerate}
\item обучение путём проб и ошибок: торндайк и кошки, павлов и собаки пытались путём системы вознаграждений добиться нужного поведения;
\item задача оптимального управления: динамическое программирование, марковский процесс принятия решений, уравнение Беллмана;
\item обучение на временн\'{ы}х разностях.
\end{enumerate}

Объединение идей было произведено Барто и Саттоном, в 1992 алгоритм впервые победил человека в нарды, были сделаны первые попытки игры в шахматы и го. С 2013 выделяют самый активный рост по четырём направлениям:
\begin{itemize}
\item алгоритмы - backpropagation, CNN, LSTM;
\item вычислитеьные ресурсы - закон Мура, GPU;
\item данные - ImageNet и другие;
\item инфраструктура - Linux, git, AWS, другие облачные решения.
\end{itemize}

Основными толчками к развитию считаются
\begin{itemize}
\item [2012] Deep Learning: AlexNet $\to$ LeNet
\item [2013] Reinforcement Learning (обучение с подкреплением): DQN $\to$ Q-Learning (по сути, ничего нового, наращивается инфраструктура).
\item [до17] DeepMind (побеждает atari, го, шахматы, SC2), OpenAI (создают RL toolkit, побеждают в Dota2, развивают направление robo-hands)
\end{itemize}

\begin{frm}
  \textbf{OpenAI Gym} - набор сред для обучения с подкреплением и исследований.
\end{frm}

В 2017 MIT включили обучение с подкреплением в топ10 прорывных технологий, описана проблема конструктивной возможности но программной недостаточности

Обучение бывает:
\begin{itemize}
\item обучение с учителем это отличать одно от другого
\item обучение без учителя это классификация и кластеризация
\item обучение с подкреплением - это некоторый вход в ИИ
\end{itemize}

На примере игры в пинг-понг
\begin{itemize}
\item в обучении с учителем - нужен датасет (по сути, нужно заставить человека играть несколько часов), долго, дорого, ИИ не сможет превзойти человека, потому что человек составляет разметку нейросети, изобрести новое невозможно, есть разметка правильных ответов и готовый датасет;
\item обучение с подкреплением - применяется в задачах где требуется оптимизировать последовательности решений в неопределённых обстоятельствах, нужна только среда для взаимодействий, без разметки, только сигнал для подкрепления - хорошо/плохо.
\end{itemize}

\subsubsection{Агент и окружающая среда}
\begin{itemize}
\item агент взаимодействует со средой получая информацию (наблюдение)
\item отдаёт в среду действие
\item получает от среды ответ (награда или штраф)
\end{itemize}

\noindent Обычно представляют в виде MDP\footnote{Марковский процесс принятия решений (англ. Markov decision process (MDP)) — спецификация задачи последовательного принятия решений для полностью наблюдаемой среды с марковской моделью перехода и дополнительными вознаграждениями. Назван в честь Андрея Маркова, служит математической основой для того, чтобы смоделировать принятие решения в ситуациях, где результаты частично случайны и частично под контролем лица, принимающего решения. \href{https://ru.wikipedia.org/wiki/Марковский_процесс_принятия_решений}{wiki}}
\begin{verbatim}
создаём среду
цикл по эпизодам, для каждого эпизода:
 сбрасываем среду (встаём на старт для каждого эпизода)
 внутри создаём цикл по шагам, для каждого шага:
  агент выбирает действие на основе состояния,
  среда ему возвращает награды или шаг done
\end{verbatim}
По сути, единственное, что можно использовать при таком алгоритме - это награды от среды, это позволит получить результат.
В представлении работы агента существуют следующие понятия:
\begin{itemize}
\item накопленная награда, есть как рекурсивное представление $G_{t} = R_{t+1} + G_{t+1}$, так и нерекурсивное $G_{t} = R_{t+1} + R_{t+2} + ...$ то есть мы вычисляем награды в текущем состоянии среды и все потенциально возможные новые награды;
\item policy - стратегия агента, собственно, мозги $А = \pi(S)$
\item value - ценность состояния - математическое ожидание всех будущих накопленных наград $v(s) = \mathbb{E}[G_{t}|S_{t} = s]$. По сути, показывает все будущие награды, но мы не знаем функцию среды, поэтому фактически, перед нами стоит задача восстановления функции ценности среды (сейчас награды нет, но где-то в этой среде она точно есть);
\item дисконтирующий множитель - это $\gamma$ в следующей степени для награды каждого следующего состояния. Так горизонт интереса агента можно регулировать. Обычно, $\gamma = [0,95, 0,99]$ чтобы агент мог смотреть далеко вперёд;
\end{itemize}

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

\[v_\pi(S) = \mathbb{E}[R_{t+1} + \gamma v_\pi(S_{t+1} | S_t = s_1A_t \sim\pi(S))] \]

Если мы знаем функцию среды мы можем сразу идти по всем состояниям с наилучшей наградой.

\subsubsection{Q-learning}
Например, мир сетка
\begin{itemize}
\item мир 10х10, 100 клеток;
\item возможны движения в 4х направлениях;
\item динамика детермининрованная - никаких случайностей;
\item награды +1 в центре -1 в некоторых клетках
\item есть препятствия, не преграждающие пути в центр
\end{itemize}

Агент сначала ходит случайно, а потом постепенно формирует сетку с наградами (как вес в нейросети), то есть мы понимаем не только финальную награду, но и то что в награду можно попасть из соседней клетки в которой награды нет. Этот метод основан на Q-обучении.

Q-value - это ценность каждого действия из конкретного состояния
\[ q_\pi(s,a) = \mathbb{E}[R_{t+1} + \gamma q_\pi(S_{t+1}, A_{t+1}) | S_t = s, A_t = a] \]

\[ Q: S \times A \to R \]

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

Агент ничего не знает о среде - надо исследовать и в какой-то момент надо начать использовать знания чтобы получать награды, возникает дилемма исследования-использования: Если агент только учится - он никогда не достигнет ценности, если совсем не исследует - не учится, всё время движется только по Q-таблице, не понимает ценности среды. Для решения дилеммы вводится \textbf{эпсилон-жадная стратегия}. $\varepsilon$ это вероятность случайного действия агента. Поскольку $\varepsilon$ постоянно линейно падает то агент постепенно начинает действовать из таблицы, а не случайно исследовать.

Классическое правило Q-обучения
\[ Q_{new}(S_t, a) = Q(S_t,a) + \alpha[r_t + \gamma \max Q(s_{t+1}, a) - Q(s_t, a)] \]

Происходит корректировка ценностей, которая на каждом шаге складывается из текущей оценки плюс скорости обучения [награда за действие А в состоянии $S_t$ плюс дисконтирующий коэффициент, умноженный на максимальную ожидаемую награду в следующем состоянии $S_{t+1}$ минус текущая оценка]

В работе есть строки
\begin{lstlisting}[language=Python,style=PyCodeStyle]
if done and (reward == 0):
    reward = -10  # fell into the hole
elif done and (reward == 1):
    reward = 100  # goal achieved
else:
    reward = -1  # step on ice
\end{lstlisting}

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

В среде FrozenLake есть параметр «скользкий лёд», при котором мы не идём куда приказали, имитируя поведение, будто мы поскользнулись.

\end{document}