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

 

Ускоренный курс Scikit-learn — библиотека машинного обучения для Python



Ускоренный курс Scikit-learn — библиотека машинного обучения для Python

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

Вторая часть видео охватывает несколько тем, включая поиск по сетке, метрики, конвейеры, настройку порогов, моделирование временных рядов и обработку выбросов. Преподаватель исследует использование настраиваемых метрик и важность баланса между точностью и полнотой при создании модели. Кроме того, классификатор голосования демонстрируется как метаоценщик, повышающий гибкость и выразительность модели. Видео завершается представлением инструмента Human Learn, который помогает создавать и тестировать системы на основе правил, которые можно комбинировать с алгоритмами машинного обучения. Кроме того, исследуется инструмент FunctionClassifier, который позволяет пользователям создавать настраиваемую логику в качестве модели классификатора и добавлять поведение, например обнаружение выбросов. В целом, видео предоставляет всесторонний обзор Scikit-learn и его гибкого API, подчеркивая важность понимания соответствующих показателей для создания и настройки модели.

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

  • 00:05:00 В этом разделе спикер обсуждает, как разбить данные на наборы x и y для моделей машинного обучения. Набор x представляет данные, используемые для прогнозирования, а набор y содержит интересующий прогноз. Используя библиотеку scikit-learn, пользователи могут загружать эталонные наборы данных в образовательных целях. Спикер также объясняет двухэтапный процесс создания и подгонки модели, чтобы учиться на данных, чтобы делать прогнозы. В качестве примера используется модель k-ближайших соседей, но также показана модель линейной регрессии, чтобы проиллюстрировать, как разные модели могут по-прежнему иметь один и тот же API в рамках scikit-learn.

  • 00:10:00 В этом разделе видео Scikit-learn Crash Course объясняет, как работает модель K-ближайших соседей в простом наборе данных, который показывает площадь дома в квадратных футах и его близость к школам. Модель делает прогнозы на основе ближайших 5 соседей, но проблема может возникнуть при использовании расстояний в разных масштабах, что означает, что одна ось может иметь гораздо большее влияние на прогнозы, чем другая. Это требует переосмысления того, что такое модель машинного обучения, и предполагает, что должна быть некоторая предварительная обработка, прежде чем данные будут переданы модели K-ближайшего соседа, чтобы масштабирование выполнялось до того, как будут сделаны прогнозы, и что все внутри предварительной обработки. блок обработки является частью модели.

  • 00:15:00 В этом разделе видео исследуется концепция конвейера в Scikit-learn, которая позволяет объединять этапы обработки и вызывать точечный подбор и точечный прогноз для всего конвейера при обучении. Используя конвейер, можно автоматически выполнять этапы предварительной обработки, такие как масштабирование и нормализация, чтобы учиться на данных для обеспечения надежности системы. Однако этот подход создает проблему, когда модели разрешено запоминать исходные данные. Видео демонстрирует, как диаграмма ложно предлагает идеальный прогноз, но модель может сделать это только потому, что ей разрешено запоминать исходную точку данных, что препятствует честному сравнению и надежной предсказуемости новых данных.

  • 00:20:00 В этом разделе инструктор объясняет метод оценки производительности модели с использованием отдельного набора тестовых данных, чтобы предотвратить оценку модели на том же наборе данных, на котором она обучалась. Он предлагает разделить набор данных на сегменты и использовать один для обучения, а другие для тестирования. Кроме того, он представляет объект cv поиска по сетке Scikit-learn, который позволяет выполнять автоматическую перекрестную проверку для определения наилучших гиперпараметров для использования в модели. Этот объект можно использовать с созданным ранее конвейером для точной настройки модели и улучшения ее прогнозирующих возможностей.

  • 00:25:00 В этом разделе инструктор изучает различные параметры модели KNearestNeighbors и демонстрирует, как использовать объект GridSearch для поиска наилучшего набора гиперпараметров. Объект GridSearch автоматически выполняет перекрестную проверку и отслеживает результаты, что упрощает анализ и выбор наилучшей конфигурации. Однако инструктор подчеркивает, что при работе с scikit-learn важно использовать соответствующий API и стандартные блоки, но не менее важно понимать и анализировать используемый набор данных. Преподаватель показывает, как получить доступ к описанию набора данных и отобразить его, и подчеркивает важность понимания переменных в наборе данных перед построением модели.

  • 00:30:00 В этом разделе спикер обсуждает потенциальные ловушки слепого применения моделей машинного обучения без полного понимания данных, используемых для обучения и прогнозирования. Даже, казалось бы, безобидные переменные, такие как доля определенной расы в городе, могут привести к предвзятым и даже расистским алгоритмам. Спикер подчеркивает важность тщательного изучения и тестирования модели перед развертыванием ее в производственной среде. Использование поиска по сетке и других методов может обеспечить статистические гарантии, но также может создать ложное чувство оптимизма и привести к слепым пятнам. Пользователь несет ответственность за изучение используемых данных и рассмотрение этических механизмов и механизмов обратной связи, а также резервных сценариев на случай, если что-то пойдет не так в производственной среде.

  • 00:35:00 В этом разделе подчеркивается важность преобразования данных при построении модели. В видео обсуждается использование трансформаторов и их значение для повышения производительности модели. Стандартный масштабатор от Scikit-Learn используется для масштабирования набора данных, и хотя его производительность хорошая, видео демонстрирует, как его можно улучшить, используя другие методы масштабирования. Подход включает вычитание среднего из набора данных и деление на стандартное отклонение. Хотя этот подход масштабирует данные, он оставляет выбросы, которые могут повлиять на некоторые алгоритмы. Видео также подчеркивает важность предварительной обработки для достижения желаемых результатов модели.

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

  • 00:45:00 В этом разделе видео спикер объясняет, как препроцессинг может кардинально повлиять на классификацию наборов данных. В первом примере динамик использует квантильный преобразователь, который делает модель более стабильной и лучше подходит для работы с выбросами в долгосрочной перспективе. Второй пример показывает, как добавление новых функций может улучшить производительность модели. Создавая нелинейные функции, такие как x1, умноженные на x2 и x1 в степени 2, и x2 в степени 2 с помощью полиномиальных функций, модель логистической регрессии смогла создать почти идеальную классификацию. Наконец, One Hot Encoder представлен как метод преобразования текста или категорий в числовые данные, который полезен для прогнозирования таких классов, как низкий, средний или высокий риск.

  • 00:50:00 В этом разделе видео обсуждается, как обрабатывать неизвестные категории при использовании одноразового кодирования с библиотекой Scikit-learn. Ведущий объясняет, что если кодировщику будет предложено преобразовать данные, которые он раньше не видел, это приведет к ошибке значения. Однако это можно изменить, установив для параметра «handle_unknown» значение «игнорировать». Видео также представляет веб-сайт под названием «DrawData.xyz», который позволяет пользователям создавать свои собственные наборы данных для практики в предварительной обработке и конвейерах. Спикер подчеркивает, что этапы предварительной обработки имеют решающее значение, поскольку они могут сильно повлиять на результат модели. Наконец, в видео объясняются преимущества использования поиска по сетке для сравнения нескольких моделей и выбора лучшей для прогнозирования на примере набора данных о мошенничестве с кредитными картами.

  • 00:55:00 В этом разделе видео объясняет важность выбора правильной метрики и то, как Scikit-learn обрабатывает ее. В видео используется набор данных анонимных функций и сумм транзакций, чтобы продемонстрировать, как можно использовать Scikit-learn для точного прогнозирования случаев мошенничества. Однако, поскольку набор данных несбалансирован с большим количеством случаев мошенничества, чем случаев, не связанных с мошенничеством, модель не может сходиться с количеством итераций по умолчанию. Поэтому максимальное количество итераций увеличивается, а параметр веса класса корректируется, чтобы удвоить вес случаев мошенничества, чтобы улучшить обнаружение мошенничества в модели. Видео также представляет GridSearchCV для поиска наилучшего значения параметра веса класса.
  • 01:00:00 В этом разделе инструктор объясняет, как использовать поиск по сетке, чтобы найти лучшие параметры модели для логистической регрессии в scikit-learn. Определив сетку значений параметров, инструктор показывает, как перебрать эти гиперпараметры и протестировать их с помощью перекрестной проверки. Объект сетки возвращает словарь результатов, включая вес класса и баллы. Модель логистической регрессии имеет связанный метод, называемый score, который используется для определения наилучшей модели. Затем инструктор представляет две метрики из модуля метрик scikit-learn, точность и показатель полноты, а также объясняет, как включить их в поиск по сетке с помощью словаря подсчета очков.

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

  • 01:10:00 , мы используем функцию make_scorer в поиске по сетке с нашей пользовательской метрикой min_precision_recall, которая принимает y_true и y_pred в качестве входных данных. Однако для функции make_scorer требуется оценка, набор данных X, y true и некоторая форма веса выборки, поэтому она превращает нашу метрическую функцию в объект прогнозирующего скорера, который можно использовать в поиске по сетке. Вес выборки — это дополнительная функция, которую можно передать моделям машинного обучения и которая позволяет нам сказать, что конкретная строка важнее другой. Вместо использования функции make_scorer мы можем напрямую передать оценщик и вычислить прогнозируемые значения y с помощью функции прогнозирования.

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

  • 01:20:00 В этом разделе рассказчик обсуждает гибкость API Scikit-learn и возможность использовать алгоритмы обнаружения выбросов, как если бы они были классификаторами, путем передачи меток y в пользовательских метриках. Это может быть полезно при оценке того, будет ли модель выбросов полезной в задаче классификации. Однако рассказчик предупреждает, что важно позаботиться о качестве меток, поскольку это может существенно повлиять на показатели модели. Кроме того, рассказчик указывает на некоторые параметры настройки для метрик, такие как указание того, что чем больше, тем лучше, и необходимость меры вероятности для некоторых метрик. Наконец, рассказчик упоминает о способности Scikit-learn работать с метамоделями.

  • 01:25:00 В этом разделе инструктор объясняет, как работают конвейеры scikit-learn и ограничения использования только конвейеров scikit-learn для моделей машинного обучения. Преподаватель предлагает использовать метаоценки как способ обойти ограничения конвейеров, чтобы добавить в модель дополнительные шаги и инструменты постобработки. Преподаватель приводит пример метаоценщика, классификатора голосования и того, как его можно использовать для балансировки различных моделей набора данных, присваивая веса каждому оценщику.

  • 01:30:00 В этом разделе инструктор демонстрирует использование классификатора голосования с помощью scikit-learn, который может комбинировать разные модели, работающие по-разному, для получения более точных прогнозов. Кроме того, эта модель может использоваться в качестве входных данных другими оценщиками, что повышает гибкость и выразительность. Преподаватель также знакомит с идеей настройки порогового значения в модели логистической регрессии для компромисса точности с отзывом или наоборот с использованием метамодели порогового значения. Это демонстрируется на примере использования пороговой модели в поиске по сетке. Используя эти методы, предоставляемые scikit-learn, можно настроить параметры модели и повысить производительность.

  • 01:35:00 В этом разделе спикер рассказывает об использовании поиска по сетке для настройки порога бинарного классификатора. Они показывают, что кривые точности и полноты меняются по мере изменения порога, но точность остается относительно стабильной. Докладчик объясняет, что такой этап постобработки лучше всего реализовать в виде метамодели, которая принимает другую модель в качестве входных данных. Затем докладчик демонстрирует пример построения метамодели с помощью классов Scikit-learn Pipeline и Group(byRegressor) для группировки данных по диете, а затем для каждой группы используется другая модель линейной регрессии. Они объясняют, что такой тип группировки может быть полезен для ситуации, когда эффект категориальной переменной может быть не просто постоянным сдвигом.

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

  • 01:45:00 В этом разделе спикер представляет инструмент под названием Human Learn, проект с открытым исходным кодом, разработанный для предоставления инструментов, совместимых с scikit-learn, которые помогают создавать и тестировать системы, основанные на правилах. Спикер объясняет, что в прошлом для разработки бизнес-правил и систем классификации данных чаще использовались специалисты, а не алгоритмы машинного обучения. Однако модели машинного обучения не идеальны и могут демонстрировать проблемное или неэффективное поведение. Целью Human Learn является создание систем на основе правил, которые можно легко сравнивать с моделями машинного обучения, а также комбинировать с ними. Докладчик демонстрирует, как построить систему на основе правил с использованием набора данных Titanic, и объясняет, как Human Learn может упростить внедрение этих систем в ваш повседневный рабочий процесс.

  • 01:50:00 В этом разделе видео спикер представляет инструмент FunctionClassifier в scikit-learn, который берет определяемую пользователем функцию и превращает ее в классификатор, совместимый с scikit-learn. Инструмент также позволяет оптимизировать поиск по сетке любых параметров, определенных в пользовательской функции. Докладчик демонстрирует, как использовать инструмент FunctionClassifier для поиска в сетке порогового параметра с набором данных, связанным с катастрофой Титаника. Гибкость инструмента позволяет пользователям создавать любую функцию Python с настраиваемой логикой в качестве модели классификатора и добавлять поведение, например обнаружение выбросов.

  • 01:55:00 В этом разделе инструктор объясняет, как можно обрабатывать выбросы в уже существующих моделях машинного обучения. Добавляя логику перед моделью, можно идентифицировать выброс и присвоить ему другую метку. Пакет позволяет создавать системы на основе правил с использованием уже существующих моделей машинного обучения, обеспечивая баланс между естественным интеллектом и искусственным интеллектом. Преподаватель использует пакет scikit-lego и функцию загрузки пингвинов, чтобы проиллюстрировать эффективное предсказание вида пингвина на основе его свойств. Функция использует интерактивную диаграмму, а инструктор рисует многоугольники вокруг точек данных, которые необходимо классифицировать. Алгоритм «точка в полигоне» затем используется для классификации точек данных. Интерактивный классификатор позволяет определить модель, совместимую с scikit-learn, из большого двоичного объекта json. Затем наборы данных x и y могут быть сгенерированы из фрейма данных, и модель можно использовать как любую модель циклера.
  • 02:00:00 В этом разделе спикер акцентирует внимание на свойствах и преимуществах рисованных моделей машинного обучения. Используя функцию диаграммы в Matplotlib, он демонстрирует, как нарисованные модели предсказывают классификации для новых примеров и эффективно обрабатывают отсутствующие данные. Кроме того, докладчик показывает, как тот же рисунок можно использовать в качестве системы обнаружения выбросов, проверяя, находятся ли точки за пределами полигонов. Он также демонстрирует, как можно использовать механику рисования для присвоения меток точкам данных, даже если метки недоступны, что делает его полезным этапом предварительной обработки.

  • 02:05:00 В этом разделе спикер обсуждает API интерактивных диаграмм, который является относительно экспериментальным и может действовать как преобразователь scikit-learn или в конвейере pandas для добавления двух новых столбцов с подсчетами, касающимися появления точки данных в полигон. Спикер рекомендует использовать алгоритмы машинного обучения наряду с бизнес-правилами для создания систем, основанных на правилах. Кроме того, спикер предлагает несколько ресурсов, таких как freeCodeCamp, канал pi data на YouTube и страницу документации scikit-learn, чтобы узнать больше о машинном обучении и scikit-learn.
 

PyTorch для глубокого обучения и машинного обучения — полный курс (описание частей 1–3)


PyTorch для глубокого обучения и машинного обучения — полный курс

00:00:00 - 01:00:00 Преподаватель онлайн-курса «PyTorch для глубокого обучения и машинного обучения» Дэниел Бурк знакомит зрителей с курсом, посвященным реализации концепций машинного обучения в PyTorch с использованием кода Python. Ключевые темы, затронутые в курсе, включают трансферное обучение, развертывание модели и отслеживание экспериментов. Видео представляет собой введение в машинное обучение и глубокое обучение, а также их различия, причем глубокое обучение лучше подходит для сложных задач, требующих больших объемов данных, и дает представление о неструктурированных данных. Объясняется анатомия нейронной сети, и курс охватывает различные парадигмы машинного обучения, такие как контролируемое обучение и трансферное обучение. Кроме того, в видео рассматриваются потенциальные приложения глубокого обучения, в частности, обнаружение объектов и обработка естественного языка. Наконец, объясняются преимущества PyTorch, такие как стандартизация методологий исследований и возможность запуска кода машинного обучения на графических процессорах для эффективного анализа числовых вычислений.

01:00:00 - 02:00:00 В этой части рассматриваются основы PyTorch, предварительная обработка данных, создание и использование предварительно обученных моделей глубокого обучения, подгонка модели к набору данных, прогнозирование и оценка прогнозов модели. Преподаватель подчеркивает важность экспериментов, визуализации и вопросов, а также использования ресурсов курса, включая GitHub, обсуждения и Learnpytorch.io. Учащиеся также знакомятся с Google Colab, который предоставляет возможность использовать ускорение GPU или TPU для ускорения вычислений, предустановленным PyTorch и другими пакетами обработки данных. Курс подробно рассказывает о тензорах как основных строительных блоках глубокого обучения, демонстрируя, как создавать тензоры с различными размерами и формами, включая скалярные, векторные и матричные тензоры. В курсе также рассказывается о создании случайных тензоров, тензоров нулей и единиц, а также о том, как указывать типы данных, устройства и требуемые параметры градиента при создании тензоров.

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

03:00:00 - 04:00:00 В этой части рассматриваются различные темы, связанные с PyTorch, включая методы манипулирования тензорами, такие как изменение формы, просмотр, наложение, сжатие, расжатие и перестановка. Преподаватель предоставляет примеры кода, подчеркивает важность манипулирования тензорными формами в машинном и глубоком обучении и предлагает зрителям попробовать индексировать тензоры для возврата конкретных значений. Курс также охватывает преобразование данных между тензорами PyTorch и массивами NumPy и типами данных по умолчанию для каждого из них, а также концепцию воспроизводимости в нейронных сетях и использование случайных начальных значений для уменьшения случайности в экспериментах. Инструктор объясняет, как получить доступ к графическим процессорам для более быстрых вычислений, и предлагает такие варианты, как Google Colab, Colab Pro, использование собственного графического процессора или использование служб облачных вычислений, таких как GCP, AWS или Azure.

04:00:00 - 05:00:00 Эта часть охватывает широкий круг тем для начинающих, в том числе настройку доступа к графическому процессору с помощью PyTorch, использование модуля nn в PyTorch, создание моделей линейной регрессии и многое другое. Преподаватель подчеркивает важность того, чтобы код, не зависящий от устройства, выполнялся на разных устройствах и учитывал тип устройства, на котором хранятся тензоры и модели. Курс также включает в себя упражнения и дополнительную учебную программу для отработки того, что было изучено, а инструктор дает советы о том, как подходить к упражнениям в Colab. Курс охватывает обучение и оценку моделей машинного обучения, разбиение данных на обучающие и тестовые наборы для обобщения и визуализацию данных. Инструктор объясняет, как создать модель линейной регрессии с использованием чистого PyTorch, что включает в себя создание конструктора с функцией инициализации, создание параметра весов с помощью nn.parameter и установку случайных параметров с помощью torch.rand.

05:00:00 - 06:00:00 В этой части рассматриваются такие темы, как создание модели линейной регрессии с использованием PyTorch, реализация алгоритмов оптимизации, таких как градиентный спуск и обратное распространение через PyTorch, а также понимание того, как проверить прогностическую способность модели PyTorch. Также обсуждается важность использования менеджера контекста torch.inference_mode при прогнозировании, инициализации параметров модели, использовании функций потерь для измерения точности прогнозов модели и оптимизации параметров модели для повышения точности модели. Кроме того, представлены основные модули PyTorch, включая torch.nn, torch.nn.module, torch.optim и torch.utils.dataset.

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

07:00:00 - 08:00:00 Эта часть охватывает несколько тем, связанных с PyTorch. В курсе обсуждается важность отслеживания хода модели путем записи значений потерь и построения кривых потерь, которые должны показывать тенденцию к снижению. Преподаватель также объясняет методы сохранения и загрузки моделей PyTorch, в том числе сохранение словаря состояния, загрузку модели с помощью метода torch.nn.module.loadStateDict или метода torch.load и тестирование загруженной модели. В последующих разделах курса рассматривается создание моделей линейной регрессии и использование уже существующих моделей в PyTorch, таких как линейный слой, путем создания подкласса nn.module.

08:00:00 - 09:00:00 Часть охватывает широкий круг тем в области глубокого обучения и машинного обучения. В первом разделе рассматриваются различные уровни, доступные в torch.nn, предварительно созданные реализации этих слоев и способы обучения моделей PyTorch с использованием функций потерь и оптимизатора. В последующих разделах инструктор объясняет важность независимого от устройства кода, сохранения и загрузки моделей PyTorch, а также подход к проблемам классификации. Преподаватель приводит примеры и подчеркивает важность числового кодирования входных данных, создания пользовательских данных и сложностей проектирования, связанных с моделью классификации, таких как количество скрытых слоев, нейронов, функция потерь и оптимизатор. Наконец, инструктор подчеркивает, что начинать любую задачу машинного обучения с данными — это самый важный шаг.

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

10:00:00 - 11:00:00 Эта часть охватывает несколько тем, включая функции потерь, оптимизаторы, функции активации, цикл обучения и метрики оценки. Преподаватель объясняет, как настроить функцию потерь и оптимизатор, создать функцию точности и преобразовать необработанные логиты в вероятности прогнозирования и метки. В курсе также рассматривается разница между потерями BCE и BCE с потерей логитов, а также способы расчета потерь при тестировании и точности для модели классификации. Кроме того, инструктор дает советы по повышению производительности модели, например по увеличению глубины нейронной сети, настройке гиперпараметров, а также по импорту и использованию вспомогательных функций из внешних скриптов Python.

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

12:00:00 - 13:00:00 Этот курс PyTorch для глубокого обучения и машинного обучения охватывает базовые и продвинутые концепции PyTorch для построения моделей. Преподаватель знакомит с концепцией нелинейности и демонстрирует, как создавать модели классификации с использованием нелинейности с помощью PyTorch. Они также обсуждают оптимизаторы построения, функции потерь и пользовательские функции активации. Подчеркивается важность сочетания линейных и нелинейных функций для поиска закономерностей в данных путем наложения слоев этих функций для создания модели. Курс охватывает как бинарные, так и многоклассовые модели классификации и объясняет, как их настроить в PyTorch. Раздел завершается демонстрацией того, как инициализировать модели классификации с несколькими классами с входными и выходными функциями.

13:00:00 - 14:00:00 Преподаватель в этой части обсуждает создание линейной модели стека слоев с использованием метода PyTorch nn.Sequential для выполнения многоклассовой классификации. Они объясняют создание функции потерь и оптимизатора с использованием кросс-энтропийных потерь и стохастического градиентного спуска (SGD). Преподаватель также обсуждает выпадающие слои и важность устранения неполадок в коде машинного обучения для устранения ошибок. Они демонстрируют оценку обученной модели с использованием различных методов оценки классификации, таких как точность, прецизионность, полнота, оценка F1, матрица путаницы и отчет о классификации с использованием torchmetrics и библиотек scikit-learn. Наконец, инструктор показывает, как импортировать и использовать предварительно созданные функции метрик в PyTorch с помощью пакета torchmetrics, и предоставляет ссылки на модуль torchmetrics и внеклассные статьи для дальнейшего изучения.

14:00:00 - 15:00:00 В этой части рассматриваются различные темы, связанные с PyTorch и компьютерным зрением с использованием машинного обучения. Это включает в себя понимание проблем компьютерного зрения, таких как проблемы бинарной или многоклассовой классификации, и изучение того, как модель машинного обучения изучает шаблоны из различных примеров изображений. В видео также рассказывается о библиотеках PyTorch, таких как TorchVision, и о том, как они содержат наборы данных, предварительно обученные модели и преобразовывают для манипулирования данными зрения в числа, используемые моделями машинного обучения. Кроме того, инструктор рассказывает о входных и выходных формах набора данных FashionMNIST, о важности визуализации и изучения наборов данных для выявления потенциальных проблем, а также демонстрирует, как строить и визуализировать данные изображения с помощью PyTorch и Matplotlib.

15:00:00 - 16:00:00 Этот видеокурс по PyTorch для глубокого обучения и машинного обучения рассказывает о важности подготовки данных и использования наборов данных PyTorch и загрузчиков данных. Особое внимание уделяется концепции мини-пакетов в глубоком обучении, а процесс создания загрузчиков обучающих и тестовых данных объясняется с использованием PyTorch с гиперпараметром размера пакета, установленным на 32. Обсуждается важность визуализации изображений в пакете, и концепция выравнивания введено для преобразования многомерных данных в единый вектор для использования в модели PyTorch. Описывается процесс создания простой модели нейронной сети с плоским слоем и двумя линейными слоями, а также объясняется концепция использования вспомогательных функций в проектах машинного обучения Python. Наконец, демонстрируется важность функций синхронизации для измерения времени обучения модели и использования TQDM для индикатора выполнения.

16:00:00 - 17:00:00 Эта часть курса охватывает различные темы, связанные с PyTorch, начиная с настройки циклов обучения и тестирования, устранения распространенных ошибок, оценки моделей и прогнозирования. Преподаватель подчеркивает важность экспериментов, чтобы найти лучшую модель нейронной сети для заданного набора данных, и обсуждает преимущества нелинейности для моделирования нелинейных данных. Они также демонстрируют, как создавать вспомогательные функции в PyTorch, оптимизировать и оценивать циклы, а также выполнять этапы обучения и тестирования. Курс также исследует код, не зависящий от устройства, и преимущества моделей обучения на ЦП и ГП, завершаясь демонстрацией того, как измерять время обучения на обоих устройствах.

17:00:00 - 18:00:00 Эта часть охватывает многие темы глубокого обучения и машинного обучения. Преподаватель демонстрирует, как создавать и тестировать модель глубокого обучения, строить сверточные нейронные сети (CNN) с помощью PyTorch и создавать блоки в PyTorch. Кроме того, в руководстве рассматривается состав модели PyTorch и то, как свертки работают на практике, изменения значений шага и заполнения в сверточном слое, а также сверточный и максимальный слои объединения в PyTorch. На протяжении всего видео инструктор делится ресурсами, предоставляет код PyTorch и пошаговые объяснения, а также предлагает рекомендации по созданию эффективного и многократно используемого кода.

19:00:00 - 20:00:00 Эта часть охватывает различные темы, такие как визуализация прогнозов модели машинного обучения, оценка модели классификации с несколькими классами с использованием матрицы путаницы в PyTorch, установка и обновление пакетов в Google Colab, сохранение и загрузка PyTorch. модель и работа с пользовательскими наборами данных. Курс также демонстрирует процесс построения модели компьютерного зрения с использованием PyTorch. Преподаватель подчеркивает важность использования доменных библиотек для функций загрузки данных и настраиваемых функций загрузки данных и предоставляет примеры для различных категорий, таких как изображение, текст, звук и рекомендации. Они также предоставляют полезные ресурсы, такие как веб-сайт Learn pytorch.io и репозиторий глубокого обучения PyTorch.

20:00:00 - 21:00:00 Преподаватель этого курса PyTorch для глубокого обучения и машинного обучения начинает с представления набора данных Food 101, но предоставляет меньший подмножество с тремя категориями продуктов питания и только 10% изображений для практики. ПиТорч. Преподаватель подчеркивает важность наличия отдельного каталога для данных, а затем показывает, как открывать, визуализировать и преобразовывать изображения с помощью методов библиотеки изображений Python Pillow и PyTorch. В этом разделе также рассматриваются преобразования данных с помощью PyTorch, такие как изменение размера и отражение изображений, а инструктор демонстрирует, как загружать и преобразовывать изображения в виде тензоров для моделей машинного обучения с помощью PyTorch. Раздел заканчивается предложением изучить различные варианты преобразования изображений, доступные в PyTorch.

21:00:0022:00:00 В этом курсе PyTorch инструктор объясняет, как загружать и преобразовывать данные изображения в тензоры, создавать и настраивать загрузчики данных для обучения и тестирования, а также создавать пользовательский класс загрузки данных. Они демонстрируют функциональность функции готовых наборов данных, папки изображений, которую можно использовать для настройки преобразований для всех изображений. Они также проходят шаги, необходимые для создания пользовательского загрузчика данных, включая создание функции для получения имен классов и сопоставлений из каталогов, создание подкласса torch.utils.data.Dataset и перезапись методов get item и len. Хотя возможности настройки загрузчиков данных полезны, существует риск написания кода с ошибками.

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

23:00:00 - 24:00:00 Преподаватель охватывает различные аспекты PyTorch для глубокого обучения и машинного обучения, включая устранение ошибок формы в моделях, использование Torch Info для печати сводок моделей PyTorch, создание обучающих и тестовых пошаговых функций для оценки производительность наборов данных и объединение этих функций в функцию обучения для упрощения обучения модели. Преподаватель также обсуждает синхронизацию процесса обучения модели глубокого обучения, построение кривых потерь для отслеживания прогресса модели с течением времени и оценку производительности модели путем экспериментов с различными настройками, такими как добавление слоев или настройка скорости обучения. В конечном итоге эти навыки обеспечат прочную основу для создания и оценки продвинутых моделей с использованием PyTorch.

24:00:00 - 25:00:00 В этом разделе курса PyTorch для глубокого обучения и машинного обучения инструктор обсуждает концепции переоснащения и недообучения в моделях, а также способы борьбы с ними, такие как увеличение данных, ранняя остановка и упрощение модели. Они подчеркивают важность оценки производительности модели с течением времени с использованием кривых потерь и предоставляют инструменты для сравнения производительности различных моделей. В этом разделе также рассказывается, как подготовить пользовательские изображения для прогнозирования, и демонстрируется, как загрузить изображение в PyTorch с помощью torch vision.io и преобразовать его в тензор. Преподаватель отмечает, что перед передачей изображения через модель может потребоваться изменить его размер, преобразовать в формат float32 и поместить на нужное устройство.

25:00:00 - 26:35:00 Эта часть курса PyTorch охватывает различные темы, такие как типы и формы данных, преобразование данных изображения с помощью пакета преобразования PyTorch и прогнозирование пользовательских данных с использованием предварительно обученной модели. Чтобы убедиться, что данные находятся в правильном формате перед подачей в модель, важно предварительно обработать их, масштабируя их в диапазоне от 0 до 1, при необходимости преобразовать их и проверить, что они имеют правильное устройство, тип данных и форму. . Преподаватель также призывает учащихся практиковаться, выполняя упражнения с пользовательским набором данных PyTorch, и предлагает решения в качестве справочных материалов. Преподаватель также упоминает, что в Learnpytorch.io есть пять дополнительных глав для изучения, охватывающих такие темы, как трансферное обучение, отслеживание экспериментов с моделью pytorch, репликация бумаги pytorch и развертывание модели pytorch.


Часть 1

  • 00:00:00 В этом разделе видео инструктор Дэниел Бурк знакомит зрителей с курсом PyTorch и формирует ожидания от удобного для начинающих видеоурока. В центре внимания курса будет реализация концепций машинного обучения в PyTorch, платформе на основе Python, где зрители будут учиться, создавая код. Бурк упоминает, что курс будет охватывать такие важные темы, как перенос обучения, развертывание моделей и отслеживание экспериментов, и если зрители хотят узнать больше о PyTorch, на сайте Learn pytorch.io доступны дополнительные ресурсы. Наконец, Бурк определяет машинное обучение как процесс преобразования данных в числа и поиска закономерностей с использованием алгоритмов и математики и объясняет, что основное внимание в курсе уделяется написанию кода, но зрители могут найти дополнительные ресурсы, если хотят глубже погрузиться в математику. за кодом.

  • 00:05:00 В этом разделе объясняется разница между традиционным программированием и машинным обучением. Традиционное программирование включает в себя написание правил для задачи, в то время как алгоритмы машинного обучения определяют правила на основе входных и выходных данных. Причина использования машинного обучения вместо традиционного программирования заключается в решении сложных задач, когда становится обременительным писать все правила вручную. Машинное обучение можно использовать для чего угодно, если оно может быть преобразовано в числа, но правило Google номер один для машинного обучения — сначала попытаться создать простую систему, основанную на правилах, прежде чем переходить к машинному обучению.

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

  • 00:15:00 В этом разделе полного курса по PyTorch для глубокого обучения и машинного обучения инструктор сравнивает машинное обучение и глубокое обучение. Традиционные методы машинного обучения, такие как машины с градиентным усилением, такие как xg boost, лучше всего подходят для структурированных данных в строках и столбцах. Для неструктурированных данных, таких как естественный язык или изображения, лучше всего подходит глубокое обучение. Модели глубокого обучения являются вероятностными, то есть они делают ставку на результат, в то время как системы, основанные на правилах, дают предсказуемые результаты. Кроме того, модели глубокого обучения требуют большого объема данных для получения отличных результатов, но есть методы, позволяющие получить хорошие результаты с меньшим объемом данных.

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

  • 00:25:00 В этом разделе курса PyTorch инструктор дает обзор нейронных сетей и их анатомии. Нейронные сети состоят из входного слоя, в котором входные данные преобразуются в числа, нескольких скрытых слоев, которые манипулируют данными и изучают закономерности в данных, и выходного слоя, который выводит изученные представления. Количество узлов в скрытых слоях можно настроить, и нейронная сеть самостоятельно изучает представления, также называемые признаками или весами. Различные типы нейронных сетей могут использоваться для разных задач, таких как CNN для изображений и преобразователи для обработки естественного языка. Как только нейронная сеть выводит свои представления, их можно преобразовать в понятный человеку формат. Анатомию нейронной сети также можно настраивать, количество слоев варьируется от нескольких до более сотни.

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

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

  • 00:40:00 В этом разделе видео инструктор обсуждает потенциальные приложения глубокого обучения, такие как обнаружение объектов с использованием компьютерного зрения для регистрации инцидентов с наездом и пробегом для идентификации автомобиля преступника. Преподаватель объясняет концепцию обработки естественного языка и то, как она используется для обнаружения спама. Затем видео переходит к основам PyTorch, самой популярной исследовательской среды глубокого обучения, которая обеспечивает быстрое глубокое обучение в Python, доступ к предварительно созданным моделям и ускоренную производительность графического процессора. Веб-сайт PyTorch определен как необходимый ресурс для курса.

  • 00:45:00 В этом разделе инструктор обсуждает PyTorch, который, по его словам, является самой популярной исследовательской средой глубокого обучения. Он цитирует Papers with Code, в котором отслеживаются документы по машинному обучению, содержащие код, чтобы продемонстрировать популярность PyTorch, показывая, что 58% из 65 000 документов, отслеживаемых сайтом, реализованы с помощью PyTorch. Кроме того, он приводит различные причины популярности PyTorch, в том числе его использование такими компаниями, как Facebook/Meta, Tesla, Microsoft и OpenAI, а также его способность стандартизировать исследовательские методологии. Инструктор также обращает внимание на твит Франсуа Шаля, в котором PyTorch восхваляется как инструмент, который любой может использовать для решения проблем, не требуя значительных инвестиций или команды инженеров. В целом, инструктор приходит к выводу, что PyTorch является фаворитом исследований благодаря разнообразной экосистеме и высокой степени внедрения среди тяжеловесов отрасли.

  • 00:50:00 В этом разделе курса PyTorch для глубокого обучения и машинного обучения инструктор обсуждает различные применения PyTorch, например, в сельском хозяйстве и на платформах социальных сетей, таких как Facebook и Microsoft. Кроме того, он объясняет, как PyTorch позволяет пользователям запускать код машинного обучения на графических процессорах, которые очень эффективны при выполнении числовых вычислений, особенно при параллельной обработке. PyTorch использует CUDA для запуска кода машинного обучения на графических процессорах NVIDIA, и хотя TPU доступны, графические процессоры, как правило, более популярны при выполнении кода PyTorch. Кроме того, он оставляет вопрос «Что такое тензор?» публике для исследования, а следующий раздел посвящен более глубокому рассмотрению темы.

  • 00:55:00 В этом разделе инструктор объясняет, что тензоры — это фундаментальный строительный блок PyTorch, и они могут представлять собой числа. Входные данные численно кодируются, чтобы превратить их в тензор, который может быть изображением или миллионом изображений. Затем входной тензор (тензоры) передается в нейронную сеть, которая манипулирует им с помощью математических операций и выводит другой тензор, который затем преобразуется обратно в понятный человеку формат. Подчеркивается причина использования PyTorch и поиска ответов на вопросы в Интернете, а также введение в конкретные темы, которые будут затронуты в курсе.

Часть 2

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

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

  • 01:10:00 В этом разделе спикер объясняет ресурсы, доступные для курса, и способы их эффективного использования. Материалы курса, включая код и блокноты, доступны на GitHub, а вопросы и ответы курса можно найти на вкладке обсуждений в том же репозитории. Кроме того, есть онлайн-книга, доступная на Learnpytorch.io. На вопросы, связанные с PyTorch, которые не относятся к конкретному курсу, настоятельно рекомендуется обращаться на форумы и веб-сайт PyTorch. Затем спикер представляет Google Colab, который будет основным инструментом, используемым на протяжении всего курса, и призывает пользователей писать код, обращаясь к нему через colab.research.google.com.

  • 01:15:00 В этом разделе инструктор объясняет, как использовать Google Colab для создания новой записной книжки и написания кода PyTorch. Google Colab предоставляет такие преимущества, как возможность использовать ускорение GPU или TPU для ускорения вычислений, а также предустановленные PyTorch и другие распространенные пакеты обработки данных Python. Преподаватель ссылается на записную книжку ресурсов на Learnpytorch.io и предоставляет репозиторий GitHub, где учащиеся могут задавать вопросы, связанные с курсом. Преподаватель также упоминает, что, хотя они используют платную версию Google Colab, бесплатной версии достаточно для прохождения курса.

  • 01:20:00 В этом разделе видео рассказывается, как настроить PyTorch с помощью Google Colab или обратиться к документу по настройке для локальной настройки. Рекомендуемая установка для прохождения курса — PyTorch 1.10 и CUDA 11.3. В видео также предлагается использовать подход с разделенным окном, чтобы следовать инструкциям и создать записную книжку для практики. Основное внимание в видео уделяется введению в тензоры, основному строительному блоку для глубокого обучения, предоставлению примеров создания скалярного тензора, заполненного числом семь, и тому, как получить доступ к документации PyTorch для torch.tensor.

  • 01:25:00 В этом разделе инструктор объясняет основы тензоров PyTorch, начиная с создания тензоров с помощью torch.dot.tensor. Он рекомендует учащимся просмотреть документацию PyTorch, чтобы узнать больше о библиотеке. Далее инструктор объясняет атрибуты скаляров, векторов и матриц. Он поясняет, что скаляр не имеет измерений и представляет собой просто одно число, в то время как вектор имеет одно измерение, обычно представляемое как величина и направление. Матрица является следующим шагом и имеет два измерения, представленные двумя парами квадратных скобок. Он объясняет разницу между размером и формой и как найти форму вектора с точки зрения его размеров.

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

  • 01:35:00 В этом разделе инструктор обсуждает важность случайных тензоров в PyTorch для машинного обучения и глубокого обучения. Начать с тензоров, заполненных случайными числами, а затем настроить их для лучшего представления данных — ключевая концепция нейронных сетей. Чтобы создать случайный тензор в PyTorch, инструктор показывает, как использовать функцию torch.rand, и объясняет, что «размер» и «форма» — это две разные версии одного и того же. Также кратко обсуждается соглашение об именах переменных в глубоком обучении, таких как скаляры и векторы в нижнем регистре, а матрицы и тензоры в верхнем регистре.

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

  • 01:45:00 В этом разделе инструктор рассказывает, как создавать тензоры нулей и единиц и как создавать диапазон тензоров. Тензор всех нулей полезен для создания тензорной маски, которая может обнулить определенные столбцы тензора. Тензор всех единиц также может быть полезен в некоторых ситуациях. Инструктор объясняет, как использовать torch.range, но предупреждает, что он может быть объявлен устаревшим в некоторых версиях PyTorch, и предлагает вместо этого использовать функцию диапазона.

  • 01:50:00 В этом разделе объясняется функциональность PyTorch по созданию тензоров с использованием диапазона и тензоров, имеющих ту же форму, что и другой тензор. Диапазон тензоров создается с помощью torch.arange(), где можно определить начало, остановку и шаг. Точно так же torch.zeros_like() используется для создания тензора нулей той же формы, что и входной тензор. Затем в этом разделе представлены тензорные типы данных в PyTorch с указанием типа по умолчанию — float 32, даже если ни один из них не указан.

  • 01:55:00 В этом разделе мы узнаем о важных параметрах при создании тензоров в PyTorch, таких как тип данных, устройство и требует градации. Мы обнаруживаем, что тип данных относится к уровню точности вычислений и обычно взаимодействует с 32-битными тензорами с плавающей запятой и 16-битными тензорами с плавающей запятой. Одинарная точность — 32-битная, а половинная точность — 16-битная, при этом 32-битный тип тензора по умолчанию в PyTorch. Примечание о тензорных типах данных имеет важное значение, поскольку это одна из трех серьезных ошибок, с которыми мы можем столкнуться при использовании PyTorch и глубокого обучения. Две другие ошибки включают в себя тензоры, не имеющие правильной формы и не находящиеся на правильном устройстве.

Часть 3

  • 02:00:00 В этом разделе инструктор обсуждает важность сохранения правильной формы и устройства при работе с тензорами в PyTorch. Если тензоры имеют разную форму или расположены на разных устройствах (CPU или GPU), могут возникать ошибки. Кроме того, инструктор объясняет роль параметра «град» в отслеживании градиентов во время численных расчетов. Урок включает в себя задачу для зрителей создать тензоры разных типов данных и проверить влияние умножения тензоров разных типов. Преподаватель предупреждает, что хотя некоторые операции могут не привести к ошибкам, другие могут привести к проблемам с типами данных, особенно при обучении больших нейронных сетей.

  • 02:05:00 В этом разделе видео инструктор рассказывает, как устранять неполадки с тензорными операциями и обеспечивать, чтобы тензоры имели правильный тип данных и форму для использования в моделях машинного обучения. Они демонстрируют, как проверить тип данных, форму и устройство тензора с помощью PyTorch, используя команды tensor.Dtype, tensor.shape и tensor.device. Преподаватель также отмечает, что PyTorch может вызывать ошибки, если тензоры имеют неправильный тип или форму данных, и показывает, как при необходимости изменить тип данных. Наконец, они сравнивают команды размера и формы и отмечают, что они взаимозаменяемы: одна является функцией, а другая — атрибутом.

  • 02:10:00 В этом разделе инструктор рассказывает об управлении тензорами в PyTorch, в частности о тензорных операциях, таких как сложение, вычитание, умножение, деление и умножение матриц. Эти операции важны для построения нейронных сетей, поскольку они помогают решить наиболее распространенные проблемы при построении моделей глубокого обучения. Кроме того, нейронные сети по-разному комбинируют эти функции для анализа и корректировки чисел случайного тензора для представления набора данных. Преподаватель демонстрирует, как выполнять основные тензорные операции сложения, умножения и умножения матриц, используя примеры кода PyTorch.

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

  • 02:20:00 В этом разделе инструктор объясняет разницу между поэлементным умножением и умножением скалярного произведения в PyTorch. Чтобы продемонстрировать концепцию, инструктор выполняет пошаговый процесс умножения двух матриц, подчеркивая, как умножается и складывается каждый элемент, чтобы получить окончательный результат. Затем инструктор показывает, как выполнять поэлементное умножение на элементарном примере, а затем матричное умножение с использованием функции факельного точечного коврика. В этом разделе также рассказывается, как выполнить умножение матриц с помощью цикла for, и объясняется разница в производительности между двумя методами.

  • 02:25:00 В этом разделе видео объясняет преимущества векторизации перед циклами for в PyTorch на примере матричного умножения. Показано, что метод torch dot matmore в 10 раз быстрее, чем использование цикла for для небольших тензоров. Однако видео предупреждает, что для больших тензоров необходимо соблюдать два основных правила, чтобы избежать ошибок формы при умножении матриц. Первое правило состоит в том, что внутренние размеры двух тензоров должны совпадать.

  • 02:30:00 В этом разделе инструктор объясняет правила умножения матриц и как избежать распространенных ошибок формы при умножении тензоров. Первое правило заключается в том, что внутренние размеры матрицы должны совпадать. Чтобы продемонстрировать это, инструктор создает тензор размером 3x2 и пытается умножить его на другой тензор, который не имеет таких же внутренних размеров, что приводит к ошибке. Второе правило состоит в том, что полученная матрица имеет форму внешних измерений. Преподаватель приводит примеры умножения матриц с различными формами и размерами тензора и того, как они приводят к различным формам матриц. Преподаватель предлагает зрителям использовать веб-сайт для практики умножения матриц в качестве задания перед следующим видео.

  • 02:35:00 В этом разделе инструктор обсуждает ошибки формы в нейронных сетях, которые являются одной из самых распространенных ошибок в глубоком обучении. Поскольку нейронные сети состоят из нескольких операций умножения матриц, даже небольшая ошибка формы тензора может привести к ошибке формы. Затем инструктор создает два тензора, тензор a и тензор b, и пытается выполнить матричное умножение между ними, что приводит к ошибке формы. Чтобы исправить эту ошибку, инструктор вводит понятие транспонирования, которое переключает оси или размеры заданного тензора, и демонстрирует, как его можно использовать для настройки формы тензоров в коде PyTorch.

  • 02:40:00 В этом разделе инструктор объясняет концепцию транспонирования тензоров и ее важность при умножении матриц. Транспозиция переставляет элементы тензора без изменения его базовых данных, и это обозначается «точкой t». Преподаватель также демонстрирует, как работает операция умножения матриц при транспонировании тензора b, и подчеркивает важность этой операции в нейронных сетях и глубоком обучении. Процесс транспонирования тензоров проиллюстрирован визуально, а преподаватель предоставляет пошаговые примеры кода, чтобы помочь учащимся понять и отработать эту концепцию.

  • 02:45:00 В этом разделе инструктор объясняет умножение матриц с помощью PyTorch и веб-сайта Matrix Multiplication. Он создал два тензора, тензор a и тензор b, и показал, что их умножение приводит к новому тензору с определенной выходной формой. Он предлагает зрителям транспонировать тензор a вместо тензора b и увидеть результаты. Далее инструктор рассказывает об агрегации тензоров, показывая, как найти минимальное, максимальное, среднее значение и сумму тензора с помощью методов PyTorch. Он также объясняет, как агрегация тензора помогает уменьшить количество элементов в тензоре.

  • 02:50:00 В этом разделе руководства по PyTorch инструктор демонстрирует, как решить одну из наиболее распространенных ошибок в PyTorch, связанную с неправильным типом данных. Он демонстрирует это, создавая тензор типа данных long, который предотвращает использование функции факела среднего. Затем он объясняет, как преобразовать тензор в число с плавающей запятой 32, которое требуется для функции mean, с помощью метода x.type(). В дополнение к нахождению минимума, максимума, среднего значения и суммы тензора инструктор также ставит задачу найти позиционный минимум и максимум, которые будут рассмотрены в следующем видео.

  • 02:55:00 В этом разделе объяснялось использование функций argmin и argmax в PyTorch для нахождения позиционного минимума и максимума тензора. Функция argmin возвращает позицию в тензоре с минимальным значением, а функция argmax возвращает позицию в тензоре с максимальным значением. Эти функции полезны, когда определение минимального или максимального значения тензора не требуется, а только положение этих значений. Кроме того, были введены концепции изменения формы, укладки, сжатия и разжатия тензоров, которые полезны для управления несоответствиями формы в машинном обучении и глубоком обучении.

PyTorch for Deep Learning & Machine Learning – Full Course
PyTorch for Deep Learning & Machine Learning – Full Course
  • 2022.10.06
  • www.youtube.com
Learn PyTorch for deep learning in this comprehensive course for beginners. PyTorch is a machine learning framework written in Python.✏️ Daniel Bourke develo...
 

PyTorch для глубокого обучения и машинного обучения — полный курс (описание частей 4-9)


PyTorch для глубокого обучения и машинного обучения — полный курс


Часть 4

  • 03:00:00 В этом разделе инструктор объясняет различные методы манипулирования тензорами в PyTorch, такие как изменение формы, просмотр, наложение, сжатие, разжатие и перестановка. Reshape изменяет форму входного тензора, view возвращает вид тензора с другой формой, stacking объединяет несколько тензоров вместе по вертикали или горизонтали, сжатие удаляет все измерения, равные 1, а unsqueeze добавляет новое измерение с размером из 1. Наконец, перестановка меняет местами размеры тензора. Преподаватель предоставляет примеры кода для демонстрации каждого из этих методов и подчеркивает важность манипулирования тензорными формами в машинном и глубоком обучении.

  • 03:05:00 В этом разделе в видеоруководстве рассказывается, как изменять форму и просматривать тензоры PyTorch. Изменение формы требует совместимости с исходным размером и может быть выполнено с помощью функций «изменить форму» или «просмотр». Важно отметить, что «представление» использует ту же память, что и исходный тензор. Кроме того, функция «стек» объединяет тензоры по новому измерению, а размерность по умолчанию равна нулю. Пользователям рекомендуется чаще сохранять свою работу, поскольку при использовании Google CoLab или любых других форм Jupyter Notebook могут возникать ошибки.

  • 03:10:00 В этом разделе инструктор знакомит с понятиями сжатия и разжатия в PyTorch. Чтобы попрактиковаться в использовании этих методов, зрителю рекомендуется просмотреть документацию и попробовать их. Преподаватель демонстрирует метод сжатия, при котором из целевого тензора удаляются отдельные измерения. Чтобы визуализировать изменения, внесенные в тензоры во время этих операций, инструктор предлагает распечатать каждое изменение и проверить размер тензора. Кроме того, инструктор подчеркивает важность повторения этих понятий несколько раз, чтобы познакомиться с ними.

  • 03:15:00 В этом разделе инструктор объясняет концепцию добавления и удаления измерений в тензорах PyTorch с использованием методов «сжать» и «разжать». Он демонстрирует действие этих методов, добавляя и удаляя измерения из тензоров и печатая их формы. Преподаватель также знакомит с методом «перестановки», который переставляет размеры целевого тензора в указанном порядке. Он приводит пример того, как перестановку можно использовать с изображениями, и обсуждает важность преобразования данных в числовые представления в глубоком обучении.

  • 03:20:00 В этом разделе инструктор рассказывает о перестановке тензора путем изменения его размеров с помощью метода permute() в PyTorch. Приведенный пример представляет собой тензор изображения, в котором размерность цветового канала перемещена в первый индекс. Преподаватель объясняет, что переставленный тензор — это просто представление и использует ту же память, что и исходный тензор, что демонстрируется путем обновления значения в исходном тензоре и просмотра того же значения, скопированного в переставленный тензор. В этом разделе также рассматривается индексирование в PyTorch и его сходство с индексированием в NumPy, другой популярной библиотеке для числовых вычислений.

  • 03:25:00 В этом разделе инструктор рассказывает, как импортировать факел, и показывает, как создать небольшой диапазон и изменить его форму совместимым образом. Затем учебник углубляется в индексирование с помощью тензоров и показывает, как индексировать первое и второе измерения. В учебнике также раскрывается функциональность использования точки с запятой для выбора всего целевого измерения. Раздел заканчивается задачей изменить код, чтобы получить число девять.

  • 03:30:00 В этом разделе инструктор демонстрирует, как выбрать определенные значения из тензора с помощью PyTorch. Примеры включают выбор элементов из разных измерений тензора путем указания соответствующих значений индекса. Затем инструктор предлагает зрителям попытаться проиндексировать тензор, чтобы вернуть определенные значения. В следующем разделе инструктор объясняет, как тензоры PyTorch взаимодействуют с популярной научной библиотекой численных вычислений NumPy. Поскольку этого требует PyTorch, в него встроена функциональность, позволяющая легко переключаться между массивами NumPy и тензорами PyTorch.

  • 03:35:00 В этом разделе видео обсуждается, как преобразовать данные из NumPy в тензоры PyTorch и наоборот. Чтобы перейти от NumPy к PyTorch, для массива NumPy используется метод torch.fromNumPy, но следует отметить, что тип данных по умолчанию для PyTorch — float32, а для NumPy — float64. Поэтому может возникнуть необходимость указать тип данных при преобразовании. Также важно отметить, что при изменении значения исходного массива NumPy он не меняет значение тензора PyTorch, если он был создан методом fromNumPy. Чтобы перейти от PyTorch к NumPy, можно использовать метод torch.tensor.numpy().

  • 03:40:00 В этом разделе видео обсуждается, как переключаться между PyTorch и NumPy, а также типы данных по умолчанию для каждого из них. Тип данных PyTorch по умолчанию — float32, а тип данных NumPy по умолчанию — float64, и если вы измените тип данных в PyTorch, тензор NumPy будет отражать исходный тип данных. Видео также охватывает концепцию воспроизводимости в нейронных сетях и использование случайных начальных значений для уменьшения случайности в экспериментах. Установив случайное начальное число, случайность приукрашивается, и компьютер становится более детерминированным, что позволяет получать более воспроизводимые результаты.

  • 03:45:00 В этом разделе инструктор знакомит с понятием случайности и воспроизводимости в PyTorch. Два случайных тензора создаются с помощью функции torch.rand, их значения выводятся на печать и сравниваются. Преподаватель объясняет концепцию случайного начального числа, которое используется для создания воспроизводимой случайности в PyTorch. В качестве случайного начального значения можно установить числовое значение по выбору, например 42, а затем использовать в различных случайных функциях для получения ароматизированной случайности. Важно отметить, что если используется функция torch.manual_seed, она обычно работает только для одного блока кода в записной книжке.

  • 03:50:00 В этом разделе видео подчеркивается важность воспроизводимости в машинном и глубоком обучении, а также объясняется концепция случайного начального числа. Ручное начальное значение — это способ разнообразить случайность случайных тензоров PyTorch и сделать их воспроизводимыми. Документ о воспроизводимости PyTorch рекомендуется как отличный ресурс для изучения воспроизводимости. В этом разделе также обсуждается запуск объектов PyTorch на графических процессорах для более быстрых вычислений и получение доступа к графическим процессорам, в том числе использование Google Colab для бесплатного графического процессора, Google Colab Pro для более быстрых графических процессоров и более длительного времени работы и Google Colab Pro Plus для получения дополнительных преимуществ.

  • 03:55:00 В этом разделе инструктор объясняет различные способы доступа к графическим процессорам для задач глубокого и машинного обучения. Варианты: использовать Google Colab, перейти на Colab Pro, использовать собственный графический процессор или использовать службы облачных вычислений, такие как GCP, AWS или Azure. Преподаватель рекомендует начать с Google Colab, который прост в использовании и бесплатен. Однако, если вам нужно больше ресурсов или вы хотите провести более масштабные эксперименты, вы можете обновить или использовать свой собственный графический процессор или облачные вычисления. Инструктор также покажет, как получить GPU в Google Colab, изменив тип среды выполнения и проверив доступ к GPU с помощью PyTorch.

Часть 5

  • 04:00:00 В этом разделе инструктор объясняет, как проверить доступ к графическому процессору с помощью PyTorch и настроить код, не зависящий от устройства. С помощью команды «torch.cuda.is_available()» пользователь может проверить, может ли PyTorch получить доступ к графическому процессору. Кроме того, для запуска PyTorch переменная устройства должна быть настроена на использование графического процессора, если он доступен, или по умолчанию на ЦП. Также важно настроить независимый от устройства код, который позволяет PyTorch работать либо на ЦП, либо на графическом процессоре, в зависимости от того, что доступно, путем настройки «args.device=torch.device('cuda' if torch.cuda.is_available() else 'cpu')" в сценариях Python. Преподаватель подчеркивает, что настройка кода, не зависящего от устройства, является лучшей практикой при работе с PyTorch, поскольку она позволяет запускать код на разных устройствах.

  • 04:05:00 В этом разделе инструктор обсуждает, как использование графических процессоров может привести к более быстрым вычислениям и быть полезным для моделей машинного обучения, которые работают с числовыми вычислениями, такими как тензорные операции. Чтобы использовать графический процессор, необходимо передать ему тензоры и модели, и PyTorch позволяет легко сделать это с помощью метода «to». Код можно сделать независимым от устройства, чтобы он работал независимо от того, доступен графический процессор или нет. Точно так же тензоры также могут быть перемещены обратно в ЦП, если это необходимо, и для этого можно использовать метод `cpu()`. Преподаватель подчеркивает, что проблемы с устройствами являются третьей наиболее распространенной ошибкой в PyTorch, и что рекомендуется помнить о типе устройства, на котором хранятся тензоры и модели.

  • 04:10:00 В этом разделе инструктор рассказывает об основах работы с PyTorch на графическом процессоре. Он объясняет, как переключаться между CPU и GPU и как избежать ошибок при использовании вычислений NumPy с тензорами на GPU. Он также призывает учащихся практиковать то, что они узнали, с помощью набора упражнений и дополнительной учебной программы, доступных на Learn.pytorch.io. Упражнения основаны на том, что было рассмотрено в предыдущих разделах, и учащимся рекомендуется использовать документацию PyTorch для их выполнения. Наконец, инструктор дает советы о том, как выполнить эти упражнения в Colab, настроив два экрана и импортировав факел.

  • 04:15:00 В этом разделе инструктор обсуждает упражнения и дополнительные учебные программы курса PyTorch. Упражнения основаны на коде и включают шаблоны для каждого из упражнений. Дополнительная учебная программа основана на чтении, и инструктор рекомендует потратить час на изучение учебника по основам PyTorch, быстрого старта и тензорных разделов, а также посмотреть «Что такое тензор?» видео. Инструктор также описывает рабочий процесс PyTorch, который включает в себя подготовку данных и преобразование их в тензоры, выбор или построение предварительно обученной модели, выбор функции потерь и ее оптимизацию, построение цикла обучения, подгонку модели, оценку модели, экспериментирование. и улучшение, и сохранение и перезагрузка обученной модели. Преподаватель предлагает учащимся следовать коду и документации, искать ресурсы, повторять попытку и задавать вопросы на форумах PyTorch.

  • 04:20:00 В этом разделе видео инструктор начинает с открытия новой записной книжки в Colab и называет ее «01 Рабочий процесс PyTorch». Он объясняет, что они будут сосредоточены на совместном кодировании и создании сквозного рабочего процесса PyTorch, который включает в себя подготовку и загрузку данных, построение модели машинного обучения в PyTorch, обучение модели, оценку модели и сохранение/загрузку модели. . Преподаватель также упоминает, что они будут использовать модуль nn в PyTorch, который содержит все строительные блоки PyTorch для нейронных сетей.

  • 04:25:00 В этом разделе инструктор обсуждает использование torch.nn в PyTorch, исследуя основные строительные блоки для вычислительных графов, которые используются в нейронных сетях. Объединение этих строительных блоков позволяет специалистам по обработке и анализу данных и инженерам по машинному обучению создавать различные типы нейронных сетей. Преподаватель подчеркивает важность первого шага рабочего процесса PyTorch, который заключается в подготовке и загрузке данных в числовое представление, чтобы модель могла изучить шаблоны. Тип числового представления, используемого для кодирования данных, зависит от типа данных. Второй шаг включает в себя создание нейронной сети для изучения шаблонов в числовом представлении, а затем использование изученных шаблонов для конкретных задач, таких как распознавание изображений или классификация спама.

  • 04:30:00 В этом разделе инструктор представляет игру, состоящую из двух частей по машинному обучению, которая включает преобразование данных в числовое представление и построение модели для поиска закономерностей в этом представлении. Затем инструктор создает известные данные, используя формулу линейной регрессии, чтобы продемонстрировать этот процесс. Вес и смещение формулы используются в качестве параметров, которые модель узнает, рассматривая различные примеры. Код на Python используется для создания диапазона чисел, присвоения переменной X значения и создания формулы Y, которая равняется весу, умноженному на X плюс смещение. Просматриваются длина и значение X и Y, а также отображаются первые десять значений X и Y.

  • 04:35:00 В этом разделе инструктор обсуждает важность разделения данных на обучающие и тестовые наборы в машинном обучении. Он использует аналогию с университетскими курсами и экзаменами, чтобы объяснить концепцию. Учебный набор сродни всем материалам курса, проверочный набор похож на тренировочный экзамен, а тестовый набор — на итоговый экзамен. Цель состоит в том, чтобы добиться обобщения, чтобы модель могла адаптироваться к невидимым данным. Преподаватель подчеркивает, что правильное разделение данных жизненно важно для создания точной модели.

  • 04:40:00 В этом разделе полного курса PyTorch инструктор обсуждает важность обобщения в моделях машинного обучения и три набора данных, обычно используемых при обучении и тестировании: наборы для обучения, проверки и тестирования. Он также объясняет распространенное процентное разделение, используемое для каждого из этих наборов, при этом обучающий набор обычно содержит 60–80% данных, а тестовый набор — 10–20%. Затем инструктор демонстрирует, как создать обучающий и тестовый набор, используя образец набора данных со значениями X и Y, используя индексирование для выбора соответствующего количества образцов для каждого разделения. Наконец, он объясняет, что, хотя набор проверки часто используется в более сложных наборах данных, наборы для обучения и тестирования используются чаще всего.

  • 04:45:00 В этом разделе инструктор подчеркивает важность визуализации данных, написав функцию под названием «прогнозы графика», которая будет использоваться для сравнения обучающих и тестовых данных. Функция принимает поезд X, поезд Y, тест X, тест Y и прогнозы в качестве параметров, а затем отображает данные обучения синим цветом, используя точечную диаграмму с библиотекой matplotlib. Затем данные тестирования отображаются зеленым цветом с использованием той же функции рассеяния. Функция также проверяет, есть ли какие-либо прогнозы, и, если да, строит их также с помощью функции рассеяния. Визуализация данных упрощает их понимание и интерпретацию.

  • 04:50:00 В этом разделе видео инструктор обсуждает процесс обучения и оценки моделей машинного обучения. Они объясняют, что цель состоит в том, чтобы обучить модель на обучающих данных, чтобы точно предсказать значения тестовых данных. Они демонстрируют это, используя простой линейный набор данных, где данные обучения показаны синим цветом, а данные тестирования — зеленым. Затем инструктор знакомит с концепцией линейной регрессии и подготавливает почву для следующего раздела, где будет построена модель PyTorch для линейной регрессии. Они также предоставляют некоторые советы по устранению неполадок для Google Colab.

  • 04:55:00 В этом разделе видео мы узнаем, как создать модель линейной регрессии, используя чистый PyTorch. Инструктор объясняет, что PyTorch построен на основе модуля nn.module, который похож на кирпичики Lego для моделей PyTorch. Почти все в PyTorch наследуется от nn.module, а модули могут содержать другие модули, что упрощает построение сложных нейронных сетей. Затем инструктор проведет нас через процесс создания конструктора с помощью функции инициализации, создания параметра веса с помощью nn.parameter и установки для него случайных параметров с помощью torch.rand. Преподаватель также объясняет, как установить require_grad и dtype.

Часть 6

  • 05:00:00 В этом разделе инструктор объясняет, как создать модель линейной регрессии с помощью PyTorch. Они начинают с создания класса модели и его инициализации с параметрами весов и смещения, которые автоматически добавляются в список параметров при назначении атрибуту модуля. Затем они создают прямой метод для определения вычислений в модели, основанной на формуле линейной регрессии. Целью модели является обновление случайных параметров для представления шаблона обучающих данных посредством градиентного спуска, что является предпосылкой машинного обучения.

  • 05:05:00 В этом разделе инструктор обсуждает процесс настройки случайных значений для лучшего представления желаемых значений веса и смещения в данных, который выполняется с использованием двух основных алгоритмов: градиентного спуска и обратного распространения. Использование «требует градации равно истинному» объясняется тем, что отслеживание градиентов посредством вычислений, выполненных с использованием модели, подталкивает алгоритм в правильном направлении. Подчеркивается важность объектно-ориентированного программирования и роль PyTorch в реализации этих алгоритмов, а также предлагаются дополнительные ресурсы, помогающие лучше понять код. Преподаватель также подчеркивает тот факт, что, хотя текущая модель имеет дело с простыми наборами данных с известными параметрами, более сложные наборы данных часто имеют параметры, определенные для нас модулями из nn.

  • 05:10:00 В этом разделе инструктор объясняет основные выводы из создания первой модели PyTorch. Каждая модель в PyTorch наследуется от nn.modgable и должна переопределять прямой метод, чтобы определять вычисления, происходящие внутри модели. Кроме того, когда модель обучается, она обновляет свои веса и значения смещения с помощью градиентного спуска и обратного распространения с использованием модуля torch.auto grad. Преподаватель рекомендует просмотреть два видео, ссылки на которые есть в расшифровке, чтобы полностью понять эту концепцию. Кроме того, инструктор знакомит с некоторыми основами построения моделей PyTorch, такими как модуль torch.nn, который содержит все стандартные блоки, необходимые для нейронных сетей.

  • 05:15:00 В этом разделе инструктор объясняет основные модули PyTorch, включая torch.nn, torch.nn.module, torch.optim и torch.utils.dataset. torch.nn.module является базовым классом для всех модулей нейронной сети и требует перезаписи прямого метода, который определяет, что происходит в прямом вычислении. Torch.optim содержит алгоритмы оптимизации значений модели, которые начинаются со случайных значений и корректируются для лучшего представления идеальных значений. Преподаватель также упоминает шпаргалку PyTorch как полезный ресурс для дальнейшего изучения библиотеки.

  • 05:20:00 В этом разделе инструктор добавляет немного цвета и кода в рабочий процесс PyTorch и охватывает важные модули PyTorch, используемые для создания наборов данных, построения и обучения моделей, оптимизации параметров модели, оценки модели и улучшения посредством экспериментов. Затем инструктор показывает, как проверить содержимое модели PyTorch, создав экземпляр модели линейной регрессии и используя точечные параметры для просмотра тензора значений. Преподаватель также задает случайное начальное значение для создания параметров с согласованными значениями.

  • 05:25:00 , мы узнали о том, как модели глубокого обучения инициализируются со случайными значениями для весов и параметров смещения. Мы также узнали о важности использования случайных начальных значений для воспроизводимости. Фундаментальная предпосылка глубокого обучения состоит в том, чтобы настроить эти случайные значения как можно ближе к идеальным значениям с помощью градиентного спуска и обратного распространения с использованием обучающих данных. В следующем разделе видео будет рассказано о том, как делать прогнозы со случайными значениями параметров модели.

  • 05:30:00 В этом разделе видео объясняет процесс тестирования прогнозирующей способности модели PyTorch. Прямой метод модели принимает входные данные X и пропускает их через модель, чтобы делать прогнозы. Видео демонстрирует, как проверить прогностическую способность модели, введя тест X, состоящий из 10 переменных, и наблюдая за выходом модели Y пред. В видео также рассматривается распространенная ошибка, которая может возникнуть при создании модели PyTorch, и предлагается ее исправление.

  • 05:35:00 В этом разделе мы видим прогнозы модели путем запуска тестовых данных с использованием метода Форда, который был определен ранее. Предсказания кажутся поразительно далекими от идеальных предсказаний. Код также представляет режим вывода факела, который представляет собой диспетчер контекста, используемый для отключения отслеживания градиента при прогнозировании, что позволяет PyTorch отслеживать меньше данных и быстрее делать прогнозы. Хотя torch no grad не может сделать что-то подобное, режим логического вывода имеет некоторые преимущества по сравнению с отсутствием grad, как объясняется в документации PyTorch и ветке Twitter, представленной в видео. Таким образом, режим вывода в настоящее время является предпочтительным способом вывода.

  • 05:40:00 В этом разделе видео объясняет важность использования менеджера контекста torch.inference_mode при прогнозировании в PyTorch, поскольку он гарантирует, что модель находится в режиме вывода, а не в режиме обучения. В видео также подчеркивается, что инициализация модели со случайными параметрами может привести к снижению производительности, и предоставляются некоторые варианты инициализации, например использование нулевых значений или перенос параметров из другой модели. Однако основное внимание в видео уделяется обучению модели путем перехода от неизвестных параметров к известным параметрам с использованием функции потерь, которая измеряет, насколько плохи прогнозы модели. В видео отмечается, что термины «функция потерь», «функция стоимости» и «критерий» часто используются в машинном обучении как синонимы.

  • 05:45:00 В этом разделе инструктор знакомит с концепцией функции потерь, которая используется для измерения того, насколько ошибочны прогнозы модели по сравнению с идеальными выходными данными. Инструктор использует пример измерения расстояния между красными и зелеными точками, чтобы объяснить, как можно рассчитать функцию потерь. В видео также рассказывается о важности оптимизатора, который учитывает потери модели и корректирует ее параметры, такие как значения веса и смещения, для улучшения функции потерь. Раздел завершается объяснением того, что принципы функции потерь и оптимизатора остаются одинаковыми, независимо от того, имеют ли они дело с моделями с двумя параметрами или моделями с миллионами параметров, а также с моделями компьютерного зрения или простыми моделями, такими как те, которые предсказывают точки на прямой линии.

  • 05:50:00 В этом разделе курса PyTorch для глубокого обучения и машинного обучения инструктор объясняет важность использования оптимизатора для подталкивания параметров модели к значениям, которые снижают функцию потерь, чтобы повысить точность предсказания. PyTorch имеет встроенную функциональность для реализации функций потерь и оптимизаторов, а инструктор фокусируется на потерях L1, также известных как средняя абсолютная ошибка, которая измеряет абсолютную разницу между прогнозируемыми и фактическими значениями. Инструктор предоставляет красочный график, иллюстрирующий среднюю абсолютную ошибку, и показывает, как реализовать функцию потерь с помощью модуля PyTorch NN. Целью обучения модели будет минимизация расстояний между прогнозируемыми и фактическими значениями и, в свою очередь, минимизация общего значения средней абсолютной ошибки.

  • 05:55:00 В этом разделе инструктор обсуждает роль оптимизатора в машинном обучении, который работает в тандеме с функцией потерь для настройки параметров модели, таких как вес и смещение, для минимизации потерь. PyTorch имеет torch.optim, где доступны различные алгоритмы оптимизации, такие как Stochastic Gradient Descent (SGD) и Adam. Они оба случайным образом настраивают параметры модели, чтобы минимизировать потери, но это вопрос выбора наиболее подходящего для конкретной проблемы. Большинство выбирает SGD, который начинается со случайных корректировок, а затем продолжает корректировку в направлении, сводящем к минимуму потери, до тех пор, пока дальнейшие корректировки не могут быть сделаны. Оптимизатору требуются два аргумента, параметры, или параметры, которые оптимизатор должен оптимизировать, и скорость обучения (LR), наиболее важный гиперпараметр, который необходимо установить при оптимизации.

Часть 7

  • 06:00:00 В этом разделе инструктор объясняет, что такое параметры модели и гиперпараметры, а также их роль в процессе глубокого обучения. Параметры модели — это значения, которые устанавливает модель, а гиперпараметры — это значения, установленные специалистом по данным или инженером по машинному обучению. Скорость обучения — это гиперпараметр, и его значение определяет величину изменения параметров при оптимизации. Небольшая скорость обучения приводит к небольшим изменениям, а большая скорость обучения приводит к большим изменениям. Преподаватель также рассказывает о важности выбора подходящей функции потерь и оптимизатора для конкретной задачи. Наконец, инструктор переходит к объяснению процесса построения цикла обучения в PyTorch.

  • 06:05:00 В этом разделе инструктор обсуждает шаги, необходимые для создания цикла обучения и цикла тестирования в PyTorch. Первый шаг включает в себя многократное прохождение данных по циклу для улучшения прогнозов и минимизации потерь за счет прямого прохода по модели. Преподаватель объясняет, что прямой проход — это когда данные проходят через прямые функции модели, а потери рассчитываются путем сравнения прогнозов модели с метками истинности. Затем инструктор представляет оптимизатор и объясняет, что обратный проход вычисляет градиенты каждого параметра по отношению к потерям, позволяя оптимизатору настроить параметры модели для улучшения потерь посредством градиентного спуска. Инструктор подчеркивает, что PyTorch реализует обратное распространение и математику градиентного спуска, что упрощает изучение машинного обучения для людей с ограниченным математическим опытом.

  • 06:10:00 В этом разделе инструктор знакомит с концепцией градиентного спуска, которая используется для оптимизации параметров модели в машинном обучении. На примере холма инструктор объясняет, как модель должна двигаться в направлении, где склон менее крутой, чтобы достичь подножия холма, что представляет собой нулевые потери. Затем инструктор переходит к написанию некоторого кода для запуска градиентного спуска, который включает в себя установку количества эпох и перевод модели в режим обучения с использованием параметра «требуется град равно истинному». Инструктор также упоминает, что для моделей pytorch доступны разные режимы, и призывает зрителей экспериментировать с разными настройками.

  • 06:15:00 В этом разделе видео инструктор обсуждает реализацию прямого прохода для обучения модели PyTorch. Прямой проход включает в себя передачу данных через прямую функцию модели для создания прогнозов, которые затем сравниваются с фактическими значениями обучения с использованием функции потерь MAE. Также представлена функция optimizer.zero_grad(), которая устанавливает все градиенты в ноль перед вычислением потерь в обратном направлении и обновлением параметров модели с использованием градиентного спуска. Эти шаги имеют решающее значение для понимания того, как модель обучается, и будут дополнительно оптимизированы и функционированы в последующих разделах курса.

  • 06:20:00 В этом разделе инструктор проходит пять основных этапов цикла обучения в PyTorch, который включает в себя прямой проход, расчет потерь, обнуление градиентов оптимизатора, выполнение обратного распространения и пошаговое выполнение оптимизатора через градиентный спуск. . Преподаватель отмечает, что порядок этих шагов иногда может быть неоднозначным, но важно сохранить шаг оптимизатора после обратного распространения. Преподаватель также объясняет, почему градиенты оптимизатора необходимо обнулять на каждой итерации, чтобы предотвратить накопление в циклах. Инструктор предлагает попрактиковаться в написании учебного цикла, чтобы лучше понять эти шаги, и предлагает песню и дополнительные ресурсы для дальнейшего обучения.

  • 06:25:00 В этом разделе видео ведущий резюмирует этапы обучающего цикла в PyTorch, который включает прямой проход, вычисление значения потерь, обнуление градиентов оптимизатора и обратное распространение функции потерь. Цикл обучения помогает модели изучать шаблоны на обучающих данных, а цикл тестирования оценивает шаблоны на невидимых данных. Докладчик также объясняет, почему мы обнуляем градиенты оптимизатора, и вводит концепцию обратного распространения, которая вычисляет градиент функции потерь.

  • 06:30:00 В этом разделе инструктор объясняет концепцию градиентов и кривых функции потерь в глубоком обучении PyTorch. Установив «требуется градация» для параметров как true, PyTorch может отслеживать градиенты каждого параметра и создавать кривую функции потерь для всех из них. Целью обратного распространения и последующего градиентного спуска является вычисление самой низкой точки кривой, которая представляет минимальные потери. Преподаватель объясняет концепцию градиентов в машинном обучении и то, как градиентный спуск работает с точками шага. Оптимизируя нулевые потери градиента назад, оптимизируя шаг и требуя градиента, PyTorch выполняет большую часть этой работы за кулисами, автоматически отслеживая градиенты и находя нижнюю часть кривой.

  • 06:35:00 В этом разделе инструктор обсуждает оптимизатор и скорость обучения. Оптимизатор берет параметры модели и создает кривые для каждого параметра, используя механизм под названием torch autograd для автоматического вычисления градиента, чтобы приблизиться к нижней части кривой. Скорость обучения определяет, насколько сильно оптимизатор изменяет параметры на каждом шаге, при этом меньшие шаги предпринимаются по мере приближения к сходимости. Кроме того, инструктор затрагивает пять этапов обучения модели, включая инициализацию модели, определение оптимизатора, скорость обучения, расчет прямого прохода, обратное распространение и шаг оптимизатора. Наконец, инструктор упоминает, что этот цикл можно преобразовать в функцию, что помогает избежать повторения кодов.

  • 06:40:00 В этом разделе «PyTorch для глубокого обучения и машинного обучения — полный курс» инструктор подчеркивает важность написания цикла обучения в PyTorch, поскольку именно так модель изучает шаблоны и данные. Видео также предоставляет дополнительные ресурсы по обратному распространению и градиентному спуску для тех, кто интересуется математическим фоном. Преподаватель объясняет, что выбор функции потерь и оптимизатора будет специфичным для каждой проблемы, и рекомендует потери MAE и потери L1 для задач регрессии и двоичные кросс-энтропийные потери для задач классификации. Раздел заканчивается демонстрацией обучающего цикла с использованием модели только с двумя параметрами и одной эпохой.

  • 06:45:00 В этом разделе инструктор продолжает обучение модели машинного обучения с помощью PyTorch и показывает, как снижается функция потерь по мере обновления параметров модели с помощью градиентного спуска. Преподаватель подчеркивает, что более низкое значение потерь указывает на лучший прогресс модели и что небольшие различия в значениях из-за случайности в машинном обучении не должны вызывать беспокойства. Затем инструктор предлагает зрителю запустить код в течение 100 эпох и сделать прогнозы, чтобы увидеть, насколько низко они могут получить значение потерь. Наконец, инструктор обсуждает важность тестирования и дразнит следующее видео о написании тестового кода.

  • 06:50:00 В этом разделе инструктор обсуждает важность исследования и изучения новых тем с использованием внешних ресурсов, таких как Google, и документации. Они предлагают учащимся попробовать запустить обучающий код для 100 эпох и изучить значения веса и смещения, а также прогнозы. Затем инструктор объясняет код тестирования и назначение функции model.eval(), которая отключает в модели параметры, не нужные для тестирования, такие как отсева и слои пакетной нормы. Они также обсуждают назначение torch.no_grad() и то, как он отключает отслеживание градиента во время тестирования, поскольку на этом этапе не происходит обучения. Наконец, раздел завершается записью прямого прохода для модели в режиме тестирования.

  • 06:55:00 В этом разделе видео учит, как создавать тестовые прогнозы и вычислять потери при тестировании с использованием нулевой модели в PyTorch. Тестовые прогнозы делаются на тестовом наборе данных, который модель никогда раньше не видела, точно так же, как оценка знаний о материалах, которые они никогда раньше не видели. Видео объясняет, как важно не позволять модели видеть набор тестовых данных перед их оценкой, чтобы избежать плохих результатов. Код выводит потери и то, что происходит каждую 10-ю эпоху, в то время как модель обучается в течение 100 эпох, и видно, что потери уменьшаются с каждой эпохой. В видео также обсуждается понятие точности модели, которое может быть распечатано позже.

Часть 8

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

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

  • 07:10:00 В этом разделе инструктор объясняет, как преобразовать значения потерь из PyTorch в NumPy, чтобы отобразить их в Matplotlib. Он показывает, что их преобразование в NumPy необходимо, поскольку Matplotlib работает только с NumPy. Он также объясняет, как отслеживать кривые потерь при обучении и кривых потерь при тестировании, и упоминает, что если они близко совпадают в какой-то момент, это означает, что модель сходится, а потери приближаются к нулю, насколько это возможно. Затем инструктор проходит цикл тестирования и объясняет, что необходимо передать тестовые данные через модель, рассчитать значение потерь при тестировании и распечатать то, что происходит во время обучения, чтобы отслеживать значения того, что происходит. Наконец, он предлагает поместить все эти шаги в функцию и предоставляет неофициальную песню цикла оптимизации PyTorch, чтобы запомнить шаги.

  • 07:15:00 в этом разделе вы узнаете о трех основных методах сохранения и загрузки моделей в PyTorch. Первый метод, torch.save, позволяет сохранить объект PyTorch в формате pickle Python. Второй метод, torch.load, позволяет загрузить сохраненный объект PyTorch. И третий метод, torch.nn.module.loadStateDict, позволяет загрузить сохраненный словарь модели или сохранить словарь состояния, который мы рассмотрим в следующем видео. Эти методы имеют решающее значение для сохранения и повторного использования моделей, особенно при работе с большими моделями или при необходимости поделиться моделями с другими.

  • 07:20:00 В этом разделе инструктор объясняет концепцию словарей состояний и их важность в PyTorch. PyTorch хранит важные параметры модели в словаре, называемом словарем состояний, который содержит состояние модели, включая обучаемые параметры, такие как веса и смещения. Преподаватель демонстрирует, как можно сохранить и загрузить модель PyTorch, сохранив ее словарь состояний с помощью методов torch.save и torch.load. Более того, инструктор ставит перед пользователем дополнительную задачу: прочитать и понять плюсы и минусы сохранения всей модели, а не только словаря состояний. Наконец, инструктор делится кодом PyTorch для сохранения модели и создания папки с именем models.

  • 07:25:00 В этом разделе видео инструктор демонстрирует, как сохранить модель PyTorch, используя рекомендуемый метод сохранения словаря состояния. Модель получает имя, а путь создается с помощью библиотеки pathlib. Когда путь готов, диктофон состояния модели сохраняется с помощью функции torch.save(), где первый параметр — это объект, а второй — путь, по которому должна быть сохранена модель. Инструктор показывает, как команда LS используется для проверки того, сохранена ли модель в каталоге моделей. Видео также содержит руководство по загрузке сохраненной модели на локальный компьютер или Google Диск. Кроме того, инструктор предлагает зрителю бросить себе вызов, прочитав документацию и используя функцию torch.load(), чтобы узнать, как загрузить сохраненную модель.

  • 07:30:00 В этом разделе инструктор рассказывает о загрузке модели PyTorch и о том, как использовать метод точечной загрузки факела. Ранее сохраненный словарь параметров класса из модели будет загружен как колода состояний, и в этом разделе показано, как создать новый экземпляр класса модели линейной регрессии и загрузить в него сохраненную колоду состояний. Метод загрузки состояния модуля torch nn позволяет загрузить словарь состояний непосредственно в экземпляр модели, в то время как метод загрузки torch dot принимает F и передает ему путь сохранения модели, где сохраняется предыдущая колода состояний.

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

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

  • 07:45:00 В этом разделе инструктор демонстрирует, как создавать данные, используя формулу линейной регрессии y, равного весу, умноженному на признаки плюс смещение. Они объясняют, что принципы построения модели для оценки этих значений остаются прежними, и переходят к созданию функций x и y, которые будут использоваться для прогнозирования обучающих и тестовых значений. Они также разбивают данные на обучающие и тестовые наборы и строят данные для визуализации закономерностей в данных.

  • 07:50:00 В этом разделе инструктор знакомит с концепцией построения линейной модели PyTorch для заданных линейных фиктивных данных. Они создают подкласс nn.module для создания модели линейной регрессии и инициализируют параметры с помощью слоев. Слой nn.Linear принимает объекты в качестве входных и выходных данных и применяет линейное преобразование к входящим данным, используя ту же формулу, что и модель линейной регрессии. Входные и выходные формы модели зависят от данных, и инструктор подчеркивает, что на протяжении всего курса будут встречаться различные примеры входных и выходных функций.

  • 07:55:00 В этом разделе инструктор объясняет, как использовать линейный слой в PyTorch в качестве уже существующего слоя для создания модели. Линейный слой — это форма линейной регрессии: y равно x, транспонирование плюс b, в объектах, вне объектов. Создав подкласс nn.module, мы можем создать линейный слой и переопределить прямой метод для передачи данных через линейный слой, который выполняет предопределенные прямые вычисления. Сила PyTorch torch.nn заключается в том, что он создает параметры для нас за кулисами, и нам не нужно инициализировать их вручную. Кроме того, инструктор обсуждает различные названия линейного слоя, такие как линейное преобразование, зондирующий слой, полносвязный слой, плотный слой и интенсивный поток.

Часть 9

  • 08:00:00 В этом разделе инструктор обсуждает различные слои, доступные в torch.nn, в том числе сверточный, объединение, заполнение, нормализацию, рекуррентный, трансформирующий, линейный и выпадающий. PyTorch предоставляет готовые реализации этих слоев для общих задач глубокого обучения. Затем раздел переходит к обучению ранее построенной линейной модели PyTorch с использованием функций потерь и оптимизатора. Оптимизатор оптимизирует параметры веса и смещения модели, чтобы минимизировать функцию потерь, которая измеряет, насколько неверна модель. Для этой задачи инструктор настраивает функцию потерь L1 и оптимизатор SGD.

  • 08:05:00 В этом разделе видео инструктор обсуждает важность выбора подходящей скорости обучения для оптимизатора, поскольку слишком маленький или слишком большой шаг может негативно сказаться на производительности модели. Также объясняются шаги, связанные с написанием обучающего цикла, которые включают в себя выполнение прямого прохода, вычисление значения потерь, обнуление оптимизатора, выполнение обратного распространения и настройку весов и смещений. Кроме того, инструктор предлагает использовать torch.manual_seed() для обеспечения воспроизводимых результатов и предоставляет код для распечатки потерь при обучении и при тестировании каждые 10 эпох.

  • 08:10:00 В этом разделе курса PyTorch инструктор объясняет, как писать независимый от устройства код для данных, подчеркивая, что выполнение всех вычислений на одном устройстве имеет решающее значение для предотвращения ошибок. Модель и данные должны находиться на одном устройстве, которое может быть CPU или CUDA. Помещая обучающие и тестовые данные на целевое устройство с помощью X train и Y train, создается независимый от устройства код, который обеспечивает более точные результаты при обучении модели. Преподаватель также объясняет, как оценить модель с использованием декированного состояния, демонстрируя, что оцениваемые параметры близки к идеальному значению. Раздел заканчивается заданием для пользователей сделать и оценить прогнозы и нанести их на исходные данные.

  • 08:15:00 В этом разделе инструктор обсуждает важность перевода модели PyTorch в режим оценки и прогнозирования тестовых данных, которые модель никогда раньше не видела. Они вводят функцию прогнозирования графика для визуализации прогнозов модели, но сталкиваются с ошибкой типа при попытке преобразовать тензор типа устройства CUDA в NumPy, поскольку Matplotlib работает с NumPy, а не с PyTorch. Они решают эту ошибку, используя ЦП тензорных точек, чтобы сначала скопировать тензор в память хоста. Преподаватель также предлагает зрителям сохранять и загружать обученную модель с помощью модуля пути, что они демонстрируют, создавая каталог моделей и задавая путь к модели.

  • 08:20:00 В этом разделе инструктор объясняет, как сохранять и загружать модели PyTorch с помощью модуля path lib из Python. Сначала создается путь сохранения модели с расширением .PTH для PyTorch. Затем словарь состояния модели сохраняется с использованием метода сохранения факела. Преподаватель отмечает, что явный просмотр колоды состояний может оказаться нецелесообразным для моделей с большим количеством параметров. Чтобы загрузить сохраненную модель, словарь сохраненного состояния загружается в новый экземпляр модели линейной регрессии V2 с использованием метода декирования состояния загрузки и передачи пути к файлу сохраненного объекта PyTorch. Также обсуждается использование предварительно созданного линейного слоя PyTorch и его вызов в прямом методе.

  • 08:25:00 В этом разделе инструктор завершает проверку того, что загруженная модель имеет те же параметры, что и сохраненная модель, оценивая ее с помощью режима вывода факела. Затем они поздравляют пользователя с завершением рабочего процесса PyTorch от создания модели, ее обучения и сохранения до повторного использования. Затем инструктор отмечает, что пользователи могут найти упражнения и дополнительную учебную программу в книжной версии материалов курса на Learnpytorch.io. Они также предоставляют шаблоны тетрадей для упражнений, которые пронумерованы по разделам и могут быть найдены в репозитории GitHub для глубокого обучения PyTorch в разделе «Дополнительно и упражнения».

  • 08:30:00 В этом разделе инструктор предоставляет информацию о том, как выполнить упражнения по рабочему процессу и найти дополнительные ресурсы для курса PyTorch. Он подчеркивает важность самостоятельной проверки упражнений перед рассмотрением каких-либо примеров решений. Раздел завершается кратким описанием рабочего процесса PyTorch, который включает в себя подготовку данных, преобразование их в тензоры, построение или выбор модели, выбор функции потерь и оптимизатора, обучение модели, создание прогнозов и оценку модели. Следующий раздел посвящен классификации нейронных сетей с помощью PyTorch, что является одной из самых больших проблем в машинном обучении. Преподаватель предоставляет ресурсы для получения помощи на протяжении всего курса, включая страницу обсуждений курса GitHub и документацию PyTorch. Он также объясняет, что такое проблемы классификации, и приводит примеры, такие как предсказание того, является ли электронное письмо спамом или нет.

  • 08:35:00 В этом разделе курса PyTorch инструктор обсуждает различные типы задач классификации в глубоком обучении. Бинарная классификация — это когда есть только два варианта, типа спам или не спам. Классификация по нескольким классам — это когда есть более двух вариантов, например классификация изображения как суши, стейка или пиццы. Классификация с несколькими метками — это когда пример может иметь более одной метки, например, присвоение тегов статье в Википедии. Преподаватель приводит примеры из реальной жизни и подробно объясняет концепции. Он также различает бинарную и мультиклассовую классификацию с примерами классификации изображений собак и кошек в задаче бинарной классификации и классификации изображений разных животных в задаче мультиклассовой классификации.

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

  • 08:45:00 В этом разделе инструктор курса PyTorch для глубокого обучения и машинного обучения подробно описывает процесс числового кодирования и формат вывода. Входными данными для алгоритма машинного обучения являются численно закодированные изображения, которые имеют некоторые связанные выходные данные в виде вероятностей прогнозирования. Преподаватель отмечает, что чем ближе вероятность предсказания к единице, тем увереннее модель в своих выходных данных. Этот вывод получается при просмотре нескольких образцов, и можно настроить алгоритм и данные для улучшения этих прогнозов. Закодированные выходные данные должны быть изменены на метки, понятные человеку. Кроме того, инструктор обсуждает форму тензоров, включая размер пакета, цветовые каналы и высоту/ширину. Размер пакета 32 является обычной практикой, и форма может варьироваться в зависимости от решаемой проблемы.

  • 08:50:00 В этом разделе инструктор объясняет архитектуру модели классификации, которая представляет собой схему нейронной сети. Форма входного слоя определяется количеством признаков, которые должны быть закодированы как числовое представление, а выходной слой часто представляет собой вероятность предсказания для определенного класса. Существуют гиперпараметры, такие как количество скрытых слоев, количество нейронов на скрытый слой и форма выходного слоя, которые должны определяться пользователем. Инструктор также приводит примеры кода для создания слоев и нейронов с помощью PyTorch и отмечает, что формы будут различаться в зависимости от решаемой задачи.

  • 08:55:00 В этом разделе инструктор обсуждает компоненты задачи классификации, включая активацию скрытого слоя, активацию вывода, функцию потерь и оптимизатор, и приводит примеры каждого из них. Затем инструктор представляет проблему классификации нескольких классов и обсуждает, как можно построить архитектуру с несколькими выходными функциями. Наконец, инструктор переходит к написанию кода с использованием PyTorch в Google CoLab, напоминая аудитории, что весь код будет сохранен в репозитории GitHub. Преподаватель также подчеркивает важность начинать любую задачу машинного обучения с данных.
PyTorch for Deep Learning & Machine Learning – Full Course
PyTorch for Deep Learning & Machine Learning – Full Course
  • 2022.10.06
  • www.youtube.com
Learn PyTorch for deep learning in this comprehensive course for beginners. PyTorch is a machine learning framework written in Python.✏️ Daniel Bourke develo...
 

PyTorch для глубокого обучения и машинного обучения — полный курс (описание частей 10–15)


PyTorch для глубокого обучения и машинного обучения — полный курс


Часть 10

  • 09:00:00 В этом разделе видео посвящено созданию пользовательского набора данных с использованием библиотеки scikit-learn. Набор данных кругов импортируется, и создается 1000 выборок с некоторым добавленным шумом для случайности. Печатаются длины X и Y, указывающие на наличие 1000 образцов признаков и меток. Затем печатаются первые пять образцов X и Y, демонстрируя, что данные уже являются числовыми и имеют только два класса: нулевой и один для двоичной классификации. Затем создается кадр данных pandas с функциями, помеченными как X1 и X2, и случайная выборка обсуждается как потенциально полезный подход для изучения больших наборов данных.

  • 09:05:00 В этом разделе курса инструктор объясняет игрушечный набор данных, который будет использоваться для практики построения нейронной сети в PyTorch для двоичной классификации. Набор данных был сгенерирован с помощью scikit-learn и состоит из двух кругов разных цветов, представляющих два класса задачи бинарной классификации. Преподаватель показывает, как визуализация данных может помочь понять набор данных и подготовиться к построению нейронной сети. Также обсуждаются входные и выходные формы проблемы, а также то, как разделить набор данных на обучающие и тестовые наборы, которые будут рассмотрены в следующем разделе курса.

  • 09:10:00 В этом разделе инструктор обсуждает важность проверки форм ввода и вывода в машинном обучении, поскольку они являются распространенными источниками ошибок. Они демонстрируют, как просматривать входные и выходные формы набора данных с помощью массивов NumPy и преобразовывать данные в тензоры PyTorch. Процесс преобразования данных в тензоры и разделения их на обучающие и тестовые наборы является важным шагом в машинном обучении, даже для игрушечных наборов данных, подобных тому, что используется в этом примере. Инструктор покажет, как импортировать PyTorch и убедиться, что используется версия 1.10, как преобразовать массивы NumPy в тензоры PyTorch и как создать обучающие и тестовые наборы для данных.

  • 09:15:00 В этом разделе инструктор демонстрирует, как преобразовать данные из массивов NumPy в тип float 32 PyTorch по умолчанию с помощью команды «torch.float». Невыполнение этого требования может привести к ошибкам в дальнейшем. Затем инструктор показывает, как разделить данные на обучающие и тестовые наборы, используя случайное разделение, которое выполняется с помощью функции scikit-learn «train_test_split». В примере кода показан порядок, в котором функции и метки должны отображаться при их передаче в функцию. Преподаватель также объясняет использование параметра «test_size», где заданное значение представляет собой процент данных, которые будут использоваться в качестве тестовых данных, и параметра «random_state», который действует как случайное начальное число.

  • 09:20:00 В этом разделе видео рассказывается о разделении данных на наборы для обучения и тестирования с помощью библиотеки Scikit-learn в PyTorch. Ручное начальное число точек факела настроено так, чтобы убедиться, что используются одни и те же случайные разделения, гарантируя, что они такие же, как те, которые вы хотите сравнить. Используя длину набора поездов и тестов, видео объясняет, что у них есть 800 и 200 выборок соответственно, составляющих набор данных, с которым они будут работать. Следующим шагом является создание и выбор модели для классификации красных и синих точек. Для этого они настроили независимый код, включая устройство, чтобы оно работало на ускорителе, построили модель, определили потери и использовали PyTorch для создания цикла обучения и тестирования, который будет подробно рассмотрен в следующем разделе.

  • 09:25:00 В этом разделе мы узнаем, как настроить графический процессор для PyTorch и создать независимый от устройства код, чтобы гарантировать, что код будет работать на ЦП без каких-либо проблем. Затем мы переходим к построению модели путем создания подкласса nn.Module и следуем четырем основным шагам. Во-первых, мы создаем модель, которая является подклассом nn.Module. Во-вторых, мы создаем два линейных слоя, способных обрабатывать формы наших данных. В-третьих, мы определяем прямой метод, который описывает прямой проход модели. В-четвертых, мы создаем экземпляр класса нашей модели и отправляем его на целевое устройство. Мы узнаем, что наша модель будет использоваться для разделения красных и синих кругов с помощью нейронной сети.

  • 09:30:00 В этом разделе курса инструктор обсуждает, как определить слой нейронной сети, способный обрабатывать входные функции. Далее он объясняет, что количество функций, необходимых для каждого слоя, зависит от используемого набора данных. В этом примере, где X имеет две функции, первый слой определяется как «n-линейный» с n функциями, равными двум, а второй слой определяется с пятью функциями, чтобы помочь модели изучить больше закономерностей. Преподаватель также объясняет, что внутренние элементы второго слоя должны совпадать с внешними элементами предыдущего слоя, чтобы избежать ошибок несоответствия формы. Наконец, он определяет метод Форда, который описывает проход Форда и возвращает второй собственный уровень (который принимает первый собственный уровень и X в качестве входных данных).

  • 09:35:00 В этом разделе инструктор объясняет, как создать экземпляр класса модели и отправить его на целевое устройство. Он показывает, как создать простую многослойную нейронную сеть, которую он затем демонстрирует на игровой площадке TensorFlow, используя две входные функции и передавая их скрытому слою с пятью нейронами, который передает данные другому слою с одной выходной функцией. Он подгоняет сеть к каким-то данным, и потери при тестировании составляют примерно 50%, а значит, если бы модель просто угадывала случайным образом, она получила бы потери около 0,5, потому что классов всего два.

  • 09:40:00 В этом разделе видео инструктор использует инструмент доски под названием Fig Jam, чтобы визуально представить нейронную сеть для решения задачи бинарной классификации. Преподаватель объясняет, что в задаче бинарной классификации случайное угадывание даст вам около 50% точности. Нейронная сеть строится с использованием входных данных, скрытых единиц и выходного слоя, и инструктор подчеркивает, что форма слоев должна совпадать. Игровая площадка TensorFlow предлагается как интересный способ исследовать и испытать себя в построении нейронной сети на этом типе данных. Позже инструктор обсуждает репликацию ранее созданной нейронной сети с еще меньшим количеством кода с использованием двух линейных слоев, способных обрабатывать входные функции и масштабировать их для улучшения обучения сети.

  • 09:45:00 В этом разделе инструктор демонстрирует, как воспроизвести модель нейронной сети с помощью nn.Sequential в PyTorch. Используя nn.Sequential, код модели можно упростить, так как большая часть кода реализована за кулисами. Преподаватель объясняет, что использование nn.Sequential для простых и понятных операций может быть более эффективным, чем создание подклассов, как показано в предыдущем разделе видео. Однако создание подклассов позволяет выполнять более сложные операции, такие как построение более сложных прямых проходов. В этом разделе рассказывается о гибкости PyTorch и различных способах создания модели. Преподаватель также демонстрирует передачу данных через модель и анализ словаря состояний.

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

  • 09:55:00 В этом разделе видео объясняется, как выбрать функцию потерь и оптимизатор после создания модели для глубокого обучения. Тип функции потерь и необходимый оптимизатор обычно зависят от характера обрабатываемого набора данных. Для задач регрессии может подойти средняя абсолютная ошибка или среднеквадратическая ошибка. Между тем, для вопросов классификации можно выбрать бинарную кросс-энтропию или категориальную кросс-энтропию. В заключение видео отмечается, что функция потерь помогает измерить точность прогнозов модели.

Часть 11

  • 10:00:00 В этом разделе видеокурса инструктор представляет обзор различных функций потерь и оптимизаторов, обычно используемых в PyTorch для классификации нейронных сетей. Преподаватель объясняет бинарную перекрестную потерю энтропии, перекрестную потерю энтропии, среднюю абсолютную ошибку и среднеквадратичную ошибку, а также то, какие из них обычно используются для задач регрессии и классификации. Для задач двоичной классификации предоставленные примеры кода включают потерю BCE torch.nn с логитами и потерю BCE. Видео также охватывает концепцию логита в глубоком обучении и исследует два часто используемых оптимизатора, SGD и Adam. Преподаватель отмечает, что, хотя могут быть доступны и другие оптимизаторы, использование этих двух все же может дать хорошие результаты во многих задачах.

  • 10:05:00 В этом разделе видео спикер настраивает функцию потерь и оптимизатор в PyTorch для глубокого обучения и машинного обучения. Функция потерь называется BCE с потерей логитов, в которую встроена сигмовидная функция активации. Докладчик объясняет, что если кто-то хочет узнать больше о функциях активации в нейронных сетях, есть доступные онлайн-ресурсы. Выбранный оптимизатор представляет собой стохастический градиентный спуск (SGD) со скоростью обучения 0,1, а параметры установлены для обновления параметров модели в отношении потерь. Наконец, спикер создает оценочную метрику.

  • 10:10:00 В этом разделе инструктор обсуждает важность точности как показателя оценки и демонстрирует, как создать функцию точности с помощью pytorch. Функция точности сравнивает прогнозы с метками истинности и возвращает процент правильных прогнозов от общего числа выборок. Инструктор также предоставляет обзор шагов, связанных с циклом обучения pytorch, включая прямой проход, расчет потерь, нулевой градиент оптимизатора, обратное распространение и градиентный спуск. Шаги перечислены, и важность каждого шага обсуждается.

  • 10:15:00 В этом разделе инструктор объясняет, как перейти от необработанных логитов к прогнозируемым вероятностям и меткам прогнозов. Необработанные выходные данные модели называются логитами, которые можно преобразовать в вероятности предсказания, передав их функции активации, такой как сигмоид для бинарной классификации и softmax для многоклассовой классификации. Затем вероятности прогнозирования можно преобразовать в метки прогнозов, либо округлив их для бинарной классификации, либо взяв argmax для мультиклассовой классификации. Преподаватель также объясняет концепцию функции активации как нечто отдельное от слоя и показывает, как данные, проходящие через линейный слой, применяют линейное преобразование к входным данным через скалярное произведение и член смещения.

  • 10:20:00 В этом разделе видео инструктор объясняет, как использовать сигмовидную функцию активации, чтобы преобразовать необработанные выходные данные модели, называемые логитами, в вероятности прогнозирования, которые можно использовать для двоичной классификации. Преподаватель демонстрирует, как использовать сигмовидную функцию в логитах модели для создания предпроблем, которые затем можно передать в функцию округления точек факела для получения меток прогноза. Эти метки прогнозирования используются для определения того, к какому классу принадлежит вход, с использованием границы решения, часто устанавливаемой на 0,5. Преподаватель также подчеркивает важность выполнения этого шага на необработанных логитах, чтобы гарантировать, что вероятности прогноза находятся в том же формате, что и тестовые данные.

  • 10:25:00 В этом разделе видео обсуждается процесс превращения необработанных логитов из модели в вероятности предсказания с помощью функции активации, а затем их преобразования в метки предсказания. Шаги демонстрируются с помощью большого количества кода, где y-pred создается из зондов y-pred с использованием полного шага, включая прогнозы, от логитов до зондов pred и меток pred. Прогнозы модели сравниваются с тестовыми метками, и тот же формат создается с помощью функции сжатия. Следующим шагом является создание цикла обучения и тестирования, который включает в себя выполнение прямого прохода, расчет потерь и оптимизацию градиентов. Видео призывает зрителя попробовать сделать это самостоятельно, прежде чем переходить к следующему видео для получения дальнейших инструкций.

  • 10:30:00 В этом разделе инструктор вручную задает начальное число для воспроизводимости, в частности, случайное начальное число CUDA для операций на устройстве CUDA. Затем они переходят к размещению данных на целевом устройстве и построению цикла обучения и оценки. Преподаватель выделяет небольшую заметку в прямом проходе, где выводятся необработанные логиты, которые необходимо передать через torch.round и torch.sigmoid, чтобы преобразовать их в вероятности прогнозирования и метки. Наконец, они рассчитывают потери и точность, отмечая, что, хотя вычисление точности не является необходимым, может быть полезно визуализировать различные показатели во время обучения модели.

  • 10:35:00 В этом разделе видео обсуждается разница между потерей BCE и потерей BCE с логитами в PyTorch. BCE с потерей логитов ожидает логиты в качестве входных данных и объединяет сигмовидный слой и потерю BCE, что делает его более численно устойчивым. С другой стороны, потеря BCE ожидает вероятности прогнозирования в качестве входных данных, поэтому сигмоид факела необходимо вызывать для логитов, чтобы преобразовать их в вероятности. В видео также описываются шаги цикла оптимизации PyTorch, включая обнуление градиентов, выполнение обратного распространения и обновление параметров для уменьшения градиентов. Аналогично, при тестировании или создании прогнозов модель следует перевести в режим вывода, а тестовые логиты следует обработать, вызвав сигмовидную функцию для получения прогнозных вероятностей.

  • 10:40:00 В этом разделе инструктор обсуждает, как рассчитать потери при тестировании и точность для модели классификации. Чтобы рассчитать потери при тестировании, инструктор использует BCE с функцией потерь логитов и сравнивает ее с метками теста Y. Чтобы рассчитать точность теста, инструктор использует функцию точности для переменных Y true и Y pred. Порядок переменных для функции точности обратный, так как инструктор основывал ее на пакете метрик scikit-learn. Наконец, инструктор печатает номер эпохи, потери и точность при обучении, а также потери и точность при проверке на каждой 10-й эпохе. Инструктор призывает пользователей запускать этот гигантский код и исправлять любые возникающие ошибки.

  • 10:45:00 В этом разделе инструктор обсуждает результаты обучения модели из предыдущего раздела, которые не показали значительного улучшения точности. Инструктор предполагает, что идеальная точность модели должна быть равна 100, а значение потерь равно нулю. Однако точность текущей модели ниже 50%, что эквивалентно случайному угадыванию. Чтобы определить причину плохой работы, инструктор предлагает визуализировать прогнозы, сделанные моделью. Преподаватель импортирует функцию под названием «Граница решения графика» из файла вспомогательной функции для использования в этом процессе визуализации. Преподаватель также рекомендует ресурс madewithml.com для тех, кто хочет узнать больше об основах машинного обучения и операциях машинного обучения.

  • 10:50:00 В этом разделе инструктор объясняет, как загружать вспомогательные функции из учебного репозитория PyTorch программным способом с помощью модулей Python «pathlib» и «request». Инструктор показывает процесс проверки того, существует ли уже путь к вспомогательным функциям, и если он не существует, делается запрос на загрузку вспомогательной функции в виде файла с именем «helper_functions.py». Преподаватель демонстрирует успешный импорт методов «plot_predictions» и «plot_decision_boundary» из загруженной вспомогательной функции, которые будут использоваться позже в курсе. Наконец, инструктор выполняет тест для визуализации вспомогательной функции, используя функцию «plot_decision_boundary», которая успешно строит границу решения для обучающего набора.

  • 10:55:00 В этом разделе видео ведущий обсуждает ограничения линейной модели при разделении круговых данных прямыми линиями, как показано на визуализации границы решения модели. Решение для повышения точности модели состоит в том, чтобы добавить больше слоев, т. е. увеличить глубину нейронной сети, что дает больше шансов узнать закономерности в данных. Другие способы улучшить производительность модели включают увеличение объема обучающих данных и настройку гиперпараметров, таких как скорость обучения и размер пакета. Импорт и использование вспомогательных функций из внешних скриптов Python также упоминается как обычная практика.

Часть 12

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

  • 11:05:00 В этом разделе инструктор обсуждает, как улучшить модель с точки зрения модели. Он объясняет концепцию гиперпараметров, которые представляют собой значения, которые инженеры по машинному обучению и специалисты по данным могут изменить, чтобы улучшить результаты модели. Преподаватель демонстрирует, как изменить гиперпараметры модели, такие как количество скрытых единиц, количество слоев и количество эпох. Он также подчеркивает важность тестирования этих изменений по одному, чтобы определить, какое из них предлагает улучшение или ухудшение. Наконец, он объясняет разницу между параметрами и гиперпараметрами и почему важно проводить это различие.

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

  • 11:15:00 В этом разделе видео продолжается с предыдущего, в котором nn.module был подклассом для создания новой модели Circle Model V1 с большим количеством скрытых модулей и дополнительным слоем. Теперь следующим шагом в рабочем процессе является выбор функции потерь, и видео использует nn.BCEWithLogitsLoss(), как и раньше, с тем же оптимизатором, torch.optin.SGD(). Видео устанавливает скорость обучения на 0,1, количество эпох на 1000 и помещает данные на целевое устройство (ЦП или ГП). Видео также демонстрирует цикл по эпохам и пропускает обучающие данные через модель с новой архитектурой, вычисляет потери и обновляет параметры с помощью автограда факела.

  • 11:20:00 В этом разделе видео инструктор описывает этапы оценки точности и потерь модели. Функция потерь принимает предсказанные значения меток и сравнивает их с фактическими значениями меток. Функция точности используется для определения точности прогнозов модели. Оптимизатор используется для настройки параметров модели для лучшего представления данных. Тестирование выполняется путем вызова метода eval() модели и включения режима вывода. Логиты создаются путем передачи входных данных в модель, а затем функции torch.round() и torch.sigmoid() используются для преобразования их в прогнозы. Потери и точность рассчитываются для тестовых данных и распечатываются каждые 100 эпох во время обучения модели.

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

  • 11:30:00 В этом разделе инструктор создает набор данных, используя формулу линейной регрессии, чтобы увидеть, работает ли модель над какой-либо проблемой. Набор данных называется x-регрессией и содержит 100 выборок одного значения x для каждого значения y. Затем инструктор создает тренировочные и тестовые разбиения для данных и проверяет их длину. Наконец, функция прогнозирования графика из файла вспомогательных функций используется для визуальной проверки данных.

  • 11:35:00 В этом разделе ведущий обсуждает побочный проект, чтобы увидеть, может ли их модель соответствовать набору данных прямой линии, прежде чем пытаться подогнать набор данных непрямой линии. Они настраивают модель 1, чтобы она соответствовала новому набору данных, изменяя количество входных признаков с двух до одного, чтобы они соответствовали данным, сохраняя при этом 10 выходных признаков, чтобы дать модели как можно больше параметров. Они также создают модель 2, используя последовательную NN, которая пропускает данные через слои, и настраивают функцию потери и оптимизатора.

  • 11:40:00 В этом разделе инструктор представляет функцию потерь L1 для оптимизации задачи регрессии и использует оптимизатор SGD со скоростью обучения 0,1 для оптимизации параметров модели. После загрузки набора данных и размещения его на целевом устройстве модель обучается на тысячу эпох с циклом. В каждую эпоху выполняется прямой проход, вычисляются потери и обновляются параметры с использованием обратной и ступенчатой функций. Ход обучения распечатывается с указанием эпохи, потери и потери теста каждые 100 эпох. Потери уменьшаются по мере оптимизации модели.

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

  • 11:50:00 В этом разделе инструктор рассказывает о важности нелинейности в моделях машинного обучения и глубокого обучения. Сами по себе линейные функции не могут уловить сложные закономерности в данных, для точного представления которых требуются нелинейные функции, такие как кривые. Нейронные сети строятся путем объединения линейных функций с нелинейными функциями или активациями для моделирования сложных шаблонов данных. Инструктор намекает на предстоящие видеоролики, в которых будет рассказано о нелинейных активациях и их роли в моделях глубокого обучения.

  • 11:55:00 В этом разделе инструктор обсуждает силу нелинейности в машинном обучении и нейронных сетях. Нелинейность важна для машинного обучения, поскольку данные не всегда состоят из прямых линий. Затем инструктор демонстрирует, как создавать и отображать нелинейные данные с помощью функции создания кругов, а также преобразовывать данные во времена, а также обучать и тестировать разделение с помощью PyTorch и функции разделения тестов обучения из sklearn.

Часть 13

  • 12:00:00 В этом разделе инструктор курса PyTorch для глубокого обучения и машинного обучения знакомит с нелинейностью, которая является важным компонентом построения модели. Преподаватель предлагает зрителю найти конкретную нелинейную функцию в модуле TorchNN, которая может включать в себя объединяющие слои, заполняющие слои и функции активации для выполнения некоторой математической операции над входными данными. Приведены примеры нелинейных активаций, таких как n-точечная сигмовидная и n-точечная relu. Затем инструктор демонстрирует, как построить модель классификации, используя нелинейность с помощью PyTorch. Нелинейность означает, что график не является прямой линией, тогда как линейность означает обратное.

  • 12:05:00 В этом разделе курса PyTorch для глубокого обучения и машинного обучения инструктор знакомит с концепцией нелинейных данных и тем, как нейронные сети и модели машинного обучения могут работать с числами в сотнях измерений, облегчая им задачу. обрабатывать нелинейные данные. Новая нейронная сеть, круговая модель V2, создается с использованием классов с конструктором и несколькими слоями, выполняющими линейные операции с добавлением нелинейной функции активации под названием «relu». Эта функция обнуляет отрицательные входные параметры модели, оставляя положительные значения такими, какие они есть. Затем новая модель проходит через сигмовидную функцию для определения выходных данных.

  • 12:10:00 В этом разделе инструктор предлагает зрителям воссоздать модель нейронной сети на игровой площадке TensorFlow с двумя скрытыми слоями и пятью нейронами, используя функцию активации Rectified Linear Unit (ReLU) вместо линейной функции активации, которую они использовал. Инструктор объясняет, что функция активации ReLU — это популярная и эффективная нелинейная функция активации, необходимая для моделирования нелинейных данных, для чего и предназначены нейронные сети. Инструктор демонстрирует влияние изменения скорости обучения на потери при обучении и предлагает зрителям поэкспериментировать с различными скоростями обучения, чтобы наблюдать влияние на кривую потерь.

  • 12:15:00 В этом разделе инструктор обсуждает создание оптимизатора и функции потерь для задачи бинарной классификации с использованием PyTorch. Они устанавливают нелинейную функцию активации модели на ReLU и создают случайные начальные значения для CUDA. Затем они перебирают 1000 эпох для обучения модели и вычисляют потери и точность, используя BCE с логит-функцией потерь и функцией точности соответственно. Преподаватель предлагает подумать о том, как функционализировать учебный код, и предлагает, чтобы этот раздел был предназначен для накопления опыта и импульса к работе над реальными проектами PyTorch.

  • 12:20:00 В этом разделе инструктор объясняет процесс оптимизации модели методом обратного распространения ошибки в PyTorch. Перед выполнением обратного распространения градиенты оптимизатора обнуляются, чтобы он мог начать с чистого листа. После выполнения loss.backward() вызывается пошаговый метод оптимизатора для выполнения градиентного спуска по параметрам модели. Инструктор также демонстрирует, как отлаживать параметры модели, и объясняет, что функция активации ReLU не имеет параметров, что делает ее эффективной. Наконец, инструктор распечатывает потери, точность и эпоху обучения и тестирования, чтобы отслеживать ход обучения модели.

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

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

  • 12:35:00 В этом разделе инструктор объясняет, как создавать собственные функции активации в PyTorch, копируя популярные функции ReLU и Sigmoid. Инструктор сначала устанавливает тип данных поплавка 32 горелки и визуализирует прямую линию, построенную с использованием отрицательных значений от 10 до 10 по оси x. Затем создается функция ReLU с использованием функций torch.relu и nn.relu, принимая входной тензор и возвращая максимум нуля и x. Точно так же функция Sigmoid создается путем взятия входного тензора и возврата единицы, деленной на единицу, плюс экспонента отрицательного x. Преподаватель демонстрирует эффективность пользовательских функций ReLU и Sigmoid, рисуя их и сравнивая со встроенными функциями PyTorch.

  • 12:40:00 В этом разделе курса PyTorch инструктор объясняет важность сочетания линейных и нелинейных функций для поиска шаблонов в данных, чтобы соответствовать набору данных. Идея нейронных сетей состоит в том, чтобы сложить слои этих функций для создания модели. Хотя эти слои можно создавать с нуля, Pytorch предлагает предварительно созданные слои, которые были проверены на наличие ошибок и максимально быстро вычисляются за кулисами, а также позволяют использовать графические процессоры. Преподаватель также обсуждает разницу между бинарной классификацией, которая включает два возможных результата, и мультиклассовой классификацией, которая включает более двух возможных результатов. Наконец, раздел завершается повторением важности нелинейности в нейронных сетях, и инструктор ставит задачу улучшить свою предыдущую модель бинарной классификации.

  • 12:45:00 В этом разделе преподаватель курса знакомит с мультиклассовой классификацией и различиями между ней и бинарной классификацией. Функция активации softmax используется вместо сигмоидальной и кросс-энтропии вместо бинарной кросс-энтропии. Затем инструктор переходит к созданию набора данных из 20 мультиклассов, используя функцию make blobs из scikit-learn.datasets, чтобы сгенерировать четыре класса с двумя функциями в каждом. Центральное стандартное отклонение регулируется, чтобы придать кластерам некоторую случайность и немного их встряхнуть, тем самым немного усложнив модель.

  • 12:50:00 В этом разделе в выдержке из стенограммы обсуждается, как подготовить данные для модели классификации с несколькими классами с помощью PyTorch. Они превращают данные в тензоры и используют функцию разделения тестов поезда из scikit-learn, чтобы разделить данные на обучающие и тестовые наборы. Они также визуализируют данные с помощью plot.figure и устанавливают случайное начальное число для обеспечения воспроизводимости. После создания набора данных классификации нескольких классов они рассматривают необходимость нелинейности для разделения данных, а затем приступают к построению модели для данных.

  • 12:55:00 В этом разделе инструктор обсуждает, как настроить модель классификации с несколькими классами с помощью PyTorch. Он объясняет процесс шаг за шагом, начиная с определения формы входного слоя и определения количества нейронов на скрытый слой. Затем инструктор объясняет, как задать форму выходного слоя, для чего требуется один выходной объект на класс. Чтобы создать модель, инструктор создает класс под названием «модель BLOB-объектов», который наследуется от nn.module, и задает для модели некоторые параметры. Наконец, инструктор демонстрирует, как инициализировать мультиклассовую модель классификации с входными и выходными функциями.

Часть 14

  • 13:00:00 В этом разделе инструктор обсуждает создание линейной модели стека слоев с использованием метода PyTorch nn.Sequential. Для создания экземпляра модели осуществляется доступ к количеству входных объектов и количеству выходных классов для определения конфигурации скрытых слоев. Преподаватель настраивает последовательный стек слоев для передачи данных через каждый слой один за другим. Они также предоставляют инструкции по добавлению нелинейности в набор данных, а затем создают прямой метод, позволяющий входным данным последовательно проходить через указанные слои. Наконец, создается экземпляр модели больших двоичных объектов с соответствующим количеством входных и выходных функций.

  • 13:05:00 В этом разделе видео инструктор создает модель классификации с несколькими классами путем создания подкласса nn.Module и настраивает параметры конструктора класса для настройки входных и выходных функций. Они также объясняют, что параметр выходных объектов совпадает с количеством классов в данных. Чтобы создать функцию потерь для модели классификации с несколькими классами, инструктор ищет и находит потери перекрестной энтропии в модуле torch.nn, который вычисляет потери между входом и целью и полезен при обучении задаче классификации с классами C. Инструктор также объясняет, что параметр веса полезен при работе с несбалансированным тренировочным набором.

  • 13:10:00 В этом разделе инструктор обсуждает создание функции потерь и оптимизатора для многоклассовой классификации. Он рекомендует два распространенных оптимизатора, SGD и Adam, но для этого примера предпочитает использовать SGD. Затем он предлагает зрителям пройти вперед с моделью, созданной в предыдущем видео, и рассмотреть исходные результаты модели. Инструктор также напоминает зрителям, чтобы они обращали внимание на параметры устройства, так как может возникнуть ошибка времени выполнения, если тензоры не находятся на одном устройстве. Наконец, он переводит модель в оценочный режим и делает некоторые прогнозы.

  • 13:15:00 В этом разделе инструктор объясняет, как преобразовать выходные логиты модели в вероятности прогноза и метки прогноза для задач классификации с несколькими классами. Для этого функция softmax используется для преобразования логитов в вероятности предсказания, а затем предсказание с наибольшей вероятностью считается предсказанной меткой. Инструктор демонстрирует этот процесс с использованием кода PyTorch, а также отмечает, что сумма вероятностей для каждого образца всегда будет равна единице из-за характера функции softmax.

  • 13:20:00 В этом разделе инструктор объясняет, как перейти от необработанных выходных данных модели PyTorch для задачи классификации нескольких классов к прогнозированию вероятностей с помощью функции активации softmax, а затем к прогнозированию меток с помощью argmax вероятности предсказания. Этот процесс включает в себя преобразование необработанных выходных данных модели в логиты, использование функции softmax для получения вероятностей прогнозов и использование argmax этих вероятностей для получения меток прогнозов. Преподаватель отмечает, что, хотя текущие прогнозы являются случайными, поскольку модель еще не обучена, эти шаги будут использоваться в цикле обучения для обучения и оценки модели.

  • 13:25:00 В этом разделе инструктор начинает создание цикла обучения и тестирования для модели с несколькими классами. Во-первых, они настраивают ручные начальные значения, чтобы каждый раз пытаться получить один и тот же результат, но учтите, что это не гарантируется. Затем они устанавливают количество эпох равным 100 и помещают данные на целевое устройство. Цикл обработки данных начинается, и для каждой эпохи модель обучается с помощью прямого прохода и логитов, созданных из поезда x больших двоичных объектов. Выходные данные функции softmax Torch используются для расчета потерь с кросс-энтропийными потерями и точностью. Затем оптимизатор обнуляется, и выполняется обратное распространение до того, как оптимизатор пошаговый. Также представлен код для тестирования или вывода, который включает перевод модели в режим оценки.

  • 13:30:00 В этом разделе инструктор обсуждает выпадающие слои, отключение нормы совпадения и режим логического вывода для более быстрого прогнозирования. Они объясняют, что во время обучения выпадающие слои случайным образом выбрасывают некоторые нейроны, чтобы избежать переобучения. Преподаватель также демонстрирует, как вычислять логиты и точность тестов, передавая метки потерь и тестов за кулисами. Затем они обсуждают надоедливую проблему с типом данных, вызвавшую ошибку времени выполнения, и способы ее решения. Преподаватель подчеркивает, что код устранения неполадок является важной частью машинного обучения, и для выявления и устранения ошибок требуется время.

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

  • 13:40:00 В этом разделе инструктор обсуждает, как оценивать обученную модель классификации с несколькими классами, делая прогнозы и оценивая их. Преподаватель объясняет, что прогнозы делаются после перевода модели в режим оценки, прохождения тестовых данных и получения в результате необработанных логитов. Следующим шагом является преобразование логитов в вероятности прогнозов путем вызова torch.softmax для логитов. Затем метки прогнозов получаются путем вызова torch.argmax для вероятностей прогнозов. Преподаватель подчеркивает важность визуализации прогнозов путем их построения и сравнения с фактическими данными.

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

  • 13:50:00 В этом разделе инструктор обсуждает различные методы оценки классификации, включая правильность, точность, полноту, оценку F1, матрицу путаницы и отчет о классификации. Преподаватель объясняет, что, хотя точность является метрикой по умолчанию для задач классификации, она может быть не лучшей для несбалансированных наборов данных. Для несбалансированных наборов данных следует использовать точность и полноту. Точность определяется истинно положительным результатом над истинно положительным плюс ложноположительным, в то время как отзыв определяется истинно положительным над истинно положительным плюс ложноотрицательным. Преподаватель также отмечает компромисс между точностью и отзывом, когда увеличение одного показателя приводит к снижению другого. Также обсуждается использование torchmetrics и библиотек scikit-learn для метрик классификации.

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

Часть 15

  • 14:00:00 В этом разделе инструктор советует зрителям, где можно получить помощь по коду компьютерного зрения PyTorch, в том числе следовать коду, использовать функцию строки документа Google Colab, искать код в Stack Overflow или в документации PyTorch, а также задавать вопросы на вкладке «Обсуждения» репозитория глубокого обучения PyTorch. В этом разделе также рассматриваются примеры проблем компьютерного зрения, таких как задачи бинарной или многоклассовой классификации, когда модель машинного обучения изучает шаблоны из разных примеров изображений, чтобы определить, является ли изображение стейком или пиццей, или классифицировать изображения по нескольким категориям. .

  • 14:05:00 В этом разделе спикер обсуждает различные приложения компьютерного зрения с использованием машинного обучения, такие как многоклассовая классификация проблем с изображениями, обнаружение объектов и сегментация изображений. Спикер приводит пример Nutrify, который использует машинное обучение для классификации до 100 различных продуктов из загруженного изображения. Спикер также обсуждает, как Tesla использует компьютерное зрение для планирования движения своих беспилотных автомобилей с использованием трехмерного векторного пространства и машинного обучения. Спикер отмечает, что Tesla использует PyTorch, тот же код, который преподается в курсе.

  • 14:10:00 В этом разделе видео инструктор обсуждает использование PyTorch для создания модели компьютерного зрения для многоклассовой классификации изображений. На примере Nutrify, технологии распознавания фотографий продуктов питания, инструктор объясняет типичные входные и выходные данные для задачи компьютерного зрения. Входные данные включают тензор, представляющий высоту, ширину и цветовые каналы изображения. Преподаватель также упоминает, что существующие алгоритмы могут уже существовать для популярных задач компьютерного зрения, но при необходимости их можно создать. Желаемый результат для примера Nutrify — три результата, по одному для каждого класса продуктов питания.

  • 14:15:00 В этом разделе видео объясняется, как модели машинного обучения можно использовать для классификации изображений с использованием PyTorch и сверточных нейронных сетей (CNN) для численного представления информации и обучения модели распознаванию шаблонов в данных. В приведенном примере прогнозируются типы еды на изображении, такие как суши, стейк и пицца, с использованием PyTorch для кодирования информации и CNN для распознавания шаблонов на изображениях. В видео подчеркивается, что входные и выходные формы будут различаться в зависимости от решаемой проблемы и что CNN обычно являются лучшим выбором для данных изображения, хотя можно использовать и другие модели. Наконец, видео знакомит с проблемой, связанной с изображениями предметов моды в градациях серого, которые будут использоваться для дальнейшей демонстрации тех же принципов, изученных в этом разделе.

  • 14:20:00 В этом разделе инструктор обсуждает представление данных изображения в PyTorch и других библиотеках глубокого обучения. Эти библиотеки часто ожидают, что цветовые каналы будут последними, но PyTorch по умолчанию сначала представляет данные изображения с помощью цветовых каналов. Видео объясняет важность согласования входных и выходных форм модели для данной проблемы. Преподаватель предоставляет обзор рабочего процесса PyTorch для построения моделей, включая подготовку данных с помощью преобразований и загрузчиков данных, построение или выбор предварительно обученной модели, выбор оптимизатора и функции потерь, оценку модели с использованием метрик и эксперименты по улучшению. модель. В следующем разделе обсуждается архитектура сверточной нейронной сети (CNN).

  • 14:25:00 В этом разделе инструктор обсуждает архитектуру типичной сверточной нейронной сети (CNN). Входные данные проходят через различные уровни, в том числе сверточный, активационный и объединяющий, пока не преобразуются в выходную форму, которую можно преобразовать в имена классов. Преподаватель подчеркивает, что существует почти неограниченное количество способов укладки CNN, и демонстрирует один из способов сделать это с помощью слайдов. Однако лучший способ научиться — написать код, и инструктор направляет пользователей к блокноту Google Colab, где они могут попрактиковаться в построении CNN с использованием PyTorch и библиотеки TorchVision. Преподаватель также предоставляет дополнительные ресурсы, в том числе справочную записную книжку и раздел компьютерного зрения PyTorch на сайте LearnPyTorch.io.

  • 14:30:00 В этом разделе видео инструктор знакомит с различными библиотеками PyTorch для разных доменов, подчеркивая сильные стороны PyTorch в компьютерном зрении. Основной библиотекой для компьютерного зрения является факельное зрение, которое содержит наборы данных, предварительно обученные модели для компьютерного зрения и преобразования для манипулирования данными зрения в числа, используемые моделями машинного обучения. Преподаватель демонстрирует импорт PyTorch, NN и torch vision, а также проходит через модуль преобразований, который содержит общие преобразования изображений и может обучаться вместе с помощью компоновки. Функция to_tensor представлена в качестве основного преобразования для преобразования данных изображения в тензорный формат.

  • 14:35:00 В этом разделе курса PyTorch для глубокого обучения и машинного обучения инструктор рассказывает об основных библиотеках компьютерного зрения в PyTorch, включая TorchVision, модули, основанные на TorchVision, и TorchUtils.data.dataset, который является базовым набором данных. класс для PyTorch. Преподаватель также обсуждает важность использования Matplotlib для визуализации и необходимость преобразования изображений в тензоры для использования с моделями. Затем инструктор представляет набор данных FashionMNIST, основанный на исходной базе данных MNIST и содержащий изображения предметов одежды в градациях серого. Этот набор данных будет использоваться для демонстрации методов компьютерного зрения. Преподаватель объясняет, что, хотя серьезные исследователи машинного обучения считают, что MNIST используется слишком часто и не соответствует современным задачам компьютерного зрения, FashionMNIST является полезным набором данных для начала работы.

  • 14:40:00 В этом разделе инструктор обсуждает, как загружать и использовать наборы данных из библиотеки TorchVision. Они упоминают различные наборы данных классификации изображений, такие как Caltech101, CIFAR-100 и CIFAR-10, и способы их загрузки с помощью модуля torchvision.datasets. Затем инструктор демонстрирует, как загружать и использовать набор данных Fashion-MNIST, объясняя различные параметры и преобразования, которые можно применить к набору данных. Они также предоставляют пример кода для загрузки наборов данных для обучения и тестирования.

  • 14:45:00 В этом разделе инструктор объясняет, как использовать наборы данных torchvision.datasets PyTorch для загрузки примеров наборов данных компьютерного зрения, в частности набора данных FashionMNIST. Мы можем хранить данные в переменной с именем «данные» и использовать torchvision.transforms для преобразования данных изображения в тензоры. Преподаватель также демонстрирует, как проверить длину наборов данных для обучения и тестирования, просмотреть изображение и метку обучающего примера и получить дополнительную информацию об именах классов с помощью таких атрибутов, как «.classes» и «.class_to_idx». Наконец, они объясняют, что метка не имеет формы, потому что это всего лишь целое число.

  • 14:50:00 В этом разделе инструктор обсуждает входные и выходные формы набора данных Fashion MNIST, который состоит из изображений различных типов одежды в градациях серого. Входная форма изображений имеет формат NCHW, где для размера пакета установлено значение «нет», а для выходной формы — 10. Чтобы лучше понять данные, инструктор использует Matplotlib для визуализации изображения и его формы, но сталкивается с ошибка, потому что формат данных не соответствует ожидаемому формату. В этом разделе подчеркивается важность понимания входных и выходных форм и форматирования при работе с моделями машинного обучения.

  • 14:55:00 В этом разделе видео рассказывается, как строить и визуализировать данные изображения с помощью PyTorch и Matplotlib. Преподаватель демонстрирует, как построить одно изображение и удалить лишние размеры с помощью image.squeeze(). Затем они строят набор из 16 случайных изображений из набора данных, используя фиксированное случайное начальное число и функцию подграфика Matplotlib. Преподаватель также покажет, как использовать свойство или параметр cmap, чтобы изменить цветовую карту графика на оттенки серого. Затем они обсуждают важность визуального изучения набора данных для лучшего понимания данных и выявления потенциальных проблем, таких как сходство между свитерами и рубашками в наборе данных.

PyTorch for Deep Learning & Machine Learning – Full Course
PyTorch for Deep Learning & Machine Learning – Full Course
  • 2022.10.06
  • www.youtube.com
Learn PyTorch for deep learning in this comprehensive course for beginners. PyTorch is a machine learning framework written in Python.✏️ Daniel Bourke develo...
 

PyTorch для глубокого обучения и машинного обучения — полный курс (описание частей 16–21)


PyTorch для глубокого обучения и машинного обучения — полный курс


Часть 16

  • 15:00:00 В этом разделе инструктор объясняет важность подготовки данных для модели компьютерного зрения и то, как это сделать с помощью наборов данных PyTorch и загрузчиков данных. Он также обсуждает потенциальную потребность в нелинейности при моделировании 60 000 изображений одежды, которые нужно классифицировать по 10 различным классам, и то, как разделение набора данных на более мелкие пакеты может повысить эффективность вычислений. Цель этой подготовки — создать итерируемый объект Python, который может использоваться моделью для выявления закономерностей в данных.

  • 15:05:00 В этом разделе инструктор объясняет концепцию мини-пакетов и почему они обычно используются в глубоком обучении, начиная с разбиения набора данных из 60 000 изображений на пакеты по 32. Две основные причины использования мини-пакетов: сделать нейронную сеть более эффективной с точки зрения вычислений, избегая ограничений памяти графического процессора, и дать сети больше шансов обновить свои градиенты в эпоху. Данные группируются с помощью загрузчика данных из torch.utils.data путем передачи ему набора данных, определения размера пакета и установки в случайном порядке значения true, чтобы сеть не запоминала порядок данных. Преподаватель предоставляет код для создания загрузчиков обучающих и тестовых данных, которые будут использоваться в цикле обучения.

  • 15:10:00 В этом разделе подчеркивается важность мини-пакетов в задачах глубокого обучения, а также объясняется процесс создания загрузчиков обучающих и тестовых данных с использованием PyTorch. Гиперпараметру размера пакета присваивается значение 32, а наборы данных превращаются в итерируемые объекты. Наборы обучающих и тестовых данных загружаются с помощью DataLoader, при этом размер пакета устанавливается равным 32 для обучающих данных и тестовых данных, а для перемешивания установлено значение True для обучающих данных и False для тестовых данных. Исследуются атрибуты загрузчика данных поезда, такие как размер пакета и набор данных. Длина обоих загрузчиков обучающих и тестовых данных печатается для определения количества пакетов в каждом.

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

  • 15:20:00 В этом разделе видеоинструктор объясняет, как визуализировать изображения в пакете и превратить данные в загрузчики данных. Они также представили концепцию базовой модели, которая используется в качестве отправной точки и представляет собой простую модель, которую можно улучшить позже путем экспериментов. Затем инструктор представляет новый слой «выравнивание», который сглаживает непрерывный диапазон размеров в тензор для использования с последовательностью и показывает, как использовать его в качестве автономной модели.

  • 15:25:00 В этом разделе мы узнаем о выравнивании и о том, как оно используется для преобразования многомерных данных в единый вектор. После печати форм до и после сглаживания мы видим, что на выходе теперь получается одномерный вектор длиной 1784. Мы также видим, что этот процесс похож на кодирование информации в камерах Теслы для использования в моделях глубокого обучения. Затем мы видим, как сглаженные данные будут использоваться в линейном слое нашей модели PyTorch. Модель определяется с помощью nn.Sequential и включает плоский слой и два линейных слоя. Входные и выходные формы определены, и мы видим, что выходные объекты первого линейного слоя соответствуют входным объектам второго линейного слоя.

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

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

  • 15:40:00 В этом разделе видеоинструктор обсуждает концепцию использования вспомогательных функций в проектах машинного обучения Python. Он предоставляет пример кода для импорта сценария Python, содержащего общие функции, в том числе вспомогательную функцию, называемую точностью. Функция точности вычисляет показатель точности, и инструктор демонстрирует, что его можно успешно импортировать, проверяя строку документа. Он также объясняет, что использование вспомогательных функций в проектах Python может сэкономить много времени и усилий, особенно при работе с общими функциями, которые не нужно каждый раз переписывать. Наконец, он устанавливает функцию потерь, равную nn перекрестной энтропийной потере, и оптимизатор для обучения модели.

  • 15:45:00 В этом разделе инструктор настраивает оптимизатор для стохастического градиентного спуска и устанавливает относительно высокую скорость обучения 0,1 для простого набора данных из изображений 28x28. Затем они обсуждают важность отслеживания производительности модели, а также времени ее выполнения, поскольку между ними часто возникает компромисс. Далее они демонстрируют, как создать функцию для определения времени обучения модели с использованием модуля времени в Python и передачи torch.device для сравнения скорости работы модели на разных устройствах.

  • 15:50:00 В этом разделе инструктор обсуждает важность функций синхронизации для измерения времени обучения модели. Он демонстрирует, как создать таймер с помощью модуля «таймер» Python, и показывает, как включить его в процесс обучения. Инструктор также объясняет, как использовать функцию повторного подключения Google Colab, и дает напоминание об использовании загрузчиков данных для разделения данных на пакеты для обучения. Затем он описывает шаги, связанные с созданием цикла обучения и обучением модели на пакетах данных, подчеркивая необходимость циклического прохождения эпох и пакетов, выполнения шагов обучения и расчета потерь поезда на пакет. Наконец, он упоминает, что модель будет оцениваться на том же этапе, что и обучение.

  • 15:55:00 В этом разделе инструктор начинает фазу тестирования, импортируя TQDM для индикатора выполнения, который показывает, сколько эпох прошел цикл обучения. TQDM — это индикатор выполнения Python с низкими накладными расходами и программным обеспечением с открытым исходным кодом. Поскольку TQDM так популярен, он встроен в Google CoLab. Инструктор устанавливает начальное значение и запускает таймер, а затем устанавливает количество эпох равным трем, чтобы ускорить время обучения и провести больше экспериментов. Они создают цикл обучения и тестирования, создают экземпляр потери поезда и вычисляют потерю обучения за эпоху. Данные группируются, и добавляется цикл для циклического просмотра обучающих пакетных данных.

Часть 17

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

  • 16:05:00 В этом разделе инструктор просматривает код цикла тестирования в PyTorch, который включает в себя настройку переменной потери при тестировании и использование прямого прохода для оценки шаблонов, полученных на обучающих данных. Точность тестирования также рассчитывается с использованием загруженной функции точности, а значения потерь при тестировании и точности тестирования накапливаются для каждой партии, а затем делятся на количество партий, чтобы найти среднее значение за эпоху. Затем эти значения распечатываются для отслеживания хода работы модели.

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

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

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

  • 16:25:00 В этом разделе курса PyTorch для глубокого обучения и машинного обучения инструктор обсуждает, как настроить независимый от устройства код для обучения моделей как на ЦП, так и на ГП. Они демонстрируют проверку доступности CUDA и переключение на графический процессор, чтобы использовать его вычислительную мощность. Преподаватель также рекомендует начинать с небольших наборов данных и моделей, прежде чем увеличивать сложность и размер. Наконец, они предлагают построить новую модель для набора данных и протестировать ее производительность с нелинейностями и без них при работе на графическом процессоре.

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

  • 16:35:00 В этом разделе инструктор обсуждает настройку нейронных сетей с линейными и нелинейными функциями и демонстрирует добавление двух функций активации ReLU в ранее определенную сеть. Затем прямой метод переопределяется, чтобы входные данные проходили через стек слоев, и модель создается на устройстве. Затем видео переходит к созданию функции потерь, оптимизатора и показателей оценки для новой модели, в которую добавлены нелинейные слои, подчеркивая важность проведения экспериментов для понимания того, как различные функции могут влиять на нейронные сети.

  • 16:40:00 В этом разделе спикер обсуждает создание вспомогательных функций и функционирование циклов обучения и оценки в PyTorch. Они упоминают импорт функции точности и настройку функции потерь, а также оптимизатор. Следующим шагом является построение циклов обучения и оценки в виде функций, чтобы их можно было вызывать многократно без риска ошибок. Докладчик рассказывает о процессе создания функции шага поезда, для которого в качестве входных данных требуются модель, загрузчик данных, функция потерь, оптимизатор и, при необходимости, функция точности и целевое устройство. Функция шага обучения проходит через загрузчик данных, выполняет прямой проход, вычисляет потери, выполняет обратное распространение и обновляет параметры модели с помощью оптимизатора.

  • 16:45:00 В этом разделе ведущий объясняет, как выполнить шаг обучения в PyTorch. Они начинают с определения входных данных функции, включая модель, загрузчик данных, функцию потерь, оптимизатор и устройство. Затем они проходят через каждую строку функции, начиная с цикла через загрузчик данных и помещая данные на целевое устройство. Они также добавляют функцию точности для накопления оценки точности для каждой партии. Наконец, в конце этапа обучения они рассчитывают средние потери и точность на партию и распечатывают результаты. В целом, в этом разделе дается четкое и краткое объяснение того, как использовать PyTorch для глубокого и машинного обучения.

  • 16:50:00 В этом разделе тренер функционализирует цикл тестирования, создавая функцию тестового шага, которая принимает модель, загрузчик данных, функцию потерь, функцию точности и устройство в качестве входных данных. Тренер демонстрирует, как настроить тестовые потери и точность и перевести модель в режим оценки, прежде чем пройти через загрузчик данных и выполнить прямой проход. Тренер также объясняет важность использования диспетчера контекста режима вывода и создания кода, не зависящего от устройства. Pred теста рассчитывается путем прохождения X, а потери и точность теста накапливаются для каждой партии с использованием соответствующих функций. Наконец, тренер преобразует выходные логиты в прогнозные метки, используя argmax.

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

Часть 18

  • 17:00:00 В этом разделе инструктор проводит нас через настройку шага тестирования для нашей модели глубокого обучения и создание таймера для измерения времени обучения. Код прост и эффективен, поскольку он предназначен для повторного использования в будущих проектах. Кроме того, мы проводим второй эксперимент по моделированию и сравниваем результаты с первой моделью, в которой использовались нелинейные слои. Хотя вторая модель была немного быстрее с точки зрения времени обучения, она не давала лучших результатов, чем предыдущая, а это означает, что ваши числа могут не совпадать с данными инструктора, но должны быть очень похожими по направлению. Наконец, инструктор объясняет, что наша модель не слишком сложна, а наш набор данных не очень велик, поэтому это может объяснить, почему время обучения CPU и GPU не сильно различается.

  • 17:05:00 В этом разделе инструктор объясняет, что иногда модель обучается быстрее на ЦП, чем на ГП. Две основные причины этого заключаются в том, что накладные расходы на копирование данных/модели в и из графического процессора перевешивают вычислительные преимущества, предлагаемые графическим процессором, и что используемое оборудование имеет лучший процессор с точки зрения вычислительных возможностей, чем графический процессор. Однако инструктор отмечает, что это встречается реже, и, как правило, современный графический процессор быстрее вычисляет алгоритмы глубокого обучения, чем обычный ЦП. Затем инструктор делится ресурсом, в котором рассказывается о том, как ускорить глубокое обучение, среди прочего, за счет оптимизации пропускной способности и накладных расходов. Наконец, инструктор создает словарь результатов для первой модели, чтобы позже сравнить результаты моделирования.

  • 17:10:00 В этом разделе инструктор обсуждает распространенную ошибку, которая может возникнуть в моделях глубокого обучения, связанную с несоответствием устройства между данными и моделью. Он объясняет, что ошибка произошла из-за того, что данные и модель находились на разных устройствах, и предлагает исправить это, сделав код независимым от устройства. Он также предупреждает, что всегда лучше создавать независимый от устройства код. Наконец, инструктор представляет следующий эксперимент по моделированию, который включает в себя построение сверточной нейронной сети (CNN) и объясняет архитектуру типичной CNN.

  • 17:15:00 В этом разделе инструктор объясняет различные типы слоев в простой сверточной нейронной сети (CNN). CNN начинается с ввода, предварительно обработанного в тензор красного, зеленого и синего цветов для изображения. Затем входные данные проходят через комбинацию сверточных слоев, слоев relu и слоев объединения. В модель глубокого обучения можно добавить больше слоев, чтобы найти больше шаблонов в данных, при этом каждый слой выполняет различную комбинацию математических операций с данными. Преподаватель демонстрирует CNN с помощью веб-сайта объяснения CNN, где ввод различных изображений проходит через разные уровни, а конечным результатом является класс с наивысшим значением.

  • 17:20:00 В этом разделе инструктор объясняет, как работают сверточные нейронные сети и в чем прелесть глубокого обучения. Каждый уровень сети предназначен для изучения различных характеристик данных, а сама сеть определяет лучший способ изучения этих характеристик. Затем инструктор представляет веб-сайт объяснения CNN в качестве ресурса для получения дополнительной информации о сверточных нейронных сетях, а также поощряет
    учащимся присоединиться к репликации нейронной сети в коде PyTorch. Затем инструктор приступает к созданию крошечной сверточной нейронной сети VGG в PyTorch и объясняет, что авторы исследовательских работ могут называть новые архитектуры моделей, чтобы упростить их использование в будущем. Код инициализируется входной формой, скрытыми единицами и выходной формой, которые являются типичными параметрами при построении модели PyTorch.

  • 17:25:00 В этом разделе инструктор объясняет, как создать нейронную сеть с использованием блоков в PyTorch, которые часто называют сверточными блоками. Эти блоки состоят из нескольких уровней, а общая архитектура состоит из нескольких блоков. Преподаватель показывает, как создавать сверточные блоки, написав два примера слоев с такими гиперпараметрами, как входной и выходной каналы, размер ядра, шаг и заполнение. Преподаватель также предоставляет учащимся интерактивные ресурсы для понимания основ гиперпараметров и предлагает им пройти через них.

  • 17:30:00 В этом разделе инструктор знакомится с кодом для построения модели глубокого обучения с использованием PyTorch, уделяя особое внимание слоям сверточных блоков. Модель принимает данные 2D-изображения, а слои используются для обучения сжатому представлению входных данных, при этом максимальное объединение используется для получения максимального значения входных данных. Код разбивается на два блока, а затем добавляется выходной слой. Входные данные последнего слоя выравниваются перед тем, как пройти через последний линейный слой для создания окончательного вывода.

  • 17:35:00 В этом разделе инструктор создает слой классификатора для сверточной нейронной сети (CNN) под названием tiny VGG, который имеет два слоя, которые действуют как экстракторы признаков, и последний слой, который классифицирует эти признаки по целевым классам. Преподаватель кодирует слой классификатора, используя последовательный, и передает слой сглаживания, чтобы свести выходные данные двух предыдущих слоев в один вектор признаков. Затем вектор объектов передается в слой nn.linear, который вычисляет объекты на основе количества скрытых единиц и объекты на основе длины классов. Наконец, инструктор настраивает прямой метод и распечатывает форму точки X, чтобы отслеживать изменения формы каждого слоя. Преподаватель устанавливает входную форму для модели CNN, которая имеет только один цветовой канал для черно-белых изображений, устанавливает значение скрытых единиц для каждого слоя и заканчивает созданием экземпляра модели.

  • 17:40:00 В этом разделе видео инструктор просматривает код, написанный в предыдущем разделе, для создания сверточной нейронной сети с использованием PyTorch. Они выявляют и исправляют некоторые опечатки в коде и объясняют, что слой maxpool2d не имеет обучаемых параметров. Затем они вводят слой conv2d и объясняют, что его весовой тензор и значение смещения манипулируют входными данными для получения выходных данных. Они показывают, как воспроизвести первый уровень веб-сайта объяснения CNN, используя фиктивный ввод в PyTorch, и предоставляют ссылку на документацию PyTorch для дальнейшего чтения. Они также демонстрируют, как сначала создавать пакетные изображения в стиле PyTorch с цветовыми каналами.

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

  • 17:50:00 В этом разделе инструктор объясняет эффекты изменения значений шага и отступов в сверточном слое в PyTorch. Значение шага, равное 1, означает, что свертка перемещается по одному пикселю за раз, тогда как значение шага, равное 2, перемещается по двум пикселям за раз, что приводит к уменьшению выходного размера. Между тем, добавление отступов к краям изображения позволяет ядру работать с информацией об изображении на краях. Преподаватель также отмечает, что, если вы не знаете, какие значения установить для различных параметров, обычно копируют существующие значения и корректируют их по мере необходимости. Раздел завершается демонстрацией того, как добавить пакетное измерение к тестовому изображению и передать его через сверточный слой в PyTorch.

  • 17:55:00 В этом разделе видео рассказывается о сверточных слоях и слоях максимального объединения в PyTorch для глубокого и машинного обучения. Видео демонстрирует, как использовать PyTorch для создания сверточных слоев путем пропускания тестового изображения через сверточный слой для получения вывода. Играя со значениями размера ядра, шага и заполнения, пользователи могут наблюдать, как изменяется размер вывода. Видео также охватывает слой максимального пула и показывает, как создать пример слоя максимального пула с размером ядра, равным двум.

Часть 19

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

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

  • 18:10:00 В этом разделе курса инструктор обсуждает цель слоя максимального пула в сверточной нейронной сети, которая заключается в сжатии изученных функций из сверточных слоев в меньшее пространство, что в конечном итоге приводит к сжатому представлению. входных данных, которые можно использовать для прогнозирования. Инструктор также предлагает зрителям создать фиктивный тензор и передать его через крошечную сеть VGG, которую они построили в предыдущих видеороликах, чтобы увидеть, что происходит с формой фиктивного тензора, когда он проходит через сверточные блоки. Наконец, инструктор объясняет, что целью репликации модели из другого места и передачи данных через нее является обычная практика глубокого обучения.

  • 18:15:00 В этом разделе инструктор приводит пример прямого прохода в PyTorch и демонстрирует, как справляться с ошибками несоответствия формы. Они используют ранее созданное изображение из набора данных Fashion MNIST и создают тензор той же формы, что и изображение. Однако они получают ошибку из-за того, что тензор имеет дополнительное измерение для размера пакета. Чтобы исправить это, они сжимают тензор в нулевом измерении, чтобы добавить пакетное измерение. Они также гарантируют, что тензор находится на том же устройстве, что и модель, и демонстрируют, как устранять неполадки и находить формы, необходимые для разных слоев модели. Раздел завершается тем, что инструктор воссоздает модель, используя собранную информацию о формах.

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

  • 18:25:00 В этом разделе инструктор обсуждает входные и выходные формы каждого слоя в построенной модели. Они пропускают через модель случайный тензор и получают выходную форму, равную единице и десятке, поскольку в их наборе данных десять классов. Затем они переходят к настройке функции потерь и оптимизатора для своей второй модели и объясняют, как они собираются обучать свою первую сверточную нейронную сеть (CNN). Они импортируют функцию точности, настраивают функцию потери перекрестной энтропии и сохраняют прежний оптимизатор, torch.opt в SGD. Затем они демонстрируют, как использовать свои функции шага обучения и шага тестирования для обучения второй модели, о чем они подробно расскажут в следующем видео. Наконец, они настроили функции обучения и тестирования, выполнив этап обучения с моделью и попытавшись изучить загрузчик данных.

  • 18:30:00 В этом разделе видео посвящено обучению сверточной нейронной сети и измеряет время, необходимое для ее обучения с использованием TQDM для измерения прогресса. Они настраивают функцию точности, функцию потерь, оптимизатор, загрузчик данных обучения и загрузчик тестовых данных. Они также измеряют время окончания, чтобы узнать, сколько времени потребовалось для выполнения кода. У них была проблема с распечаткой кода, но они исправили ее и успешно обучили свою первую CNN, достигнув точности теста 88,5% примерно за 42 секунды. В видео рекомендуется помнить, что более производительная модель обычно требует больше времени для обучения.

  • 18:35:00 В этом разделе инструктор обсуждает важность сравнения результатов и времени обучения для разных моделей в экспериментах по машинному обучению. Они вводят три словаря результатов модели и создают фрейм данных с использованием pandas для сравнения точности, потерь и времени обучения каждой модели. Они обнаружили, что сверточная нейронная сеть (модель 2) превзошла другие модели с точностью 88%, и призвали зрителей экспериментировать с различными архитектурами моделей, гиперпараметрами и временем обучения для улучшения результатов. Преподаватель подчеркивает важность рассмотрения компромисса между производительностью модели и скоростью в практических приложениях.

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

  • 18:45:00 В этом разделе инструктор обсуждает, как создать функцию «делать прогнозы» для оценки обученной модели машинного обучения. Функция принимает модель типа резака и конечного модуля, некоторые данные и тип устройства. Цель состоит в том, чтобы взять случайные выборки из тестового набора данных, сделать для них прогнозы с помощью модели и визуализировать прогнозы. Функция подготавливает образец, разжимая его и передавая на целевое устройство. Затем он выполняет прямой проход модели, чтобы получить необработанные логиты, и применяет функцию активации softmax, чтобы получить вероятность предсказания. Наконец, вероятности предсказания превращаются в метки предсказания, а список вероятностей предсказания, относящийся к конкретным выборкам, складывается, чтобы превратить список в тензор. Раздел заканчивается демонстрацией функции в действии на тестовых образцах.

  • 18:50:00 В этом разделе инструктор объясняет, как произвольно выбирать тестовые данные и создавать тестовые метки для оценки прогнозов модели. Тестовые данные еще не преобразованы в загрузчик данных, и код выбирает девять случайных выборок тестовых данных. Преподаватель подчеркивает важность прогнозирования случайных выборок тестовых данных даже после обучения модели, чтобы понять, как она работает. Преподаватель также обсуждает, как преобразовать вероятности предсказания в метки предсказания, используя argmax, чтобы получить индекс наибольшего значения в вероятностях.

  • 18:55:00 В этом разделе инструктор пишет код для построения прогнозов и изображений для случайных выборок. Код создает рисунок Matplotlib с тремя строками и тремя столбцами и перечисляет каждый образец в тестовых образцах. Для каждого образца создается подграфик и строится целевое изображение. Метка предсказания и метка истинности также находятся и преобразуются в текстовую форму с использованием имен классов и индексов предварительных классов и тестовых меток. Наконец, для графика создается заголовок, и цвет текста заголовка меняется на зеленый, если метка предсказания равна метке истины, и на красный, если они не равны.

Часть 20

  • 19:00:00 В этом разделе докладчик обсуждает важность визуализации прогнозов модели машинного обучения и показывает, как построить прогнозы обученной сверточной нейронной сети (CNN) на случайно выбранных выборках из тестового набора данных. Ведущий демонстрирует, как строить изображения с их предсказанными и истинными метками и изменять цвет текста заголовка в зависимости от того, верно предсказание или нет. Анализируя прогнозы, докладчик показывает потенциальную путаницу между классами меток и предполагает, что визуализация прогнозов может дать представление об улучшении меток или самой модели. Затем ведущий вводит понятие матрицы путаницы как еще один способ оценки производительности модели путем сравнения предсказанных и истинных меток большого набора тестовых образцов.

  • 19:05:00 В этом разделе инструктор обсуждает, как оценить модель классификации с несколькими классами с помощью матрицы путаницы в PyTorch. Матрица путаницы — это визуальное представление, показывающее эффективность модели в разных классах. Преподаватель объясняет, как использовать метрики фонарика для метрик оценки, и показывает, как получить доступ к метрикам оценки матрицы путаницы. Кроме того, расширение ML используется для построения матрицы путаницы. Важно отметить, что инструктор объясняет, что в Google Colab нет требуемой версии расширения ML, а версия 0.19.0 необходима для обеспечения правильной установки пакета. Наконец, в видео показано, как делать прогнозы по тестовому набору данных и как перевести модель в режим оценки с режимом логического вывода в качестве диспетчера контекста.

  • 19:10:00 В этом разделе инструктор демонстрирует, как итерировать загрузчик тестовых данных, чтобы делать прогнозы с помощью PyTorch. Прогнозы добавляются в список, а затем объединяются в тензор с помощью torch.cat. Результирующий тензор имеет одно предсказание на тестовую выборку. Инструктор также устанавливает метрики факела и показывает, как использовать цикл «попробуй и прими», чтобы импортировать их. Наконец, требуемая версия расширения ML проверяется с помощью утверждения утверждения для использования в матричной функции путаницы графиков.

  • 19:15:00 В этом разделе инструктор объясняет, как устанавливать и обновлять пакеты в Google Colab на примере установки torch metrics и обновления ML extension до версии 0.19.0 или выше. Инструктор знакомится с кодом и объясняет, как проверить, прошла ли установка правильно, и что делать, если в процессе возникнут какие-либо ошибки, в том числе, как при необходимости перезапустить среду выполнения. После завершения установки инструктор переходит к объяснению того, как создать матрицу путаницы с прогнозами, которые были сделаны для всего набора тестовых данных в предыдущем видео.

  • 19:20:00 В этом разделе инструктор объясняет, как создать и построить матрицу путаницы для оценки производительности модели глубокого обучения. Во-первых, импортируются класс матрицы путаницы из показателей факела и функция матрицы путаницы графика из расширения ML. Затем создается экземпляр матрицы путаницы путем передачи количества классов в качестве длины списка имен классов. Тензор матрицы путаницы создается путем передачи прогнозов и целей в тестовом наборе данных. Наконец, матрица путаницы строится с использованием функции матрицы путаницы plot путем передачи тензора матрицы путаницы и списка имен классов, создавая визуально приятную диагональ, показывающую правильные прогнозы и потенциальные области, в которых модель допускает ошибки.

  • 19:25:00 В этом разделе инструктор объясняет важность использования матрицы путаницы для визуальной оценки прогнозов модели классификации, особенно когда ошибки, допущенные моделью, значительны, например, когда два похожих на вид класса данных, такие как рубашки и пальто. Использование матрицы путаницы — это мощный способ оценить производительность модели и помочь выявить любые проблемы с существующими метками. Он также говорит о важности сохранения и загрузки обученной модели, особенно когда производительность модели удовлетворительна. Сохранив модель в файл, ее можно использовать в другом месте или перезагрузить, чтобы убедиться, что она была сохранена правильно. Инструктор расскажет, как создать путь к каталогу модели и путь сохранения модели, а затем покажет, как сохранить словарь состояния модели с помощью метода torch.save.

  • 19:30:00 В этом разделе инструктор демонстрирует, как сохранить и загрузить модель PyTorch. Сохраняется словарь состояний, в котором представлены все изученные параметры модели после ее обучения. Для загрузки сохраненной модели создается новый экземпляр с теми же параметрами, что и исходный. Важно настроить загруженную модель с теми же параметрами, что и оригинал, чтобы избежать ошибки несоответствия формы. Затем загруженная модель оценивается, чтобы убедиться, что она дает такие же результаты, как и исходная модель. Преподаватель подчеркивает важность оценки модели после ее сохранения и загрузки, чтобы убедиться, что она была сохранена правильно.

  • 19:35:00 В этом разделе мы видим, что загруженная модель дает те же результаты, что и ранее обученная модель до ее сохранения, и мы можем использовать torch.is_close, чтобы программно проверить, близки ли результаты модели друг к другу. Уровень абсолютного допуска можно настроить, чтобы результаты были достаточно похожими, а при наличии расхождений рекомендуется проверить, правильно ли сохраняется модель и настроены ли случайные начальные значения. Также обсуждается рабочий процесс для решения проблемы компьютерного зрения, от использования справочных материалов и библиотек, таких как torchvision, до оценки модели и экспериментов с моделями нелинейности и сверточных нейронных сетей, чтобы найти лучшую.

  • 19:40:00 В этом разделе «PyTorch для глубокого обучения и машинного обучения» инструктор предлагает зрителям попрактиковаться в том, чему они уже научились, перейдя на веб-сайт Learn pytorch.io и выполнив предоставленные упражнения. Упражнения сосредоточены на отработке кода и концепций, описанных в предыдущих разделах, а для тех, кто хочет глубже погрузиться в компьютерное зрение, доступен дополнительный учебный план. Кроме того, в этом разделе рассматривается тема пользовательских наборов данных pytorch и при необходимости предлагаются ресурсы для получения помощи, такие как документация pytorch и переполнение стека.

  • 19:45:00 В этом разделе курса PyTorch обсуждается, как работать с пользовательскими наборами данных, а также с различными предметными библиотеками, такими как torch vision, torch text, torch audio и torch rec. Библиотеки предметной области содержат функции загрузки данных для различных источников данных и поставляются со встроенными наборами данных, такими как наборы данных факельного зрения для предварительно созданных наборов данных машинного зрения, таких как Fashion MNIST, и настраиваемых наборов данных. В каждой доменной библиотеке также есть модуль «наборы данных», который помогает пользователям работать с разными наборами данных в разных доменах, и в зависимости от домена, в котором вы работаете, например, зрение, текст, аудио, рекомендации, рекомендуется заглянуть в его пользовательскую библиотеку. в ПиТорч.

  • 19:50:00 В этом разделе инструктор обсуждает, как загружать пользовательские наборы данных в PyTorch для использования при построении модели компьютерного зрения. Модель, которую они создадут, называется food vision mini и будет классифицировать изображения пиццы, суши и стейка. Инструктор рассказывает о различных этапах обучения модели, таких как выбор функции потерь и оптимизатора, построение цикла обучения и оценка модели. Они также объясняют, как преобразовывать данные для использования с моделью и сравнивать модели с дополнением данных и без него. Наконец, они показывают, как делать прогнозы на основе пользовательских данных, и предоставляют ресурс для доступа к видеоблокноту в репозитории глубокого обучения PyTorch.

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

Часть 21

  • 20:00:00 В этом разделе курса инструктор представляет набор данных Food 101, который включает 101 различную категорию продуктов питания и 101 000 изображений. Однако, чтобы попрактиковаться в использовании PyTorch, инструктор создал меньшую часть этого набора данных, которая включает три категории продуктов питания и только 10 % изображений. Этот меньший набор данных содержит 750 обучающих изображений, 250 тестовых изображений и около 75 обучающих изображений и 25 тестовых изображений на класс. Начиная с этого меньшего набора данных, цель состоит в том, чтобы ускорить эксперименты и сократить время, необходимое для обучения моделей. Преподаватель предоставляет записную книжку о том, как создать этот пользовательский набор данных, и предлагает учащимся начать с малого и обновлять его по мере необходимости.

  • 20:05:00 В этом разделе инструктор объясняет процесс загрузки и подготовки набора данных изображений для PyTorch. Набор данных включает изображения пиццы, стейка и суши, которые хранятся в папке с именем data. Преподаватель использует библиотеку запросов Python для загрузки данных, а затем распаковывает их в папку данных. Цель этого раздела — продемонстрировать, как загружать данные изображения в PyTorch, что можно применить к любому подобному проекту. Преподаватель подчеркивает важность наличия отдельного каталога для данных, который может располагаться на локальном компьютере или в облаке.

  • 20:10:00 В этом разделе инструктор рассказывает, как использовать библиотеку Python, zipfile, для извлечения данных из zip-файла. Они используют пример извлечения zip-файла, содержащего изображения пиццы, стейка и суши, для задачи машинного обучения компьютерного зрения. Преподаватель демонстрирует, как извлечь содержимое zip-файла по определенному пути к файлу с помощью метода zipfile.extractall(). Они также устраняют ошибку в коде, возникшую в результате копирования неправильного адреса ссылки из GitHub, подчеркивая важность использования правильной ссылки для загрузки наборов данных. В целом, показанный процесс можно использовать для загрузки и извлечения любого пользовательского набора данных для использования в PyTorch. В следующем видео данные будут рассмотрены подробнее.

  • 20:15:00 В этом разделе инструктор обсуждает важность слияния с данными посредством подготовки и исследования данных. Он делится выдуманной цитатой из функции потерь Абрахама, подчеркивая необходимость тратить достаточно времени на подготовку набора данных. Затем инструктор просматривает каждый каталог загруженных образцов данных в стандартном формате классификации изображений. Он использует функцию dot walk ОС для создания дерева каталогов для каждого каталога, отображая информацию о каталогах и изображениях, присутствующих в каждом из них. Наконец, инструктор настраивает части обучения и тестирования и демонстрирует для них стандартную настройку классификации изображений.

  • 20:20:00 В этом разделе инструктор объясняет стандартную структуру данных классификации изображений, где папка общего набора данных содержит папки для обучения и тестирования с подкаталогами с именами классов, которые содержат соответствующие изображения. Преподаватель отмечает, что стандартизированные способы хранения определенных типов данных существуют в качестве эталона для форматов данных. Чтобы подготовить данные изображения для использования с PyTorch, написан код для преобразования данных в тензоры. Инструктор выделяет формат данных, необходимый для классификации изображений собак и кошек, где каталоги обучающих и тестовых изображений содержат соответствующие папки классов. Преподаватель также упоминает о планах визуализации изображения и кода для достижения этой цели, который включает в себя получение всех путей к изображениям, выбор случайного пути к изображению, получение имени класса изображения с помощью модуля Pathlib.

  • 20:25:00 В этом разделе инструктор объясняет, как открывать изображения и управлять ими с помощью библиотеки изображений Python под названием Pillow. Во-первых, они генерируют список всех путей к изображениям в определенной папке и используют библиотеку Python random для случайного выбора изображения из этого списка. Затем они открывают и отображают изображение, а также извлекают метаданные о нем. Кроме того, инструктор дает обзор возможностей библиотеки Torch Vision, включая методы загрузки и обработки изображений.

  • 20:30:00 В этом разделе инструктор демонстрирует, как работать с изображениями с помощью библиотеки PIL, а также как открывать и анализировать метаданные изображений. Класс изображения — это имя каталога, в котором хранятся данные изображения, а метаданные получаются с помощью функции «Печать». Затем инструктор показывает несколько случайных изображений продуктов из набора данных, включая пиццу, суши и стейк, и объясняет важность случайной визуализации изображений для ознакомления с набором данных. Преподаватель предлагает зрителям небольшую задачу: визуализировать изображение с помощью Matplotlib для следующего раздела.

  • 20:35:00 В этом разделе инструктор показывает, как отображать изображения и данные с помощью matplotlib и преобразовывать изображения в массивы с помощью метода NumPy NP. Подчеркивается важность понимания формы данных для предотвращения проблем с несоответствием формы. Формат по умолчанию для библиотеки таблеток и matplotlib — это последний формат цветовых каналов, но PyTorch по умолчанию использует первый формат цветовых каналов. Преподаватель также показывает, как визуализировать различные изображения и знакомиться с данными, а также преобразовывать данные, преобразовывая их в тензоры PyTorch для использования с PyTorch.

  • 20:40:00 В этом разделе инструктор обсуждает процесс преобразования целевых данных в тензоры PyTorch и создания наборов данных PyTorch и загрузчиков данных. Используя документацию PyTorch, инструктор показывает, как создавать наборы данных с помощью модуля папки изображений, и вводит параметр преобразования, который позволяет применять определенные преобразования к данным. Затем инструктор демонстрирует, как создать преобразование для данных изображения, которое изменяет размер изображения до 64x64 и случайным образом переворачивает его в горизонтальной плоскости, чтобы искусственно увеличить разнообразие набора данных. Это делается с помощью метода transforms.compose, который принимает в качестве аргумента список преобразований.

  • 20:45:00 В этом разделе инструктор объясняет, как преобразовать изображение в тензор факела с помощью модуля transforms в PyTorch. Это делается с помощью функции «transforms.ToTensor ()», которая преобразует изображение PIL или массив NumPy из высоты с цветовыми каналами в диапазоне от 0 до 255 в плавающий тензор факела с высотой цветовых каналов формы в диапазоне от 0 до 1. Инструктор предлагает попробовать передать данные через это преобразование и показывает, как изменить форму изображения с помощью функции «transforms.Resize()». Раздел завершается обсуждением различных преобразований, доступных в библиотеке torchvision, включая преобразования увеличения данных, и предварительным просмотром готовящегося кода визуализации для изучения преобразованных изображений.

  • 20:50:00 В этом разделе инструктор демонстрирует, как случайным образом выбирать изображения из пути, загружать и преобразовывать их, а затем сравнивать исходную и преобразованную версии с помощью PyTorch. Код использует функцию случайного начального числа, чтобы установить начальное число для случайной функции, и случайным образом выбирает k изображений из списка путей к изображениям. Затем инструктор использует библиотеку matplotlib для создания подграфика с одной строкой и n столбцами для построения исходного и преобразованного изображений рядом друг с другом. Форма преобразованного изображения должна быть изменена, чтобы в последнюю очередь соответствовать предпочтительному формату цветовых каналов библиотеки matplotlib. Наконец, код устанавливает заголовок исходного и преобразованного изображений, а суперзаголовок устанавливает имя класса изображения.

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

PyTorch for Deep Learning & Machine Learning – Full Course
PyTorch for Deep Learning & Machine Learning – Full Course
  • 2022.10.06
  • www.youtube.com
Learn PyTorch for deep learning in this comprehensive course for beginners. PyTorch is a machine learning framework written in Python.✏️ Daniel Bourke develo...
 

PyTorch для глубокого обучения и машинного обучения — полный курс (описание частей 22–26)


PyTorch для глубокого обучения и машинного обучения — полный курс

Часть 22

  • 21:00:00 В этом разделе инструктор объясняет, как загружать данные изображения с помощью параметра папки изображения. Они используют модуль наборов данных фонарика, чтобы показать, как загружать данные в общий формат классификации изображений. Демонстрируется функция готовых наборов данных, папка изображений, которую затем можно использовать для загрузки всех пользовательских изображений в тензоры с помощью преобразований. Затем инструктор показывает, как преобразовать набор данных для обучения и создать набор тестовых данных, который также будет преобразован таким же образом, как и набор данных для обучения. Наконец, они распечатывают созданные наборы данных.

  • 21:05:00 В этом разделе инструктор объясняет, как использовать функцию папки изображений в PyTorch для загрузки изображений в тензоры и преобразования их с помощью конвейера, который затем можно использовать с моделью PyTorch. Они демонстрируют, как получить доступ к различным атрибутам встроенного загрузчика данных и использовать их, например, получить имена классов в виде списка или словаря и проверить длину набора данных. Кроме того, они показывают, как визуализировать образцы и метки из набора обучающих данных с помощью индексирования.

  • 21:10:00 В этом разделе курса инструктор демонстрирует, как преобразовать набор данных изображения в тензорный формат, который является форматом данных по умолчанию для PyTorch. Они используют пример изображения пиццы и показывают, как получить связанную с ней метку и преобразовать ее в числовой формат. Затем они выводят некоторую важную информацию о данных тензора, такую как тип и форма данных, которые позже будут полезны для устранения неполадок. Наконец, они строят изображение с помощью matplotlib и устанавливают заголовок на имя класса, в данном случае это пицца. Они призывают студентов попробовать это с разными изображениями и изучить различные преобразования.

  • 21:15:00 В этом разделе видео инструктор обсуждает процесс преобразования загруженных изображений в загрузчики данных в PyTorch. Загрузчик данных может помочь превратить наборы данных в итерируемые объекты, позволяя пользователям настраивать размер пакета и просматривать определенное количество изображений за раз. Это важно, потому что если все изображения были загружены сразу, есть риск нехватки памяти. Таким образом, пакетная обработка изображений помогает использовать всю доступную память. Далее инструктор предоставляет пошаговое руководство по созданию загрузчика данных поезда, а также знакомит с концепцией количества рабочих параметров, которые определяют, сколько ядер ЦП используется для загрузки данных.

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

  • 21:25:00 В этом разделе инструктор обсуждает процесс создания пользовательского класса загрузки данных для загрузки данных изображения в формат Tensor. Цель состоит в том, чтобы воспроизвести функциональность папки изображений с помощью этого пользовательского класса, поскольку это является хорошей практикой и может понадобиться в тех случаях, когда предварительно созданная функция не существует. Преподаватель перечисляет шаги, необходимые пользовательскому классу для загрузки изображений, получения имен классов в виде списка и получения классов в виде словаря из набора данных. Также обсуждаются плюсы и минусы создания пользовательского набора данных, в том числе возможность создания набора данных практически из чего угодно, а также вероятность ошибок и проблем с производительностью. Затем инструктор импортирует необходимые модули для создания пользовательского класса, включая ОС и библиотеку путей для работы с файловой системой.

  • 21:30:00 В этом разделе мы узнаем, как создать собственный набор данных в PyTorch, и сосредоточимся на написании функции для получения имен классов из целевого каталога. Пользовательский набор данных будет использоваться для загрузки изображений из файла, получения имен классов из набора данных и получения классов в виде словаря из набора данных. Функция будет использовать сканер ОС для обхода целевого каталога и получения имен классов и выдаст ошибку, если имена классов не будут найдены, что указывает на проблему со структурой каталогов. Позже мы создадим подкласс torch.utils.data.Dataset для создания пользовательского набора данных.

  • 21:35:00 В этом разделе видео инструктор демонстрирует, как создать функцию с именем find_classes, которая принимает каталог в виде строки и возвращает список имен классов и словарь, сопоставляющий имена классов с целыми числами. Функция использует сканер ОС для сканирования целевого каталога и получения имен классов. Преподаватель также демонстрирует, как вызвать ошибку, если не удается найти имена классов. Эту функцию можно использовать для любого заданного каталога, и она повторяет функциональность, реализованную ранее для учебного каталога.

  • 21:40:00 В этом разделе видео инструктор объясняет, как создать пользовательский набор данных с помощью подкласса torch.utils.data.dataset. Набор данных должен представлять собой карту от ключей к образцам данных, где ключи относятся к целям или меткам, а образцы данных в этом случае представляют собой изображения продуктов питания. Подкласс должен переопределить метод get item, который извлекает выборку данных для заданного ключа, и, при необходимости, перезаписать метод len, чтобы вернуть размер набора данных. Преподаватель описывает этапы создания пользовательского набора данных и объясняет, как использовать вспомогательную функцию, которую мы создали в предыдущем разделе, для сопоставления имен классов с целыми числами.

  • 21:45:00 В этом разделе инструктор объясняет, как создать пользовательский набор данных в PyTorch. Для этого нам нужно создать подкласс класса torch.utils.data.Dataset и инициализировать наш пользовательский набор данных, передав целевой каталог (где находятся данные) и преобразование (для выполнения любых преобразований данных). Кроме того, нам нужно создать несколько атрибутов, таких как пути, преобразование, классы и класс для идентификатора X. Кроме того, нам нужно создать функцию для загрузки изображений, переопределить метод LAN, чтобы вернуть длину нашего набора данных, и получить item для возврата данного образца при передаче индекса. Наконец, мы пишем собственный набор данных, реализуя pathlib и передавая целевые каталоги, такие как каталоги test или train.

  • 21:50:00 В этом разделе инструктор объясняет различные шаги, связанные с созданием пользовательского класса набора данных PyTorch. Первый шаг включает в себя получение всех путей к изображениям, соответствующих правильному соглашению об именах файлов. Следующим шагом является создание набора преобразований изображения, которые могут быть необязательными. Также создается функция для загрузки изображений, которая принимает индекс и возвращает изображение. Затем инструктор показывает, как переопределить метод «len», чтобы вернуть общее количество выборок в наборе данных, что является необязательным. Наконец, метод «получить элемент» перезаписывается, чтобы он возвращал определенный образец, если ему был передан индекс.

  • 21:55:00 В этом разделе мы узнаем о создании подкласса torch.utils.data.Dataset для настройки способа загрузки данных в PyTorch. Класс инициализируется корневым каталогом и словарем, отображающим имена классов в индексы. Метод __len__ возвращает длину набора данных, а __getitem__ позволяет индексировать набор данных, чтобы вернуть кортеж изображения тензора факела и соответствующую целочисленную метку. Класс также имеет необязательный параметр преобразования для применения преобразований к изображению перед возвратом кортежа. Преимущество создания подкласса torch.utils.data.Dataset заключается в предлагаемых им возможностях настройки, но требует написания значительного объема кода, который может быть подвержен ошибкам.

Часть 23

  • 22:00:00 В этом разделе инструктор показывает, как создать пользовательский набор данных в PyTorch с помощью модуля Torchvision. Они создают преобразование для преобразования необработанных изображений JPEG в тензоры и настраивают создание обучающих и тестовых преобразований. Затем они тестируют пользовательский класс папки изображений и смотрят, работает ли он с их собственным набором данных. Они проверяют атрибуты длины и класса, чтобы убедиться, что все работает правильно. Наконец, они проверяют пользовательские данные поезда и тестируют пользовательские данные, чтобы убедиться, что все работает должным образом.

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

  • 22:10:00 В этом разделе инструктор описывает шаги по созданию функции под названием «отображение случайных изображений», которая принимает «набор данных», «классы» и «n» в качестве параметров. Функция отображает n случайно выбранных изображений из набора данных и распечатывает их форму, если для параметра «форма отображения» установлено значение true. Преподаватель также изучает детали реализации, такие как настройка отображения, если n больше 10, и установка случайного начального числа для воспроизводимости. Кроме того, функция перебирает случайные выборочные изображения или индексы и отображает их с помощью Matplotlib.

  • 22:15:00 В этом разделе инструктор продолжает создавать свою модель глубокого обучения в PyTorch, настраивая график и следя за тем, чтобы размеры их изображений соответствовали matplotlib. Они настраивают свои тензорные размеры для построения графика, добавляют подзаговор к своему графику matplotlib и настраивают заголовок графика на основе переменной классов, списка классов. Затем они создают функцию для отображения случайных изображений из папки изображений, как для встроенной папки изображений pytorch, так и для пользовательского набора данных, созданного инструктором. Наконец, они корректируют начальное значение и строят изображения, чтобы увидеть, как их код для корректировки графика имеет смысл.

  • 22:20:00 В этом разделе стенограммы инструктор демонстрирует, как превратить загруженный пользователем набор данных изображения в загрузчики данных, что является необходимым шагом для пакетной обработки изображений и их использования с моделью. С помощью torchvision.datasets.ImageFolder и torchvision.transforms пользовательский набор данных преобразуется в тензорный формат. Следующий шаг — превратить набор данных в загрузчик данных с помощью torch.utils.data.DataLoader. Преподаватель устанавливает размер пакета равным 32, а количество рабочих — равным 0 как для пользовательского загрузчика данных обучения, так и для пользовательского загрузчика тестовых данных. Разница между ними заключается в том, что данные поезда будут перемешиваться, а тестовые данные - нет.

  • 22:25:00 В этом разделе видео рассказывается о пользовательских загрузчиках данных и преобразовании данных в PyTorch. Преподаватель сначала сбрасывает количество ЦП OOS и устанавливает количество рабочих на ноль, чтобы обеспечить бесперебойную работу обучения. После настройки пользовательского загрузчика данных он использует функцию печати, чтобы проверить форму изображения и размер пакета, которые были установлены на 32 с помощью ранее настроенного преобразования. Преподаватель также объясняет, как увеличение данных может искусственно увеличить разнообразие обучающего набора данных, и демонстрирует различные способы преобразования данных с помощью модуля преобразования фонарика, включая изменение размера, обрезку по центру, оттенки серого, случайные преобразования и случайное увеличение. .

  • 22:30:00 узнал об аугментации данных, которая представляет собой процесс искусственного добавления разнообразия к вашим тренировочным данным путем применения различных преобразований изображений. Это помогает сделать модель более универсальной для невидимых данных. Существует множество различных видов увеличения данных, таких как обрезка, замена, обрезка и многое другое. В PyTorch есть пакет torch vision, который включает примитивы или функции, помогающие обучать модели, чтобы они работали хорошо. Используя расширение данных и другие улучшения, PyTorch смог с высокой точностью обучать самые современные модели, такие как модель ResNet 50.

  • 22:35:00 В этом разделе инструктор обсуждает способы повышения точности модели, такие как оптимизация скорости обучения, более длительное обучение и использование различных методов дополнения. Преподаватель сосредоточится на тривиальной технике увеличения, которая использует силу случайности для изменения изображений различными способами с использованием ряда интервалов величины. Преподаватель демонстрирует, как реализовать тривиальное дополнение с помощью библиотеки преобразования зрения PyTorch torch, и предоставляет ссылку на документ для тех, кто хочет узнать об этом больше. Кроме того, инструктор советует попробовать различные методы увеличения и эксперименты, чтобы увидеть, что лучше всего работает для конкретных проблем. Наконец, инструктор показывает, как протестировать конвейер расширения, получая все пути к изображениям и объединяя все файлы и папки, соответствующие определенному шаблону.

  • 22:40:00 В этом разделе видео демонстрируется использование тривиальной аугментации, метода аугментации данных, при преобразовании изображений для искусственного добавления разнообразия в обучающий набор данных. Сила случайности используется путем выбора различных типов дополнений и их применения с разной степенью интенсивности. В этом разделе показано, как тривиальное увеличение применяется к случайно преобразованным изображениям, и отображаются результаты. Цель состоит в том, чтобы позволить модели машинного обучения изучать шаблоны обработанных изображений и иметь возможность идентифицировать их соответствующим образом. Следующий раздел посвящен созданию первой модели компьютерного зрения без увеличения данных с использованием крошечной архитектуры VGG.

  • 22:45:00 В этом разделе докладчик проходит процесс создания преобразований и загрузки данных для модели PyTorch. Цель состоит в том, чтобы загрузить изображения из папки данных, в данном случае пиццы, стейка и суши, и превратить их в тензоры. Преобразования включают изменение размера изображений до 64x64 и преобразование их в тензоры, чтобы значения находились в диапазоне от 0 до 1. Докладчик также объясняет, как создавать загрузчики данных и настраивать размер пакета и количество ядер ЦП, выделенных для загрузки данных. Размер партии, используемый в этом примере, равен 32.

  • 22:50:00 В этом разделе инструктор объясняет, как загружать и преобразовывать данные с помощью PyTorch DataLoader. Этот процесс включает в себя создание преобразования, а затем загрузку и преобразование данных одновременно с помощью функции DataLoader. Преподаватель также предоставляет простой код для создания архитектуры Tiny VGG с нуля, который включает в себя создание первого блока COM, состоящего из таких слоев, как COM, ReLU, MaxPool и ComToD. Модель инициализируется входной формой, скрытыми единицами измерения и выходными параметрами формы. Преподаватель предлагает учащимся поэкспериментировать с различными значениями гиперпараметров, таких как размер ядра и шаг.

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

Часть 24

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

  • 23:05:00 В этом разделе инструктор устраняет ошибку формы модели. Они объясняют, что правила умножения матриц должны выполняться при передаче тензоров через линейные слои. Преподаватель исследует матричные формы и определяет, что 10, представляющее количество скрытых единиц, вызывает проблему при умножении на 2560. Он использует выходную форму предыдущего слоя, чтобы определить, что 10 следует умножить на 16x16, чтобы получить 2560. После исправления это и проверка того, что формы модели совпадают с выходными данными объяснения CNN, они переходят к дальнейшему устранению неполадок и в конечном итоге обнаруживают, что удаление заполнения из сверточных слоев приведет к выравниванию форм с выходными данными объяснения CNN.

  • 23:10:00 В этом разделе инструктор представляет Torch Info — пакет, который позволяет пользователям распечатывать сводку своих моделей PyTorch. Сначала инструктор комментирует операторы печати из прямого метода и устанавливает Torch Info в Google CoLab с помощью команды pip install. Затем инструктор импортирует сводку из Torch Info и использует ее для передачи модели и размера ввода, чтобы получить формы данных, проходящих через модель. Инструктор показывает, как Torch Info распечатывает сводную информацию о модели, включая слои и соответствующие им формы.

  • 23:15:00 В этом разделе докладчик обсуждает информационный пакет torch, который используется, чтобы дать представление о входных и выходных формах каждого слоя в модели PyTorch. Они поясняют, что пакет также предоставляет информацию о количестве параметров на каждом уровне, что может быть полезно при определении размера модели и ограничений по объему памяти для будущих приложений. Докладчик отмечает, что по мере того, как модель становится больше и имеет больше слоев, у нее будет больше параметров, что приводит к большему размеру входных данных и предполагаемому общему размеру. В следующем разделе спикер переходит к обучению пользовательского набора данных и создает две функции — этап обучения и этап тестирования — которые являются универсальными и могут использоваться практически с любой моделью и загрузчиком данных. Функция шага обучения принимает модель, загрузчик данных, функцию потерь и оптимизатор и переводит модель в режим обучения при настройке показателей оценки.

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

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

  • 23:30:00 В этом разделе инструктор описывает процесс создания функции обучения, которая сочетает в себе функции шага обучения и шага проверки. Идея состоит в том, чтобы создать функцию для вызова обеих этих функций для обучения и оценки модели всего одним вызовом функции. Функция обучения принимает ряд параметров модели, включая оптимизатор, загрузчики данных, функцию потерь и другие. Затем инструктор создает пустой словарь, чтобы помочь отслеживать производительность модели во время ее обучения, включая потери и точность при обучении и тестировании. Затем они перебирают эпохи, вызывая TQDM, чтобы получить индикатор выполнения, пока модель обучается. Функция обучения — это полезный инструмент, позволяющий не переписывать код при обучении большего количества моделей и использовании существующего кода.

  • 23:35:00 В этом разделе инструктор объясняет функцию обучения, которая отслеживает обучение и тестирование с использованием функций обучения и тестового шага соответственно. Функция будет работать в течение определенного количества эпох, и для каждой эпохи она будет распечатывать поезд и проверять потери и точность, используя причудливый оператор печати. Результаты будут сохранены в словаре результатов для последующего использования для анализа. Функция поезда будет использовать функцию шага поезда и функцию шага теста, чтобы обновить модель и протестировать ее соответственно. Функция вернет результаты эпохи.

  • 23:40:00 В этом разделе инструктор анализирует прогресс, достигнутый в рабочем процессе PyTorch, который включает в себя подготовку данных, построение и выбор модели, построение цикла обучения, а теперь задачу по созданию функции потерь и оптимизатора. Переходя к разделу 7.7, инструктор рассказывает, как обучать и оценивать нулевую модель, базовую модель, на своем пользовательском наборе данных. Они устанавливают случайные начальные значения для воспроизводимости, создают экземпляр крошечной модели VGG с входной формой из трех для цветных изображений, устанавливают количество скрытых единиц и выходную форму в соответствии с количеством классов в их наборе обучающих данных. Они также выбирают функцию кросс-энтропийных потерь для мультиклассовой классификации и пробуют оптимизатор Адама со скоростью обучения 0,001.

  • 23:45:00 В этом разделе инструктор показывает, как рассчитать время процесса обучения модели глубокого обучения. Сначала они импортируют класс таймера по умолчанию из time, а затем запускают таймер перед нулевой моделью обучения, используя функцию обучения из предыдущего видео. Затем они устанавливают обучающие данные для обучения простого загрузчика данных и тестовые данные для простого тестового загрузчика данных, а также оптимизатор для FriendlyAtomOptimizer и функцию потерь для n кросс-энтропийной потери. Модель обучается в течение пяти эпох, и таймер останавливается, чтобы отобразить общее время обучения. Затем инструктор показывает результаты точности модели на тренировочном и тестовом наборах, которые составляют около 40% и 50% соответственно. Они предлагают попробовать различные методы улучшения модели, такие как добавление большего количества слоев или скрытых единиц, подгонка под более длительный срок, изменение функций активации и корректировка скорости обучения.

  • 23:50:00 В этом разделе инструктор объясняет, как строить кривые потерь, чтобы отслеживать изменение модели с течением времени. Кривая потерь — это способ отслеживания динамики модели с течением времени путем визуализации значения потерь слева и шагов на нижней оси. Нанося на график значения потерь и точности в поезде и тесте нашего словаря результатов с помощью matplotlib, мы можем увидеть, как работает наша модель, и оценить ее. Преподаватель пишет функцию под названием «кривые потерь на графике», которая принимает словарь результатов, содержащий значения потерь и точности в виде строки и списка с плавающей запятой.

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

Часть 25

  • 24:00:00 В этом разделе курса PyTorch для глубокого обучения и машинного обучения инструктор обсуждает кривые потерь и их важность для оценки производительности модели с течением времени. Кривая потерь должна показывать тенденцию уменьшения потерь с течением времени и повышения точности. Существуют различные формы кривых потерь, и идеальная кривая потерь показывает, что потери при обучении и тестировании уменьшаются с одинаковой скоростью. Недообучение происходит, когда потери модели могут быть ниже, а переоснащение происходит, когда модель слишком хорошо изучает обучающие данные, что приводит к меньшим потерям при обучении, чем потери при тестировании. Преподаватель предоставляет дополнительную учебную программу из руководства по кривой потерь Google и обсуждает методы решения проблемы переоснащения, такие как методы регуляризации и снижение сложности модели.

  • 24:05:00 несколько способов уменьшить переобучение в вашей модели глубокого обучения, которые обсуждались в этом разделе. Получение большего количества данных за счет увеличения данных или улучшения качества данных может помочь вашей модели изучить более общие шаблоны. Использование трансферного обучения путем использования шаблонов, извлеченных из предварительно обученных моделей, и применения их к вашему собственному набору данных также может быть эффективным. Также может помочь упрощение модели за счет уменьшения количества слоев или скрытых единиц. Снижение скорости обучения может помочь, уменьшая скорость обучения с течением времени, а ранняя остановка может остановить процесс обучения до того, как произойдет переоснащение.

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

  • 24:15:00 В этом разделе видео о PyTorch для глубокого и машинного обучения инструктор обсуждает концепцию переобучения и недообучения в моделях, а также способы борьбы с ними. Увеличение данных — это один из методов, введенных для борьбы с переоснащением, при котором изображения обрабатываются для увеличения разнообразия набора обучающих данных. Затем инструктор продолжает демонстрировать, как создать преобразование с увеличением данных и загрузить данные с помощью этих преобразований для создания обучающих и тестовых наборов данных и загрузчиков данных. В видео подчеркивается важность опробования различных моделей с различными настройками и преобразованиями, чтобы найти наиболее подходящую для конкретной проблемы.

  • 24:20:00 В этом разделе видео инструктор демонстрирует процесс создания набора данных и загрузчика данных с использованием преобразований PyTorch и класса ImageFolder. Они предоставляют примеры кода и призывают зрителей протестировать его самостоятельно, если они захотят. Набор данных создается из изображений пиццы, стейка и суши как для папок обучения, так и для папок тестирования. Преподаватель также обсуждает важность ясности с именами переменных при работе с похожими именами в блокноте. Они настроили загрузчики данных как для наборов данных для обучения, так и для наборов тестовых данных, при этом набор данных для обучения был дополнен тривиальной широкой функцией расширения. Затем инструктор предлагает зрителям построить и обучить модель, используя крошечный класс VGG и функцию обучения.

  • 24:25:00 В этом разделе полного курса PyTorch инструктор проводит зрителя через процесс создания и обучения новой модели с использованием той же архитектуры, что и раньше, но с расширенными обучающими данными. Цель состоит в том, чтобы сравнить производительность этой модели с базовой моделью без увеличения данных. Преподаватель использует класс, ранее созданный для крошечной модели VGG, и задает начальное значение вручную для воспроизводимости. Затем они определяют функцию потерь и оптимизатор, устанавливают гиперпараметры и запускают таймер. Наконец, инструктор обучает модель, вызывая ранее созданную функцию обучения, передавая модель и загрузчики данных и оценивая результаты.

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

  • 24:35:00 В этом разделе инструктор обсуждает важность сравнения результатов моделирования и предоставляет некоторые инструменты, такие как PyTorch плюс TensorBoard, а также веса и смещения, для отслеживания различных экспериментов. Однако он подчеркивает, что этот курс пока будет посвящен только чистому PyTorch. Затем инструктор настраивает график для сравнения результатов модели, используя фреймы данных для каждого из результатов модели. Он также предлагает провести эксперимент по обучению нулевой модели в течение более длительного времени, чтобы увидеть, улучшится ли она. В конечном счете, визуальное сравнение различных экспериментов и их показателей друг с другом имеет решающее значение для улучшения моделей.

  • 24:40:00 В этом разделе инструктор использует подграфики для сравнения различных показателей в двух моделях, с которыми он экспериментировал. Они начинают с создания диапазона количества эпох, а затем создают график потери поезда с помощью PLT.subplot() и PLT.plot(). Они делают то же самое для тестовых потерь и точности как для обучающих, так и для тестовых данных. Преподаватель отмечает, что первая модель, в которой реализовано увеличение данных, кажется, на данном этапе переоснащается, в то время как нулевая модель лучше работает с точки зрения потерь. Преподаватель предполагает, что если бы у них было больше моделей для сравнения, они потенциально могли бы превратить это в функцию, но также отмечает, что такие инструменты, как TensorBoard, веса и смещения и MLflow, могут помочь в понимании этих графиков при проведении многочисленных экспериментов.

  • 24:45:00 В этом разделе спикер обсуждает важность оценки моделей на основе того, насколько хорошо они работают с набором данных для тестирования, а не только с набором данных для обучения. Они предполагают, что, хотя метрики в наборе обучающих данных хороши, конечная цель состоит в том, чтобы модель хорошо работала на невидимых данных. Спикер рекомендует дольше тренировать модели и, возможно, добавлять больше скрытых юнитов в каждый слой для достижения лучших результатов. Затем они переходят к демонстрации того, как делать прогнозы на пользовательских изображениях, которых нет в наборе данных для обучения или тестирования, на примере приложения для распознавания продуктов питания. Они объясняют рабочий процесс загрузки пользовательского изображения и создания прогноза с использованием обученной модели PyTorch, но предупреждают, что текущая модель может не иметь высокой производительности.

  • 24:50:00 В этом разделе инструктор показывает, как загрузить пользовательское изображение пиццы и подготовить его для прогнозирования с помощью обученной модели. Изображение загружается с использованием необработанного URL-адреса GitHub и сохраняется в папке данных. Преподаватель отмечает, что пользовательское изображение должно быть в том же формате, что и данные, которые использовались для обучения модели, в частности, тензорная форма с типом данных torch float 32 и формой 64 на 64 на три. Они демонстрируют, как загрузить изображение в PyTorch с помощью пакета torch vision и функции read_image, которая считывает JPEG или PNG в трехмерный RGB или тензор оттенков серого.

  • 24:55:00 В этом разделе инструктор демонстрирует, как считывать пользовательское изображение в PyTorch с помощью torch vision.io и преобразовывать его в тензор. Он также показывает, как получить метаданные об изображении, такие как его форма и тип данных. Преподаватель отмечает, что перед передачей изображения через модель может потребоваться изменить его размер, преобразовать в формат float32 и поместить на нужное устройство. В следующем разделе он планирует продемонстрировать, как сделать прогноз для пользовательского изображения с помощью модели PyTorch.

Часть 26

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

  • 25:05:00 В этом разделе инструктор показывает, как использовать пакет transforms PyTorch для преобразования входного изображения и подготовки его к использованию в модели глубокого обучения. Они демонстрируют, как применить конвейер преобразования к пользовательскому изображению, в результате чего изображение сжимается и становится пиксельным. Преподаватель отмечает, что это потенциально может повлиять на точность модели, и рекомендует поэкспериментировать с изображениями большего размера для повышения производительности. Они также обсуждают важность обеспечения того, чтобы тензорные измерения соответствовали требованиям модели, включая добавление пакетного измерения к пользовательскому изображению перед его передачей через модель для вывода.

  • 25:10:00 В этом разделе видео докладчик демонстрирует, как делать прогнозы на основе данных пользовательского изображения с помощью модели PyTorch. Они подчеркивают важность правильного форматирования данных и обеспечения того, чтобы они имели тот же тип данных, форму и устройство, на которых обучалась модель, чтобы избежать ошибок. Докладчик также показывает, как преобразовать необработанные выходные данные модели или логиты в вероятности прогнозирования с помощью функции softmax. Хотя модель, используемая в примере, не работает хорошо, процесс прогнозирования на пользовательских данных проиллюстрирован.

  • 25:15:00 В этом разделе видео инструктор показывает, как реализовать процесс прогнозирования пользовательского изображения. Эта функция принимает модель PyTorch, путь к изображению, список имен классов, преобразование и устройство в качестве входных данных. Он загружает изображение с помощью TorchVision, форматирует его, получает прогнозные метки и выводит изображение с его прогнозом в качестве заголовка. Инструктор предлагает зрителям попробовать создать эту функцию самостоятельно, а затем демонстрирует возможную реализацию в видео. В этом разделе функция реализована не полностью и будет продолжена в следующем видео.

  • 25:20:00 В этом разделе мы увидим, как сделать прогноз на основе пользовательских данных с помощью PyTorch. Во-первых, нам нужно масштабировать данные изображения от 0 до 1, чтобы наша модель могла правильно их обрабатывать. Затем мы проверяем, нужны ли какие-либо преобразования, и пропускаем через них изображение, если они нужны. Затем мы убеждаемся, что модель находится на правильном устройстве, и переводим ее в режим логического вывода. Мы также добавляем дополнительное измерение к изображению, чтобы отразить размер пакета 1, который будет предсказывать наша модель. Затем мы делаем прогноз, конвертируем необработанные логиты в вероятности прогнозов с помощью softmax, а затем конвертируем их в метки прогнозов с помощью argmax. Наконец, мы создаем график изображения вместе с его прогнозом и вероятностью прогноза. Если предоставлен список имен классов, функция будет реплицировать имена классов для каждого прогноза на графике.

  • 25:25:00 В этом разделе инструктор объясняет, как создать функцию, которая может принимать изображения и отображать их предсказанный класс, используя предварительно обученную модель PyTorch. Функция может принимать список имен классов для маркировки, а также отображает вероятность предсказания. Затем инструктор демонстрирует использование этой функции на пользовательских изображениях и предварительно обученной модели, объясняя важность передачи результата на ЦП для совместимости с matplotlib. Несмотря на низкую производительность модели, инструктор подчеркивает силу визуализации результатов.

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

  • 25:35:00 В этом разделе инструктор предлагает учащимся сначала пройти шаблон упражнений с наборами пользовательских данных PyTorch и попытаться заполнить весь код самостоятельно. Если они застряли, они могут обратиться к примерам решений, предоставленным инструктором. Предлагаемые решения являются лишь одним из способов ведения дел, и пользователи могут свободно ссылаться на них и сравнивать с их реализацией. Решения и ошибки, возникающие в процессе, также можно увидеть в живых пошаговых руководствах, доступных на YouTube. Инструктор напоминает пользователям, что они выполнили множество упражнений и могут ознакомиться с дополнительными упражнениями и решениями в репозитории глубокого обучения PyTorch. В заключение инструктор упомянул, что на сайте Learnpytorch.io есть еще пять глав, которые учащиеся могут изучить, чтобы узнать больше о трансферном обучении, отслеживании экспериментов с моделями pytorch, репликации бумаги pytorch и развертывании моделей pytorch.

PyTorch for Deep Learning & Machine Learning – Full Course
PyTorch for Deep Learning & Machine Learning – Full Course
  • 2022.10.06
  • www.youtube.com
Learn PyTorch for deep learning in this comprehensive course for beginners. PyTorch is a machine learning framework written in Python.✏️ Daniel Bourke develo...
 

Курс машинного обучения «Нет черному ящику» — учитесь без библиотек



Курс машинного обучения «Нет черному ящику» — учитесь без библиотек

00:00:00 - 01:00:00 В этом видео на YouTube инструктор представляет курс машинного обучения без черного ящика, который учит, как кодировать в машинном обучении, не полагаясь на библиотеки. Курс охватывает темы, связанные с созданием веб-приложения, которое распознает рисунки, включая сбор данных, извлечение признаков и визуализацию, а также реализацию классификаторов, таких как ближайший сосед и K ближайший сосед. Преподаватель подчеркивает важность понимания данных в машинном обучении и предлагает ресурсы для тех, кому нужно освежить знания математики и программирования в средней школе. Видео демонстрирует процесс создания веб-страницы, выступающей в роли генератора данных, с использованием JavaScript без каких-либо внешних библиотек. Докладчик также включает инструкции о том, как создать кнопку отмены и поле ввода имени, сохранить рисунки в объекте данных и сохранить пути на компьютере пользователя. Наконец, в видео показано, как создать генератор набора данных в node.js и сгенерировать данные, связанные с каждым образцом, с помощью JavaScript.

01:00:00 - 02:00:00 В этом видео на YouTube инструктор учит зрителей, как создать набор данных для машинного обучения и извлечь функции без использования библиотек. Они демонстрируют, как хранить набор данных в папке, которая может взаимодействовать между сценариями узлов и веб-приложениями, и создавать приложение для просмотра данных. Преподаватель также покажет, как визуализировать собранные данные с помощью диаграмм Google и как идентифицировать и выделять выбранные элементы на диаграмме и в списке. В целом, видео представляет собой исчерпывающее руководство для учащихся по созданию наборов данных для машинного обучения и извлечению функций с использованием только JavaScript. 02:00:00 - 03:00:00 Видео «Курс машинного обучения без черного ящика — учитесь без библиотек» демонстрирует, как классифицировать рисунки на основе их функций без использования библиотек машинного обучения. Создатель видео подчеркивает важность наличия быстрой и отзывчивой системы для проверки данных, чтобы избежать ручных ошибок. Они демонстрируют, как добавлять функции на диаграмму, как скрыть фон и как отображать прогнозируемые метки на экране с помощью динамических контейнеров с HTML и CSS. В видео также рассматриваются методы масштабирования данных, такие как нормализация и стандартизация. Наконец, в видео показано, как реализовать классификатор K ближайших соседей и подсчитать количество каждой метки в пределах K ближайших соседей.

03:00:0003:50:00 Видео на YouTube «Курс машинного обучения без черного ящика — учитесь без библиотек» охватывает различные темы, связанные с классификацией K-ближайших соседей без использования библиотек машинного обучения, таких как JavaScript и Python. В видео объясняется, как разделить наборы данных на наборы для обучения и тестирования, обрабатывать выборки для обучения и тестирования по отдельности и нормализовать данные. Преподаватель также обсуждает важность границ решений для понимания того, как работает классификатор, демонстрирует, как реализовать классификатор K-ближайших соседей (KNN) в JavaScript и генерировать график на основе пикселей без использования библиотек машинного обучения. Наконец, видео заканчивается призывом к зрителям изучить дополнительные возможности Python и поразмышлять над тем, что они уже узнали.

Часть 1

  • 00:00:00 В этом разделе спикер представляет курс машинного обучения без черного ящика, который фокусируется на кодировании без использования библиотек. Курс охватывает различные темы для создания веб-приложения, которое распознает рисунки, включая сбор данных, извлечение признаков и визуализацию, а также реализацию классификаторов, таких как ближайший сосед и K ближайший сосед. Докладчик подчеркивает важность понимания данных в машинном обучении и предоставляет учащимся небольшой перерыв, чтобы они могли сосредоточиться на выполнении домашнего задания, а также предлагает ресурсы для освежения знаний по математике и программированию в средней школе. Затем курс переходит ко второму этапу, где будут рассмотрены более продвинутые методы, такие как нейронные сети. Также продемонстрирован пример создания приложения для рисования для сбора данных с функциями отмены и сохранения.

  • 00:05:00 В этом разделе видео инструктор демонстрирует процесс создания веб-страницы, которая будет использоваться в качестве генератора данных для набора данных. Они начинают с создания новой папки с именем web и внутри этой папки создают первый файл, веб-страницу с именем Creator.html. Страница включает базовый HTML, раздел заголовка и внешнюю таблицу стилей Styles.css. Они также добавляют основные стили для страницы, включая семейство шрифтов и цвет фона. Затем инструктор переходит к реализации блокнота с помощью внешнего файла JavaScript с именем sketchpad.js и определяет конструктор класса блокнота для хранения элемента холста.

  • 00:10:00 В этом разделе инструктор настраивает холст с помощью JavaScript и добавляет прослушиватель событий onmousedown для обнаружения действий мыши. Они получают координаты мыши, получая прямоугольник ограничивающей области холста и вычитая левую и верхнюю стороны соответственно. После округления координат до целых чисел инструктор создает массив путей, содержащий координаты мыши при щелчке по холсту. Они также устанавливают для «drawing» значение false и для «path» значение «пусто». Для «onmousemove» добавлен еще один прослушиватель событий, чтобы продолжать добавлять новые точки в массив путей при перемещении мыши.

  • 00:15:00 В этом разделе спикер объясняет, как реализовать события мыши для рисования на холсте с помощью JavaScript, без использования библиотек. Используя прослушиватели событий для onMouseMove и onMouseUp, код отслеживает движения мыши и добавляет местоположение к пути, если пользователь рисует. Кроме того, создается новая функция «получить мышь», чтобы добавить местоположение на холст. Наконец, спикер демонстрирует, как создать служебный объект «рисования», чтобы очистить и нарисовать путь на холсте.

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

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

  • 00:30:00 В этом разделе видео объясняется, как улучшить внешний вид кнопки, изменив стиль в файле CSS. Рассказчик добавляет эффект наведения и устанавливает стили для отключенного состояния. Далее мы узнаем, как создать поле ввода, чтобы пользователи могли ввести свое имя, и кнопку для перехода к следующему рисунку. В видео также объясняется, как собирать данные из этих полей и хранить их в объекте с тремя полями: студент, сеанс и рисунки. Наконец, рассказчик начинает реализовывать функцию запуска, которая будет использоваться для запуска процесса рисования.

  • 00:35:00 В этом разделе видео докладчик показывает, как реализовать приложение для рисования с помощью JavaScript без использования каких-либо библиотек. Они начинают с определения индекса для меток вещей, которые они хотят нарисовать, таких как автомобиль, рыба, дом и т. д. Они также добавляют поле для инструкций и изменяют кнопку запуска, чтобы изменить ее на «Далее» после первого рисования. . Затем они реализуют функцию для кнопки «Далее», которая увеличивает индекс, получает следующую метку и обновляет инструкции. Они также сохраняют рисунки в объекте данных для конкретной метки и добавляют общедоступный метод для сброса блокнота для рисования. Ведущий тестирует приложение и показывает, что объект данных собирает рисунки.

  • 00:40:00 В этом разделе инструктор объясняет, как сохранить пути, нарисованные пользователями, локально на своем компьютере. Они создают элемент «a» с атрибутом href, установленным на «простой текст данных», и кодируют компонент URI, используя строковую версию данных. Собранные данные сохраняются в виде строки JSON в файле с уникальным именем, сгенерированным из метки времени. Наконец, запускается действие загрузки для загрузки файла. Преподаватель также добавляет инструкции о том, что делать со скачанным файлом, и заявляет, что это будет иметь больше смысла после следующей лекции.

  • 00:45:00 В этом разделе инструктор показывает, как устранить возможную проблему с блокнотом для рисования, добавив прослушиватель событий в документ вместо холста. Он также просит зрителей помочь протестировать систему на разных устройствах и сообщить о любых проблемах или предложить решения. Затем инструктор объясняет, как преобразовать собранные данные в более управляемую форму с помощью node.js, и показывает, как перейти в каталог проекта и создать новую папку для хранения данных. Наконец, он создает «необработанную» папку, в которую вставляет все данные, собранные из почти 500 студенческих работ, каждая из которых содержит восемь различных рисунков, и объясняет, как он будет обрабатывать эти файлы для создания набора данных, где каждый образец представляет собой рисунок.

  • 00:50:00 +Alt+M и файл Json будет правильно отформатирован. В этом разделе инструктор объясняет, как они будут создавать генератор набора данных в nodejs для обработки образцов и их визуализации с использованием двух отдельных папок: одной для представлений Json, а другой — для изображений. Сценарий будет считывать имена файлов из каталога необработанных данных, извлекать из них содержимое и сохранять информацию о каждом образце, такую как его идентификатор, метка, имя и идентификатор учащегося, сессия и рисунок. Наконец, в этом разделе кратко показано, как запускать и тестировать код, что приводит к созданию файла примеров Json в указанном каталоге.

  • 00:55:00 В этом разделе спикер объясняет, как генерировать данные, связанные с каждым образцом, с помощью JavaScript. Это включает в себя запись файлов в каталог Json и определение рисунка каждой конкретной метки. Затем докладчик демонстрирует, как создать графическое представление каждого рисунка с помощью холста и функции «пути рисования» из общего каталога. Для этого спикер экспортирует объект «draw» из файла «draw.js» для использования в генераторе набора данных и устанавливает библиотеку холста с помощью менеджера пакетов узла.


Часть 2

  • 01:00:00 В этом разделе инструктор показывает, как создать холст и использовать его для рисования контуров на холсте, а затем сохранить его как изображение. Они также очищают холст перед рисованием новых путей. После создания файлов изображений инструктор устраняет проблему в приложении для рисования, вызванную тем, что модуль не определен в Draw JS. Они используют структуру, которая будет использоваться на протяжении всего курса, разделяя константы в другом файле и требуя его. Преподаватель добавляет индикатор хода выполнения в новый файл с именем utils, создавая объект utils и добавляя функцию с именем ход выполнения печати. Они используют процесс STD для получения стандартного вывода, вычисляют процент с помощью функции форматирования процента и записывают его в стандартный вывод, чтобы показать индикатор выполнения.

  • 01:05:00 В этом разделе создатель видео объясняет, как сохранить сгенерированный набор данных таким образом, чтобы браузер мог его прочитать. Он создает папку с именем «JS_objects», которая будет содержать файлы, которые могут взаимодействовать между сценариями узлов и веб-приложениями. Создается файл JavaScript «samples», который инициализирует объект JavaScript внутри папки JS_objects. Создатель видео также упоминает, что он создаст приложение для просмотра набора данных и создаст файл HTML с именем «viewer.html» с базовым кодом HTML. Раздел заголовка файла включает метатег для поддержки символов UTF и заголовок страницы. Раздел body включает тег H1 с заголовком «Просмотр данных» и элемент div с идентификатором «контейнер» для хранения набора данных. Файл JavaScript «примеры» включен в файл HTML.

  • 01:10:00 В этом разделе преподаватель работает над созданием таблицы с примерами, сгруппированными по идентификатору студента. Для этого они реализуют функцию «группировать по» в файле utils.js, которая группирует массив по заданному ключу. Затем они регистрируют группы в консоли, чтобы проверить, работает ли она. Затем они создают функцию под названием «создать строку» в отдельном файле display.js, которая принимает контейнер, имя учащегося и образцы в качестве параметров и создает строку с именем слева и образцами справа. Они создают цикл для повторения каждого идентификатора учащегося, вызывают функцию «создать строку» и передают необходимые параметры для отображения данных в формате таблицы.

  • 01:15:00 В этом разделе инструктор показывает, как динамически создавать ряд изображений с метками и правильно выравнивать их с помощью CSS. Они начинают с циклического просмотра набора образцов изображений, создания элемента изображения и назначения атрибутов источника и стиля. Затем изображения добавляются к строке, а элемент div метки создается и добавляется к контейнеру образцов. Затем контейнер-образец оборачивается в div, которому присваивается идентификатор и класс. Затем инструктор уточняет CSS, чтобы центрировать метки и изображения и добавлять многоточия к более длинным именам. Наконец, они добавляют белый фон к примерам рисунков, создавая div и добавляя его после метки.

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

  • 01:25:00 В этом разделе ютубер просматривает некоторые рисунки в наборе данных и комментирует их качество, отмечая, что некоторые из них очень детализированы и, должно быть, на их создание ушло много времени. Они также упоминают, что их набор данных отличается от набора данных Quick Draw, поскольку у них есть кнопка отмены и нет ограничения по времени, а это означает, что их рисунки в среднем должны быть лучшего качества. Наконец, они небрежно комментируют организацию и стиль страницы.

  • 01:30:00 В этом разделе инструктор объясняет, как извлекать функции из примеров без использования каких-либо библиотек. Функции для извлечения количества путей и точек реализованы в файле с именем features.js и добавлены к объекту с именем features. Затем в файле feature extractor.js образцы считываются, и функции извлекаются путем перебора всех образцов и получения количества путей и точек для каждого из них. Затем эти значения функций объединяются в массив и записываются в новый файл. Наконец, имена функций и примеры объединяются в другом файле с именем features.json. При запуске скрипта извлечения функций в журнале указывается «извлечение функций», а в конце — «готово». Полученные объекты в каталоге набора данных можно затем изучить.

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

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

  • 01:45:00 В этом разделе создатель видео показывает, как создать точечную диаграмму с помощью диаграмм Google, а затем создать новую диаграмму с помощью собственного кода JavaScript. Создатель упрощает параметры диаграммы и меняет цветовую схему, чтобы вместо этого использовать смайлики, что упрощает распознавание точек данных без необходимости использования меток или легенд. Прозрачность диаграммы также регулируется, чтобы обеспечить лучшую видимость плотно нанесенных данных.

  • 01:50:00 В этом разделе инструктор добавляет на диаграмму функцию обратного вызова для идентификации любого выбранного элемента в таблице ниже. Новая функция называется «обработка щелчка», которая добавляет к выбранному элементу класс «выделение» и использует «прокрутку в поле зрения» и «центр блока», чтобы гарантировать автоматическую прокрутку элемента в центр страницы. Затем инструктор изменяет макет страницы таким образом, чтобы диаграмма находилась в правой части страницы, а остальное содержимое — в левой. Диаграмма также фиксируется в своем положении, чтобы она не двигалась при прокрутке пользователем.

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


Часть 3

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

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

  • 02:10:00 В этом разделе спикер демонстрирует динамическую точку, которую можно добавить на график, которая перемещается по мере рисования. Это достигается установкой атрибута в значение и его перерисовкой. Динамическая точка добавляется в класс диаграммы и рисуется до отображения осей. При перетаскивании точка перемещается в разные области, а при рисовании прозрачной белой точкой на черном фоне она гораздо заметнее. Значение должно быть большим, так как диаграмма может быть увеличена, и точка останется видимой, не выходя за края.

  • 02:15:00 В этом разделе инструктор демонстрирует, как активировать метод обновления в sketchpad.js, который работает, скрывая динамический ввод и отображая данные при нажатии переключателя ввода. С помощью метода триггерного обновления инструктор применяет функции получения ширины и высоты в общих функциях функций для расчета ширины и высоты чертежа, которые используются для извлечения новых функций в средстве извлечения элементов узла. Преподаватель предлагает изменить структуру HTML таким образом, чтобы один и тот же ресурс использовался для извлечения и отображения данных.

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

  • 02:25:00 В этом разделе инструктор объясняет, как классифицировать рисунок на основе его признаков без использования библиотек машинного обучения. Они извлекают признаки из входных данных и смотрят на близлежащие точки, чтобы классифицировать входные данные. Чтобы найти ближайшую точку, инструктор копирует функцию get ближайшей из диаграммы math.js и вставляет ее в свой код. Затем они вызывают функцию, чтобы определить метку для чертежа, и регистрируют результат.

  • 02:30:00 В этом разделе создатель видео добавляет функциональность для отображения прогнозируемой метки на экране с помощью динамических контейнеров с HTML и CSS. Прогнозируемая метка отображается в белом контейнере с составным текстом, показывающим, является ли объект автомобилем или нет. Создатель экспериментирует с рисованием различных объектов, таких как часы и карандаши, чтобы проверить возможности прогнозирования программы. Затем создатель видео обновляет диаграмму, используя динамические точки с метками и изображениями, и рисует линии, соединяющие ближайшие образцы.

  • 02:35:00 В этом разделе спикер обсуждает важность того, чтобы не сжимать и не растягивать данные в диаграммах при работе над проектами машинного обучения. Они демонстрируют, как соотношение сторон диаграммы может влиять на интерпретацию данных, приводя к путанице и ошибкам. Чтобы решить эту проблему, динамик вычисляет дельту для максимальных значений x и y и соответствующим образом корректирует диаграмму. Хотя это создает пустое пространство, это позволяет правильно визуализировать данные и получать точные результаты машинного обучения.

  • 02:40:00 В этом разделе стенограммы создатель видео подчеркивает важность масштабирования данных в машинном обучении, чтобы гарантировать, что все функции имеют одинаковое значение в классификации. Создатель демонстрирует, как данные могут быть сжаты и растянуты во время извлечения признаков, что приводит к неодинаковой обработке определенных признаков. Чтобы уравнять игровое поле, создатель вводит нормализацию, распространенный метод переназначения значений функций в диапазоне от 0 до 1. В видео показана реализация новой функции под названием «нормализовать точки» в разделе «утилиты», чтобы выполнить это. переназначение.

  • 02:45:00 В этом разделе видеоруководство показывает, как нормализовать данные, изменив значения от 0 до 1. Функция инициализируется, чтобы быть достаточно общей, и вычисляются минимальное и максимальное значения для каждой функции. Точки изменяются, чтобы быть между 0 и 1 путем вычитания минимального значения и деления на разницу. Обратная функция lerp используется для преобразования заданного значения в процентное значение для нормализации элементов, извлеченных из чертежа. Минимальные и максимальные значения возвращаются из функции и записываются в один из объектных файлов JavaScript для связи с интерфейсом. Наконец, данные генерируются, и минимальные и максимальные значения включаются в объектные файлы JavaScript.

  • 02:50:00 В этом разделе ведущий объясняет, как нормализовать точки, прежде чем пытаться классифицировать их с помощью функции нормализации точек Utils. Для этого необработанные данные объектов загружаются и передаются в качестве входных данных функции. Кроме того, можно передать минимальное и максимальное значение для поддержки нормализации без необходимости их вычисления. Также показано, как нормализация чувствительна к выбросам и как с ними бороться, например, путем их автоматического обнаружения и удаления или использования стандартизации в качестве другого масштабирования данных.

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


Часть 4

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

  • 03:05:00 В этом разделе видео демонстрируется, как разбить набор данных на наборы для обучения и тестирования, записать их в файлы и определить константы для этих разбиений в коде с помощью JavaScript. Обучающая выборка установлена равной 50% от количества выборок, а видео предупреждает об ошибке тестирования на обучающих данных. Для тестирования код перебирает все тестовые образцы и сохраняет значение метки в атрибуте Truth, делая вид, что не знает метку для целей тестирования.

  • 03:10:00 В этом разделе видео рассказывается, как обрабатывать обучающую и тестовую выборки по отдельности и как правильно нормализовать данные. Спикер объясняет, что важно нормализовать данные только с тренировочным набором, поскольку мы понятия не имеем, каким будет тестовый набор. Они также рассказывают, как правильно классифицировать, используя только информацию из обучающих данных, и демонстрируют, как обрабатывать неизвестные точки данных с помощью функции классификации.

  • 03:15:00 В этом разделе создатель видео добавляет правильный атрибут к тестовой метке и сравнивает эту метку со значением истинности из предыдущего, чтобы определить точность. Также добавлен подзаголовок, чтобы уточнить, где начинается тестовый набор. Затем создатель добавляет поле статистики для расчета и отображения точности классификатора K ближайших соседей, для которого установлено значение 10 ближайших соседей, что дает точность 39,62%. При изменении параметра на одного ближайшего соседа точность на самом деле намного хуже, что показывает, что рассмотрение нескольких соседей было хорошей идеей.

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

  • 03:25:00 В этом разделе спикер объясняет, как реализовать классификатор K-ближайших соседей (KNN) в JavaScript. Код начинается с прогнозирования меток для каждой точки выборки тестирования с использованием метода KNN и расчета точности путем проверки количества правильных прогнозов. Файл KN.js создается для определения класса, который использует обучающие выборки и K для хранения и прогнозирования заданной точки. Код класса для классификации копируется из HTML-кода средства просмотра в KN.js и модифицируется в соответствии с новым классом. Сценарий оценки выполнения обновлен для использования классификатора KNN вместо старого метода классификации. Благодаря такому рефакторингу код становится более управляемым, и можно избежать глупых ошибок.

  • 03:30:00 В этом разделе инструктор демонстрирует, как создать график на основе пикселей без использования библиотек машинного обучения путем нормализации значений пикселей и их цветового кодирования на основе предсказанных значений. Затем график сохраняется в виде изображения PNG и устанавливается в качестве фона диаграммы. Преподаватель показывает, как реализовать эту новую функцию в файле chart.js, взяв верхнюю левую координату в соответствии с данными, получив значение пикселя от границ данных до границ пикселя и разделив его в соответствии с тем, как было выполнено масштабирование с использованием преобразование.

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

  • 03:40:00 В этом разделе ютубер объясняет, как подготовить данные для Python, написав функцию для преобразования выборочных данных в формат CSV с помощью JavaScript. Они создают функцию toCSV, которая преобразует образцы данных с заголовками и именами функций в формат CSV, который обычно используется в Python. Они выводят CSV с именами функций и метками как для данных обучения, так и для тестирования, а затем переходят к реализации K ближайших соседей на Python с использованием библиотек. Они открывают обучающий CSV-файл, читают строки и анализируют данные как массив строк, представленных в виде строки, с символом новой строки.

  • 03:45:00 В этом разделе инструктор объясняет, как подготовить данные для классификации K ближайших соседей без использования библиотек. Данные считываются из файла CSV и сохраняются в двух пустых массивах в Python — X для значений функций и Y для меток. Преподаватель проходит цикл, чтобы заполнить массивы, преобразовать значения признаков в числа с плавающей запятой и переназначить метки на числа. Переназначение достигается с помощью словаря Python. Затем данные помещаются в объект классификатора KNN с параметрами, установленными для эмуляции веб-приложения, включая 250 соседей, алгоритм грубой силы и единые веса. Преподаватель заканчивает тем, что подчеркивает важность отступов в Python и извлекает данные функции чтения из файла как функцию.

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

MIT 6.034 «Искусственный интеллект». Осень 2010 г. Лекция 1. Введение и сфера применения



1. Введение и сфера применения

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

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

  • 00:05:00 В этом видео профессор объясняет, как работают гироскопы и как представить задачу в виде графика. Затем он продолжает объяснять, как решить задачу фермера Фокса о гусях и зерне, что является примером, с которым многие люди могут быть знакомы с детства.

  • 00:10:00 Видео знакомит с концепцией искусственного интеллекта и его различных компонентов, включая тесты, созданные искусственным интеллектом. Затем в видео обсуждается принцип Румпельштильцхена, который гласит, что как только вы можете назвать что-то, вы можете получить над этим власть.

  • 00:15:00 Это видео знакомит с концепцией простых идей, которые сильны и могут быть простыми или сложными. Затем в видео обсуждаются определения и примеры простых идей. Суть видео в том, что простые идеи важны для создания более умных программ, и что у ученых и инженеров разные мотивы для их изучения.

  • 00:20:00 В этом видео обсуждается история искусственного интеллекта, начиная с работы, проделанной Адой Лавлейс более века назад. Современная эра искусственного интеллекта началась с статьи, написанной Марвином Мински в 1960 году. Через один день в курс будет включено обсуждение искусственного интеллекта.

  • 00:25:00 «Эпоха бульдозеров» относится к эпохе, когда люди начали понимать, что у них есть доступ к неограниченной вычислительной мощности, и начали разрабатывать экспертные системы, основанные на правилах.

  • 00:30:00 В видео обсуждается история эволюции человека и идея старшей школы, которая заключается в том, что люди развивались путем постепенного и непрерывного совершенствования. Далее обсуждается, как случайные изменения, которые привели к эволюции человека, были случайными продуктами эволюции, и размышляются о том, какими могут быть эти изменения.

  • 00:35:00 Это видео представляет собой краткое введение в идеи Ноама Хомского о развитии человеческого интеллекта. Основные моменты заключаются в том, что язык находится в центре человеческого интеллекта, и что основная цель курса - помочь учащимся развить навыки в этой области. В видео также упоминается важность декламации и учебных пособий, которые являются ключевыми аспектами курса.

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

  • 00:45:00 Видео знакомит с викториной и финалом, а также объясняет, как будет работать викторина, и формат финального экзамена. В видео также объясняется, как учащиеся смогут связаться с преподавателем и запланировать занятия.
1. Introduction and Scope
1. Introduction and Scope
  • 2014.01.10
  • www.youtube.com
MIT 6.034 Artificial Intelligence, Fall 2010View the complete course: http://ocw.mit.edu/6-034F10Instructor: Patrick WinstonIn this lecture, Prof. Winston in...
 

Лекция 2. Рассуждения: деревья целей и решение проблем



2. Рассуждение: деревья целей и решение проблем

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

  • 00:00:00 Видео знакомит с упрощением задач — распространенным методом решения задач, используемым учащимися в области исчисления. В нем обсуждается философия образования, лежащая в основе сокращения проблем, и приводится список примеров уменьшения проблем.

  • 00:05:00 Спикер объясняет, как работает решение проблем и как различные преобразования могут помочь решить проблему. Они проходят четыре безопасных преобразования, которые необходимы для решения задачи. Первый шаг — применить все безопасные преобразования, а затем посмотреть в таблице, решена ли проблема. Если проблема решена, то спикер сообщит об успехе.

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

  • 00:15:00 В видео обсуждаются различные эвристические преобразования, которые можно использовать для решения задач. Одно из этих преобразований представляет собой семейство преобразований, которое я покажу вам только одно. Это преобразование происходит следующим образом: если у вас есть интеграл от функции тангенса и X, вы можете переписать его как интеграл от функции Y по 1 плюс у в квадрате dy. Это преобразование из тригонометрической формы в полиномиальную позволяет избавиться от всего этого тригонометрического мусора, с которым мы не хотим иметь дело. Нам также нужна буква C, и это будет ваша правильная рефлекторная реакция. Вы видите что-то в форме 1 минус х в квадрате, и что вы делаете, когда видите это? Ну, вы могли бы сделать это. Ты ничего не сможешь сделать, если у Кристен есть что предложить. Она говорит, что из-за того, что наш венгерский я превращаю нашу молодую очередь, она предлагает нам применить трансформацию, которая включает в себя знак X людей. Это означает, что Сцилле на самом деле больше не нужно об этом помнить, потому что в дальнейшем ей никогда не придется интегрировать что-либо лично в свою жизнь. Она может просто имитировать программу. Они переходят из полиномиальной формы обратно в тригонометрическую, так что у вас есть три

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

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

  • 00:30:00 В видео обсуждается программа-рассуждения, которая решает задачи, составляя безопасные преобразования. Он показывает, как программа остановилась, не дойдя до решения конкретной проблемы, и вернулась к работе над другой проблемой.

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

  • 00:40:00 В видео обсуждается, как знания представлены в решении задач и как определенные преобразования упрощают задачу. Также обсуждается, как можно использовать знания для решения проблем в сложных областях.

  • 00:45:00 Докладчик демонстрирует программу, которая якобы демонстрирует, как компьютеры могут быть «умными». Однако говорящий быстро понимает, что программа делает то же самое, что и он, и поэтому компьютер не является по-настоящему разумным.
 

Лекция 3. Рассуждения: деревья целей и экспертные системы на основе правил



3. Рассуждение: деревья целей и экспертные системы на основе правил

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

  • 00:00:00 В этом видео объясняется, как строится экспертная система на основе правил (RBS), и приводится пример работы системы. RBS предназначен для решения задач, которые трудно решить с помощью более традиционных методов, таких как алгебраические уравнения.

  • 00:05:00 В этом видео профессор Патрик Уинстон объясняет, как работают логические программы или экспертные системы, основанные на правилах. Структура программы очень проста, с четырьмя блоками, которые выполняются в итеративном цикле для достижения желаемого результата. Программа способна решать задачи, связанные с простыми блоками, потому что она берет подсказки из вопросов, на которые уже отвечала в прошлом, и использует рекурсию для достижения сложного результата.

  • 00:10:00 Видео объясняет, как дерево целей используется для ответа на вопросы о том, как что-то было сделано, и как для этого можно использовать дерево и/или. В нем также объясняется, что программа интеграции может использовать деревья целей, чтобы отвечать на вопросы о своем собственном поведении.

  • 00:15:00 В этом видео обсуждается, как сложное поведение является результатом сложности среды, а не сложности программы. Экспертные системы, основанные на правилах, были разработаны в конце 60-х годов как способ инкапсулировать знания в простые правила, и они используются до сих пор.

  • 00:20:00 В этом видео на YouTube обсуждается, как можно использовать экспертную систему на основе правил (RBSES) для идентификации животных в небольшом зоопарке. RBSES состоит из нескольких правил, связанных воротами и , что позволяет системе с уверенностью распознавать конкретное животное.

  • 00:25:00 В этом видео объясняется, как работает экспертная система, основанная на правилах (RBE), отталкиваясь от гипотезы, чтобы определить, является ли объект определенным типом животного.

  • 00:30:00 Создана экспертная система на основе правил для проектирования домов, подобных проектам португальского архитектора Сизы. Система способна преобразовывать то, что говорит упаковщик в продуктовом магазине, в правило «если-то», что позволяет инженеру по знаниям понять его.

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

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

  • 00:45:00 В этом видео объясняется, как работает рассуждение с помощью деревьев целей и экспертных систем на основе правил. В обоих примерах система способна читать истории и определять последствия действий.
3. Reasoning: Goal Trees and Rule-Based Expert Systems
3. Reasoning: Goal Trees and Rule-Based Expert Systems
  • 2014.01.10
  • www.youtube.com
MIT 6.034 Artificial Intelligence, Fall 2010View the complete course: http://ocw.mit.edu/6-034F10Instructor: Patrick WinstonWe consider a block-stacking prog...