Предисловие

[Отказ от ответственности: я только начинаю работать в этой области. Статьи, которые я пишу, являются для меня способом узнать больше. Я пишу, чтобы заставить себя углубиться в тему и лучше ее понять. Ставьте под сомнение все, что я пишу. Я буду включать ссылки на ресурсы, которые я использую в конце статей. Чтобы лучше понять, почему я это делаю, посмотрите мой самый первый пост]. Кроме того, в Интернете есть множество ресурсов, созданных профессорами и экспертами в этой области, которые могут попытаться помочь вам в глубоком обучении намного лучше. чем я, возможно, могу. IN2346 — преподается профессором Нисснером, профессором Леал-Тайше и доступен онлайн здесь — яркий тому пример.

Общий интерес к глубокому обучению достиг пика в последние несколько лет. Такие проекты, как AlphaGo от DeepMind, проливают свет на силу ИИ, когда речь идет о том, чтобы превзойти людей в настольных играх. Итак, добро пожаловать в мою серию, в которой я погружаюсь в глубокое обучение.

Введение

Искусственный интеллект, машинное обучение и глубокое обучение

Как и при любом введении в глубокое обучение, давайте сделаем шаг назад и сначала поговорим о различиях между искусственным интеллектом, машинным обучением и глубоким обучением. Искусственный интеллект (ИИ), говоря простым языком, — это способность машин демонстрировать человеческие черты интеллекта, рассуждения и мышления. Более формальное определение — это любая система, которая воспринимает окружающую среду и предпринимает действия, чтобы максимизировать свои шансы на успех (Рассел и Норвиг, 1998).

«Интеллект измеряет способность агента достигать целей в самых разных условиях». С. Легг и М. Хаттер (2006 г.)

Самая основная идея машинного обучения (МО) заключается в том, чтобы компьютеры «предсказывали» определенный вывод или выполняли определенное действие при наличии ввода, с оговоркой, что они не видели точного ввода раньше. Вместо традиционных условий «если» основной целью машинного обучения является обобщение. Это метод достижения искусственного интеллекта. Мы хотели предоставить машине набор данных, чтобы она могла учиться, а затем использовать ее для определения новых входных данных. Однако в традиционном машинном обучении для достижения приемлемых результатов необходимо было сделать более ранний шаг — извлечение признаков. Извлечение функций — это, по сути, закодированные вручную алгоритмы, основанные на возникших проблемах, которые были созданы для выделения / придания веса различным частям ввода, чтобы помочь машине понять, на чем сосредоточиться при обучении. Что еще более важно, основная проблема с традиционным машинным обучением заключалась в том, что из-за неглубокости модели были некоторые задачи, которые просто невозможно было правильно выполнить без предварительной большой работы.

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

Глубокое обучение было следующим шагом в попытке построить машинное обучение, таким образом, это «реализация» машинного обучения. Исследователи хотели попытаться имитировать то, как работает наш мозг, и придумали концепцию искусственных нейронных сетей. Это способ значительно усложнить модель, чтобы позволить ей учиться больше и достигать лучших результатов, чем традиционное машинное обучение во многих задачах. На самом деле история ИИ, МО и ГО начинается очень рано, с попыток имитировать биологическое обучение в 1940-х годах. Однако большая сложность требовала много ресурсов от данных до вычислительной мощности. К счастью, в наш век технологий эти ресурсы становятся все более доступными. Имея большие объемы данных, модели глубокого обучения теперь могут обобщать еще лучше. Кроме того, лучшее оборудование, такое как графические процессоры (GPU), предназначенные для игр, теперь используются даже в обучении глубокому обучению. Все это позволяет создавать более крупные и сложные модели.

На протяжении всей этой серии мы сосредоточимся в основном на классификации изображений.

Начало работы с машинным обучением

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

Есть три популярных метода обучения

1- Машинное обучение под наблюдением: ваша система принимает в качестве входных данных набор размеченных данных. Если мы говорим о классификации изображений, то нашими входными данными будут изображения объектов вместе с их метками истинности. Пример: 100 изображений собак, каждое из которых помечено как «собака», и 100 изображений кошек, каждое из которых помечено как «кошка». Ваша конечная цель здесь состоит в том, чтобы, взяв в качестве входных данных новый образ собаки, правильно обозначить его как таковой.

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

3- Обучение с подкреплением: ваша система (агент) снабжена набором действий, состояний и вознаграждений. Его конечная цель — выполнить действие в определенном состоянии, которое максимизирует вознаграждение. Если мы возьмем в качестве примера лабиринт и система захочет найти путь к решению, ее набор действий будет состоять в том, чтобы двигаться вперед, назад, влево, вправо, ее состояние — это ее текущая позиция, а награда за любое действие — это обратно пропорциональное расстояние между концом и следующим состоянием, в котором оно окажется, если выполнит определенное действие. Таким образом, он захочет выполнить действие, чтобы приблизиться к конечной точке. Конечно, это очень наивный подход, но это хороший пример для понимания обучения с подкреплением. Обучение с подкреплением часто ближе по концепции к «обучению без учителя».

Контролируемое обучение

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

Обучение, проверка и тестирование

Наша конечная цель в этой задаче будет заключаться в том, что если модели дается изображение объекта, который она знает, она будет правильно «предсказывать» его на основе своих знаний. Первоначально эта модель начинается с нулевого знания. Возьмем в качестве примера студента университета Z. Первоначально, начиная новый курс, студент Z не имеет предварительных знаний по предмету. Посещая лекции и читая (Обучение), он начинает понимать больше, но теперь Z хочет практиковать свои знания, чтобы убедиться, что он действительно понимает, поэтому он пытается решить некоторые практические задания (Проверка). сильный>). В конце курса его знания проверят на экзамене, чтобы убедиться, что он все понял, и ему будет выставлена ​​оценка за его работу (Тестирование).

Эту же аналогию можно применить к нашей модели контролируемого машинного обучения. Мы хотим разделить наш набор данных из 10 000 изображений на наборы данных для обучения, проверки и тестирования. Способы разделения изображений различаются, но одними из самых популярных являются [60 % обучения, 20 % проверки и 20 % тестирования] и [80 % обучения, 10 % проверки и 10 % тестирования]. Конечно, перед разделением весь набор данных тщательно перемешивается, чтобы убедиться, что система изучает все разные классы.

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

Существует еще один популярный метод под названием «Перекрестная проверка», при котором наборы данных для обучения и проверки смешиваются во время некоторых контрольных точек. Это означает, что для первых 100 раундов первоначально разделенные 60% тренировочного набора используются в обучении, а первоначально разделенные 20% валидации используются в валидации, затем следующие 100 раундов 20% валидационный набор объединяется с тренировочным установлен, но теперь заменяется равной частью обучающего набора, который будет использоваться для проверки, а не для обучения. Этот процесс повторяется снова и снова, чтобы предоставить системе изменяемый набор данных для обучения и проверки с конечной целью лучшего обучения.

Линейные задачи, линейная регрессия и оценка методом наименьших квадратов

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

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

(1) у = тх + с; где m — градиент, а c — точка пересечения с осью y.

Для нашей задачи наш градиент равен (140–100)/(10–4)=40/6 = 6,667, а точка пересечения по оси y равна 140–(6,667*10) = 73,33.

(2) y = 6.67x + 73.33

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

Но что, если наше проблемное пространство сильно разрослось? Например, если мы говорим об одном изображении, оно делится на ширину x высоту x каналы. Изображение шириной 32 пикселя и высотой 32 пикселя, содержащее 3 канала (красный, зеленый, синий, также известный как RGB), будет иметь (32*32*3) 3072 входных размера.

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

Исследователям пришла в голову идея использовать метод обучения с учителем, называемый линейной регрессией, который предсказывает результат ŷс учетом входных данных x и весов W. Линейная регрессия делает то же самое, что и предыдущая линия. Он пытается найти линию, которая разделяет наши точки данных. Если мы начнем с уравнения нормальной линии, мы можем написать

(2) ŷ = wx + b ; где w — вес, а b — смещение.

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

Итак, как насчет того, чтобы переписать уравнение 2, где смещение теперь представлено как θ (индекс 0)

Теперь как насчет того, чтобы представить его в матричной форме?

(4) ŷ = Xθ

Но куда делась предвзятость? X представляет собой матрицу входных точек, соединенных с 1 в начале. И тета теперь вес связан с уклоном в начале.

Теперь у нас есть прогнозируемая позиция ŷ. Мы хотим знать, насколько мы далеки от истинного класса, и для этого используется функция потерь.

Функция потерь: измеряет, насколько плох прогноз текущей точки, поэтому мы знаем, нужно ли изменить параметры.

Убыток L1: (ŷ-y)

Измеряет расстояние между нашим прогнозом ŷ и истинным значением y.

Потеря L2:

Измеряет расстояние между точками в квадрате.

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

Функция стоимости: измеряет, насколько плохо работает вся модель, чтобы мы знали, нужно ли нам изменить параметры. Это среднее значение потерь за всю тренировку.

Функция затрат L2:

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

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

Оценка методом наименьших квадратов

Для потерь J(θ) мы хотим минимизировать потери, чтобы достичь (локального) минимума. Для этого мы используем производные. Таким образом, вывод нашей функции потерь может помочь нам найти наилучший набор параметров θ.

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

Заключение

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

Правки:

[26.06.2022]: Пример возраста/роста был отредактирован, чтобы отразить его как проблему регрессии, а не как классификацию. Первоначально речь шла о том, чтобы определить, был ли кто-то высоким или нет, в зависимости от его возраста (классификация), который теперь редактируется, чтобы предсказать рост кого-то в зависимости от его возраста (регрессия). Подробнее об этом в следующей статье.

Смотрите другие части серии

Часть 2:



Ссылки:

1- Эта серия создана под сильным влиянием IN2346 — преподается профессором Нисснером, профессором Леаль-Тайше и доступна онлайн здесь

2- Я также использую Deep Learning — Ян Гудфеллоу, Йошуа Бенджио и Аарон Курвиль, и доступен онлайн здесь

3- В чем разница между искусственным интеллектом, машинным обучением и глубоким обучением? — Nvidia

4- Модели для машинного обучения, IBM