Mir ist der Gradientenabstieg und der Back-Propagation-Algorithmus bekannt. Was ich nicht verstehe ist: Wann ist die Verwendung eines Bias wichtig und wie verwenden Sie ihn?
AND
Wenn ich zum Beispiel die Funktion abbilde, wenn ich 2 Eingänge und 1 Ausgang verwende, gibt es nicht die richtigen Gewichte. Wenn ich jedoch 3 Eingänge verwende (von denen 1 ein Bias ist), gibt es die richtigen Gewichte.
Antworten:
Ich denke, dass Vorurteile fast immer hilfreich sind. Mit einem Bias-Wert können Sie die Aktivierungsfunktion nach links oder rechts verschieben , was für ein erfolgreiches Lernen von entscheidender Bedeutung sein kann.
Es könnte hilfreich sein, ein einfaches Beispiel zu betrachten. Betrachten Sie dieses Netzwerk mit 1 Eingang und 1 Ausgang, das keine Verzerrung aufweist:
Die Ausgabe des Netzwerks wird berechnet, indem die Eingabe (x) mit dem Gewicht (w 0 ) multipliziert und das Ergebnis durch eine Aktivierungsfunktion (z. B. eine Sigmoidfunktion) geleitet wird.
Hier ist die Funktion, die dieses Netzwerk für verschiedene Werte von w 0 berechnet :
Durch Ändern des Gewichts w 0 wird im Wesentlichen die "Steilheit" des Sigmoid geändert. Das ist nützlich, aber was ist, wenn das Netzwerk 0 ausgeben soll, wenn x 2 ist? Nur die Steilheit des Sigmoid zu ändern, funktioniert nicht wirklich - Sie möchten die gesamte Kurve nach rechts verschieben können .
Genau das ermöglicht Ihnen die Voreingenommenheit. Wenn wir diesem Netzwerk eine Tendenz hinzufügen, wie folgt:
... dann wird der Ausgang des Netzwerks sig (w 0 * x + w 1 * 1.0). So sieht die Ausgabe des Netzwerks für verschiedene Werte von w 1 aus :
Ein Gewicht von -5 für w 1 verschiebt die Kurve nach rechts, wodurch wir ein Netzwerk haben können, das 0 ausgibt, wenn x 2 ist.
quelle
Nur um meine zwei Cent hinzuzufügen.
Ein einfacherer Weg, um zu verstehen, was die Vorspannung ist: Sie ähnelt irgendwie der Konstante b einer linearen Funktion
y = ax + b
Sie können die Linie nach oben und unten verschieben, um die Vorhersage besser an die Daten anzupassen. Ohne b geht die Linie immer durch den Ursprung (0, 0) und Sie erhalten möglicherweise eine schlechtere Anpassung.
quelle
Dieser Thread hat mir wirklich geholfen, mein eigenes Projekt zu entwickeln. Hier sind einige weitere Abbildungen, die das Ergebnis eines einfachen 2-Schicht-Feed-Forward-Neuronalen Netzwerks mit und ohne Bias-Einheiten bei einem Regressionsproblem mit zwei Variablen zeigen. Die Gewichte werden zufällig initialisiert und die Standard-ReLU-Aktivierung wird verwendet. Wie die Antworten vor mir feststellten, kann das ReLU-Netzwerk ohne die Verzerrung bei (0,0) nicht von Null abweichen.
quelle
Der Grund, warum dies unpraktisch ist, liegt darin, dass Sie gleichzeitig das Gewicht und den Wert anpassen, sodass jede Änderung des Gewichts die Änderung des Werts neutralisieren kann, die für eine vorherige Dateninstanz nützlich war. Das Hinzufügen eines Bias-Neurons ohne Änderung des Werts ermöglicht dies Sie steuern das Verhalten der Ebene.
Darüber hinaus können Sie mit der Vorspannung ein einzelnes neuronales Netz verwenden, um ähnliche Fälle darzustellen. Betrachten Sie die boolesche UND-Funktion, die durch das folgende neuronale Netzwerk dargestellt wird:
(Quelle: aihorizon.com )
Die Schwelle ist die Vorspannung und w0 ist das Gewicht, das dem Vorspannungs- / Schwellenneuron zugeordnet ist.
quelle
Die Verzerrung ist kein
NN
Begriff, sondern ein allgemein zu berücksichtigender Algebra-Begriff.Y = M*X + C
(Geradengleichung)Wenn
C(Bias) = 0
dann, wird die Linie immer durch den Ursprung verlaufen, dh(0,0)
und hängt nur von einem Parameter ab, dhM
der Steigung, sodass wir weniger Dinge zum Spielen haben.C
Dies ist die Vorspannung, die eine beliebige Zahl annimmt und die Aktivität hat, den Graphen zu verschieben und somit komplexere Situationen darzustellen.Bei einer logistischen Regression wird der erwartete Wert des Ziels durch eine Verknüpfungsfunktion transformiert, um seinen Wert auf das Einheitsintervall zu beschränken. Auf diese Weise können Modellvorhersagen wie folgt als primäre Ergebniswahrscheinlichkeiten angesehen werden: Sigmoid-Funktion auf Wikipedia
Dies ist die letzte Aktivierungsschicht in der NN-Karte, die das Neuron ein- und ausschaltet. Auch hier spielt die Verzerrung eine Rolle und verschiebt die Kurve flexibel, um das Modell abzubilden.
quelle
Eine Schicht in einem neuronalen Netzwerk ohne Vorspannung ist nichts anderes als die Multiplikation eines Eingabevektors mit einer Matrix. (Der Ausgabevektor wird möglicherweise zur Normalisierung und zur anschließenden Verwendung in mehrschichtigen ANN durch eine Sigmoidfunktion geleitet, aber das ist nicht wichtig.)
Dies bedeutet, dass Sie eine lineare Funktion verwenden und daher eine Eingabe aller Nullen immer einer Ausgabe aller Nullen zugeordnet wird. Dies mag für einige Systeme eine vernünftige Lösung sein, ist aber im Allgemeinen zu restriktiv.
Mit einem Bias fügen Sie Ihrem Eingabebereich effektiv eine weitere Dimension hinzu, die immer den Wert Eins annimmt, sodass Sie einen Eingabevektor aller Nullen vermeiden. Sie verlieren dadurch keine Allgemeingültigkeit, da Ihre trainierte Gewichtsmatrix nicht surjektiv sein muss, sodass sie weiterhin allen zuvor möglichen Werten zugeordnet werden kann.
2d ANN:
Bei einer ANN, die zwei Dimensionen einer Dimension zuordnet, wie bei der Wiedergabe der AND- oder OR- (oder XOR-) Funktionen, können Sie sich ein neuronales Netzwerk wie folgt vorstellen:
Markieren Sie in der 2d-Ebene alle Positionen der Eingabevektoren. Für boolesche Werte möchten Sie also (-1, -1), (1,1), (-1,1), (1, -1) markieren. Was Ihr ANN jetzt tut, ist das Zeichnen einer geraden Linie in der 2D-Ebene, die den positiven Ausgang von den negativen Ausgangswerten trennt.
Ohne Verzerrung muss diese gerade Linie durch Null gehen, während Sie sie mit Verzerrung überall platzieren können. Sie werden also feststellen, dass Sie ohne Verzerrung auf ein Problem mit der UND-Funktion stoßen, da Sie nicht beide (1, -1) und (-1,1) auf die negative Seite stellen können. (Sie werden nicht sein darf auf der ganzen Linie.) Das Problem ist gleich für die ODER - Funktion. Mit einer Tendenz ist es jedoch einfach, die Grenze zu ziehen.
Beachten Sie, dass die XOR-Funktion in dieser Situation auch mit Vorspannung nicht gelöst werden kann.
quelle
Wenn Sie ANNs verwenden, wissen Sie selten über die Interna der Systeme Bescheid, die Sie lernen möchten. Einige Dinge können nicht ohne Vorurteile gelernt werden. Schauen Sie sich beispielsweise die folgenden Daten an: (0, 1), (1, 1), (2, 1), im Grunde eine Funktion, die jedes x auf 1 abbildet.
Wenn Sie ein einschichtiges Netzwerk (oder eine lineare Zuordnung) haben, können Sie keine Lösung finden. Wenn Sie jedoch eine Tendenz haben, ist es trivial!
In einer idealen Umgebung könnte eine Verzerrung auch alle Punkte auf den Mittelwert der Zielpunkte abbilden und die verborgenen Neuronen die Unterschiede von diesem Punkt modellieren lassen.
quelle
Die Modifikation der Neuronengewichte allein dient nur dazu, die Form / Krümmung Ihrer Übertragungsfunktion und nicht deren Gleichgewicht / Null zu manipulieren .
Die Einführung von Voreingenommenheit Neuronen können Sie die Übertragungsfunktionskurve horizontal (links / rechts) entlang der Eingangsachse verschieben, während Form / Krümmung unverändert bleiben. Auf diese Weise kann das Netzwerk beliebige Ausgaben erzeugen, die sich von den Standardeinstellungen unterscheiden. Daher können Sie die Eingabe-Ausgabe-Zuordnung an Ihre speziellen Anforderungen anpassen / verschieben.
Eine grafische Erklärung finden Sie hier: http://www.heatonresearch.com/wiki/Bias
quelle
Nur um all dem etwas hinzuzufügen, das sehr fehlt und das der Rest höchstwahrscheinlich nicht wusste.
Wenn Sie mit Bildern arbeiten, ziehen Sie es möglicherweise vor, überhaupt keine Verzerrung zu verwenden. Theoretisch ist Ihr Netzwerk auf diese Weise unabhängiger von der Datengröße, z. B. ob das Bild dunkel oder hell und lebendig ist. Und das Netz wird lernen, seine Arbeit zu erledigen, indem es die Relativitätstheorie in Ihren Daten untersucht. Viele moderne neuronale Netze nutzen dies.
Für andere Daten können Verzerrungen kritisch sein. Dies hängt davon ab, mit welcher Art von Daten Sie es zu tun haben. Wenn Ihre Informationen betragsinvariant sind - wenn die Eingabe von [1,0,0,1] zu demselben Ergebnis führen sollte wie die Eingabe von [100,0,10], sind Sie möglicherweise ohne Verzerrung besser dran.
quelle
In einigen Experimenten in meiner Masterarbeit (z. B. Seite 59) stellte ich fest, dass die Verzerrung für die erste (n) Schicht (en) wichtig sein könnte, aber insbesondere bei den vollständig verbundenen Schichten am Ende scheint sie keine große Rolle zu spielen.
Dies kann stark von der Netzwerkarchitektur / dem Dataset abhängen.
quelle
Die Vorspannung entscheidet, um wie viel Winkel sich Ihr Gewicht drehen soll.
In einem zweidimensionalen Diagramm helfen uns Gewicht und Verzerrung, die Entscheidungsgrenze der Ausgaben zu finden. Angenommen, wir müssen eine UND-Funktion erstellen, das Eingabe- (p) -ausgabe- (t) Paar sollte sein
Jetzt müssen wir die Entscheidungsgrenze finden, die Ideengrenze sollte sein:
Sehen? W ist senkrecht zu unserer Grenze. Wir sagen also, W hat die Richtung der Grenze festgelegt.
Es ist jedoch schwierig, beim ersten Mal das richtige W zu finden. Meistens wählen wir den ursprünglichen W-Wert zufällig aus. Die erste Grenze kann also folgende sein:
Jetzt ist die Grenze pareller zur y-Achse.
Wir wollen die Grenze drehen, wie?
Durch Ändern des W.
Wir verwenden also die Lernregelfunktion: W '= W + P:
Daher können Sie durch Ändern des Werts von b (Bias) den Winkel zwischen W 'und W bestimmen. Dies ist "die Lernregel von ANN".
Sie können auch Neural Network Design von Martin T. Hagan / Howard B. Demuth / Mark H. Beale, Kapitel 4 "Perceptron Learning Rule" lesen.
quelle
Insbesondere Nates Antwort , zfys Antwort und Pradis Antwort sind großartig.
Einfacher ausgedrückt ermöglichen Verzerrungen, dass immer mehr Variationen von Gewichten gelernt / gespeichert werden ... ( Randnotiz : manchmal mit einem bestimmten Schwellenwert). Wie auch immer, Fall bedeuten mehr Variationen , dass Verzerrungen den gelernten / gespeicherten Gewichten des Modells eine umfassendere Darstellung des Eingaberaums hinzufügen . (Wo bessere Gewichte die Schätzkraft des neuronalen Netzes verbessern können)
Zum Beispiel wird in Lernmodellen die Hypothese / Vermutung wünschenswerterweise durch y = 0 oder y = 1 begrenzt, wenn eine Eingabe erfolgt, möglicherweise in einer Klassifizierungsaufgabe ... dh einige y = 0 für einige x = (1,1) und einige y = 1 für einige x = (0,1). (Die Bedingung für die Hypothese / das Ergebnis ist der Schwellenwert, über den ich oben gesprochen habe. Beachten Sie, dass in meinen Beispielen die Eingaben X so eingerichtet sind, dass sie jeweils x = ein doppelter oder zweiwertiger Vektor sind, anstelle von Nates einfachwertigen x-Eingaben einer Sammlung X).
Wenn wir die Verzerrung ignorieren , werden viele Eingaben möglicherweise durch viele der gleichen Gewichte (dh die gelernten Gewichte) dargestellt treten meist in der Nähe des Ursprungs auf (0,0). Das Modell wäre dann auf schlechtere Mengen guter Gewichte beschränkt. Anstelle der vielen, vielen weiteren guten Gewichte könnte es besser mit Voreingenommenheit lernen (wo schlecht gelernte Gewichte zu schlechteren Vermutungen oder einer Verringerung der Vermutungskraft des neuronalen Netzes führen).
Daher ist es optimal, dass das Modell sowohl in der Nähe des Ursprungs als auch an möglichst vielen Stellen innerhalb der Schwelle / Entscheidungsgrenze lernt. Mit dieser Tendenz können wir Freiheitsgrade in der Nähe des Ursprungs ermöglichen, ohne jedoch auf die unmittelbare Region des Ursprungs beschränkt zu sein.
quelle
Erweiterung der @ zfy-Erklärung ... Die Gleichung für einen Eingang, ein Neuron und einen Ausgang sollte folgendermaßen aussehen:
wobei x der Wert vom Eingangsknoten und 1 der Wert des Vorspannungsknotens ist; y kann direkt Ihre Ausgabe sein oder an eine Funktion übergeben werden, häufig eine Sigmoid-Funktion. Beachten Sie auch, dass die Verzerrung eine beliebige Konstante sein kann, aber um alles einfacher zu machen, wählen wir immer 1 (und das ist wahrscheinlich so häufig, dass @zfy es getan hat, ohne es zu zeigen und zu erklären).
Ihr Netzwerk versucht, die Koeffizienten a und b zu lernen, um sie an Ihre Daten anzupassen. So können Sie sehen, warum Sie das Element hinzufügen
b * 1
eine bessere Anpassung an mehr Daten ermöglicht: Jetzt können Sie sowohl die Steigung als auch den Achsenabschnitt ändern.Wenn Sie mehr als eine Eingabe haben, sieht Ihre Gleichung folgendermaßen aus:
Es ist zu beachten, dass die Gleichung immer noch ein Neuron, ein Ausgangsnetzwerk beschreibt; Wenn Sie mehr Neuronen haben, fügen Sie der Koeffizientenmatrix nur eine Dimension hinzu, um die Eingaben an alle Knoten zu multiplexen und jeden Knotenbeitrag zurückzurechnen.
Das kann man im vektorisierten Format als schreiben
Wenn Sie also Koeffizienten in ein Array und (Eingaben + Bias) in ein anderes Array eingeben, haben Sie Ihre gewünschte Lösung als Punktprodukt der beiden Vektoren (Sie müssen X transponieren, damit die Form korrekt ist. Ich habe XT ein 'X transponiert' geschrieben).
Am Ende können Sie also auch Ihre Verzerrung als nur eine weitere Eingabe sehen, um den Teil der Ausgabe darzustellen, der tatsächlich unabhängig von Ihrer Eingabe ist.
quelle
Andere als die genannten Antworten. Ich möchte einige andere Punkte hinzufügen.
Bias fungiert als unser Anker. Es ist eine Möglichkeit für uns, eine Art Grundlinie zu haben, bei der wir nicht darunter liegen. Stellen Sie sich in einem Diagramm wie y = mx + b vor, es ist wie ein y-Achsenabschnitt dieser Funktion.
output = input multipliziert mit dem Gewichtswert und addiert einen Bias-Wert und wendet dann eine Aktivierungsfunktion an.
quelle
Um auf einfache Weise zu denken: Wenn Sie y = w1 * x haben, wobei y Ihre Ausgabe und w1 das Gewicht ist, stellen Sie sich eine Bedingung vor, bei der x = 0 ist, dann ist y = w1 * x gleich 0 , wenn Sie Ihr Gewicht aktualisieren möchten, das Sie haben Um zu berechnen, wie viel sich durch delw = target-y ändert, wobei target Ihre Zielausgabe ist, ändert sich in diesem Fall 'delw' nicht, da y als 0 berechnet wird. Nehmen wir also an, wenn Sie einen zusätzlichen Wert hinzufügen können, hilft dies y = w1 * x + w0 * 1 , wobei Bias = 1 und Gewicht angepasst werden können, um eine korrekte Bias zu erhalten. Betrachten Sie das folgende Beispiel.
In Bezug auf die Linie ist Slope-Intercept eine spezifische Form linearer Gleichungen.
y = mx + b
Überprüfen Sie das Bild
Bild
hier ist b (0,2)
Wenn Sie es auf (0,3) erhöhen möchten, wie werden Sie es tun, indem Sie den Wert von b ändern, der Ihre Verzerrung sein wird
quelle
Für alle von mir untersuchten ML-Bücher wird W immer als Konnektivitätsindex zwischen zwei Neuronen definiert. Je höher die Konnektivität zwischen zwei Neuronen ist, desto stärker werden die Signale vom feuernden Neuron zum Zielneuron übertragen oder Y = w * X Als Ergebnis, um den biologischen Charakter von Neuronen aufrechtzuerhalten, müssen wir 1> = W> = -1 beibehalten, aber in der realen Regression wird das W mit | W | enden > = 1, was der Funktionsweise der Neuronen widerspricht, daher schlage ich W = cos (Theta) vor, während 1> = | cos (Theta) | und Y = a * X = W * X + b, während a = b + W = b + cos (Theta), b eine ganze Zahl ist
quelle
In neuronalen Netzen:
In Abwesenheit einer Vorspannung kann das Neuron nicht aktiviert werden, indem nur die gewichtete Summe von der Eingabeschicht berücksichtigt wird. Wenn das Neuron nicht aktiviert ist, werden die Informationen von diesem Neuron nicht durch den Rest des neuronalen Netzwerks geleitet.
Der Wert der Verzerrung ist lernbar.
Effektiv Bias = - Schwelle. Sie können sich Voreingenommenheit als die Leichtigkeit vorstellen, mit der das Neuron eine 1 ausgeben kann - mit einer wirklich großen Voreingenommenheit ist es für das Neuron sehr einfach, eine 1 auszugeben, aber wenn die Voreingenommenheit sehr negativ ist, ist es schwierig.
Zusammenfassend: Bias hilft bei der Steuerung des Werts, bei dem die Aktivierungsfunktion ausgelöst wird.
Folgen Sie diesem Video für weitere Details
Einige weitere nützliche Links:
Geeksforgeeks
in Richtung Datascience
quelle
a
trainiert werden, wenn der Gradient zua
immer konstant ist?Der Begriff Bias wird verwendet, um die endgültige Ausgangsmatrix wie den y-Achsenabschnitt anzupassen. In der klassischen Gleichung ist beispielsweise y = mx + c, wenn c = 0, dann verläuft die Linie immer durch 0. Das Hinzufügen des Bias-Terms bietet mehr Flexibilität und eine bessere Verallgemeinerung für unser neuronales Netzwerkmodell.
quelle
Im Allgemeinen haben wir beim maschinellen Lernen diese Grundformel: Bias-Varianz-Kompromiss Weil wir in NN das Problem der Überanpassung haben (Modellverallgemeinerungsproblem, bei dem kleine Änderungen der Daten zu großen Änderungen des Modellergebnisses führen) und aus diesem Grund große Varianz haben, indem wir a einführen kleine Voreingenommenheit könnte viel helfen. In Anbetracht der obigen Formel Bias-Varianz-Kompromiss , bei der die Verzerrung quadriert wird, könnte die Einführung einer kleinen Verzerrung zu einer starken Verringerung der Varianz führen. Führen Sie also Voreingenommenheit ein, wenn Sie große Abweichungen haben und die Gefahr einer Überanpassung besteht.
quelle
Die Verzerrung hilft, eine bessere Gleichung zu erhalten
Stellen Sie sich die Eingabe und Ausgabe wie eine Funktion vor
y = ax + b
und Sie müssen die richtige Linie zwischen Eingabe (x) und Ausgabe (y) setzen, um den globalen Fehler zwischen jedem Punkt und der Linie zu minimieren. Wenn Sie die Gleichung wie folgt beibehalteny = ax
, haben Sie Ein Parameter nur zur Anpassung, selbst wenn Sie den besten finden, um dena
globalen Fehler zu minimieren, ist er weit vom gewünschten Wert entferntSie können sagen, dass die Verzerrung die Gleichung flexibler macht, um sie an die besten Werte anzupassen
quelle