Разбираемся в ML без воды: от базы до Attention. Часть 1

Страницы:  1

Ответить
 

Professor Seleznov


Сколько статей на хабре про машинное обучение? Обозначим их количество за
pic
и напишем
pic
-ю.
Это попытка собрать цельное понимание: пройти путь от «что это вообще такое» до условных трансформеров и связать всё в одну логичную цепочку.
Попробую всё описать максимально простым языком, минимально опираясь на математическую терминологию.
Как говорится, буду разбирать так, как сам это вижу и понимаю — без лишней теории, но и без магии.

Возможно, важно

Скорее всего, серия в первую очередь подойдёт тем, кто хочет сделать первые шаги в ML, но если среди читателей окажутся люди, которые хорошо разбираются в теме — буду только рад замечаниям и исправлениям в комментариях.
Итак, поехали!
0. Введение
Итак, что такое машинное обучение?
Если коротко, это способ строить алгоритмы, которые по данным находят закономерности и используют их, чтобы делать предсказания для новых данных.
На практике данные обычно устроены так: есть признаки (features) — то, что описывает объект, и целевая переменная (target) — то, что мы хотим предсказать.
Классический пример — задача, в которой мы предсказываем цены квартир. В таком случае features — это площадь, этаж, количество комнат, а target — цена. Цель — построить на имеющихся данных модель.
Забегая вперёд, стоит отметить, что целевая переменная не обязательно одна — бывают задачи с несколькими target‑ами. Но пока будем рассматривать случай с одной целевой переменной.
Дальше удобно перейти к формальному описанию: как эти данные и предсказания записываются в виде обозначений.
Обозначим пространство признаков через
pic
, а каждый объект из этого пространства — вектором признаков вида
pic
, где
pic
 — это
pic
‑й признак (например, площадь, этаж и так далее). Также обозначим пространство таргетов за
pic
, а его элементы —
pic
.
Тогда задача машинного обучения сводится к поиску отображения
pic
, которое по признакам объекта предсказывает соответствующий таргет.
То, насколько «ошибается»
pic
при переводе
pic
в
pic
, называется потерей (loss). Ясное дело, что степень «ошибки» можно измерять по‑разному (модуль разности, квадрат разности и так далее). Функция, которая считает loss, называется функцией потерь (Loss Function) и обозначается (как ни странно) буквой
pic
. Выбор функции потерь — это критически важный этап, который напрямую зависит от типа решаемой задачи и особенностей данных.
Итак, задача машинного обучения формулируется как поиск функции
pic
из некоторого класса функций
pic
, минимизирующей ошибку на данных:
pic

Чуть подробнее о классе функций

Это набор всех возможных моделей конкретного типа. Например:
  • Если мы решили, что зависимость линейная 
    pic
    , то 
    pic
     — это класс линейных функций
  • Если мы строим дерево решений, то 
    pic
     — это множество всех деревьев заданной глубины
  • и так далее
Зачем вообще ограничивать?
Казалось бы, почему не взять «вообще все мыслимые функции»?
  • Вычислимость: Нам нужно уметь математически искать лучшую функцию. Если класс функций слишком сложный, мы просто не сможем найти минимум ошибки.
  • Обобщающая способность: Если 
    pic
     слишком богат (например, функция может изгибаться как угодно), модель просто «зазубрит» тренировочные данные.
Всё через компромисс:
  • Слишком простой 
    pic
    : (например, прямая там, где нужна кривая) — модель будет ошибаться. Это называется недообучением (Underfitting).
  • Слишком сложный 
    pic
    : (нейросеть с миллиардом параметров на 10 примеров) — модель идеально подстроится под шум. Это переобучение (Overfitting).
Получается, если отбросить модные слова и маркетинг, то работа ML-инженера зачастую сводится к сборке «конструктора» из четырех ключевых деталей:
  • Данные (Data): Получение, обработка и очистка данных. Качественные данные — половина успеха.
  • Определение класса (
    pic
    ): Выбор пространства, в котором ищем решение. Будет это простая линейная модель, дерево решений, или огромная нейросеть?
  • Выбор функции потерь (
    pic
    ): Определение «санкций». Что хуже: ошибиться на чуть-чуть на многих объектах, или сильно промахнуться на одном?
  • Выбор метода оптимизации: Сам поиск. Как именно мы будем перебирать функции из 
    pic
    , чтобы найти среди них ту самую, которая минимизирует 
    pic
    ?
Подведя итог: машинное обучение — это не магия и не «черный ящик», а вполне логичный инженерный конструктор. Мы берем данные, выбираем подходящее семейство функций (модель), определяем линейку, которой будем измерять ошибки (Loss), и запускаем алгоритм оптимизации, чтобы найти лучшее решение.
Эта формула — база, на которой строится всё: от предсказания цены квартиры до современных языковых моделей.
Далее, пройдемся по конкретным сетапам вышеуказанных четырех всадников апокалипсиса пунктов. Рассмотрим, как изменив этот набор, можно получить линейную регрессию, дерево решений, нейросеть и так далее.
1. Линейная регрессия
Сначала поймем, что она из себя представляет.
Представим обычный серый двумерный мир. У нас есть 
pic
(например рост человека) и
pic
(размер обуви). Мы хотим понять как по росту человека подбирать ему обувь. В этом контексте линейная регрессия — это просто построение прямой, которая проходит максимально близко ко всем точкам.
pic
пример двумерной линейной регрессии
Однако, одним ростом сыт не будешь. В реальном мире признаков обычно много (рост, вес, пол, возраст и так далее), так что признаков обычно у нас много, но идея не сильно сложнее школьной
pic
Теперь, чуть ближе к делу.
Определим линейную регрессию таким образом։ линейная регрессия — это модель, в которой мы предполагаем, что таргет аппроксимируется через линейную комбинацию фич и свободного коэффициента. К слову, свободный коэффициент имеет своё название — смещение (bias)
pic
где
pic
называются весами (weight). И нашей задачей является нахождение таких
pic
, при которых ошибка у нас будет минимальна.
Сразу добавлю, что веса и «такие» числа, которые «подберет для нас компьютер» называются параметрами модели. Также, в будущем мы встретим числа, которые инженеры подбирают вручную (грубо говоря, конфигурация модели). Они, в свою очередь, называются гиперпараметрами
Сейчас мы имеем формулу вида
pic
Сделаем один необязательный шаг и немножко улучшим качество нашей жизни.
Дабы избавиться от «бесячего хвостика»
pic
, скажем что у нас имеется фиктивная фича под названием
pic
, которая всегда равна
pic
и не влияет ни на что. Перепишем формулу таким образом
pic

для самых маленьких (скалярное произведение)

Выражение
pic
является так называемым скалярным произведением (В 
pic
-мерном вещественном евклидовом пространстве)

«Согрешил, батюшка» (о типах данных)

Опытные читатели, возможно, не обратили внимание, но я упустил весьма (не побоюсь этого слова) ключевой момент. В примере выше у нас был рост, вес и пол. Ладно уж рост, это число типа float (так называемый количественный признак), мы его умножим на какое‑то
pic
и получим число.
Что делать с полом? Достаточно очевидно, что эту фичу можно закодировать бинарно условно (0 — женщина, 1 — мужчина)
А что, если у нас не количественный и даже не бинарный признак, а к примеру номер автомобиля, класс билета в самолете, или кличка кота?
Такие признаки называются категориальными. Они в свою очередь бывают двух типов։ Номинальные и Порядковые.
Порядковые признаки — это те, для которых определены операции сравнения (к примеру одежда размера S меньше одежды размера XL).
А номинальные признаки несравнимы (например, любимые музыкальные группы)
С порядковыми признаками работать относительно легко. В самом простом случае их можно просто нумеровать. А номинальные признаки, зачастую, требуют более хитрых методов (от one hot encoding, до embeddings). Когда как и что обычно делают — Разберемся позже.
Таким образом мы определили класс функций
pic
(модель), в котором мы ищем подходящую нам функцию.
Настала очередь второго шага — выбора loss функции
pic
. На самом деле, это та часть, по которой будут подобраны наши параметры.
Для задач линейной регрессии, обычно, в качестве функции потерь выбирают так называемую среднеквадратическую ошибку (Mean Square Error / MSE). Выглядит она таким образом
pic
И целью становится минимизация функции потерь, то естьнахождение такого
pic
вида
pic

Почему именно MSE

  • Дифференцируемость (Гладкость)։ имеем возможность посчитать градиенты
  • Выпуклость: У MSE в линейной регрессии только один минимум (дно чаши). Мы никогда не застрянем в «ложной» яме.
  • Гауссовое распределение: Если шум в данных распределен нормально (по Гауссу), то минимизация MSE — это то же самое, что метод максимального правдоподобия.
Здесь
pic
показывает насколько отличается реальный ответ
pic
от «пророчества» нашей модели.
Возведение в квадрат имеет двойной смысл. Во‑первых, мы не попадаем в неприятные ситуации когда из‑за того, что
pic
, Loss уменьшается.
Во‑вторых, малые ошибки штрафуются слабо (ответ был 5, модель выдала 4 — квадрат разности всего 1), а большие ошибки штрафуются сильно (ответ был 5, модель выдала 10 — квадрат разности уже 25).
Из‑за этого модель думает։ «бро, я лучше совершу 10 мелких ошибок, чем одну крупную».
Есть и, конечно, альтернативные подходы. К примеру, нашему MSE не уступает по популярности так называемый Mean Absolute Error / (MAE)։
pic
Почти то же самое, но штраф теперь линейный. В случае MAE модель может подумать «а давай лучше разочек накосячу, зато, в остальных случаях всё будет правильно».
Тут мы введем еще одно модное слово — Robustness (или по‑простому — устойчивость к выбросам). Это «пофигизм» модели к сильным отклонениям в данных (выбросам). Робастная модель не будет пытаться угодить одному странному объекту, если это портит общую картину.
Вопрос на засыпку: а хорошо ли это всегда? Что, если выгоднее сильно ошибаться в определении размера обуви человека нестандартного телосложения, зато, чуть ли не идеально подбирать обувь для остальных?
На самом деле ответ зависит от множества факторов, в том числе от задачи, которую мы решаем. Подробнее расскажу об этом в будущем, в статье про метрики.
pic
Я не боюсь того, кто изучает штрафует 10 000 раз за маленькие ошибки. Я боюсь того, кто штрафует за большую ошибку 10 000 раз.“ — Брюс ИИ.
Заключение
На самом деле тема довольна обширная, потому, решил не запихать в одну статью и введение и аналитическое решение задачи линейной регрессии и градиентный спуск.
Подведем краткий итог. В этой статье мы
  • Поняли, что из себя представляет машинное обучение
  • Сформулировали «скелет» задачи в виде четырех шагов
  • Узнали, что такое линейная регрессия
  • Поняли, что такое параметры, веса и смещение
  • Рассмотрели пару функций потерь, и поняли, что её выбор неоднозначен
В следующей статье поговорим уже о матрицах, попробуем решить задачу линейной регрессии математически, поймем, где возникают проблемы и какие есть обходные пути. Также разберем один из столпов в машинном обучении — понятие градиентного спуска.-Источник
 
Loading...
Error