Skip to content

Commit

Permalink
refac: Revise some notes
Browse files Browse the repository at this point in the history
  • Loading branch information
Nikolay-Lysenko committed Jun 30, 2024
1 parent ef97c63 commit a0f557b
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 8 deletions.
2 changes: 1 addition & 1 deletion notes/machine_learning/neural_networks.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -1284,7 +1284,7 @@
"или, что эквивалентно, с функцией плотности\n",
"$$f_G(x) = e^{-(x + e^{-x})}.$$\n",
"\n",
"Сэмплировать величины $x$ из стандартного распределения Гумбеля можно так:\n",
"Сэмплировать величины $x$ из стандартного распределения Гумбеля можно методом обратного преобразования:\n",
"* просэмплировать из распределения, равномерного на отрезке $[0; 1]$, величину $y = F_G(x) = e^{-e^{-x}}$;\n",
"* вычислить $x$ по формуле $x = F_G^{-1}(y) = -\\log(-\\log(y))$.\n",
"\n",
Expand Down
16 changes: 9 additions & 7 deletions notes/machine_learning/recommender_systems.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -377,11 +377,11 @@
"\n",
"Переранжирование через DPP принимает два входа:\n",
"* предсказания модели $s_i \\in \\mathbb{R}_{\\ge 0}$;\n",
"* векторные представления объектов $v_i \\in \\mathbb{R}^l$, где $l$ не обязано совпадать с $n$.\n",
"* векторные представления «предметов» $v_i \\in \\mathbb{R}^l$.\n",
"\n",
"В простейшем случае матрица $L$ может быть построена так:\n",
"$$L_{ij} = (s_i v_i)^T (s_j v_j).$$\n",
"Тут предполагается, что $\\Vert v_i \\Vert_2 = 1$, а косинусная мера близости $v_i^T v_j$ отражает сходство между $i$-м и $j$-м объектами. Положительная полуопеделённость вытекает из того, что это матрица Грама для векторов $s_i v_i$.\n",
"Тут предполагается, что $\\Vert v_i \\Vert_2 = 1$, а косинусная мера близости $v_i^T v_j$ отражает сходство между $i$-м и $j$-м «предметами». Положительная полуопеделённость вытекает из того, что это матрица Грама для векторов $s_i v_i$.\n",
"\n",
"На примере данной $L$ можно увидеть, за счёт чего происходит балансирование между релевантностью и разнообразием. Напомним, что определитель матрицы равен ориентированному объёму $n$-мерного параллелепипеда, натянутого на её строки. С одной стороны, чем выше некое $s_i$, тем больше стороны параллелепипеда, соответствующего $L_Y$, где $i \\in Y$. С другой стороны, чем выше по модулю $v_i^T v_j$, тем более параллельными становятся некоторые прилегающие стороны параллелепипеда, соответствующего $L_Y$, где $\\{i, j\\} \\subseteq Y$.\n",
"\n",
Expand All @@ -395,23 +395,25 @@
"\n",
"#### Обучение\n",
"\n",
"Объектом в терминологии машинного обучения (то есть не «предметом», а примером из обучающей выборки) считается фактический просмотр пользователем в рекомендациях $n$ «предметов» (если их больше, то можно оставить лишь $n$ из них, а если их меньше, то объект выкидывается как неполный). Целевой переменной на этом объекте является множество $Y$, состоящее из индексов тех «предметов», с которыми у пользователя были положительные взаимодействия.\n",
"Объектом в терминологии машинного обучения (то есть не «предметом», а примером из обучающей выборки) считается фактический просмотр пользователем в рекомендациях не менее чем $t$ «предметов», где $t$ — некий порог достаточности данных. Целевой переменной на этом объекте является множество $Y$, состоящее из индексов тех «предметов», с которыми у пользователя были положительные взаимодействия.\n",
"\n",
"Поскольку речь идёт о переранжировании, предполагается, что ранжирующая модель зафиксирована, то есть обучающие данные собирались с использованием той же ранжирующей модели, которая предсказывает $s_i$. В противом случае возникает смещение обучающей выборки. Впрочем, выборка всё равно является смещённой с той точки зрения, что в неё попадают лишь объекты с более высокими $s_i$, ведь низкие $s_i$ препятствуют фактическим просмотрам. Такое смещение можно подправить, если некоторые высокие позиции отдавать случайным «предметам».\n",
"\n",
"Вектор обучаемых параметров (в разобранном ранее примере это $\\alpha$ и $\\sigma$) обозначим за $w$, а матрицу $L$, получающуюся с ним, обозначим за $L(w)$. Поиск оптимального $w$ делается путём максимизации правдоподобия обучающей выборки (как всегда, это эквивалентно минимизации отрицательного логарифма от правдоподобия):\n",
"$$\\min_{w} \\: - \\sum_{j=1}^m \\log \\mathbb{P}_{L(w)} Y_j,$$\n",
"Вектор обучаемых параметров (в разобранном ранее примере это $\\alpha$ и $\\sigma$) обозначим за $w$, а матрицу $L$, получающуюся с ним для $j$-го объекта, обозначим за $L(w, j)$ (зависимость от объекта важно подчеркнуть, потому что предсказания $s_i$ для одного и того же «предмета» меняются от объекта к объекту). Эта матрица $L(w, j)$ имеет размер $n \\times n$, где $n$ — количество «предметов», но для «предметов», у которых не было фактического показа, оценки релевантности заменяются на 0.\n",
"\n",
"Поиск оптимального $w$ делается путём максимизации правдоподобия обучающей выборки (как всегда, это эквивалентно минимизации отрицательного логарифма от правдоподобия):\n",
"$$\\min_{w} \\: - \\sum_{j=1}^m \\log \\mathbb{P}_{L(w, j)} Y_j,$$\n",
"где $m$ — размер обучающей выборки, а $Y_j$ — целевая переменная на $j$-м объекте.\n",
"\n",
"Если длина вектора $w$ мала, оптимизацию можно провести перебором по сетке и заодно пересечь эту сетку с ограничениями на допустимые значения параметров. Если же длина вектора $w$ достаточно велика, можно использовать градиентный спуск, а ограничения внести в оптимизационную задачу.\n",
"\n",
"#### Применение\n",
"\n",
"После ранжирования есть список из $N$ предметов. Переранжирование проводится итеративно с некоторым шагом $k$, то есть сначала заполняются позиции с первой по $k$-ю, потом позиции с $(k+1)$-й по $2k$-ю и так далее. Если у матрицы $L$ нет обучаемых параметров, то $k$ формально можно брать любым, но слишком низкие $k$ могут привести к недостаточному разнообразию (в частности, при $k=1$ от переранжирования вообще ничего не изменится). Если же обучаемые параметры есть, то желательно брать $k \\le n$, чтобы корректнее оценивались вероятности подмножеств размера $k$.\n",
"После ранжирования есть список из $\\nu \\le n$ «предметов» (до ранжирования могли дойти не все «предметы», плюс можно исключить те, которые получили нулевые оценки релевантности). Переранжирование проводится итеративно с некоторым шагом $k$, то есть сначала заполняются позиции с первой по $k$-ю, потом позиции с $(k+1)$-й по $2k$-ю и так далее. Если у матрицы $L$ нет обучаемых параметров, то $k$ формально можно брать любым, но слишком низкие $k$ могут привести к недостаточному разнообразию (в частности, при $k=1$ от переранжирования вообще ничего не изменится), да и слишком большие тоже (при $k=\\nu$ все «предметы» попадут в топ-$k$). Если же обучаемые параметры есть, то желательно брать $k \\le t$, чтобы корректнее оценивались вероятности подмножеств размера $k$.\n",
"\n",
"Из формулы для вероятности подмножества теперь интересует только числитель, потому что нормирующий знаменатель одинаков для всех подмножеств. Если за $\\mathbb{S}_i$ обозначить множество индексов, для которых «предметы» не были выбраны к началу $i$-й итерации, то на этой итерации будет решаться задача:\n",
"$$\\max_{Y \\in \\mathbb{S}_i, \\vert Y \\vert = k} \\det(L_Y).$$\n",
"Всего потребуется перебрать $C_{N - (i-1)k}^k$ вариантов, что может оказаться вычислительно неподъёмным. В таких случаях используют жадный алгоритм, итеративно строящий множество $Y$ элемент за элементом на основании максимизации текущего $\\det(L_Y)$. Кстати, порядок, в котором в $Y$ добавлялись элементы, можно считать тем порядком, в котором будут стоять эти $k$ элементов после переранжирования. Если же множество $Y$ было найдено по-честному, порядок внутри него можно по-прежнему выводить из $s_i$."
"Всего потребуется перебрать $C_{\\nu - (i-1)k}^k$ вариантов, что может оказаться вычислительно неподъёмным. В таких случаях используют жадный алгоритм, итеративно строящий множество $Y$ элемент за элементом на основании максимизации текущего $\\det(L_Y)$. Кстати, порядок, в котором в $Y$ добавлялись элементы, можно считать тем порядком, в котором будут стоять эти $k$ элементов после переранжирования. Если же множество $Y$ было найдено по-честному, порядок внутри него можно по-прежнему выводить из $s_i$."
]
}
],
Expand Down

0 comments on commit a0f557b

Please sign in to comment.