Машинное обучение и нейронные сети - страница 66

 

Сверточные нейронные сети и глубокое сверточное Q-обучение



Сверточные нейронные сети и глубокое сверточное Q-обучение

Всем добрый день! Это доктор Сопер, и сегодня я буду обсуждать сверточные нейронные сети (CNN) и глубокое сверточное Q-обучение. Если вы не знакомы с искусственными нейронными сетями или Q-обучением, я рекомендую посмотреть предыдущее видео из этой серии под названием «Основы искусственных нейронных сетей и глубокого Q-обучения», прежде чем переходить к этому.

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

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

Итак, приступим. Во-первых, давайте разработаем интуитивное понимание того, что такое сверточные нейронные сети и почему они полезны. Проще говоря, сверточная нейронная сеть (CNN) — это тип искусственной нейронной сети, предназначенной для данных с пространственной структурой. Данные с пространственной структурой включают изображения, видео и даже текст (хотя CNN в основном используются для задач компьютерного зрения). Для целей этого видео мы сосредоточимся на вводе на основе изображений.

Данные с пространственной структурой, такие как изображения, содержат пиксели, расположенные определенным образом. Расположение каждого пикселя имеет значение, и именно такое расположение позволяет нам идентифицировать объекты на изображении. Например, если бы мы случайным образом переупорядочили пиксели на изображении, оно превратилось бы в бессмысленный набор шума, а не в распознаваемый объект. Это пространственное расположение и есть то, что мы подразумеваем под «данными, имеющими пространственную структуру».

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

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

Чтобы углубиться в детали, давайте начнем с первого шага: применения фильтров к входному изображению. Фильтры, также известные как детекторы признаков или ядра, предназначены для обнаружения определенных элементов изображения, таких как линии, кривые или фигуры. Применяя эти фильтры к входному изображению, мы создаем карты объектов. Набор карт объектов образует сверточный слой.

Чтобы проиллюстрировать этот процесс, давайте рассмотрим простое черно-белое изображение, состоящее из пикселей, представленных матрицей. Затем мы можем применить к изображению фильтр, например фильтр 3x3, предназначенный для обнаружения вертикальных линий. Перемещая фильтр по изображению, мы можем создать карту функций, которая указывает степень перекрытия между фильтром и различными частями изображения.

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

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

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

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

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

Чтобы проиллюстрировать этот процесс, давайте рассмотрим операцию максимального объединения 2x2, примененную к карте объектов. Мы делим карту объектов на непересекающиеся области 2x2 и берем максимальное значение из каждой области, чтобы сформировать объединенную карту объектов. Это уменьшает пространственные размеры карты объектов в 2 раза.

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

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

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

Подводя итог потоку информации в CNN:

  1. Свертка: примените фильтры к входному изображению для создания карт объектов.
  2. Максимальное объединение: понижайте выборку карт объектов, сохраняя максимальные значения в регионах объединения.
  3. Сведение: преобразование объединенных карт объектов в одномерный вектор.
  4. Полностью связанные слои: соедините сплющенный вектор с полностью связанными слоями для высокоуровневого извлечения признаков и создания прогнозов.

Этот процесс извлечения признаков, понижения дискретизации и принятия решений позволяет CNN эффективно фиксировать пространственные отношения во входных данных и делать точные прогнозы.

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

Глубокое сверточное Q-обучение сочетает в себе мощь CNN с методами обучения с подкреплением, в частности Q-обучение, для решения сложных задач. Q-обучение — это тип алгоритма обучения с подкреплением, который позволяет агенту изучать оптимальные действия в среде, взаимодействуя с ней и получая вознаграждение.

В контексте глубокого сверточного Q-обучения агент обычно представляет собой искусственный агент, такой как компьютерная программа, а среда представляет собой визуальную задачу, например, игру в видеоигру. Агент наблюдает за текущим состоянием игры (представленным в виде изображений) и предпринимает действия на основе Q-значений, связанных с каждым действием. Q-значения представляют собой ожидаемые будущие вознаграждения за выполнение определенного действия в данном состоянии.

Для аппроксимации значений Q используется глубокая сверточная нейронная сеть. CNN принимает текущее состояние (изображение) в качестве входных данных и выводит Q-значение для каждого возможного действия. Затем Q-значения используются для выбора действия с наибольшим ожидаемым будущим вознаграждением в соответствии с политикой.

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

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

 

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



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

Всем привет. Я доктор Сопер, и сегодня я хотел бы обсудить технику, которую я разрабатывал, под названием «Жадная перекрестная проверка». Этот метод служит основой для эффективного определения оптимальных или почти оптимальных моделей машинного обучения.

Начнем с краткого введения и объяснения того, почему эта проблема имеет большое значение. При разработке решений для машинного обучения принято тестировать различные модели, чтобы определить, какая из них работает лучше всего. Здесь термин «модель» относится к конкретной комбинации алгоритма машинного обучения и выбранных значений его настраиваемых параметров.

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

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

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

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

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

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

  1. Случайным образом разделите обучающие данные на k подмножеств, известных как «складки».
  2. Обучите модель, используя все складки, кроме одной.
  3. Проверьте производительность модели, используя оставшуюся кратность.
  4. Повторяйте шаги 2 и 3, пока каждая складка не будет использована один раз для оценки производительности модели.

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

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

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

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

Чтобы реализовать жадную перекрестную проверку, мы выполняем следующие шаги:

  1. Случайным образом разделите обучающие данные на k раз.
  2. Инициализируйте пустой набор оцененных моделей.
  3. Для каждой модели в наборе моделей-кандидатов: a. Оцените производительность модели на одном сгибе. б. Рассчитайте среднюю производительность модели, используя оцененные складки.
  4. Повторяйте шаги 3a и 3b, пока все модели-кандидаты не будут оценены хотя бы в одном случае.
  5. Выберите следующую кратность для оценки на основе текущей средней производительности каждой модели.
  6. Повторяйте шаги с 3а по 5, пока не будут оценены все складки для всех моделей-кандидатов.
  7. Выберите наиболее эффективную модель на основе средней производительности по всем складкам.

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

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

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

Greedy Cross Validation — это метод ускоренной оптимизации гиперпараметров в машинном обучении. Адаптивно выбирая и оценивая модели на основе их производительности, он позволяет эффективно идентифицировать наиболее эффективные модели. Хотя это может не гарантировать нахождение абсолютно лучшей модели, оно предлагает практическое решение для эффективной навигации в пространстве поиска гиперпараметров.

 

1.1 Обзор курса (L01: Что такое машинное обучение)


1.1 Обзор курса (L01: Что такое машинное обучение)

Всем привет!

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

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

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

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

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

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

После введения мы перейдем к вычислительным основам, которые включают краткое введение в Python и его значение для машинного обучения. Хотя предыдущий опыт работы с Python не является обязательным, базовое понимание будет полезно, поскольку в этом курсе мы будем широко использовать Python. Мы сосредоточимся на конкретных библиотеках, таких как NumPy для линейной алгебры и scikit-learn, основной библиотеке машинного обучения.

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

Ближе к концу семестра у нас будут презентации классных проектов. Я буду предоставлять больше информации о классных проектах по мере прохождения семестра.

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

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

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

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

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

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

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

Вторая часть посвящена вычислительным основам, где мы рассмотрим основы программирования на Python и основные библиотеки, используемые в машинном обучении, такие как NumPy для линейной алгебры и scikit-learn для реализации алгоритмов машинного обучения. Хотя предварительный опыт работы с Python не является обязательным, я рекомендую выполнить интерактивные упражнения, которые я предоставлю на Canvas, чтобы при необходимости ознакомиться с Python.

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

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

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

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

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

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

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

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

Спасибо, и давайте начнем с Лекции 1 по обзору курса и программе.

 

1.2 Что такое машинное обучение (L01: Что такое машинное обучение)



1.2 Что такое машинное обучение (L01: Что такое машинное обучение)

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

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

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

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

Теперь давайте углубимся в содержание курса. Семестр будет разделен на семь частей или модулей. В первой части мы начнем с введения в машинное обучение и простого примера алгоритма машинного обучения под названием K ближайших соседей. После этого мы рассмотрим основы вычислений, включая краткое введение в Python, а также линейную алгебру и основную библиотеку машинного обучения scikit-learn. Если у вас нет опыта работы с Python, не беспокойтесь. Этому легко научиться, и я предоставлю дополнительные интерактивные упражнения на Canvas, которые помогут вам освоиться.

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

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

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

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

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

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

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

 

1.3 Категории машинного обучения (L01: Что такое машинное обучение)



1.3 Категории машинного обучения (L01: Что такое машинное обучение)

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

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

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

Переходя к неконтролируемому обучению, эта категория включает анализ немаркированных данных для обнаружения скрытых шаблонов или структур. Без меток или обратной связи обучение без учителя направлено на поиск значимой информации в наборе данных. Кластеризация — это пример обучения без учителя, когда сходные точки данных группируются вместе на основе шаблонов или плотностей. Различные алгоритмы кластеризации, такие как k-means, DBSCAN или иерархическая кластеризация, могут использоваться для идентификации и группировки похожих точек данных.

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

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

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

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

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

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

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

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

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

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

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

 

1.4 Обозначение (L01: Что такое машинное обучение)



1.4 Обозначение (L01: Что такое машинное обучение)

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

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

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

Теперь давайте углубимся в формальные аспекты нотации обучения с учителем. Обозначим обучающий набор данных как D, который состоит из N обучающих примеров. Каждый обучающий пример включает в себя вектор признаков (X) и соответствующую метку (Y). Верхний индекс «i» представляет собой индекс точки обучения, указывающий ее положение в наборе данных. Верхний индекс используется здесь, чтобы отличить его от нижнего индекса, который мы введем позже.

Набор обучающих данных создается на основе базовой, часто неизвестной функции, которая присваивает метки функциям. Эта функция обычно не определяется явно и может быть естественным явлением или процессом маркировки человеком. В машинном обучении наша цель — аппроксимировать эту функцию (F(X)) с помощью модели или гипотезы. Модель должна отображать сопоставление между входными функциями (X) и метками (Y) аналогично неизвестной функции.

Традиционно гипотеза или модель, изученная алгоритмом машинного обучения, обозначается как H. Модель принимает вектор признаков (X) и создает прогнозируемую метку (шляпа Y). В задачах регрессии прогнозируемая метка является непрерывным значением, тогда как в задачах классификации прогнозируемая метка принадлежит набору возможных значений. В классификации набор возможных меток обычно представляется с помощью целых чисел, но он также может быть представлен с использованием других символов или букв.

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

Чтобы проиллюстрировать эти концепции, давайте рассмотрим реальный пример набора данных, набор данных Iris. Этот набор данных состоит из измерений различных характеристик цветов ириса, таких как размеры чашелистиков и лепестков. Цель состоит в том, чтобы предсказать вид цветка на основе этих измерений. Существует три вида: setosa, versicolor и virginica.

В наборе данных Iris каждый обучающий пример соответствует измерению цветка, с функциями, представляющими размеры, и меткой, представляющей вид цветка. Набор данных содержит 150 обучающих примеров, обозначенных как N=150, и четыре функции, обозначенных как M=4.

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

 

Приложение 1,5 ML (L01: что такое машинное обучение)



Приложение 1,5 ML (L01: что такое машинное обучение)

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

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

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

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

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

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

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

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

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

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

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

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

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

После того, как модель обучена, следующим шагом является оценка ее производительности. Это делается с использованием отдельного набора данных для оценки, часто называемого проверочным набором или отложенным набором. Используемые метрики оценки зависят от типа проблемы. Для задач классификации обычно используются такие показатели, как точность, достоверность, полнота и оценка F1. Для задач регрессии используются такие показатели, как среднеквадратическая ошибка (MSE) или средняя абсолютная ошибка (MAE). Оценка помогает нам оценить, насколько хорошо модель обобщает невидимые данные, и дает представление о ее сильных и слабых сторонах.

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

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

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

 

1.6 Мотивация машинного обучения (L01: Что такое машинное обучение)



1.6 Мотивация машинного обучения (L01: Что такое машинное обучение)

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

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

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

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

Другой взгляд на мотивы машинного обучения представлен Лео Брейманом, влиятельным статистиком, известным своей работой над деревьями решений и случайными лесами. Он представил идею двух культур: предсказания и информации. Культура прогнозирования фокусируется на использовании машинного обучения для создания точных прогнозов без обязательного понимания лежащих в основе отношений между входными и выходными переменными. С другой стороны, информационная культура направлена на извлечение знаний и понимание характера взаимосвязи между переменными.

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

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

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

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

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

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

Некоторые из популярных библиотек Python для машинного обучения включают в себя:

  1. NumPy: NumPy — это фундаментальная библиотека для научных вычислений на Python. Он обеспечивает поддержку больших многомерных массивов и матриц, а также набор математических функций для эффективной работы с этими массивами. NumPy является основой для многих других библиотек машинного обучения.

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

  3. Scikit-learn: Scikit-learn — это обширная библиотека машинного обучения, которая предлагает широкий спектр алгоритмов и инструментов для классификации, регрессии, кластеризации, уменьшения размерности и многого другого. Он предоставляет унифицированный интерфейс и использует согласованный API, что позволяет легко экспериментировать с различными алгоритмами и сравнивать их производительность.

  4. TensorFlow: TensorFlow — это библиотека с открытым исходным кодом, разработанная Google для числовых вычислений и машинного обучения. Он предлагает гибкую архитектуру для создания и обучения различных типов моделей машинного обучения с особым акцентом на глубокое обучение. TensorFlow предоставляет высокоуровневый API под названием Keras, который упрощает процесс построения и обучения нейронных сетей.

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

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

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

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

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

 

2.1 Введение в NN (L02: Методы ближайших соседей)



2.1 Введение в NN (L02: Методы ближайших соседей)

Всем привет и с возвращением! Надеюсь, у вас была фантастическая первая неделя. Кратко повторим то, что мы рассмотрели. В лекции 1 мы представили концепцию машинного обучения и обсудили самый распространенный вопрос, который касался классного проекта. В ближайшее время сделаю отдельный анонс о проекте. Одна вещь, которую я хотел бы упомянуть, это то, что я включил функцию на Piazza, которая позволяет вам находить членов команды для проекта. Более подробная информация будет опубликована в отдельном объявлении.

Теперь давайте перейдем к лекции 2. Сегодня мы в первую очередь сосредоточимся на алгоритме k-ближайших соседей (KNN), который является классическим алгоритмом машинного обучения и до сих пор широко используется. Я считаю, что это самое мягкое и простое введение в машинное обучение, поскольку оно позволяет нам понять работу алгоритмов машинного обучения. Хотя KNN, возможно, уже не самый популярный алгоритм, я настоятельно рекомендую включать его в свои проекты. Он служит эталоном производительности для задач классификации и даже для прогнозирования непрерывных выходных данных. KNN может дать представление о точности прогнозирования и вычислительной эффективности.

Говоря о вычислительных аспектах, наряду с объяснением того, как работает KNN, мы также коснемся концепции нотации Big O. Это обозначение обычно используется в информатике для анализа эффективности различных алгоритмов. Хотя это может показаться техническим, понимание нотации Big O полезно не только для машинного обучения, но и для общего программирования.

Ближе к концу этой лекции я продемонстрирую несколько примеров на Python, чтобы показать вам, как использовать KNN. Однако обратите внимание, что это будет краткий обзор, и мы углубимся в Python, включая установку и основные библиотеки, такие как NumPy и scikit-learn, в лекции 3.

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

  1. Применение методов ближайшего соседа: мы рассмотрим реальные приложения KNN, такие как интеллектуальный анализ данных об использовании Интернета, биометрия, классификация изображений и анализ белков. Эти примеры помогут мотивировать тему.

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

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

  4. Введение в методы K-ближайших соседей: мы перейдем к KNN, где мы рассматриваем несколько ближайших соседей вместо одного. Мы рассмотрим K-классификаторы ближайших соседей и регрессоры.

  5. Сложность времени выполнения Big O алгоритмов K-ближайших соседей: мы исследуем вычислительную эффективность KNN с использованием нотации Big O. Эта тема имеет решающее значение для анализа производительности алгоритмов.

  6. Улучшение алгоритмов K-ближайших соседей: в этой части я представлю идеи и приемы для повышения производительности KNN. В этом разделе основное внимание уделяется оптимизации алгоритма.

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

В следующей лекции, лекции 3, мы углубимся в установку Python и рассмотрим основные библиотеки, включая NumPy и scikit-learn. Так что обязательно следите за новостями! Давайте начнем лекцию 2, где мы исследуем методы ближайших соседей и алгоритм K-ближайших соседей, и мы продолжим этот процесс для всех точек данных в обучающем наборе. К концу цикла мы идентифицируем ближайшую точку данных к точке запроса.

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

Подводя итог шагу прогнозирования алгоритма ближайшего соседа:

  1. Инициализируйте ближайшее расстояние как бесконечность и ближайшую точку как None.
  2. Для каждой точки данных в обучающем наборе:
    • Вычислите расстояние между текущей точкой данных и точкой запроса.
    • Если расстояние меньше ближайшего расстояния:
      • Обновите ближайшее расстояние с текущим расстоянием.
      • Установите ближайшую точку в качестве текущей точки данных.
  3. Используйте метку ближайшей точки в качестве предсказанной метки для точки запроса.

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

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

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

Чтобы проиллюстрировать границу решения метода ближайшего соседа, давайте рассмотрим двумерное пространство признаков. У нас есть два класса, класс 0 и класс 1, представленные разными символами (например, треугольниками и квадратами). Граница решения — это линия или кривая, разделяющая области разных классов.

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

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

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

Помимо обсуждения алгоритма k ближайших соседей, мы также коснемся темы эффективности алгоритма. Обозначение Big O — это распространенный способ анализа и сравнения эффективности различных алгоритмов. Он обеспечивает меру временной сложности алгоритма, показывая, как время выполнения увеличивается по мере увеличения размера входных данных.

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

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

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

В следующей лекции, Лекции 3, мы углубимся в реализацию алгоритма k ближайших соседей с использованием Python. Мы рассмотрим необходимые шаги, библиотеки и методы для эффективного использования этого алгоритма. Так что обязательно присоединяйтесь ко мне на следующей лекции!

 

2.2 Граница решения о ближайших соседях (L02: Методы ближайших соседей)



2.2 Граница решения о ближайших соседях (L02: Методы ближайших соседей)

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

Набор данных состоит из пяти точек данных, представленных синими точками. Давайте увеличим масштаб точек A и B и исследуем границу решения между ними. Граница решения — это линия или граница, разделяющая точки A и B. Если мы подгоним модель одного ближайшего соседа к набору данных, как будет выглядеть эта граница решения?

Чтобы ответить на этот вопрос, нам нужно понять концепцию равноудаленности. Любая точка, лежащая на границе решения, должна быть равноудалена от точек A и B. Найдите минутку, чтобы поставить видео на паузу и подумать о том, как будет выглядеть граница решения. Границей решения для точек A и B будет линия, проведенная с использованием евклидовой метрики расстояния. Любая точка на этой прямой равноудалена от точек А и В, что означает, что расстояние между точкой на прямой и точками А и В везде на прямой одинаково. Теперь перейдем к точкам А и С и определим их границу решения. Границей решения для точек A и C будет линия, перпендикулярная линии, соединяющей A и C. Каждая точка на этой линии равноудалена от точек A и C.

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

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

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

Чтобы получить области решений, которые алгоритм одного ближайшего соседа будет использовать для классификации, нам нужно взять объединение областей, принадлежащих одной и той же метке класса. Например, красные треугольники имеют область решения, ограниченную границами, соответствующими ближайшим точкам красных треугольников. Точно так же синие квадраты имеют свою собственную область принятия решений. Заполняя эти области соответствующими цветами, мы получаем границу решения классификатора одного ближайшего соседа.

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

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

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

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

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

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

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

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