[Deep-Learning-Experiment] Lineares Modell (3): Verwenden Sie Pytorch, um ein einfaches lineares Modell zu implementieren: Erstellen, konstruieren Sie die Verlustfunktion und berechnen Sie den Verlustwert

Inhaltsverzeichnis

1. Einführung in das Experiment

 2. Experimentelle Umgebung

1. Konfigurieren Sie die virtuelle Umgebung

2. Einführung in die Bibliotheksversion

3. Experimenteller Inhalt

0. Bibliothek importieren

1. Definieren Sie das lineare Modell linear_model

2. Definieren Sie die Verlustfunktion loss_function

3. Daten definieren

4. Rufen Sie das Modell auf

5. Vollständiger Code


1. Einführung in das Experiment

  • Implementiert mit Pytorch
    • Linearer Modellbau
    • Konstruieren Sie eine Verlustfunktion
    • Verlustwert berechnen

 2. Experimentelle Umgebung

        Diese Versuchsreihe verwendet das PyTorch-Deep-Learning-Framework. Die relevanten Vorgänge sind wie folgt:

1. Konfigurieren Sie die virtuelle Umgebung

conda create -n DL python=3.7 
conda activate DL
pip install torch==1.8.1+cu102 torchvision==0.9.1+cu102 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
conda install matplotlib
 conda install scikit-learn

2. Einführung in die Bibliotheksversion

Softwarepaket Diese experimentelle Version Die aktuell aktuellste Version
matplotlib 3.5.3 3.8.0
Numpy 1.21.6 1.26.0
Python 3.7.16
scikit-lernen 0,22,1 1.3.0
Fackel 1.8.1+cu102 2.0.1
Torchaudio 0.8.1 2.0.2
Fackelvision 0,9,1+cu102 0,15,2

3. Experimenteller Inhalt

ChatGPT:

        Das lineare Modell ist ein grundlegendes Modell für maschinelles Lernen, das verwendet wird, um eine lineare Beziehung zwischen Eingabemerkmalen und Ausgabe herzustellen. Es handelt sich um ein lineares Kombinationsmodell, das den Ausgabewert vorhersagt, indem es die Summe der Eingabemerkmale gewichtet und einen Bias-Term hinzufügt.

        Die allgemeine Form des linearen Modells kann wie folgt ausgedrückt werden: y = w1x1 + w2x2 + ... + wnxn + b, wobei y die Ausgabevariable ist, x1, x2, ..., xn die Eingabemerkmale sind, w1, w2 , ..., wn ist das Gewicht des Merkmals und b ist der Bias-Term. Das Ziel des Modells besteht darin, die Differenz zwischen dem vorhergesagten Wert und dem wahren Wert durch Anpassung der Gewichtungen und Bias-Terme zu minimieren.

Es gibt mehrere gängige Anwendungsformen linearer Modelle:

  1. Lineare Regression: Wird verwendet, um eine lineare Beziehung zwischen Eingabemerkmalen und kontinuierlicher Ausgabe herzustellen. Es passt die beste Regressionsgerade an, indem es die quadrierte Differenz zwischen dem vorhergesagten Wert und dem wahren Wert minimiert.

  2. Logistische Regression: Wird verwendet, um eine lineare Beziehung zwischen Eingabemerkmalen und binärer oder mehrklassiger Ausgabe herzustellen. Es erstellt Klassifizierungsvorhersagen, indem es die Ergebnisse linearer Kombinationen mithilfe logistischer Funktionen (z. B. Sigmoidfunktionen) auf Wahrscheinlichkeitswerte abbildet.

  3. Support Vector Machines (SVM): werden für binäre Klassifizierungs- und Mehrfachklassifizierungsprobleme verwendet. SVM trennt Stichproben verschiedener Kategorien, indem es eine optimale Hyperebene findet. Es kann verschiedene Kernelfunktionen verwenden, um nichtlineare Probleme zu behandeln.

  4. Ridge-Regression und Lasso-Regression: werden zur Behandlung von Regressionsproblemen mit Multikollinearität verwendet. Durch die Einführung von Regularisierungstermen für die Gewichte können sie den Einfluss von Merkmalen verringern und die Generalisierungsfähigkeit des Modells verbessern.

        Zu den Vorteilen linearer Modelle gehören Einfachheit, einfache Interpretation und Recheneffizienz. Sie finden bei vielen praktischen Problemen breite Anwendung. Lineare Modelle weisen jedoch auch einige Einschränkungen auf, beispielsweise ihre schwache Fähigkeit, nichtlineare Beziehungen zu modellieren. Bei der Bearbeitung komplexer Probleme kann die Leistung linearer Modelle durch die Einführung nichtlinearer Merkmalstransformationen oder deren Erweiterung um Kernelfunktionen verbessert werden.

Bei dieser Reihe handelt es sich um experimentelle Inhalte, die theoretisches Wissen nicht im Detail erläutern.

(Ähm, ich habe eigentlich keine Zeit, das zu klären. Ich werde zurückkommen und die Lücken füllen, wenn ich die Gelegenheit dazu habe.)

0. Bibliothek importieren

import torch

1. Definieren Sie ein lineares Modelllinear_model

        Diese Funktion akzeptiert Eingabedaten x, verwendet zufällig generierte Gewichtungen wund Bias bund berechnet einen Ausgabewert output. Die Form des linearen Modells ist hier  output = x * w + b.

def linear_model(x):
    w = torch.rand(1, 1, requires_grad=True)
    b = torch.randn(1, requires_grad=True)
    return torch.matmul(x, w) + b

2. Definieren Sie die Verlustfunktionloss_function

      Der mittlere quadratische Fehler (MSE) wird hier als Verlustfunktion verwendet, um das Quadrat der Differenz zwischen dem vorhergesagten Wert und dem wahren Wert zu berechnen.

def loss_function(y_true, y_pred):
    loss = (y_pred - y_true) ** 2
    return loss

3. Daten definieren

  • Generieren Sie einen zufälligen Eingabetensor  xmit der Form (5, 1), der angibt, dass es 5 Stichproben gibt und die Merkmalsdimension jeder Stichprobe 1 ist.

  • Generieren Sie einen Zieltensor  ymit der Form (5, 1), der die entsprechende wahre Bezeichnung darstellt.

  • Druckt Informationen zu den Daten, einschließlich Eingabe- xund Zielwerten für jede Probe y.
x = torch.rand(5, 1)
y = torch.tensor([1, -1, 1, -1, 1], dtype=torch.float32).view(-1, 1)
print("The data is as follows:")
for i in range(x.shape[0]):
    print("Item " + str(i), "x:", x[i][0], "y:", y[i])

4. Rufen Sie das Modell auf

  • Verwenden Sie  die Funktion, um linear_model die Eingabe  x vorherzusagen  und das Vorhersageergebnis zu erhalten prediction.

  • Der Verlusttensor wird durch  loss_function Berechnen des Verlusts zwischen dem vorhergesagten Ergebnis und der wahren Bezeichnung  erhalten loss.

  • Der Verlustwert für jede Probe wird gedruckt.
prediction = linear_model(x)
loss = loss_function(y, prediction)
print("The all loss value is:")
for i in range(len(loss)):
    print("Item ", str(i), "Loss:", loss[i])

5. Vollständiger Code

import torch

def linear_model(x):
    w = torch.rand(1, 1, requires_grad=True)
    b = torch.randn(1, requires_grad=True)
    return torch.matmul(x, w) + b

def loss_function(y_true, y_pred):
    loss = (y_pred - y_true) ** 2
    return loss

x = torch.rand(5, 1)
y = torch.tensor([1, -1, 1, -1, 1], dtype=torch.float32).view(-1, 1)
print("The data is as follows:")
for i in range(x.shape[0]):
    print("Item " + str(i), "x:", x[i][0], "y:", y[i])

prediction = linear_model(x)
loss = loss_function(y, prediction)
print("The all loss value is:")
for i in range(len(loss)):
    print("Item ", str(i), "Loss:", loss[i])


Beachten:

        Das lineare Modell in diesem Experiment verwendete einfach zufällige Gewichte und Verzerrungen, um den mittleren quadratischen Fehlerverlust des Modells im Trainingssatz zu berechnen, und verwendete keinen Optimierungsalgorithmus, um die Modellparameter zu aktualisieren.

        Normalerweise werden Optimierungsalgorithmen wie der Gradientenabstieg verwendet, um die Verlustfunktion zu minimieren, und die Parameter des Modells werden basierend auf den Trainingsdaten kontinuierlich aktualisiert. Weitere Informationen finden Sie im nächsten Kapitel.

Supongo que te gusta

Origin blog.csdn.net/m0_63834988/article/details/132946573
Recomendado
Clasificación