web-dev-qa-db-ger.com

Rolle der Neigung in neuronalen Netzen

Ich bin mir des Gradientenabstiegs und des Satzes der Rückwärtsausbreitung bewusst. Was ich nicht verstehe, ist: Wann ist die Verwendung eines Vorurteils wichtig und wie verwenden Sie ihn?

Wenn Sie zum Beispiel die Funktion AND abbilden, wenn Sie 2 Eingänge und 1 Ausgang verwenden, werden nicht die korrekten Gewichtungen angegeben. Wenn Sie jedoch 3 Eingänge verwenden (1 davon ist eine Verzerrung), werden die richtigen Gewichtungen angezeigt.

638
Karan

Ich denke, dass Vorurteile fast immer hilfreich sind. Tatsächlich können Sie mit einem Neigungswert die Aktivierungsfunktion nach links oder rechts verschieben , was für das erfolgreiche Lernen von entscheidender Bedeutung sein kann.

Es kann hilfreich sein, sich ein einfaches Beispiel anzusehen. Betrachten Sie dieses Netzwerk mit 1 Eingang und 1 Ausgang ohne Vorurteile:

simple network

Die Ausgabe des Netzwerks wird durch Multiplizieren der Eingabe (x) mit dem Gewicht (w.) Berechnet) und Durchführen des Ergebnisses durch eine Art Aktivierungsfunktion (z. B. eine Sigmoidfunktion).

Hier ist die Funktion, die dieses Netzwerk für verschiedene Werte von w berechnet:

network output, given different w0 weights

Gewicht ändern w ändert im Wesentlichen die "Steilheit" des Sigmoid. Das ist nützlich, aber was wäre, wenn das Netzwerk 0 ausgeben soll, wenn x 2 ist? Das Ändern der Steilheit des Sigmoids funktioniert nicht wirklich - Sie möchten die gesamte Kurve nach rechts verschieben können .

Genau das erlaubt Ihnen die Voreingenommenheit. Wenn wir diesem Netzwerk einen Vorurteil hinzufügen, so:

simple network with a bias

... dann wird die Ausgabe des Netzwerks zu sig (w* x + w1* 1,0). So sieht die Ausgabe des Netzwerks für verschiedene Werte von w aus1:

network output, given different w1 weights

Ein Gewicht von -5 für w haben1 verschiebt die Kurve nach rechts, sodass wir ein Netzwerk haben, das 0 ausgibt, wenn x 2 ist.

1133
Nate Kohl

Nur um meine zwei Cents hinzuzufügen.

Eine einfachere Methode, um die Vorurteile zu verstehen: Sie ähnelt der Konstanten b einer linearen Funktion

y = ax + b

Damit können Sie die Linie nach oben und unten verschieben, um die Vorhersage besser mit den Daten abzustimmen. Ohne b geht die Linie immer durch den Ursprung (0, 0) und Sie erhalten möglicherweise eine schlechtere Anpassung.

279
zfy

Zwei verschiedene Arten von Parametern können während des Trainings eines .__ eingestellt werden. ANN, die Gewichte und der Wert in der Aktivierungsfunktionen. Das ist unpraktisch und es wäre einfacher, wenn Nur einer der Parameter sollte .__ sein. eingestellt. Um mit diesem Problem fertig zu werden, a Bias-Neuron ist erfunden. Die Vorspannung Neuron liegt in einer Schicht, ist verbunden an alle Neuronen in der nächsten Schicht aber keine in der vorherigen Ebene und es emittiert immer 1. Da das Bias-Neuron gibt 1 die Gewichte aus, die mit dem .__ verbunden sind. Bias-Neuron, werden direkt zum .__ hinzugefügt. Summe der anderen Gewichte (Gleichung 2.1), genau wie der t-Wert in den Aktivierungsfunktionen. 1

Der Grund ist unpraktisch, weil Sie das Gewicht und den Wert gleichzeitig anpassen, sodass jede Änderung des Gewichts die Änderung des Werts neutralisieren kann, der für eine vorherige Dateninstanz nützlich war ... Das Hinzufügen eines Bias-Neurons, ohne dass ein Wert geändert wird Sie steuern das Verhalten der Ebene.

Darüber hinaus können Sie mit dem Bias ein einzelnes neuronales Netz verwenden, um ähnliche Fälle darzustellen. Betrachten Sie die AND-Boolesche Funktion, die durch das folgende neuronale Netzwerk dargestellt wird: 

ANN http://www.aihorizon.com/images/essays/perceptron.gif

  • w0 entspricht b.
  • w1 entspricht x1.
  • w2 entspricht x2.

Ein einzelnes Perzeptron kann für .__ verwendet werden. repräsentieren viele boolesche Funktionen. 

Zum Beispiel, wenn wir boolesche Werte annehmen. von 1 (wahr) und -1 (falsch), dann eins Weg, um ein Perceptron mit zwei Eingängen für Die UND-Funktion implementieren ist zu setzen die Gewichte w0 = -3 und w1 = w2 = .5 . Dieses Perzeptron kann auf .__ gestellt werden. repräsentieren die Funktion OR statt durch Ändern der Schwelle auf w0 = -.3. Im AND und OR können als .__ angesehen werden. Sonderfälle von m-of-n-Funktionen: das heißt, Funktionen, bei denen mindestens m von Die n Eingänge des Perzeptrons müssen .__ sein. wahr. Die Funktion OR entspricht m = 1 und die UND-Funktion auf m = n . Jede m-of-n-Funktion ist leicht dargestellt durch ein Perzeptron von Setzen Sie alle Eingabegewichte auf dasselbe Wert (z. B. 0,5) und dann das Einstellen von Schwelle w0 entsprechend. 

Perzeptrons können alle .__ darstellen. boolesche Grundfunktionen AND, OR, NAND (1 AND) und NOR (1 OR). Maschinelles Lernen (Tom Mitchell)

Die Schwelle ist die Vorspannung und w0 ist das Gewicht, das dem Neigungs-/Schwellenwert-Neuron zugeordnet ist.

40
Kiril

Eine Schicht in einem neuronalen Netzwerk ohne Vorspannung ist nichts anderes als die Multiplikation eines Eingangsvektors mit einer Matrix. (Der Ausgangsvektor kann zur Normalisierung und zur Verwendung in mehrschichtigen ANNs möglicherweise eine Sigmoidfunktion durchlaufen, aber das ist nicht wichtig.)

Das bedeutet, dass Sie eine lineare Funktion verwenden und daher eine Eingabe aller Nullen immer auf eine Ausgabe aller Nullen abgebildet wird. Dies kann für einige Systeme eine vernünftige Lösung sein, ist aber im Allgemeinen zu restriktiv.

Mit einem Vorurteil fügen Sie Ihrem Eingabebereich effektiv eine weitere Dimension hinzu, die immer den Wert Eins annimmt, sodass Sie einen Eingabevektor mit allen Nullen vermeiden. Sie verlieren dadurch keine Allgemeingültigkeit, da Ihre trainierte Gewichtsmatrix nicht surjektiv sein muss, sodass sie immer noch allen zuvor möglichen Werten zugeordnet werden kann.

2d ANN:

Bei einem ANN, das zwei Dimensionen auf eine Dimension abbildet, z. B. beim Reproduzieren 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. Ihr ANN zeichnet jetzt eine gerade Linie in der 2d-Ebene und trennt die positive Ausgabe von den negativen Ausgangswerten.

Ohne Vorurteile muss diese gerade Linie durch Null gehen, wohingegen Sie es bei Vorurteilen frei haben, sie an eine beliebige Stelle zu setzen. Sie werden also sehen, dass Sie ohne Vorurne ein Problem mit der UND-Funktion haben, seit Sie können nicht beide (1, -1) und (-1,1) auf die negative Seite setzen. (Sie dürfen nicht in der Zeile sein.) Das Problem ist für die Funktion OR gleich. Mit einem Vorurteil ist es jedoch leicht, die Linie zu ziehen.

Beachten Sie, dass die Funktion XOR in dieser Situation auch mit Vorurteil nicht gelöst werden kann.

21
Debilski

Wenn Sie ANNs verwenden, wissen Sie selten über die Interna der Systeme, die Sie lernen möchten. Einige Dinge können nicht ohne Vorurteile gelernt werden. Betrachten Sie beispielsweise die folgenden Daten: (0, 1), (1, 1), (2, 1), im Grunde eine Funktion, die jedes x auf 1 abbildet. 

Wenn Sie ein einschichtiges Netzwerk (oder eine lineare Abbildung) haben, können Sie keine Lösung finden. Wenn Sie jedoch eine Vorurteile haben, ist das trivial!

Bei einer idealen Einstellung könnte eine Neigung auch alle Punkte auf den Mittelwert der Zielpunkte abbilden und die verborgenen Neuronen die Unterschiede von diesem Punkt aus modellieren lassen.

19
bayer

Der Bias ist kein NN Begriff, sondern ein generischer Algebra-Begriff.

Y = M*X + C (geradlinige Gleichung)

Wenn nun C(Bias) = 0 dann ... die Linie durch den Ursprung geht, d. H. (0,0), und von nur einem Parameter abhängt, d. H. M, der die Steigung darstellt, haben wir weniger Dinge, mit denen man spielen kann.

C, das ist die Verzerrung, nimmt eine beliebige Zahl und hat die Aufgabe, den Graphen zu verschieben und kann somit komplexere Situationen darstellen.

Bei einer logistischen Regression wird der erwartete Wert des Ziels durch eine Verknüpfungsfunktion transformiert, um seinen Wert auf das Einheitenintervall zu beschränken. Auf diese Weise können Modellvorhersagen als primäre Ergebniswahrscheinlichkeiten angesehen werden: Sigmoid-Funktion in Wikipedia

Dies ist die letzte Aktivierungsschicht in der NN-Karte, die das Neuron ein- und ausschaltet. Hier spielt auch die Verzerrung eine Rolle und verschiebt die Kurve flexibel, um das Modell besser abbilden zu können.

18
Pradi KL

Die Modifikation von Neuronen-GEWICHTEN allein dient nur zur Manipulation der Form/Krümmung Ihrer Übertragungsfunktion und nicht des Kreuzungspunkts Gleichgewicht/Null.

Durch die Einführung von bias - Neuronen können Sie die Übertragungsfunktionskurve entlang der Eingabeachse horizontal (links/rechts) verschieben, wobei die Form/Krümmung unverändert bleibt. Dadurch kann das Netzwerk beliebige Ausgänge erzeugen, die sich von denen unterscheiden Standardeinstellungen und damit können Sie das Input-to-Output-Mapping an Ihre speziellen Bedürfnisse anpassen.

Eine grafische Erklärung finden Sie hier: http://www.heatonresearch.com/wiki/Bias

14
Oke Uwechue

Dieser Thread hat mir wirklich geholfen, mein eigenes Projekt zu entwickeln. Hier sind einige weitere Abbildungen, die das Ergebnis eines einfachen neuronalen 2-Layer-Feedforward-Netzwerks mit und ohne Bias-Einheiten bei einem Regressionsproblem mit zwei Variablen zeigen. Die Gewichte werden zufällig initialisiert und die standardmäßige ReLU-Aktivierung wird verwendet. Wie die Antworten vor mir schlussfolgerten, kann das ReLU-Netzwerk ohne die Vorurteile bei (0,0) nicht von Null abweichen.

 enter image description here

 enter image description here

14
JP K.

Einfach alles hinzuzufügen, was sehr fehlt und das der Rest wahrscheinlich nicht wusste.

Wenn Sie mit Bildern arbeiten, möchten Sie möglicherweise lieber keine Vorurteile verwenden. Theoretisch ist Ihr Netzwerk auf diese Weise unabhängiger von der Datengröße, etwa ob das Bild dunkel oder hell und lebendig ist. Und das Netz wird lernen, seine Arbeit zu erledigen, indem es die Relativität Ihrer Daten untersucht. Viele moderne neuronale Netze nutzen dies aus.

Bei anderen Daten kann es zu Abweichungen kommen. Es hängt davon ab, mit welcher Art von Daten Sie sich befassen. Wenn Ihre Informationen größeninvariant sind - wenn die Eingabe von [1,0,0.1] zu demselben Ergebnis führen würde wie die Eingabe von [100,0,10], sind Sie möglicherweise ohne Vorurteile besser aufgestellt.

12
Íhor Mé

In einigen Versuchen in meiner Masterarbeit (z. B. Seite 59) habe ich festgestellt, dass die Neigung für die erste (n) Schicht (en) wichtig sein könnte, aber besonders bei den vollständig verbundenen Schichten am Ende scheint sie nicht zu spielen eine große Rolle.

Dies hängt möglicherweise stark von der Netzwerkarchitektur/dem Dataset ab.

11
Martin Thoma

Bias entscheidet, um wie viel Winkel sich Ihr Gewicht drehen soll.

In einem zweidimensionalen Diagramm helfen Gewicht und Verzerrung uns dabei, die Entscheidungsgrenze der Ausgänge zu finden. Angenommen, wir müssen eine UND-Funktion aufbauen 

{p = [0,0], t = 0}, {p = [1,0], t = 0}, {p = [0,1], t = 0}, {p = [1,1] , t = 1}

 enter image description here

Jetzt müssen wir die Entscheidungsgrenze finden, die Ideengrenze sollte sein:

 enter image description here

Sehen? W steht senkrecht zu unserer Grenze. Wir sagen also, dass W die Grenzrichtung festgelegt hat.

Es ist jedoch schwierig, beim ersten Mal ein korrektes W zu finden. Meistens wählen wir den ursprünglichen W-Wert zufällig aus. Die erste Grenze kann also folgende sein:  enter image description here

Jetzt ist die Grenze pareller zur y-Achse.

Wir wollen die Grenze drehen, wie?

Durch Ändern des W.

Also verwenden wir die Lernregelfunktion: W '= W + P:  enter image description here

W '= W + P ist äquivalent zu W' = W + bP, während b = 1 ist.

Durch Ändern des Wertes von b (bias) können Sie daher den Winkel zwischen W 'und W bestimmen. Dies ist "die Lernregel von ANN".

Sie könnten auch lesen Neural Network Design von Martin T. Hagan/Howard B. Demuth/Mark H. Beale, Kapitel 4 "Perceptron Learning Rule" 

9
Det2sial

Erweiterung auf @zfy-Erklärung ... Die Gleichung für eine Eingabe, ein Neuron und eine Ausgabe sollte folgendermaßen aussehen:

y = a * x + b * 1    and out = f(y)

dabei ist x der Wert vom Eingangsknoten und 1 der Wert des Bias-Knotens; y kann direkt Ihre Ausgabe sein oder an eine Funktion übergeben werden, oft eine Sigmoid-Funktion. Beachten Sie auch, dass die Tendenz eine beliebige Konstante sein kann, aber um alles einfacher zu machen, wählen wir immer 1 (und das ist wahrscheinlich so üblich, dass @zfy es getan hat, ohne es zu zeigen und zu erklären).

Ihr Netzwerk versucht, die Koeffizienten a und b zu lernen, um sich an Ihre Daten anzupassen. So können Sie sehen, warum das Hinzufügen des Elements b * 1 besser zu mehr Daten passt: Jetzt können Sie sowohl die Steigung als auch den Schnittpunkt ändern.

Wenn Sie mehr als eine Eingabe haben, sieht Ihre Gleichung folgendermaßen aus:

y = a0 * x0 + a1 * x1 + ... + aN * 1

Beachten Sie, dass die Gleichung immer noch ein Neuronensystem und ein Ausgangsnetzwerk beschreibt. Wenn Sie mehrere Neuronen haben, fügen Sie der Koeffizientenmatrix lediglich eine Dimension hinzu, um die Eingänge zu allen Knoten zu multiplexen und jeden Knotenbeitrag zurückzurechnen.

Das kannst du im vektorisierten Format als schreiben 

A = [a0, a1, .., aN] , X = [x0, x1, ..., 1]
Y = A . XT

wenn Sie also Koeffizienten in ein Array und (Eingänge + Bias) in ein anderes einfügen, haben Sie Ihre gewünschte Lösung als Punktprodukt der beiden Vektoren (Sie müssen X transponieren, damit die Form korrekt ist, schrieb ich XT a 'X umgesetzt ')

Am Ende können Sie auch Ihre Vorurteile sehen, da es sich lediglich um eine weitere Eingabe handelt, die den Teil der Ausgabe darstellt, der eigentlich unabhängig von Ihrer Eingabe ist.

8
RobMcZag

Insbesondere sind Nates answer , zfy´s answer und Pradis answer großartig.

Vereinfacht ausgedrückt, ermöglichen Vorurteile, dass immer mehr Variationen von Gewichtungen gelernt/gespeichert werden ... (Randnotiz: manchmal eine gewisse Schwelle gegeben). Wie auch immer, weitere Variationen bedeutet, dass Verzerrungen reichere Darstellung des Eingabebereichs zu den erlernten/gespeicherten Gewichtungen des Modells hinzufügen. (Wo bessere Gewichte die Schätzleistung des neuronalen Netzes verbessern können)

Zum Beispiel wird in Lernmodellen die Hypothese/Vermutung wünschenswerterweise durch y = 0 oder y = 1 begrenzt, wenn einige Eingaben gemacht werden, möglicherweise in einige Klassifizierungsaufgaben ... 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 Schwellwert, über den ich oben gesprochen habe. Beachten Sie, dass in meinen Beispielen die Eingänge X so eingestellt sind, dass sie jeweils x = ein doppelter oder 2-wertiger Vektor sind, anstelle von Nates Werten mit einem einzigen Wert x einer Sammlung X).

Wenn wir ignorieren die Vorurteile, viele Eingaben werden am Ende durch viele derselben Gewichtungen dargestellt} (dh die gelernten Gewichtungen meistens in der Nähe des Ursprungs ( 0,0) ... Das Modell wäre dann auf schlechtere Mengen guter Gewichte beschränkt, anstatt die vielen anderen guten Gewichte, die es besser mit Vorurteil lernen könnte. (Wo schlecht erlernte Gewichte zu schlechteren Vermutungen führen oder a Abnahme der Schätzleistung des neuronalen Netzes)

Daher ist es optimal, dass das Modell sowohl nahe am Ursprung als auch an möglichst vielen Stellen innerhalb der Schwellen-/Entscheidungsgrenze lernt. Mit dem Vorurteil können wir Freiheitsgrade nahe am Ursprung aktivieren, sind jedoch nicht auf die unmittelbare Region von Origin beschränkt.

8
Jordan Bennett

Um auf einfache Weise zu denken, wenn Sie y = w1 * x wo haben y ist deine Ausgabe und w1 Ist das Gewicht eine Bedingung, wo x = 0 dann y = w1 * x ist gleich 0, Wenn Sie Ihr Gewicht aktualisieren möchten, müssen Sie berechnen, um wie viel sich die Änderung ändert delw = target-y In diesem Fall ist Ziel das Zielergebnis 'delw' wird sich da nicht ändern y wird als 0 berechnet. 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. Beachten Sie das Beispiel unten. 

In Bezug auf die Linie ist Slope-Intercept eine spezifische Form von linearen Gleichungen. 

y = mx + b

Überprüfen Sie das Bild

Bild

hier ist b (0,2)

wenn Sie den Wert auf (0,3) erhöhen möchten, wie werden Sie dies tun, indem Sie den Wert von b ändern, der Ihr Vorurteil ist

6
Yumlembam Rahul

Bei allen von mir untersuchten ML-Büchern ist das W immer als der Konnektivitätsindex zwischen zwei Neuronen definiert. Das bedeutet, 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 zu erhalten, müssen wir 1> = W> = -1 beibehalten, aber in der realen Regression endet das W mit | W | > = 1, die der Funktionsweise der Neuronen widersprechen, schlage ich als Ergebnis W = cos (Theta) vor, während 1> = | cos (Theta) | und Y = a * X = W * X + b während a = b + W = b + cos (theta) ist, ist b eine ganze Zahl 

6
Edward

Der Begriff Bias wird verwendet, um die endgültige Ausgabematrix so anzupassen, wie es der y-Schnittpunkt tut. In der klassischen Gleichung gilt 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.

3
Aman pradhan

Andere als die erwähnten Antworten .. Ich möchte noch einige andere Punkte hinzufügen.

Bias dient als unser Anker. Es ist ein Weg für uns, eine Art Grundlinie zu haben, bei der wir nicht darunter gehen. Denken Sie in Form eines Graphen wie y = mx + b wie ein y-Achsenabschnitt dieser Funktion.

output = input mal Gewichtswert und addierter Bias-Wert und Anwendung einer Aktivierungsfunktion.

0
Naren

Im Allgemeinen haben wir beim maschinellen Lernen die Basisformel Bias-Varianz Tradeoff Weil wir in NN das Problem der Überanpassung haben (Modell-Generalisierungsproblem, bei dem kleine Änderungen in den Daten zu großen Änderungen im Modellergebnis führen). Aus diesem Grund haben wir große Abweichungen, die Einführung einer kleinen Neigung könnte sehr hilfreich sein. Betrachten Sie die obige Formel Bias-Varianz Tradeoff , bei der die Voreingenommenheit quadriert ist, könnte die Einführung einer kleinen Voreingenommenheit dazu führen, dass die Varianz stark reduziert wird .. _.

0
Euler

In neuronalen Netzwerken:

  1. Jedes Neuron hat eine Neigung
  2. Sie können Bias als Schwellenwert anzeigen (im Allgemeinen entgegengesetzte Schwellenwerte).
  3. Die gewichtete Summe der Eingabeschichten + Vorspannung entscheidet über die Aktivierung des Neurons 
  4. Bias erhöht die Flexibilität des Modells.

Wenn keine Vorspannung vorliegt, kann das Neuron möglicherweise nicht aktiviert werden, indem nur die gewichtete Summe aus der Eingabeschicht berücksichtigt wird. Wenn das Neuron nicht aktiviert ist, werden die Informationen von diesem Neuron nicht durch das restliche neuronale Netzwerk geleitet. 

Der Wert von Vorurteilen ist lernfähig. 

Folge diesem Video für mehr Details

0
Ravindra babu