En este video vamos a revisar la Regresión Lineal Múltiple en múltiples dimensiones y cómo construir estos modelos usando PyTorch.
Linear es quizás la función más utilizada en PyTorch y es clave para construir redes neuronales.
En este video vamos a revisar: Regresión lineal en múltiples dimensiones El problema de la predicción,
con respecto a PyTorch revisará la Clase Lineal y cómo construir módulos personalizados usando NN.Modules.
En regresión lineal múltiple tenemos múltiples variables predictoras, en este ejemplo tenemos 4 variables predictoras, luego:
Tenemos el sesgo, w1: coeficiente o el peso __1_
w2: coeficiente o el peso __2_ y así sucesivamente.
En general, el peso y el sesgo son parámetros de nuestro modelo que obtenemos a través del entrenamiento.
La tabla contiene diferentes muestras de las variables predictoras __1_ y __2_.
La posición de cada punto se coloca en el plano 2D, codificado por color en consecuencia
Cada muestra de las variables predictoras __1_ y __2_ se asignará a un nuevo valor __.
Los nuevos valores de __ (y-hat) se asignan en la dirección vertical, con una altura proporcional al valor que toma y-hat.
Podemos expresar la operación como una transformación lineal, x es un tensor 1 por D o vector
y a veces se refiere como una característica, w es un tensor D por 1 o vector de parámetros
y-hat es la variable dependiente. Usando el producto de punto podemos expresar la ecuación en términos de operaciones vectoriales.
Considere el siguiente ejemplo con el sesgo igual a uno. Realizamos el producto punto de x y w.
Esto multiplica el primer componente de x y w. Luego agregamos el producto del segundo componente de w y x.
Luego agregamos el sesgo, el resultado es 9.
La propiedad más importante es la forma. El número de columnas de x,
Debe ser el mismo que el número de filas de w, luego agregamos b
Realizamos la operación de producto de punto, luego agregamos b, el resultado es y-hat.
Utilizaremos la representación del color para ayudarnos a entender la relación entre la forma y los parámetros.
El siguiente gráfico dirigido también es útil para entender el producto punto.
Los nodos representan entidades y los bordes representan parámetros.
Estos gráficos se utilizarán más adelante para ayudarnos a entender las redes neuronales. En este caso tenemos 2 dimensiones.
Podemos extenderlo a D dimensiones arbitrarias.
Podemos realizar regresión lineal en múltiples muestras de tensores o vectores, en este caso tenemos 4 muestras, cada muestra tiene 4 columnas.
Esta es la salida de un objeto cargador de tren con 4 muestras
Tenemos el tensor o Matriz representado con una X. mayúscula. La primera muestra corresponde a la primera fila de la matriz.
La segunda muestra corresponde a la segunda fila de la matriz, y así sucesivamente.
Podemos utilizar colores para representar las diferentes muestras.
Para múltiples muestras, la ecuación de regresión es una transformación lineal.
y y b son vectores o tensores de fila, una fila para cada muestra. Vamos a utilizar la representación de color del producto de punto para tener una mejor idea de lo que está pasando.
En la siguiente imagen cada muestra de la matriz X está representada por un color diferente,
esencialmente un tono diferente de verde o azul. El parámetro es naranja.
Observe que y-hat es audaz ya que es un vector o un tensor multidimensional.
Para la primera muestra realizamos el producto punto con la primera fila de la matriz y el parámetro.
Luego agregamos el término de sesgo, luego obtenemos la predicción para la primera muestra.
Para la segunda muestra tomamos el producto punto del vector de parámetros, luego agregamos el término de sesgo.
Luego obtenemos la predicción para la segunda muestra. Repetimos el proceso para la tercera y cuarta muestra,
tomando el producto de punto y añadiendo el término de sesgo, cada muestra produce una nueva predicción
En resumen, el número de columnas de X y el número de pesos debe ser el mismo en este caso también.
Aunque solo hay un sesgo, añadimos el término de sesgo a cada producto de punto usando un vector en verde.
Y hay tantas predicciones como muestras o columnas en X.
Usemos la clase lineal útil para realizar regresión lineal en múltiples dimensiones.
Importamos lineales del paquete nn. Los pesos y el sesgo se inicializan aleatoriamente,
para obtener los mismos resultados cada vez que ejecutamos el código, usamos la semilla aleatoria.
Aprenderemos cómo se obtienen los parámetros en la siguiente sección.
Vamos a crear un objeto modelo usando el constructor lineal, el parámetro «in — features»
es el tamaño de cada muestra de entrada o el número de columnas, «out features» es el tamaño de cada muestra de salida,
esencialmente crea una función lineal. El lineal produce la siguiente función. Vamos a utilizar el siguiente diagrama para representar la forma
El parámetro «en entidades» representa el número de columnas de x, y el número de pesos del modelo,
«Fuera entidades» es el tamaño de las salidas en este caso uno.
Los parámetros del método, esto nos da los parámetros del modelo; el primero es la pendiente,
el segundo el sesgo, tenemos que aplicar la lista de funciones Python para obtener una salida ya que el método se evalúa perezosamente.
Podemos ver los pesos lineales y el sesgo. En el laboratorio también puede usar el método «dict state».
Podemos crear un tensor de entrada, este es un vector de fila o tensor con dos columnas.
Aplicamos el objeto lineal, el resultado es un tensor 1x1 correspondiente a la predicción.
Podemos aplicar regresión lineal a múltiples muestras, creamos un tensor donde cada fila es una muestra diferente.
Como antes usamos diferentes colores para representar las diferentes muestras
Aplicamos el objeto modelo, ya que tenemos tres entradas, la salida es de tres filas.
La salida real es un tensor con tres filas y una columna, correspondiente a los siguientes colores.
En PyTorch es costumbre hacer un módulo personalizado, en el contexto de regresión se comportará casi idéntico al objeto lineal.
Esto puede parecer un poco redundante, pero esto será necesario más adelante cuando se construyan redes neuronales.
Los módulos personalizados son clases; estas clases son la subclase o los hijos del paquete «NN.Modules».
En este caso, llamamos a nuestro módulo personalizado LR. Hacemos de la clase un hijo de «NN.Modules».
Como resultado, hereda todos los métodos y atributos.
En el constructor de objetos, el argumento es el tamaño de la entrada y la salida, x e y respectivamente.
Llamamos al «super» en el constructor, esto nos permite crear objetos desde el paquete NN.module dentro del objeto, sin inicializarlo explícitamente.
Ahora podemos crear un objeto de tipo lineal, los argumentos se establecen a través del constructor de objetos
Lo asignamos a self.linear ahora podemos llamar al objeto de tipo lineal en cualquier lugar de la clase.
Utilizamos la función hacia adelante para producir una predicción. No tendremos que llamar explícitamente al método forward,
solo use paréntesis ya que se comporta como el método de llamada en Python
Creamos nuestro módulo o clase personalizado. Esto se comporta como el objeto lineal, los parámetros «in-features» son dos y «out-features» es uno.
Este objeto se comporta como lineal, podemos hacer una predicción para una muestra.
O podemos hacer predicciones para múltiples muestras.