Dans cette vidéo, nous allons examiner la régression linéaire multiple dans plusieurs dimensions et comment construire ces modèles en utilisant PyTorch.
Linear est peut-être la fonction la plus souvent utilisée dans PyTorch et est la clé de la construction de réseaux neuronaux.
Dans cette vidéo, nous allons passer en revue : Régression linéaire en dimensions multiples Le problème de la prédiction,
en ce qui concerne PyTorch va passer en revue la classe linéaire et comment construire des modules personnalisés en utilisant NN.Modules.
Dans la régression linéaire multiple, nous avons plusieurs variables prédictives, dans cet exemple, nous avons 4 variables prédictives, puis :
Nous avons le biais, w1 : coefficient ou le poids __1_
w2 : coefficient ou le poids __2_ et ainsi de suite.
En général, le poids et le biais sont des paramètres de notre modèle que nous obtenons grâce à l'entraînement.
La table contient différents échantillons des variables prédictives __1_ et __2_.
La position de chaque point est placée sur le plan 2D, code couleur en conséquence
Chaque échantillon des variables prédictives __1_ et __2_ sera mappé à une nouvelle valeur __.
Les nouvelles valeurs de __ (y-hat) sont mappées dans la direction verticale, avec une hauteur proportionnelle à la valeur prise par y-hat.
Nous pouvons exprimer l'opération comme une transformation linéaire, x est un tenseur 1 par D ou vecteur
et est parfois appelé une caractéristique, w est un tenseur D par 1 ou vecteur de paramètres
y hat est la variable dépendante. En utilisant le produit point, nous pouvons exprimer l'équation en termes d'opérations vectorielles.
Prenons l'exemple suivant avec le biais égal à un. Nous effectuons le produit point de x et w.
Cela multiplie le premier composant de x et w. Nous ajoutons ensuite le produit de la deuxième composante de w et x.
Nous ajoutons ensuite le biais, le résultat est 9.
La propriété la plus importante est la forme. Le nombre de colonnes de x,
Doit être le même que le nombre de lignes de w, nous ajoutons ensuite b
Nous effectuons l'opération de produit point, puis ajouter b, le résultat est y-hat.
Nous utiliserons la représentation des couleurs pour nous aider à comprendre la relation entre la forme et les paramètres.
Le graphique suivant est également utile pour comprendre le produit de points.Les nœuds
représentent des entités et les arêtes représentent des paramètres.
Ces graphiques seront utilisés plus tard pour nous aider à comprendre les réseaux neuronaux. Dans ce cas, nous avons 2 dimensions.
Nous pouvons l'étendre à D dimensions arbitraires.
Nous pouvons effectuer une régression linéaire sur plusieurs échantillons de tenseurs ou de vecteurs, dans ce cas nous avons 4 échantillons, chaque échantillon a 4 colonnes.
Ceci est la sortie d'un objet chargeur de train avec 4 échantillons
Nous avons le tenseur ou la matrice représenté avec un X. Le premier échantillon correspond à la première ligne de la matrice.
Le deuxième échantillon correspond à la deuxième ligne de la matrice, etc.
Nous pouvons utiliser des couleurs pour représenter les différents échantillons.
Pour plusieurs échantillons, l'équation de régression est une transformation linéaire.
y et b sont des vecteurs ou tenseurs de ligne, une rangée pour chaque échantillon. Utilisons la représentation couleur du produit ponctué pour avoir une meilleure idée de ce qui se passe.
Dans l'image suivante, chaque échantillon de la matrice X est représenté par une couleur différente,
essentiellement une nuance différente de vert ou de bleu. Le paramètre est orange.
Notez que y-hat est gras car il s'agit d'un tenseur vectoriel ou multidimensionnel.
Pour le premier échantillon, nous effectuons produit point avec la première ligne de la matrice et le paramètre.
Nous ajoutons ensuite le terme de biais, puis nous obtenons la prédiction pour le premier échantillon.
Pour le deuxième échantillon, nous prenons le produit point du vecteur de paramètre, puis nous ajoutons le terme de biais.
Nous obtenons ensuite la prédiction pour le second échantillon. Nous répétons le processus pour le troisième et le quatrième échantillon,
en prenant le produit de point et en ajoutant le terme de biais, chaque échantillon produit une nouvelle prédiction
En résumé, le nombre de colonnes de X et le nombre de poids doivent être les mêmes dans ce cas aussi.
Bien qu'il n'y ait qu'un seul biais, nous ajoutons le terme de biais à chaque produit ponctuel en utilisant un vecteur en vert.
Et il y a autant de prédictions que d'échantillons ou de colonnes dans X.
Utilisons la classe linéaire utile pour effectuer une régression linéaire dans plusieurs dimensions.
Nous importons linéaire à partir du paquet nn. Les poids et le biais sont initialisés aléatoirement,
pour obtenir les mêmes résultats chaque fois que nous exécutons le code, nous utilisons la graine aléatoire.
Nous allons apprendre comment les paramètres sont obtenus dans la section suivante.
Nous allons créer un objet modèle en utilisant le linéaire du constructeur, le paramètre « in — features »
est la taille de chaque échantillon d'entrée ou le nombre de colonnes, « out features » est la taille de chaque échantillon de sortie,
, il crée essentiellement une fonction linéaire. Le linéaire produit la fonction suivante. Utilisons le diagramme suivant pour représenter la forme
Le paramètre « dans les entités » représente le nombre de colonnes de x, et le nombre de poids du modèle,
« Fonctions de sortie » est la taille des sorties dans ce cas un.
Les paramètres de la méthode, cela nous donne les paramètres du modèle ; le premier est la pente,
le second le biais, nous devons appliquer la liste des fonctions Python pour obtenir une sortie car la méthode est évaluée paresseusement.
On peut voir les pondérations linéaires et le biais. Dans le laboratoire, vous pouvez également utiliser la méthode « state dict ».
Nous pouvons créer un tenseur d'entrée, c'est un vecteur de ligne ou un tenseur avec deux colonnes.
Nous appliquons l'objet linéaire, le résultat est un tenseur 1x1 correspondant à la prédiction.
Nous pouvons appliquer une régression linéaire à plusieurs échantillons, nous créons un tenseur où chaque ligne est un échantillon différent.
Comme avant nous utilisons différentes couleurs pour représenter les différents échantillons
Nous appliquons l'objet du modèle, car nous avons trois entrées, la sortie est de trois lignes.
La sortie réelle est un tenseur avec trois rangées et une colonne, correspondant aux couleurs suivantes.
Dans PyTorch, il est d'usage de faire un module personnalisé, dans le contexte de régression, il se comportera presque identique à l'objet linéaire.
Cela peut sembler un peu redondant, mais cela sera nécessaire plus tard quand être construire des réseaux neuronaux.
Les modules personnalisés sont des classes ; ces classes sont la sous-classe ou les enfants du paquet « NN.Modules ».
Dans ce cas, nous appelons notre module personnalisé LR. Nous faisons de la classe un enfant de « NN.Modules ».
En conséquence, il hérite de toutes les méthodes et attributs.
Dans le constructeur d'objet, l'argument est la taille de l'entrée et de la sortie, x et y respectivement.
Nous appelons le « super » dans le constructeur, cela nous permet de créer des objets à partir du paquet NN.Module à l'intérieur de l'objet, sans l'initialiser explicitement.
Nous pouvons maintenant créer un objet de type linéaire, les arguments sont définis via le constructeur d'objet
Nous l'assignons à self.linear nous pouvons maintenant appeler l'objet de type linéaire n'importe où dans la classe.
Nous utilisons la fonction forward pour produire une prédiction. Nous n'aurons pas à appeler explicitement la méthode forward,
utilise simplement des parenthèses car elle se comporte comme la méthode d'appel en Python
Nous créons notre module personnalisé ou notre classe. Cela se comporte comme l'objet linéaire, les paramètres « in-features » sont deux et « out-features » est un.
Cet objet se comporte comme linéaire, on peut faire une prédiction pour un échantillon.
Ou nous pouvons faire des prédictions pour plusieurs échantillons.