Учиться без ответов

После этого урока ты назовёшь число, которое улучшает алгоритм без правильных ответов, вручную прогонишь K-means, прочитаешь дендрограмму и посчитаешь discounted return агента.

В 2012 году команда из Google и Стэнфорда три дня показывала нейросети кадры из YouTube: 10 миллионов картинок 200×200 пикселей, тысяча машин, 16 000 процессорных ядер. Подписи не было ни у одного кадра. Никто не сообщал сети, что на свете бывают кошки. После обучения в ней нашёлся нейрон, который срабатывал именно на кошачьи морды.

В уроке 1 «учиться» значило: мера качества \(P\) растёт с опытом \(E\). Там \(P\) считали, сверяя ответы модели с правильными ответами \(t_n\). Здесь правильных ответов нет вообще.

Вопрос урока: какое число тогда улучшается? И кто решает, сколько групп должно получиться — машина или ты?

Данные без столбца \(t\)

В supervised learning опыт состоит из пар: вход и правильный ответ. На слайде 5 лекции 1 профессор записывает это так: есть данные \(D = x_1, x_2, \dots, x_N\), и к ним приложены desired outputs \(t_1, \dots, t_N\). Убери второй список — останется unsupervised learning, обучение без учителя.

Unsupervised learning — в опыте есть только входы \(D = x_1, \dots, x_N\). Задача по слайду 5 лекции 1: exploit regularities in \(D\) to build a representation to be used for reasoning or prediction. То есть найти в данных закономерности и построить по ним представление, которым потом можно пользоваться.

Главное слово здесь — representation. Цель не «посмотреть на данные», а получить новое, более удобное описание каждого объекта. Самое простое описание — номер группы, в которую объект попал. Это clustering (кластеризация): разбить точки так, чтобы внутри группы они были похожи, а между группами нет. «Похожи» значит «близко по выбранному расстоянию», обычно евклидову, как в Applied Statistics.

Профессор показывает это на таких же фотографиях транспорта, как в уроке 1, только подписей и цен у них нет. На слайдах 9–15 куча из двух десятков снимков постепенно раскрашивается: мотоциклы, велосипеды, автомобили. И остаётся один квадроцикл, которому достаётся собственный цвет.

кто здесь кто?

До: опыт \(D = x_1, \dots, x_N\), подписей нет

этот сам по себе

После: четыре группы, имён у них нет

Рис. 1. Схема слайдов 9 и 15 лекции 1 (на слайдах снимков вдвое больше). Цвет рамки — номер группы, который выдал алгоритм. Слов «велосипед» или «мотоцикл» он не знает.

На этой картинке две вещи важнее самих групп. Первая: у групп нет имён. Алгоритм выдаёт «группа 2», а не «мотоцикл»; кластер — это не класс. Вторая: квадроцикл. Его никто не предусматривал, и классификатор «машина или мотоцикл» из урока 1 никогда бы его не выделил: такого ответа в его списке нет. Структуру подсказали сами данные.

Теперь примерим определение Митчелла. Задача \(T\) — найти структуру: группы или low-dimensional embedding вроде PCA. Опыт \(E\) — одни только \(x_n\). А вот про \(P\) конспект честно пишет, что она «less obvious». Варианта два. Internal measure считается по самим данным: насколько группы компактны или какую долю дисперсии сохраняет PCA. Extrinsic measure смотрит, помогло ли представление в следующей задаче. Запомни первую: через несколько абзацев она станет формулой.

«Unsupervised — значит без целевой функции». Нет. Нет target, то есть \(t_n\). А число, которое алгоритм делает меньше, есть всегда.

K-means: три пиццерии и одно число

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

Это и есть K-means. Жители — точки \(\vb{x}_n\). Пиццерии — centroids \(\boldsymbol{\mu}_k\). Число пиццерий \(K\) выбираешь ты, а не алгоритм. Два правила называются assignment step и update step.

\[ c_n = \argmin_{k}\, \norm{\vb{x}_n - \boldsymbol{\mu}_k}^2 \] \[ \boldsymbol{\mu}_k = \frac{1}{\abs{C_k}} \sum_{n \in C_k} \vb{x}_n \]
\(c_n\)
номер кластера точки \(n\): первая строка, assignment
\(\boldsymbol{\mu}_k\)
центроид кластера \(k\): вторая строка, update
\(C_k\)
множество точек, попавших в кластер \(k\); \(\abs{C_k}\) — сколько их

А что при этом улучшается? Сумма квадратов расстояний от каждого жителя до его пиццерии:

\[ J = \sum_{k=1}^{K} \sum_{n \in C_k} \norm{\vb{x}_n - \boldsymbol{\mu}_k}^2 \]

Это within-cluster sum of squares, знакомая по Applied Statistics. Вот она, мера \(P\) для задачи без ответов: чем меньше \(J\), тем компактнее группы. Правильные ответы для неё не нужны, хватает самих \(\vb{x}_n\).

Прогон руками

Шесть точек на прямой: 1, 2, 3, 10, 11, 12. Берём \(K = 2\) и нарочно неудачный старт: центроиды в точках 1 и 2. Каждая строка рисунка — один ход.

ход 1 · assignment, центроиды 1 и 2 J = 246 ход 2 · update, центроиды 1 и 7.6 J = 89.2 ход 3 · assignment, центроиды 1 и 7.6 J = 41.68 перешли к ближнему ход 4 · update, центроиды 2 и 11 J = 4 1 2 3 10 11 12
Рис. 2. Кружки — кластер 1, крестики — кластер 2, ромбы над прямой — центроиды. \(J\) падает на каждом ходу: 246 → 89.2 → 41.68 → 4.

Проверь одну строку на калькуляторе. Ход 2: во втором кластере точки 2, 3, 10, 11, 12, их среднее \(38 / 5 = 7.6\). Первый кластер состоит из одной точки, она совпадает со своим центроидом и даёт ноль. Остаётся:

\[ \begin{aligned} J &= 5.6^2 + 4.6^2 + 2.4^2 + 3.4^2 + 4.4^2 \\ &= 89.2 \end{aligned} \]

Пятый ход, снова assignment, уже ничего не меняет: каждая точка и так у ближайшего центроида. Алгоритм остановился.

Почему \(J\) не может вырасти

  1. Запишем \(J\) так, чтобы были видны обе группы неизвестных: номера \(c_n\) и центроиды \(\boldsymbol{\mu}_k\).

    \[ J = \sum_{n=1}^{N} \norm{\vb{x}_n - \boldsymbol{\mu}_{c_n}}^2 \]

    Это та же двойная сумма: каждая точка посчитана один раз, со своим центроидом.

  2. Assignment step: центроиды заморожены. Слагаемое точки \(n\) зависит только от её собственного \(c_n\), поэтому каждое можно уменьшать отдельно — выбрать ближайший центроид.

    \[ c_n = \argmin_{k}\, \norm{\vb{x}_n - \boldsymbol{\mu}_k}^2 \]

    Ни одно слагаемое не выросло, значит, не выросла и сумма.

  3. Update step: заморожены номера. Теперь \(J\) распадается на \(K\) независимых кусков, по одному на центроид. В минимуме куска \(k\) производная по \(\boldsymbol{\mu}_k\) равна нулю.

    \[ \pd{J}{\boldsymbol{\mu}_k} = -2 \sum_{n \in C_k} (\vb{x}_n - \boldsymbol{\mu}_k) = 0 \]
  4. Решаем это уравнение.

    \[ \boldsymbol{\mu}_k = \frac{1}{\abs{C_k}} \sum_{n \in C_k} \vb{x}_n \]

    Получилось среднее. Не «так принято», а единственная точка, в которой сумма квадратов расстояний минимальна.

  5. Ход, который что-то меняет, делает \(J\) строго меньше, поэтому вернуться к уже пройденному разбиению нельзя. (Одна оговорка: точку, которая стоит ровно посередине между двумя центроидами, оставляют в её кластере.) А способов разбить \(N\) точек на \(K\) групп конечное число. Значит, ходы обязаны закончиться.

  6. Чего здесь нет: утверждения, что конец пути — лучшее разбиение. Доказано только, что ни один из двух ходов больше не помогает. Это local minimum, и какой именно, зависит от старта.

K-means по очереди минимизирует одно и то же число J: сначала по номерам кластеров, потом по центроидам.

Теперь то же самое на двумерных данных, устроенных как в конспекте: три облака с теми же центрами и стартовые центроиды со стр. 17. В конспекте точек 300, здесь 150, по 50 в облаке, и сами точки сгенерированы заново.

K-means по ходам: assignment, update, и снова

Ромбы — центроиды, серые кружки — точки, которые ещё никому не отданы. Фоном закрашена зона, где каждый центроид ближайший. Нижний график — значение \(J\) после каждого хода: нечётные ходы — assignment, чётные — update. Центроид можно перетащить мышью, пальцем или стрелками клавиатуры; в режиме «свои» три щелчка по полю ставят три центроида. Главное, что должно стать видно: \(J\) никогда не растёт, но где он остановится, решает старт.

  1. Старт «как в конспекте»: \(\mu_1\) и \(\mu_2\) стоят в верхнем облаке, \(\mu_3\) — правее нижнего. Прогноз: кому хватит одного update, чтобы встать на место, а кому нет? Потом нажимай кнопку хода.
    Что должно получиться

    \(\mu_3\) встаёт в центр нижнего облака сразу, в (1.97, 0.85), и больше не двигается. \(\mu_1\) и \(\mu_2\) делят два облака в три приёма: размеры кластеров идут 12 / 88 / 50, затем 43 / 57 / 50, затем 50 / 50 / 50. Тот же сюжет нарисован в конспекте на стр. 17–19.

  2. Нажми «Сначала» и пройди все ходы, глядя на \(J\). Может ли он вырасти? А остаться прежним?
    Что должно получиться

    Вырасти не может: 537.8 → 284.8 → 201.8 → 128.2 → 106.5 → 101.1. На седьмом ходу \(J\) остался 101.1: assignment не переставил ни одной точки. Только этот «пустой» ход и сообщает алгоритму, что он сошёлся.

  3. Выбери «плохой старт». Данные те же. Прогноз: итоговый \(J\) будет таким же? Нажми «До конца».
    Что должно получиться

    Нет: 335.3 против 101.1. Один центроид держит два облака сразу (100 точек), два других делят третье (27 и 23). Ни один ход больше не уменьшает \(J\). Алгоритм честно остановился, но в локальном минимуме. Зоны на фоне показывают, почему: каждая точка действительно у ближайшего центроида.

  4. Нажми «Случайный старт» и «До конца» раз десять–пятнадцать. Как часто итог плохой?
    Что должно получиться

    Примерно каждый девятый случайный старт (около 11 %) застревает на \(J\) около 333–336 вместо 101.1. Сразу после загрузки страницы плохими выходят второй и двенадцатый запуски. Отсюда рецепт: запускать несколько раз с разных стартов и оставлять результат с наименьшим \(J\). Пунктир на нижнем графике помнит лучший из твоих запусков.

У профессора для этой беды есть готовые реплики, они прозвучат в лекции про gradient descent (урок 13): «It depends on where we start from» и рецепт «Use multiple restarts». Там число будет называться \(E(\vb{w})\), но сюжет тот же: шаг за шагом уменьшаем функцию и останавливаемся в минимуме, который зависит от старта.

И про сам старт. Конспект пишет, что центроиды «are randomly placed in the feature space». На практике их берут из самих данных: \(K\) случайных точек выборки (так работает кнопка «Случайный старт») или более аккуратный выбор k-means++, который старается разнести стартовые центроиды подальше друг от друга. Центроид, брошенный далеко от всех точек, может не получить ни одной из них и останется пустым кластером.

Дендрограмма: все разбиения сразу

K-means требует назвать \(K\) до начала. Hierarchical clustering откладывает этот выбор. В варианте agglomerative (снизу вверх) сначала каждая точка — свой кластер. На каждом шаге два ближайших кластера сливаются в один, и так до тех пор, пока не останется единственный. Вариант divisive идёт сверху вниз: начинает с одного кластера и делит.

Протокол всех слияний рисуют деревом. Это dendrogram. Листья внизу — точки. Каждая горизонтальная перекладина — одно слияние, её высота показывает, «на каком расстоянии» оно случилось. Горизонтальный разрез на высоте \(h\) отменяет все слияния выше него. Сколько вертикальных веток пересёк разрез, столько кластеров и получилось.

Ниже данные, устроенные как на рисунке 1 конспекта (стр. 16): 50 точек, три облака по 17, 17 и 16. Центры облаков измерены по тому рисунку, сами точки сгенерированы заново.

Где резать дерево

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

  1. Разрез стоит на высоте около 15, как в конспекте, и даёт 3 кластера. Прогноз: насколько его можно поднять или опустить, чтобы кластеров осталось три?
    Что должно получиться

    От 3.7 до 40.7: в этом промежутке нет ни одного слияния. Такой длинный пустой участок и говорит, что три — естественное число кластеров для этих данных.

  2. Подними разрез выше 40.7. Какие два облака сольются первыми и почему именно они?
    Что должно получиться

    Верхнее и правое: это самая близкая пара, между их центроидами 9.9. От нижнего левого облака до них 16.4 и 14.8. Останется два кластера. Выше 69.1 всё сливается в один.

  3. Опусти разрез ниже 3.7 и веди к нулю. Что происходит с числом кластеров?
    Что должно получиться

    Оно быстро растёт: 4, 5, 6 и так до 50 при нулевой высоте. Облака дробятся на куски. Внутри облака слияния идут часто и на малых высотах, «естественного» числа там нет.

  4. Верни разрез на 15 и переключи linkage на single. Прогноз: слияние, которое было на высоте 40.7, окажется выше или ниже? Точки при этом не двигаются.
    Что должно получиться

    Гораздо ниже: 7.7 вместо 40.7 и 12.6 вместо 69.1. Изменилось только определение «расстояния между кластерами». У Ward высота 69.1 больше любого расстояния на картинке: самые далёкие точки разделяет 18.6. Значит, это не расстояние. Разрез при переключении остаётся на той же доле высоты дерева, поэтому число на ползунке другое, а кластеров по-прежнему три.

Последний опыт показывает, что слова «расстояние между кластерами» надо уточнять. Правило, по которому его считают, называется linkage.

Четыре linkage и высоты двух верхних слияний на данных из виджета.
LinkageРасстояние от \(A\) до \(B\)Высоты
singleмежду двумя ближайшими точками7.7 и 12.6
completeмежду двумя самыми далёкими точками12.5 и 18.6
averageсреднее по всем парам точек9.9 и 15.6
Wardцена слияния: рост \(J\)40.7 и 69.1

Рисунок в конспекте построен с Ward linkage. Его высота считается так:

\[ d_{\text{Ward}} = \sqrt{\frac{2\abs{A}\abs{B}}{\abs{A} + \abs{B}}}\,\norm{\vb{c}_A - \vb{c}_B} \]
\(\abs{A}, \abs{B}\)
число точек в кластерах
\(\vb{c}_A, \vb{c}_B\)
их центроиды

Проверим на двух облаках по 17 точек, между центроидами которых 9.86. Сначала множитель, потом высота:

\[ \sqrt{\frac{2 \cdot 17 \cdot 17}{34}} = \sqrt{17} \approx 4.123 \] \[ d_{\text{Ward}} \approx 4.123 \cdot 9.86 \approx 40.7 \]

Там и стоит перекладина: в виджете на 40.7, на рисунке конспекта чуть выше 40. Смысл множителя: \(d_{\text{Ward}}^2 = 2\,\Delta J\), где \(\Delta J\) — на сколько вырастет \(J\) из прошлого раздела, если эти два кластера объединить. Чем больше кластеры, тем дороже их слияние.

Число кластеров по дендрограмме выбирают глазами: ищут самый длинный вертикальный участок без перекладин и режут внутри него. И ещё мелочь для экзамена: слово пишется dendrogram. В тексте конспекта стоит «dendogram», это опечатка.

Reinforcement learning: оценка вместо ответа

Ты в миланском баре и не знаешь итальянского. Говоришь бармену слово наугад и смотришь, что принесли. Никто не скажет: «правильно было бы попросить macchiato». Ты узнаёшь только, насколько тебе понравилась чашка, и только для того слова, которое прозвучало. Завтра можно повторить удачное слово или рискнуть новым.

Это третья парадигма, reinforcement learning (обучение с подкреплением, RL). На слайде 5 лекции 1 она описана одной фразой: producing actions \(a_1, \dots, a_N\) which affect the environment, and receiving rewards \(r_1, \dots, r_N\) learn to act in order to maximize rewards in the long term. В ней три новости сразу.

Agent policy π(a|s) Environment action aₜ reward rₜ state sₜ₊₁ робот лабиринт
Рис. 3. Один оборот цикла на шаге \(t\). Жёлтым отмечено то, чего нет в двух других парадигмах: число-оценка от среды.

На каждом шаге \(t\) агент наблюдает state \(s_t\), выбирает action \(a_t\) и получает reward \(r_t\) вместе с новым состоянием \(s_{t+1}\). Правило выбора называется policy и записывается как распределение вероятностей:

\[ \pi(a \mid s) = \Pr(a_t = a \mid s_t = s) \]
\(\pi(a \mid s)\)
с какой вероятностью агент в состоянии \(s\) выберет действие \(a\)

Agent — всё, что воспринимает среду через сенсоры (sensors) и действует на неё через исполнительные устройства (actuators), чтобы достичь цели. В RL агент улучшает своё поведение по обратной связи от среды.

В конспекте это разобрано на роботе в лабиринте (Example 7). Положим рядом робота и бар:

Шесть слов RL на двух примерах.
ТерминРобот в лабиринтеТы в баре
agentроботты
environmentлабиринтбар и бармен
state \(s_t\)где робот сейчасчто уже заказано и выпито
action \(a_t\)шаг влево, вправо, вперёд, назадслово, сказанное бармену
reward \(r_t\)плюс за выход, минус за удар о стенунасколько понравилась чашка
policy \(\pi\)правило «в этой клетке иду туда»привычка, что заказывать

Примерим Митчелла и сюда, как это делает конспект на стр. 21. \(T\): выучить policy, то есть какое действие выбирать в каждом состоянии. \(E\): цепочки состояний, действий и наград, которые агент сам добыл, взаимодействуя со средой. \(P\): ожидаемая сумма наград — до неё дойдём в следующем разделе.

Математическая модель такой задачи называется MDP. Здесь конспект ошибается, поэтому определение — в рамке.

Markov Decision Process — пятёрка \((\mathcal{S}, \mathcal{A}, P, R, \gamma)\): множество состояний, множество действий, вероятности переходов \(P(s' \mid s, a)\), функция награды \(R(s, a)\) и discount factor \(\gamma\). К ней прилагается Markov property: следующее состояние зависит только от текущего состояния и действия, а не от всей истории.

\[ \begin{aligned} &\Pr(s_{t+1} \mid s_t, a_t, s_{t-1}, a_{t-1}, \dots) \\ &\qquad = \Pr(s_{t+1} \mid s_t, a_t) \end{aligned} \]

Буква \(P\) в пятёрке — вероятности переходов. С мерой качества \(P\) из определения Митчелла её роднит только написание.

Сколько стоит будущее: discount factor

Слова «maximize rewards in the long term» надо превратить в одно число. Просто сложить все награды? Тогда 10 евро сегодня и 10 евро через год равноценны. А если шаги не кончаются, сумма может оказаться бесконечной. Поэтому будущее уценивают: награда через \(t\) шагов входит в сумму с весом \(\gamma^t\).

\[ G = \sum_{t=0}^{\infty} \gamma^{t} r_t \] \[ G = r_0 + \gamma\, r_1 + \gamma^2 r_2 + \dots \]
\(G\)
discounted return: сумма наград с уценкой
\(\gamma\)
discount factor, число от 0 до 1
\(r_t\)
награда на шаге \(t\)

В конспекте у этой суммы нет своей буквы: она стоит прямо в формуле \(P = \E\bigl[\sum_t \gamma^t r_t\bigr]\). Знак \(\E\) нужен потому, что и среда, и policy случайны: мера качества — expected return, среднее по многим попыткам. Цель обучения — policy с наибольшим ожидаемым \(G\):

\[ \pi^{*} = \argmax_{\pi}\; \E_{\pi}[\,G\,] \]

Посчитаем на лабиринте. Робот делает четыре шага и за каждый получает −1, а на пятом выходит и получает +10. При \(\gamma = 0.9\):

\[ \begin{aligned} G &= -(1 + 0.9 + 0.81 + 0.729) \\ &\phantom{=}\; {} + 10 \cdot 0.6561 \\ &= -3.439 + 6.561 = 3.122 \end{aligned} \]

Сколько весит награда через \(t\) шагов

Пунктирная рамка — награда \(r_t\) как есть. Закрашенный столбик — её вклад в сумму, \(\gamma^t r_t\); над столбиком подписан вес \(\gamma^t\). Главное, что должно стать видно: \(\gamma\) решает, как далеко в будущее смотрит агент, и при маленьком \(\gamma\) далёкая награда для него почти не существует.

  1. Лабиринт, \(\gamma = 0.9\): \(G = 3.122\), идти к выходу выгодно. Прогноз: каким будет знак \(G\) при \(\gamma = 0.5\)? Награды те же.
    Что должно получиться

    Минус: \(G = -1.25\). От +10 остаётся \(10 \cdot 0.5^4 = 0.625\), а штрафы по дороге набирают −1.875. Такому близорукому агенту выгоднее вообще не идти. Среда не менялась, изменилось только то, как агент ценит будущее.

  2. Найди \(\gamma\), при котором \(G\) меняет знак. Сначала прикинь: ближе к 0.5 или к 0.9?
    Что должно получиться

    Между 0.71 и 0.72: при 0.71 выходит \(G = -0.031\), при 0.72 уже \(+0.076\).

  3. Сценарий «delayed»: та же награда +10, но через 20 шагов. Прогноз для \(\gamma = 0.9\): сколько от неё дойдёт до старта — половина, четверть, меньше?
    Что должно получиться

    Около одной восьмой: \(10 \cdot 0.9^{20} = 1.216\). Чтобы дошло хотя бы 8 из 10, нужен \(\gamma = 0.99\). Полезная прикидка: агент «видит» примерно на \(1 / (1 - \gamma)\) шагов вперёд, то есть на 10 шагов при 0.9 и на 100 при 0.99.

  4. Сценарий «без конца»: +1 на каждом шаге, шагов бесконечно много. Чему равна сумма при \(\gamma = 0.9\)? А при \(\gamma = 1\)?
    Что должно получиться

    При 0.9 сумма равна 10, при 0.99 — 100: это \(1 / (1 - \gamma)\). При \(\gamma = 1\) каждый столбик равен 1, сумма растёт без предела. Сравнивать две стратегии по бесконечности нельзя.

Последний опыт — причина, по которой в бесконечных задачах берут \(\gamma\) строго меньше единицы. Вот короткое доказательство.

  1. Пусть награды ограничены: ни одна по модулю не больше \(R_{\max}\).

    \[ \abs{r_t} \le R_{\max} \]
  2. Модуль суммы не больше суммы модулей, а каждый модуль не больше \(R_{\max}\).

    \[ \begin{aligned} \abs{G} &\le \sum_{t=0}^{\infty} \gamma^{t} \abs{r_t} \\ &\le R_{\max} \sum_{t=0}^{\infty} \gamma^{t} \end{aligned} \]
  3. Осталась геометрическая прогрессия \(S = 1 + \gamma + \gamma^2 + \dots\) Вынесем \(\gamma\) из всех слагаемых, кроме первого: \(S = 1 + \gamma S\).

    \[ S = \frac{1}{1 - \gamma} \]

    Это верно только при \(\gamma \lt 1\): иначе слагаемые не убывают и у суммы нет предела.

  4. Собираем.

    \[ \abs{G} \le \frac{R_{\max}}{1 - \gamma} \]

    При \(\gamma \lt 1\) return любой стратегии — конечное число, и стратегии можно сравнивать.

  5. При \(\gamma = 1\) граница превращается в деление на ноль, и не зря: поток наград \(r_t = 1\) даёт сумму \(1 + 1 + 1 + \dots\) Значит, \(\gamma = 1\) допустим только там, где эпизод гарантированно кончается.

Зачем уценивать будущее, если эпизод и так конечный?

Причин ещё две. Будущее ненадёжно: чем дальше награда, тем больше шансов, что её не будет. И обычное предпочтение: то же самое лучше получить раньше. Обе знакомы по евро сегодня и евро через год.

Три трудности, которых нет в supervised learning

Sparse reward и dense reward. Награда бывает редкой: в игре число приходит только в конце, за победу или поражение. И бывает частой: в симуляторе вождения маленький плюс за каждый момент на дороге и минус за съезд. Учиться по редкой награде трудно, потому что почти все шаги не дают никакой информации.

0000+10 000 0000 00000 подсказок нет

Sparse reward: число только на выходе

4567+10 357 2456 12345 теплее, теплее

Dense reward: число в каждой клетке

Рис. 4. Один лабиринт, два способа награждать. Число в клетке — награда за шаг в неё, закрашенные клетки без числа — стены, кружок — агент на старте. Слева агент бродит вслепую, пока случайно не найдёт выход. Справа каждый шаг сразу говорит, приблизился он или нет.

Delayed reward. Награда может прийти намного позже действия, которое её заслужило. Шахматный ход ничего не даёт сразу, а через двадцать ходов приводит к победе. Кому из двадцати ходов приписать успех? Это называется credit assignment problem. В виджете задержка была видна по-своему: от награды +10, отодвинутой на 20 шагов, на старте остаётся столбик высотой 1.2.

Exploration vs. exploitation. Вернёмся в бар. Можно каждый день повторять слово, после которого принесли неплохой кофе: это exploitation, использование известного. Можно пробовать новые слова: это exploration, разведка. Только повторять — значит, возможно, никогда не узнать про лучший напиток. Только пробовать — значит не пить хороший кофе, который уже найден. Нужны оба, и в этом дилемма.

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

Три вида опыта, и почему курс выбирает один

Сложим всё рядом. Три парадигмы различаются тем, что лежит в одной записи опыта.

supervised xₙ tₙ ответ учителя unsupervised xₙ пусто reinforcement sₜ aₜ rₜ sₜ₊₁ оценка, не ответ
Рис. 5. Одна запись опыта. Синее пришло от мира, охристое — от учителя, фиолетовое агент выбрал сам, жёлтое — число-оценка от среды.

Самая частая ошибка — считать reward разновидностью label. Различий три.

Три парадигмы рядом.
SupervisedUnsupervisedReinforcement
Что в опыте\(x_n\) и \(t_n\)только \(x_n\)\(s_t, a_t, r_t\)
Обратная связьправильный ответ на каждый примернетоценка действия, часто поздняя и редкая
Откуда данныеданы заранееданы заранееих добывает сам агент
Какое число улучшаетсяошибка между выходом и \(t_n\)внутренняя мера, например \(J\)ожидаемый return \(\E[G]\)
Примеры методовregression, SVMK-means, PCAQ-learning, policy gradients, actor-critic

«Нейросети — это метод supervised learning». Так выходит из таблицы на стр. 22 конспекта, где Neural Nets записаны в столбец supervised. На деле нейросеть — способ задать функцию, и им пользуются во всех трёх парадигмах. Сеть из начала урока училась без ответов, а в RL сетью задают саму policy.

Одна и та же архитектура нейросети с одними и теми же настройками научилась играть в 49 игр Atari; для каждой игры её обучали заново. На вход она получала только пиксели экрана, а вместо правильных ходов — счёт игры в роли reward. Работа вышла в журнале Nature под названием «Human-level control through deep reinforcement learning».

Ответ на задачку

Какое число улучшается, когда правильных ответов нет? Теперь у тебя есть три примера. У K-means это \(J\): он считается по одним только \(\vb{x}_n\) и падает на каждом ходу. У агента это ожидаемый return. У сети с кадрами YouTube это была ошибка восстановления собственного входа: она училась как можно точнее воспроизводить картинку, которую ей показали, причём так, чтобы на каждую картинку откликалась лишь малая часть нейронов. Такие сети называются autoencoders (эта была sparse autoencoder), они будут в курсе позже. Нейрон, реагирующий на кошек, оказался побочным продуктом — тем самым representation со слайда профессора.

А кто решает, сколько групп? Ты. В K-means это число \(K\), в дендрограмме — высота разреза. Данные только подсказывают: длинным пустым промежутком в дереве или одиноким квадроциклом.

«Без ответов» не значит «без цели»: меняется не наличие целевой функции, а то, из чего она считается.

Почему дальше — почти только supervised

На слайде 16 лекции 1 профессор обводит рамкой две первые парадигмы и пишет: «This course focuses most on Supervised Learning (with some unsupervised spots)». Причину слайд не называет, но она видна из программы курса: почти во всех следующих лекциях есть пары \((x_n, t_n)\) и error function, которая сравнивает выход сети с \(t_n\). Под «unsupervised spots» естественно понимать, например, autoencoders: они стоят в программе курса. От RL на слайдах осталась одна фраза; всё остальное в этом уроке — из конспекта.

Что из этого урока нести на экзамен в первую очередь: формулировки трёх парадигм со слайда 5 и умение объяснить разницу между ними. А K-means вернётся уже в следующем уроке, как деталь систем распознавания, которые были до deep learning.

В формате экзамена

Using the notation \(D = x_1, \dots, x_N\), state what the experience contains in supervised, unsupervised and reinforcement learning. Then explain why a reward is not the same thing as a label.

Show model answer

Supervised: the data \(D\) come with the desired outputs \(t_1, \dots, t_N\); the learner must produce the correct output for a new input. Unsupervised: only \(D\) is given; the learner exploits regularities in \(D\) to build a representation to be used for reasoning or prediction (e.g. clusters). Reinforcement: the learner produces actions \(a_1, \dots, a_N\) that affect the environment and receives rewards \(r_1, \dots, r_N\); it learns to act so as to maximise rewards in the long term.

A label is instructive feedback: it states the correct output for an input, whatever the learner answered. A reward is evaluative feedback: it only scores the action that was actually taken, says nothing about the other actions, and may arrive many steps later. Moreover, in reinforcement learning the data depend on the learner's own behaviour, while a supervised data set is fixed.

В ответе должны быть две вещи: формулировки слайда 5 лекции 1 (обозначения \(t_n\), \(a_n\), \(r_n\) и слова «in the long term») и различие между оценкой и инструкцией. Ответ «reward is a kind of label» вторую часть не закрывает.

K-means with \(K = 2\) is run on the one-dimensional points 1, 2, 3, 10, 11, 12, starting from the centroids \(\mu_1 = 1\) and \(\mu_2 = 2\). Compute the within-cluster sum of squared distances \(J\) right after the first update step.

Show model answer

Assignment: point 1 goes to \(\mu_1\); points 2, 3, 10, 11, 12 are closer to \(\mu_2\) (here \(J = 246\)). Update: \(\mu_1 = 1\), \(\mu_2 = 38 / 5 = 7.6\).

\[ \begin{aligned} J &= 5.6^2 + 4.6^2 + 2.4^2 + 3.4^2 + 4.4^2 \\ &= 89.2 \end{aligned} \]

The run continues: clusters {1, 2, 3} and {10, 11, 12} (\(J = 41.68\)), centroids 2 and 11 (\(J = 4\)), and the next assignment changes nothing.

Типичные потери: посчитать \(J\) до update (246) или забыть, что точка 1 даёт вклад 0. Калькулятора хватает; порядок ходов «assignment, потом update» надо держать твёрдо.

Which statements about K-means are correct? Select all that apply.

  • Neither the assignment step nor the update step can increase \(J\). Каждый ход минимизирует \(J\) по своей группе неизвестных при замороженной другой.
  • It always converges to the partition with the smallest possible \(J\). Только к локальному минимуму: вспомни «плохой старт» с \(J = 335.3\) вместо 101.1.
  • Different initial centroids can lead to different final clusterings. Отсюда multiple restarts.
  • The number of clusters \(K\) is found by the algorithm. \(K\) — вход алгоритма, его задаёт человек.
  • After the update step every centroid is the mean of the points assigned to it. Среднее минимизирует сумму квадратов расстояний.
  • It needs the targets \(t_n\) to compute \(J\). \(J\) считается только по \(\vb{x}_n\) и центроидам: это unsupervised learning.
Show model answer

Correct: A, C and E. K-means is an alternating minimisation of \(J\): neither step can increase it, and the update step sets each centroid to the mean of its points. It stops at a local minimum that depends on the initial centroids; \(K\) is chosen by the user, and no targets are involved.

В вопросах «select all» читай каждое утверждение отдельно, как вопрос «верно или нет». Здесь ловушки спрятаны в словах «always» и «found by the algorithm».

A dendrogram of 50 points (agglomerative clustering, Ward linkage) shows all merges below height 4, then one merge at height 40.7 and the last one at 69.1. (a) How many clusters would you choose, and where can you cut the tree to obtain them? (b) No two points of the data set are more than 19 apart. How can a merge be drawn at height 69.1?

Show model answer

(a) Three clusters: any horizontal cut between 4 and 40.7 crosses three vertical branches. The long range of heights without merges indicates that three is the natural number of clusters.

(b) With Ward linkage the height is not a geometric distance but the cost of the merge: a size factor times the distance between the two centroids. It equals \(\sqrt{2\,\Delta J}\), where \(\Delta J\) is the increase of the within-cluster sum of squares, so it grows with the cluster sizes. Here the clusters have 34 and 16 points and their centroids are 14.82 apart:

\[ \sqrt{\frac{2 \cdot 34 \cdot 16}{50}} \cdot 14.82 = 4.66 \cdot 14.82 \approx 69.1 \]

В пункте (a) ждут и число, и допустимый диапазон высот. В пункте (b) достаточно сказать, что смысл вертикальной оси зависит от linkage; формула — бонус.

An agent receives the reward \(-1\) at each of the steps \(t = 0, 1, 2, 3\) and the reward \(+10\) at step \(t = 4\), when it reaches the exit. Compute the discounted return \(G\) for \(\gamma = 0.9\).

Show model answer
\[ \begin{aligned} G &= -(1 + 0.9 + 0.81 + 0.729) \\ &\phantom{=}\; {} + 10 \cdot 0.6561 \\ &= -3.439 + 6.561 = 3.122 \end{aligned} \]

For comparison, \(\gamma = 0.5\) gives \(-1.875 + 0.625 = -1.25\): a short-sighted agent finds the trip not worth it.

Ошибка номер один — начать степени с \(\gamma^1\): первая награда входит с весом \(\gamma^0 = 1\). Ошибка номер два — потерять знак у штрафов.

What is a Markov Decision Process? Why must the discount factor be strictly smaller than 1 in an infinite-horizon task?

Show model answer

An MDP is a tuple \((\mathcal{S}, \mathcal{A}, P, R, \gamma)\): a set of states, a set of actions, the transition probabilities \(P(s' \mid s, a)\), the reward function \(R(s, a)\) and the discount factor \(\gamma\). It satisfies the Markov property: the next state depends only on the current state and action, not on the earlier history.

If the rewards are bounded, \(\abs{r_t} \le R_{\max}\), then

\[ \abs{G} \le R_{\max} \sum_{t=0}^{\infty} \gamma^{t} = \frac{R_{\max}}{1 - \gamma} \]

which is finite only for \(\gamma \lt 1\). With \(\gamma = 1\) an infinite sum of rewards can diverge (e.g. \(r_t = 1\) at every step), so the returns of different policies could not be compared. \(\gamma = 1\) is acceptable only for episodic tasks of finite length.

Первая половина — на знание определения: пять элементов и свойство Маркова. Если написать «task, experience, performance», как в конспекте, это ответ на другой вопрос. Во второй половине ждут геометрическую прогрессию.

Проверь себя

Из набора данных убрали столбец \(t_n\). Что у алгоритма кластеризации при этом осталось?

  • Ничего: без ответов нечего оптимизировать Оптимизировать есть что: у K-means это \(J\), и он считается без \(t_n\).
  • Целевая функция, которая считается по одним входам Да. Пропал target, а не цель: \(J\) зависит только от \(\vb{x}_n\) и центроидов.
  • Accuracy на отложенных данных Accuracy сравнивает предсказания с правильными ответами, а их нет.
  • Reward от среды Reward бывает в reinforcement learning; здесь нет ни действий, ни среды.

После очередного assignment step ни одна точка не сменила кластер. Какой вывод верен?

  • Найдено разбиение с наименьшим возможным \(J\) Нет гарантии: при «плохом старте» всё останавливается на \(J = 335.3\), хотя бывает 101.1.
  • Алгоритм сошёлся, но, возможно, в локальном минимуме Да. Следующий update оставит центроиды на месте, дальше ничего не изменится. Про глобальность это ничего не говорит.
  • Это ошибка: \(J\) обязан строго убывать на каждом ходу \(J\) обязан не расти. Ход без изменений — законный признак остановки.
  • Нужно увеличить \(K\) Остановка ничего не говорит о том, подходит ли \(K\); его выбирают по другим соображениям.

Данные одни и те же. Что из перечисленного может изменить итог K-means? Отметь всё подходящее.

  • Другие стартовые центроиды Разные старты ведут в разные локальные минимумы.
  • Другое \(K\) Число групп задаётся снаружи, и от него зависит всё разбиение.
  • z-стандартизация признаков Расстояние евклидово: если один признак измерен в тысячах, он один решает, кто к кому ближе. После стандартизации расстояния другие — и кластеры тоже.
  • Порядок строк в файле при тех же стартовых центроидах Оба хода используют все точки сразу: суммы и ближайшие центроиды от порядка не зависят.
  • Лишние ходы после сходимости После сходимости ни assignment, ни update ничего не меняют.

Третий пункт — привет из Applied Statistics: перед любым методом, основанным на расстояниях, смотри на масштабы признаков.

На дендрограмме самый длинный участок высот без слияний лежит между 4 и 40, и разрез в нём пересекает три вертикальные ветки. О чём это говорит?

  • В данных 36 кластеров 36 — длина промежутка по вертикальной оси, а не число веток.
  • Три — естественное число кластеров для этих данных Да: три группы долго не хотят сливаться, значит, они хорошо отделены друг от друга.
  • Расстояние между любыми двумя кластерами не меньше 40 Высота не обязана быть расстоянием: у Ward это цена слияния.
  • Резать нужно ровно на высоте 22 Любая высота внутри промежутка даёт то же самое разбиение.

Агент сделал ход и получил \(r = -1\). Что именно он узнал?

  • Какой ход был правильным Так было бы с label. Reward про другие ходы ничего не сообщает.
  • Оценку того хода, который он сделал, и ничего про остальные Да, это evaluative feedback. Может быть, остальные ходы были ещё хуже.
  • Что его policy в целом плоха Один штраф ничего не говорит о сумме: в лабиринте четыре штрафа подряд вели к +10.
  • Что нужно уменьшить \(\gamma\) \(\gamma\) — часть постановки задачи, а не то, что подстраивают по наградам.

Награда +10 придёт через 4 шага, \(\gamma = 0.5\). Какой вклад она даёт в return?

  • 5 Это \(10 \cdot 0.5\): уценка за один шаг, а шагов четыре.
  • 2.5 Это \(10 / 4\) или \(10 \cdot 0.5^2\). Вес награды — \(\gamma^t\), не \(1/t\).
  • 0.625 \(10 \cdot 0.5^4 = 10 \cdot 0.0625\).
  • 10 Так было бы при \(\gamma = 1\), без уценки.

Чем данные в RL отличаются от данных в supervised learning? Отметь всё верное.

  • Их порождает сам агент своими действиями Да: что агент увидит дальше, зависит от того, что он сделал.
  • Обратная связь — оценка, которая может запаздывать Да: delayed и sparse reward.
  • Их распределение меняется, когда меняется policy Да: это не фиксированная выборка, поэтому и нужна exploration.
  • В RL нет функции, которую оптимизируют Есть: ожидаемый discounted return.
  • В RL нельзя использовать нейросети Можно: сетью задают policy. Вспомни 49 игр Atari.

Унести с собой

Что посмотреть и почитать