В этом видео мы рассмотрим множественную линейную регрессию в нескольких измерениях и как построить эти модели с помощью PyTorch.
Linear является, пожалуй, наиболее часто используемой функцией в PyTorch и является ключом к построению нейронных сетей.
В этом видео мы рассмотрим: Линейная регрессия в нескольких измерениях Проблема прогнозирования,
в отношении PyTorch рассмотрим класс Linear и как построить пользовательские модули с использованием NN.Modules.
В множественной линейной регрессии у нас есть несколько переменных предиктора, в этом примере у нас есть 4 переменные предиктора, затем:
У нас есть смещение, w1: коэффициент или вес __1_
w2: коэффициент или вес __2_ и так далее.
В целом вес и смещение являются параметрами нашей модели, которые мы получаем с помощью обучения.
Таблица содержит различные образцы переменных предиктора __1_ и __2_.
Положение каждой точки размещается на 2D плоскости, цвет кодируется соответствующим образом
Каждая выборка переменных предиктора __1_ и __2_ будет сопоставлена с новым значением __.
Новые значения __ (y-hat) отображаются в вертикальном направлении, с высотой, пропорциональной значению, которое принимает y-hat.
Мы можем выразить операцию как линейное преобразование, x является тензором 1 на D или вектором
и иногда упоминается как функция, w является тензором D на 1 или вектор параметров
y-hat является зависимой переменной. Используя точечное произведение, мы можем выразить уравнение в терминах векторных операций.
Рассмотрим следующий пример с смещением, равным единице. Мы выполняем точечное произведение x и w.
Это умножает первый компонент x и w. Затем добавляем произведение второго компонента w и x.
Затем добавляем смещение, результат 9.
Наиболее важным свойством является форма. Количество столбцов x,
Должно быть таким же, как количество строк w, мы добавляем b
Выполняем операцию точечного продукта, затем добавляем b, результат Y-hat.
Мы будем использовать цветовое представление, чтобы помочь нам понять взаимосвязь между формой и параметрами.
Следующий ориентированный график также полезен для понимания точечного продукта.
Узлы представляют объекты, а ребра - параметры.
Эти графики будут использованы позже, чтобы помочь нам понять нейронные сети. В этом случае у нас есть 2 измерения.
Мы можем расширить его до D произвольных размеров.
Мы можем выполнить линейную регрессию на нескольких выборках тензоров или векторов, в этом случае у нас 4 образца, каждая выборка имеет 4 столбца.
Это выход объекта загрузчика поезда с 4 образцами
У нас тензор или матрица, представленные в верхнем регистре X. Первый образец соответствует первой строке матрицы.
Второй образец соответствует 2-й строке матрицы и так далее.
Мы можем использовать цвета для представления различных образцов.
Для нескольких образцов уравнение регрессии представляет собой линейное преобразование.
y и b являются векторами или тензорами строк, по одной строке для каждого образца. Давайте используем цветовое представление точечного продукта, чтобы получить лучшее представление о том, что происходит.
На следующем изображении каждый образец в матрице X представлен другим цветом,
, по сути, другим оттенком зеленого или синего. Параметр оранжевый.
Обратите внимание, что y-hat является жирным, поскольку это векторный или многомерный тензор.
Для первого образца мы выполняем точечное произведение с первой строкой матрицы и параметром.
Затем мы добавляем термин смещения, затем получаем прогноз для первого образца.
Для второго образца берем точечное произведение вектора параметров, затем добавляем термин смещения.
Затем мы получаем прогноз для второго образца. Повторяем процесс для третьего и четвертого образца,
принимая точечный продукт и добавляя термин смещения, каждый образец производит новое предсказание
В целом, количество столбцов X и количество весов должны быть одинаковыми и в этом случае.
Хотя есть только одно смещение, мы добавляем термин смещения к каждому точечному продукту, используя вектор зеленого цвета.
И в X.
Давайте использовать полезный класс линейной для выполнения линейной регрессии в нескольких измерениях.
Импортируем линейный из пакета nn. Вес и смещение случайным образом инициализируются,
, чтобы получить одинаковые результаты каждый раз, когда мы запускаем код, мы используем случайное семя.
Мы узнаем, как будут получены параметры в следующем разделе.
Создадим объект модели с использованием линейного конструктора, параметр «in — features»
— размер каждого входного образца или количество столбцов, «out features» — размер каждого выходного образца,
он по существу создает линейную функцию. Линейный производит следующую функцию. Давайте используем следующую диаграмму для представления формы
Параметр «в функциях» представляет количество столбцов x, а количество весов модели,
«Out features» - размер выходных данных в этом случае один.
Параметры метода, это дает нам параметры модели; первый - уклон,
второй - смещение, мы должны применить список функций Python, чтобы получить вывод, как метод лениво оценивается.
Мы видим линейные веса и смещение. В лаборатории вы также можете использовать метод «состояние dict».
Мы можем создать входной тензор, это вектор строки или тензор с двумя столбцами.
Применяем линейный объект, результатом которого является тензор 1x1, соответствующий прогнозу.
Мы можем применить линейную регрессию к нескольким выборкам, мы создаем тензор, где каждая строка является другой выборкой.
Как и прежде мы используем разные цвета для представления различных образцов
Мы применяем объект модели, так как у нас есть три входа, выход три строки.
Фактический выход - тензор с тремя рядами и одним столбцом, соответствующий следующим цветам.
В PyTorch принято делать пользовательский модуль, в контексте регрессии он будет вести себя почти идентично линейному объекту.
Это может показаться немного лишним, но это потребуется позже, когда будут построены нейронные сети.
Пользовательские модули являются классами; эти классы являются подклассом или дочерними из пакета «NN.Modules».
В этом случае мы называем наш пользовательский модуль LR. Мы делаем класс дочерним из «NN.Modules».
В результате он наследует все методы и атрибуты.
В конструкторе объекта аргументом является размер входных и выходных данных, x и y соответственно.
Мы называем «супер» в конструкторе, это позволяет нам создавать объекты из пакета NN.Module внутри объекта, не инициализируя его явно.
Теперь мы можем создать объект типа linear, аргументы устанавливаются с помощью конструктора объекта
Мы присваиваем его self.linear мы теперь можем называть объект типа linear в любом месте класса.
Мы используем функцию вперед для создания предсказания. Нам не придется явно вызывать метод forward,
просто используйте скобку, поскольку он ведет себя как метод вызова в Python
Мы создаем наш пользовательский модуль или класс. Это ведет себя как линейный объект, параметры «in-features» - два, а «out-features» - один.
Этот объект ведет себя как линейный, мы можем сделать предсказание для одного образца.
Или мы можем сделать прогнозы для нескольких образцов.