Быстро!

Подумайте о технологии, которая за последние годы продвинула человечество.

Большинство людей подумают об Интернете, компьютерах, может быть, даже об устройствах сотовой связи. И они правы, эти технологии определенно помогли человечеству продвинуться вперед. Но следующее поколение технологий, которые ускорят развитие человечества, будет совсем другим. Я говорю о квантовых вычислениях, искусственном интеллекте, интерфейсах мозга и компьютера и многом другом. Мало того, что они звучат сексуально, многие из этих технологий сейчас находятся в разработке!

Этим летом у меня была возможность пройти стажировку в компании Xanadu, занимающейся фотонными квантовыми вычислениями. Там я узнал о непрерывных квантовых вычислениях с переменными и начал работать над парой проектов под руководством их команды. В частности, в Xanadu меня интересовало квантовое машинное обучение (QML). Но чтобы по-настоящему понять QML, вам нужно твердое понимание машинного обучения. Итак ... поехали!

Это первая часть серии статей и видео по машинному обучению, глубокому обучению и обучению с подкреплением.

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

Машинное обучение - это способность компьютера изучать конкретную задачу, не будучи явно запрограммированной, как это делать.

Мы хотим, чтобы наша модель могла выполнять задачи на основе новых данных, на которых мы ее еще не обучили. Другими словами, мы хотим, чтобы наша модель была обобщенной.

Модели машинного обучения могут делать все!

ЧТО - модели машинного обучения, классифицирующие меланому лучше, чем врачи

Что безумно, так это то, что машинное обучение может выполнять некоторые из этих задач лучше, чем люди. Дерматологи столкнулись с моделями машинного обучения, чтобы выяснить, кто может более точно идентифицировать меланому. Врачи показали точность 71,3%, в то время как модель машинного обучения - 95%.

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

Модели машинного обучения можно разделить на две категории: Обучение с учителем и обучение без учителя.

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

Обучение без учителя - это то, чего у нас нет. Вместо этого мы пытаемся найти основную структуру наших данных.

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

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

Итак, мы знаем, что машинное обучение делится на обучение без учителя и обучение с учителем, а две задачи в рамках обучения с учителем - это классификация и линейная регрессия.

Простейшая нейронная сеть - это однослойная нейронная сеть.

  1. Входные векторы
  2. Вес
  3. Функция активации

Веса играют очень важную роль в нейронных сетях. Они не только являются одним из параметров, которые мы хотим постоянно обновлять, они также определяют, насколько важным мы хотим, чтобы этот конкретный узел был взвешен. Например, если мой первый узел имеет вес 0,5, а второй - 0,1. Тогда мой первый узел более важен в модели.

Функция активации определяет, каким будет вывод для определенного узла.

Simoid и ReLU - две наиболее распространенные функции активации.

Если ReLU получает вход меньше 0, он выводит 0. А если он получает вход больше 0, например 0,1, выход равен входу (он выдает 0,1).

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

Эээ… как это работает?

  1. Введите x вес = активация
  2. Сумма всех наших активаций
  3. Активация x функция активации = выход

Первый θ - это наш вектор смещения. Это также параметр, который мы обучаем, чтобы наша модель работала лучше.

Это существенно смещает порог функции активации. Слева мы не применяли смещение, справа мы применили смещение к сигмовидной функции и переместили функцию.

Персептроны практически бесполезны без обучения. Давайте узнаем, как его тренировать.

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

Для нашего перцептрона мы будем повторять наши веса и вектор смещения, но для этого нам сначала нужно оценить точность нашей модели.

Мы делаем это, глядя на ошибку.

Наша ошибка - это желаемый реальный выход.

Расстояние от нашего ввода до линии (наша функция) - это ошибка. Итак, слева наша модель довольно хорошо справилась с минимизацией ошибки, но справа наша ошибка высока.

Больше ошибок означает, что наша модель работает плохо, поэтому мы всегда стремимся минимизировать количество ошибок, которые может иметь наша модель.

Самый распространенный способ оценить ошибку нашей модели - это использовать среднеквадратичную ошибку (MSE). Это просто средний квадрат всех наших весов. Довольно просто.

Хорошо, время тренировки! Но чему мы обучаем нашу модель?

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

Давай приучим этого ребенка!

Правило перцептрона

  1. Обновляет веса. Мы добавляем предыдущее значение веса к величине, на которую мы хотим изменить вес.

2. изменение значения веса - это ошибка * ввод * скорость обучения.

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

Это может быть опасно. Если мы используем слишком большую скорость обучения, можно переобучить модель. Точно так же, если наша скорость обучения слишком мала, модели потребуется много времени, чтобы найти локальный оптимум.

Мы также можем обучать модели с помощью градиентного спуска.

Градиентный спуск - самый популярный алгоритм обучения машинному обучению. Чтобы понять градиентный спуск, нам сначала нужно определить функцию стоимости.

Наша функция стоимости - это значение, которое говорит нам, насколько хорошо работает наша модель. Если у нас действительно высокозатратная функция, наша модель работает плохо. Точно так же с меньшей функцией стоимости наша модель работает лучше. Стоимость рассчитывается как сумма нашей желаемой стоимости - нашей фактической стоимости. Звучит очень похоже на что-то, да? Да, функция стоимости берет ошибку нашей модели, возводит ее в квадрат, суммирует по всем ошибкам и берет среднее значение. Полученное число называется стоимостью.

Цель градиентного спуска - минимизировать затраты. Мы хотим, чтобы наша модель работала максимально эффективно. Давайте воспользуемся аналогией, чтобы понять, что здесь происходит.

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

Итак, сначала вы решаете пройти налево, что приведет вас к одной из более низких гор.

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

Но как узнать, что гора, на которой вы находитесь, самая низкая? Точно так же в машинном обучении, как узнать, что вы достигли глобального оптимума, а не локального. Это обычная проблема в машинном обучении, мы никогда не знаем, достигли ли мы глобального оптимума или достигли другого локального оптимально.

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

Давайте вернемся к тому, что мы узнали.

Основные выводы:

  • Машинное обучение: способность компьютера изучать конкретную задачу, не будучи явно запрограммированной, как это делать.
  • Простейшая нейронная сеть называется перцептроном.
  • Персептрон состоит из узлов, которые принимают входной вектор и имеют связанный вес и функцию активации.
  • Персептроны обучаются по двум параметрам: вектору смещения и весу.
  • Мы можем использовать правило обучения перцептрона и градиентный спуск для тренировки нашего перцептрона. Оба метода обучения минимизируют значение, которое говорит нам, насколько плоха наша модель.

Спасибо за прочтение! Хлопайте, если вам понравилось чтение или вы узнали что-то новое.

Следите за новостями! В будущем я буду работать над другими статьями и видео по машинному обучению.

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