Inhaltsverzeichnis
1. Einführung in das Experiment
1. Konfigurieren Sie die virtuelle Umgebung
2. Einführung in die Bibliotheksversion
1. Definieren Sie das lineare Modell linear_model
2. Definieren Sie die Verlustfunktion loss_function
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:
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.
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.
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.
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 w
und Bias b
und 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
x
mit der Form (5, 1), der angibt, dass es 5 Stichproben gibt und die Merkmalsdimension jeder Stichprobe 1 ist. -
Generieren Sie einen Zieltensor
y
mit der Form (5, 1), der die entsprechende wahre Bezeichnung darstellt. - Druckt Informationen zu den Daten, einschließlich Eingabe-
x
und Zielwerten für jede Probey
.
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 Eingabex
vorherzusagen und das Vorhersageergebnis zu erhaltenprediction
. -
Der Verlusttensor wird durch
loss_function
Berechnen des Verlusts zwischen dem vorhergesagten Ergebnis und der wahren Bezeichnung erhaltenloss
. - 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.