Цель этой статьи — представить идеи машинного обучения на простом примере линейной регрессии. Сначала я изо всех сил пытался понять концепции машинного обучения, мне было трудно понять, как оно работает, глядя на диаграммы нейронных сетей и их соответствующие уравнения. Единственное, что заставило его застрять, — это вывести уравнения для себя и написать пример. Моя цель — пройтись по каждому этапу процесса, начиная с самой простой из всех нейронных сетей для линейной регрессии. Я пишу это, предполагая, что читатель практически не знаком с линейной регрессией и машинным обучением, но немного знаком с линейной алгеброй и исчислением, хотя это и не обязательно. Разделы организованы следующим образом:

  1. Линейная регрессия и подгонка кривой. Почему машинное обучение?
  2. Разработка прямой задачи для однослойного персептрона.
  3. Разработка обратной задачи для однослойного персептрона.
  4. Собираем все вместе.

Моя цель — четко объяснить темы и ввести жаргон на простом примере предсказания максимальных толчков и толчков по максимальным жимам лежа. Весь используемый код приведен в нижней части статьи.

Линейная регрессия и подгонка кривой. Почему машинное обучение?

Линейная регрессия и подгонка кривой — это методы, в которых используются методы линейной алгебры для получения беспорядочных данных, понимания их поведения и последующего прогнозирования при введении новых точек данных. Например, я был конкурентоспособным тяжелоатлетом в старшей школе. Двумя упражнениями были жим лежа и толчок. Допустим, я хотел предсказать толчок моих соперников в жиме лежа. Первое, что мне нужно сделать, это получить некоторые данные. Я случайным образом отобрал результаты 100 тяжелоатлетов средней школы по максимальному жиму лежа, толчку и толчку и нанес результаты в виде точечной диаграммы.

Просто взглянув на данные, мы можем получить некоторое представление о взаимосвязи между измеренным жимом лежа и толчком, но что, если я хочу количественно оценить эту взаимосвязь? Что ж, мы можем подобрать линию к этим данным, используя знакомое уравнение: y’ = mx + b. Здесь y'смоделированныйтолчок, x — жим лежа, m — наклон линия, а b — точка пересечения по оси Y. Чтобы сделать это еще более простым, давайте предположим, что если у меня есть 0 фунтов в жиме лежа, то у меня будет 0 фунтов в толчке, что делает точку пересечения y равной 0. Теперь наша цель — найти значение m который лучше всего представляет данные. Линия, которая хорошо представляет данные, — это линия, которая дает наименьшее расстояние между линией и точками данных. Это известно как минимизация суммы квадратов остатков.

Цель: найти неизвестный параметрm, который минимизирует квадрат разницы между измеренным толчком и толчком yи смоделированный рывок y'.

Сначала немного математики. Сумма квадратов остатков определяется следующим уравнением:

Нам нужно минимизировать уравнение по параметру модели m. Другими словами, нам нужно найти наилучшее значение m , которое приводит к наименьшему значению приведенного выше уравнения. Для этого мы можем найти, где производная по m равна нулю. Ниже я привожу полный вывод, но не слишком увязайте в математике. Я предоставлю визуальное представление о том, что происходит после. Я использую E(m) для представления суммы квадратов разницы между измеренными и смоделированными данными.

Визуально что мы делаем? Чтобы подумать об этом, мы можем построить график результата верхнего уравнения для диапазона mvalues.

Мы пытаемся найти значение m , которое приводит к наименьшему возможному значению E, и приведенный выше вывод показывает, что псевдообратное произведение x, умноженное на y, дает в значении m на минимуме приведенной выше кривой.

Наконец, давайте построим нашу модель y’ вместе с данными. Опять же, мы подгоняем данные к строке, представленной y’ = mx.

Как правило, сообщаемое значение, которое объясняет, насколько хорошо кривая соответствует данным, называется среднеквадратической ошибкой или среднеквадратичной ошибкой. Эти значения просто описывают в среднем, насколько хорошо данные соответствуют кривой.

Так как же этот процесс связан с машинным обучением? Проще говоря, машинное обучение — это процесс построения модели, которая сопоставляет некоторые входные данные (данные жима лежа) с некоторыми выходными данными (данные толчков). Точно так же, как и линейная регрессия, машинное обучение находит параметры модели, которые лучше всего описывают взаимосвязь между переменными. В этой статье мы создадим базовый алгоритм машинного обучения, который почти полностью аналогичен линейной регрессии. Разница в том, что алгоритм машинного обучения делает начальное предположение m (см. рис. 2). В зависимости от того, где на кривой он приземлится, он будет снижаться к минимуму. Процесс обучения включает повторение многих из этих шагов, пока не будет найден минимум.

Почему машинное обучение? В нашей задаче линейной регрессии мы аналитически приходим к минимуму. В вычислительном отношении это чрезвычайно эффективно и приводит к полностью объяснимому ответу. На самом деле данные невероятно сложны (нелинейны, многомерны, зашумлены), и их может быть трудно описать аналитически. Машинное обучение предназначено для обнаружения шаблонов в очень сложных данных, где аналитические решения не работают или для построения аналитического решения необходимо сделать серьезные предположения. Это иногда называют подходом мягких вычислений, который приводит к хорошей аппроксимации наилучших параметров модели. Внимание! Будьте осторожны, когда решите использовать методы машинного обучения. Хотя эти методы обеспечивают глубокое понимание сложных взаимосвязей, они очень редко объясняют, как они пришли к тому или иному решению. Вот почему вы, возможно, слышали о машинном обучении как о «черном ящике». Просто кое-что, что нужно иметь в виду.

Краткое содержание:

  1. Линейная регрессия — это процесс подгонки линии к данным, который объясняет линейное поведение данных.
  2. «Подгонка линии» — это еще один способ найти наилучшее значение mв y' = mx(при условии отсутствия пересечения с осью y), которое минимизирует уравнение для суммы наименьших квадратов.
  3. Мы можем прийти к наилучшему решению m аналитическим
  4. Машинное обучение предназначено для сложных ситуаций, когда решение недоступно аналитически.

Расширение терминологии машинного обучения

  1. Параметр модели m называется «обучаемым параметром» или сетевым весом w. Отрезок по оси Y в уравнении b называется «смещением», которое сдвигает (аффинное преобразование) смоделированные данные.
  2. x называется «входом» нейронной сети. В литературе «функция» представляет собой один тип входных данных, подаваемых в нейронную сеть. В примере с тяжелой атлетикой моя единственная входная характеристика — это максимальные жимы лежа. Если бы я пытался использовать жим лежа и присед, чтобы предсказать толчок и толчок, у меня было бы два входных параметра.
  3. y называется «выходом» нейронной сети. Контролируемое обучение предполагает использование «помеченных» значений y для сравнения с тем, что изучает сеть (y’). Это просто означает, что у меня есть все данные для создания рисунка 2 и настройки, чтобы найти лучшие параметры модели.
  4. E(m) часто называют «функцией потерь», где потери определяют, насколько хорошо ваш алгоритм усваивает информацию. Небольшие значения потерь означают, что алгоритм изучил входные данные.

Разработка прямой задачи для однослойного персептрона

Опять же, давайте воспользуемся примером попытки построить линейную кривую, чтобы предсказать максимальные толчки и толчки на основе максимальных результатов в жиме лежа. На этот раз я изменю метод задачи. Цель та же, что и раньше, с небольшим изменением терминологии: найти неизвестный параметрm, который минимизирует потери между измеренный толчок y и смоделированный толчок y'. Мы подгоняем линию к y' = mx(без y-intercept ), чтобы свести к минимуму разницу между y и у'. Я разработаю «нейронную сеть» или алгоритм машинного обучения, который обучитхорошее значение m. Изменение в обозначениях: теперь я буду использовать w вместо m, чтобы соответствовать литературе по машинному обучению, хотя они обозначают одно и то же. Первым шагом в алгоритме ML является угадывание некоторого начального значения w и вычисление y’. Обычно это делается путем инициализации w некоторым случайным значением. Общий процесс обычно изображается как некоторая сеть входных признаков (иногда называемых входными узлами), умноженных на параметры модели или w’ (веса), обычно изображаемые в виде стрелок, переходящих в большой круг. Большой круг представляет собой «нейрон», узел или персептрон, в который передается информация из нескольких входных признаков и суммируется. В большинстве случаев нелинейная функция активации работает с суммированными данными, что имеет решающее значение для процесса обучения, однако я расскажу об этом в другой статье. А пока давайте предположим линейную функцию активации или что суммированные входы в узел равны выходу. Я описал общий процесс аналогично многим онлайн-источникам ниже. Однако в нашем случае давайте не будем усложнять и будем использовать только одну функцию ввода или только жим лежа.

Еще немного терминологии: первый прямой проход по сети включает в себя взятие всех точек входных данных (в нашем случае 100 жимов лежа) и их умножение на вес или параметр модели или значение w для получения смоделированного вывода y' для каждого входного значения. Затем мы сравниваем смоделированное выходное значение с измеренным выходным значением (предполагаемый толчок, который мы получаем из выходных данных модели, и измеренный толчок). Это сравнение известно как функция потерь, и оно имеет решающее значение для следующих этапов обучения сети.

Подводя итог с точки зрения непрофессионала: прямой проход в нашем примере включает простое решение уравнения y’ = wx. Исходное значение w обычно является случайным. Мы проверяем, насколько хорошо значение w сработало при моделировании измеренных данных, вычисляя значение потерь. Функция потерь используется для обновления значения w (обратный проход в следующем разделе).

Функции потерь:

А пока давайте воспользуемся функцией потерь среднего квадрата ошибки (MSE), заданной формулой

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

Обзор:

  1. Прямой проход через сеть с одним узлом включает передачу входных признаков, умноженных на веса, в узел, который суммирует все входные весовые продукты. Суммарный результат затем передается через функцию активации, которую мы рассматриваем как умножение на 1.
  2. Прямой проход завершается после того, как все точки входных данных (все 100 жимов лежа) проходят через сеть для оценки смоделированного результата (все 100 смоделированных толчков).
  3. Потери рассчитываются на основе среднеквадратичной ошибки всех смоделированных результатов и истинных измеренных результатов.

Разработка обратной задачи для однослойного персептрона.

Короче говоря, обратное распространение по сети (backprop) включает в себя обновление значения веса на основе градиента функции потерь. Я считаю, что проще всего визуализировать то, что происходит:

На рисунке показаны потери MSE в зависимости от различных значений w. Это очень похоже на задачу линейной регрессии, разработанную ранее, за исключением того, что теперь начальное значение w угадывается и обновляется для минимизации потерь. Некоторые ключевые выводы из этого графика:

  1. Первоначальное случайное предположение w приведет вас к этой функции потерь.
  2. w обновляется, чтобы двигаться вниз по наклону функции потерь к минимуму. Подумайте о том, чтобы отпустить мяч в том месте, где вы изначально предположили w. Мяч скатится по функции потерь к точке минимума. Другими словами, вес обновляется в направлении отрицательного градиента (или нисходящего наклона), расположенного в текущем положении значения веса и потерь.
  3. Величину обновления веса можно рассматривать как расстояние, которое мяч катит по кривой до остановки и повторного расчета потерь (прямой проход). Это контролируется скоростью обучения, которая контролирует скорость обновления веса. Кроме того: большая фиксированная скорость обучения приводит к более быстрой сходимости, но вы рискуете выйти за пределы минимума и никогда его не достичь. Небольшие фиксированные скорости обучения сходятся медленно, но в этих условиях ведут себя лучше. Различные скорости обучения пытаются сбалансировать скорость сходимости со стабильностью.

Вернемся к пикантным вещам: математике.

Чтобы установить это, я еще раз сформулирую проблему: нам нужно найти w, который минимизирует потери между измеренным y и смоделированным y' от y' = wx. Как и в подходе линейной алгебры, нам нужно найти производную потери по текущему весу. На этот раз мы не устанавливаем его равным нулю, нас интересует только градиент функции потерь при текущем (в математике я использую старое) значении w. Обозначение: здесь я буду использовать Jв качестве функции потерь MSE.

Я тоже сделал кое-что, никому не сказав. Я поменял местами термины y’ и y в функции потерь. Я сделал это, чтобы было ясно, что сначала мы получаем положительный градиент, а затем применяем знак минус в обновлении веса, чтобы получить отрицательный градиент.

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

Обзор:

  1. Обратное распространение включает в себя спуск по отрицательному градиенту (известному как градиентный спуск) потерь по отношению к текущему значению веса.
  2. Скорость обучения определяет размер шага, на котором обновляется значение веса.
  3. Многие итерации прямого распространения, расчета потерь и обратного распространения составляют обучение сети.

Собираем все вместе

Вернемся снова к нашему простому примеру линейной регрессии. Раньше мы использовали линейную алгебру для получения аналитического решения для параметров модели, которые лучше всего соответствуют измеренным данным. Теперь мы будем использовать подход машинного обучения. Я начну с инициализации моего значения w, чтобы оно было случайным значением стандартной кривой нормали. Затем я буду циклически выполнять прямое продвижение, расчет потерь и обратное продвижение в течение 10 эпох, используя скорость обучения 1e-5. Я представлю результаты тремя способами. На одном показана аналогичная подгонка для случая линейной алгебры. Здесь я использовал окончательное значение w и данные жима лежа для создания линейной модели. Я напечатал значение w на графике, чтобы вы могли сравнить его со значением m из первой части. Следующий график показывает MSE после каждой эпохи. Последний график пытается показать обновление веса после каждой эпохи обучения. Цель состоит в том, чтобы получить представление о том, как значение веса обновляется по отношению к потере MSE.

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

Давайте попробуем это снова, используя скорость обучения 1,15e-5. Цель состоит в том, чтобы показать, что даже немного большая скорость обучения может привести к плохой сходимости, поскольку значения веса продолжают колебаться вокруг минимума на расстоянии.

Наша последняя попытка покажет скорость обучения 1e-6. Цель здесь состоит в том, чтобы показать, что меньшая скорость обучения потребует больше времени для сходимости, но не будет танцевать вокруг минимального значения потерь.

Игра с этими гиперпараметрами — важный аспект оптимизации машинного обучения.

Обзор:

  1. Машинное обучение — это инструмент оптимизации, который можно использовать для задач линейной регрессии.
  2. Основной рабочий процесс включает в себя создание модели, которая содержит один или несколько параметров модели или весов, которые используются для сопоставления входного объекта с выходным объектом. Итеративные обновления или «обучение» включают в себя обновление этих параметров для лучшего сопоставления входных данных с выходными.
  3. Линейная регрессия — это аналитический инструмент, который можно использовать для поиска оптимальных параметров модели. По своей сути контролируемое машинное обучение — это вычислительный инструмент, который изучает оптимальные параметры модели из входных данных и помеченных выходных данных.

В этой статье я не смог охватить все детали, даже самые простые сети. Скриншоты живого скрипта MATLAB, используемого для генерации данных, приведены ниже.