Skip to content

Commit c52644c

Browse files
refac: Extend some previously written notes
1 parent 17dcaec commit c52644c

File tree

3 files changed

+37
-7
lines changed

3 files changed

+37
-7
lines changed

notes/machine_learning/miscellaneous.ipynb

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -399,11 +399,39 @@
399399
]
400400
},
401401
"source": [
402-
"## Обучение на выборке с малым количеством положительных примеров\n",
402+
"## Бинарная классификация при низкой доле положительных примеров\n",
403403
"\n",
404-
"Допустим, предстоит решить задачу бинарной классификации, где объектов положительного класса не более нескольких десятков (а объектов отрицательного класса заметно больше). Опасность здесь кроется в том, что при хоть сколько-нибудь большом количестве исходных признаков резко возрастает риск переподгонки (overfitting), вызванной обнаружением иллюзорных закономерностей. Высоки шансы того, что какая-либо комбинация признаков чисто случайно позволит хорошо отделить объекты положительного класса. На то же самое можно посмотреть и под таким углом: для отделения небольшого количества точек в пространстве высокой размерности подойдут многие довольно простые разделяющие поверхности.\n",
404+
"#### Проблемы\n",
405405
"\n",
406-
"Иногда решить проблему удаётся при помощи вовлечения автокодировщика. Пусть автокодировщик со скрытым слоем ощутимо меньшей размерности будет обучен по признакам объекта восстанавливать их же. Тем самым будет выучено признаковое представление, от которого ожидается, что все новые признаки будут информативными и отражающими важные для задачи стороны реального мира. Если выйдет получить такое признаковое представление, риск переподгонки сократится. "
406+
"Если в задаче бинарой классификации положительные примеры встречаютя гораздо реже отрицательных, то из-за этого возникают следующие сложности:\n",
407+
"* дисбаланс классов может мешать оптимизации на этапе обучения;\n",
408+
"* возрастает риск переподгонки (overfitting) под немногие доступные положительные примеры;\n",
409+
"* оценки точности и полноты имеют слишком большую дисперсию, из-за чего разница между разными классификаторами оказывается статистически незначимой.\n",
410+
"\n",
411+
"#### Формирование выборки\n",
412+
"\n",
413+
"На практике часто имеется возможность собирать выборку (например, отправлять объекты на разметку в краудсорсинговые сервисы). В таком случае баланс классов можно выравнять.\n",
414+
"\n",
415+
"Идея такова: простой классификатор (или набор эвристик) удаляет очевидные объекты нулевого класса, а среди оставшихся объектов доля положительного класса уже не такая маленькая и на них можно обучить основной классификатор.\n",
416+
"\n",
417+
"В разбивке по шагам данный приём выглядит так:\n",
418+
"* собираются предварительные данные;\n",
419+
"* на них обучается классификатор (или даже просто подбирается набор эвристик), обладающий следующими свойствами:\n",
420+
" - полнота близка к 100%,\n",
421+
" - точность по положительному классу позволяет получить более-менее приемлемый баланс классов на том, что отнесено им к положительному классу (то есть даже 10% должно быть достаточно);\n",
422+
"* только из объектов, относимых предварительным классификатором к положительному классу, составляется новая выборка;\n",
423+
"* на ней обучается второй классификатор;\n",
424+
"* на этапе инференса эти классификаторы тоже применяются как каскад, то есть второй применяется лишь к тому, что прошло через первый.\n",
425+
"\n",
426+
"Важным условием корректности описанной схемы является почти идеальная полнота первого классификатора. Если это условие нарушается, полнота каскада заведомо будет ограничена потерями первого классификатора. А если от первого классификатора отказаться, получится, что второй классификатор обучался и оценивался на выборке, смещённой относительно той, к которой он теперь применяется. \n",
427+
" \n",
428+
"#### Обучение на зафиксированной выборке\n",
429+
"\n",
430+
"Однако бывает и так, что выборка уже задана заранее (например, на соревнованиях по машинному обучению или когда нужно обучить модель на готовых данных, которые передал клиент).\n",
431+
"\n",
432+
"В таком случае даже калибровка поможет получить подлинные вероятности лишь в той мере, в какой баланс классов в выборке соответствует балансу классов в генеральной совокупности. Также, если оценки точности и полноты будут слишком шумными, то с этим ничего не сделать.\n",
433+
"\n",
434+
"А вот сократить риск переподгонки позволяет приём с автокодировщиком. Можно обучить автокодировщик по исходным признакам восстанавливать их же, чтобы в промежуточном слое меньшей размерности выучивалось более общее признаковое представление. За счёт меньшего количества признаков падает выразительная сила классификатора и тем самым и уменьшается риск принять случайные частности за закономерность. При этом важно соблюсти баланс между понижением размерности и сохранением полезной информации."
407435
]
408436
},
409437
{

notes/machine_learning/neural_networks.ipynb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1185,7 +1185,9 @@
11851185
"\n",
11861186
"Статья, посвящённая первой версии GPT ([Radford et al., 2018](https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf)), примечательна не разработкой новой архитектуры, а тем, что в ней было предложено разделить базовое обучение на корпусе неразмеченных текстов и донастройку под конкретные частные задачи. Если частные задачи требуют структурированный вход (например, как в задаче выбора из заранее данных вариантов ответа, когда есть текст-вопрос и несколько текстов-ответов), было предложено подавать весь вход как один текст, но с дополнительными токенами-разделителями между частями.\n",
11871187
"\n",
1188-
"Впрочем, по мере увеличения количества обучаемых параметров стало обнаруживаться, что даже просто языковой модели достаточно для решения широкого круга задач. Также у GPT появилась способность к «обучению» на выборках из единиц примеров (few shot learning). Делается это так: входной текст содержит так называемую подводку (prompt), то есть примеры, что во что отображать, а также пример, ответ для которого хочется получить. Например, текст «Париж -> Франция, Мадрид -> Испания, Рим -> Италия, Афины ->» языковая модель должна будет продолжить словом «Греция», хотя в явном виде её никто не обучал угадывать страну по городу."
1188+
"Впрочем, по мере увеличения количества обучаемых параметров стало обнаруживаться, что даже просто языковой модели достаточно для решения широкого круга задач. Также у GPT появилась способность к «обучению» на выборках из единиц примеров (few-shot learning). Делается это так: входной текст содержит так называемую подводку (prompt), то есть примеры, что во что отображать, а также пример, ответ для которого хочется получить. Например, текст «Париж -> Франция, Мадрид -> Испания, Рим -> Италия, Афины ->» языковая модель должна будет продолжить словом «Греция», хотя в явном виде её никто не обучал угадывать страну по городу.\n",
1189+
"\n",
1190+
"А если для частной задачи размеченных данных больше, но всё ещё недостаточно для дообучения модели GPT под эту задачу, то можно использовать донастройку подводки ([P-tuning](https://arxiv.org/pdf/2103.10385)). Это приём, в котором собирается выборка, где в шаблонную подводку подставляются входы и выходы. Например, из шаблона «Страна в которой находится {input} — это {output}» получается набор примеров вида «Страна в которой находится Париж — это Франция». Однако токены подводки теперь считаются не константными one-hot encoded векторами, а непрерывными обучаемыми векторами. Через обратное распространение ошибки они выучиваются путём минимизации ошибки на имеющейся выборке. Дополнительно можно к обучаемым векторам токенов подводки применять какую-нибудь легковесную нейронную сеть, чтобы учитывать зависимость между ними. Также можно одновременно с обучением токенов подводки дообучать и саму модель GPT, если количество данных ещё больше."
11891191
]
11901192
},
11911193
{

0 commit comments

Comments
 (0)