Welche Rolle spielt die Verzerrung in neuronalen Netzen?

806

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?

ANDWenn 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.

Karan
quelle
17
Schauen Sie sich diese Frage an: stackoverflow.com/questions/1697243/help-with-perceptron für ein Beispiel eines tatsächlichen Problems, bei dem das OP keinen Bias-Term verwendete
Amro
6
Und hier ist ein schönes Beispiel in Python, warum die Tendenz
Mineralien
3
Hier ist ein großartiger Artikel voller Backprop-Mathematik, der auch Bias-Updates behandelt: theclevermachine.wordpress.com/2014/09/06/…
Andy

Antworten:

1360

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:

einfaches Netzwerk

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 :

Netzwerkausgabe bei unterschiedlichen w0-Gewichten

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:

einfaches Netzwerk mit einer Tendenz

... 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 :

Netzwerkausgang bei unterschiedlichen w1-Gewichten

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.

Nate Kohl
quelle
6
@ user1621769: Der einfachste Ansatz ist ein Netzwerk mit einem einzelnen Bias-Knoten, der eine Verbindung zu allen nicht eingegebenen Knoten im Netzwerk herstellt.
Nate Kohl
65
@ user1621769: Die Hauptfunktion einer Vorspannung besteht darin, jedem Knoten einen trainierbaren konstanten Wert bereitzustellen (zusätzlich zu den normalen Eingaben, die der Knoten erhält). Sie können dies mit einem einzelnen Bias-Knoten mit Verbindungen zu N Knoten oder mit N Bias-Knoten mit jeweils einer einzelnen Verbindung erreichen. Das Ergebnis sollte das gleiche sein.
Nate Kohl
4
@ user1621769: Möglicherweise werden Gewichtungen nicht berücksichtigt? Jede Verbindung hat eine trainierbare Gewichtung und der Bias-Knoten hat einen festen Wert.
Dimpl
4
@ user132458 Wenn der Trainingsalgorithmus herausfindet, dass Sie die Vorspannungsverschiebung nicht benötigen, nähern sich die Vorspannungsgewichte wahrscheinlich 0. Dadurch wird das Vorspannungssignal eliminiert.
Jorgenkg
8
@ Gabriel: Es sollte eine Verzerrung pro verstecktem Neuron geben.
343

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.

zfy
quelle
5
nette Anologie, aber wenn wir die Vorspannung auf 1 setzen, warum macht es dann einen Unterschied für die Anpassung, wenn jetzt jede Linie (0,1) anstelle von (0,0) durchläuft? Da alle Linien jetzt auf y = 1 vorgespannt sind statt y = 0 warum ist das hilfreich?
blauer Himmel
36
@ blue-sky Da Sie eine Abweichung mit einem Gewicht multiplizieren können, können Sie sie um einen beliebigen Betrag verschieben.
Carcigenicate
3
Ist es richtig, b einen "Koeffizienten" zu nennen ? Ist ein "Koeffizient" nicht eine Zahl, die zum Multiplizieren einer Variablen verwendet wird?
Ben
8
b ist kein "Koeffizient", sondern ein Achsenabschnitt.
Espanta
22
b ist der Koeffizient von $ x ^ 0 $. a ist der Koeffizient von $ x ^ 1 $
64

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.

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

JP K.
quelle
1
Können Sie bitte die Funktion hinzufügen, die mit Achsenbeschriftungen dargestellt ist?
Komal-SkyNET
46

Während des Trainings eines ANN können zwei verschiedene Arten von Parametern eingestellt werden, die Gewichte und der Wert in den Aktivierungsfunktionen. Dies ist unpraktisch und es wäre einfacher, wenn nur einer der Parameter angepasst werden sollte. Um dieses Problem zu lösen, wird ein Bias-Neuron erfunden. Das Bias-Neuron liegt in einer Schicht, ist mit allen Neuronen in der nächsten Schicht verbunden, aber keines in der vorherigen Schicht, und es emittiert immer 1. Da das Bias-Neuron 1 emittiert, werden die mit dem Bias-Neuron verbundenen Gewichte direkt addiert die kombinierte Summe der anderen Gewichte (Gleichung 2.1), genau wie der t-Wert in den Aktivierungsfunktionen. 1

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:

ANN
(Quelle: aihorizon.com )

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

Ein einzelnes Perzeptron kann verwendet werden, um viele boolesche Funktionen darzustellen.

Wenn wir beispielsweise boolesche Werte von 1 (wahr) und -1 (falsch) annehmen, besteht eine Möglichkeit, ein Perzeptron mit zwei Eingängen zur Implementierung der UND-Funktion zu verwenden, darin, die Gewichte w0 = -3 und w1 = w2 = zu setzen .5. Dieses Perzeptron kann dazu gebracht werden, die ODER-Funktion darzustellen, indem stattdessen der Schwellenwert auf w0 = -.3 geändert wird. Tatsächlich können UND und ODER als Sonderfälle von m-von-n-Funktionen angesehen werden: dh Funktionen, bei denen mindestens m der n Eingaben in das Perzeptron wahr sein müssen. Die ODER-Funktion entspricht m = 1 und die UND-Funktion m = n. Jede m-von-n-Funktion kann einfach mit einem Perzeptron dargestellt werden, indem alle Eingabegewichte auf den gleichen Wert (z. B. 0,5) gesetzt und dann der Schwellenwert w0 entsprechend eingestellt werden.

Perzeptrone können alle primitiven booleschen Funktionen AND, OR, NAND (1 AND) und NOR (1 OR) darstellen. Maschinelles Lernen - Tom Mitchell)

Die Schwelle ist die Vorspannung und w0 ist das Gewicht, das dem Vorspannungs- / Schwellenneuron zugeordnet ist.

Kiril
quelle
8
Betrachten Sie es als allgemeine Faustregel: Fügen Sie Voreingenommenheit hinzu! Neuronale Netze sind bis zu einem gewissen Grad "unvorhersehbar". Wenn Sie also ein Bias-Neuron hinzufügen, finden Sie mit größerer Wahrscheinlichkeit schneller Lösungen, als wenn Sie kein Bias verwendet haben. Natürlich ist dies nicht mathematisch bewiesen, aber es ist das, was ich in der Literatur und im allgemeinen Gebrauch beobachtet habe.
Kiril
25

Die Verzerrung ist kein NNBegriff, sondern ein allgemein zu berücksichtigender Algebra-Begriff.

Y = M*X + C (Geradengleichung)

Wenn C(Bias) = 0dann, wird die Linie immer durch den Ursprung verlaufen, dh (0,0)und hängt nur von einem Parameter ab, dh Mder Steigung, sodass wir weniger Dinge zum Spielen haben.

CDies 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.

Pradi KL
quelle
1
Welche Probleme beim Training / Lernen neuronaler Netze treten also auf, wenn die Linie immer durch den Ursprung verläuft, wenn keine Vorspannung verwendet wird?
Daniyal Javaid
@DaniyalJavaid Das kann eine Möglichkeit sein und nicht das Problem
Pradi KL
23

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.

Debilski
quelle
4
Wenn Sie eine Sigmoid-Übertragungsfunktion verwenden, führen Sie Nichtlinearität ein. Die Aussage, dass dies eine lineare Funktion ist, ist falsch und auch irgendwie gefährlich, da die Nichtlinearität des Sigmoid der Schlüssel zur Lösung mehrerer Probleme ist. Außerdem ist Sigmoid (0) = 0,5, und es gibt kein x, für das Sigmoid (x) = 0 ist.
Schicht
2
Ja, aber es ist 0,5 für jede Eingabe von 0 ohne Vorspannung, unabhängig davon, wie die lineare Funktion zuvor aussieht. Und das ist der Punkt. Normalerweise trainierst du deine Sigmoidfunktion nicht, du lebst nur damit. Das Linearitätsproblem tritt lange vor der Sigmoidfunktion auf.
Debilski
Ich verstehe: Die Ebene kann für 0 keine andere Ausgabe lernen als die, mit der sie begonnen hat. Das ist richtig und wichtig. Das "lineare Funktionsargument" trifft jedoch meiner Meinung nach einfach nicht zu. Selbst mit einer Vorspannung ist die Funktion immer noch linear. Die Linearitätseigenschaft ist hier irreführend. (Ja, ich könnte nicht picken.)
Bayer
Ich würde sagen, dass es mit einer Voreingenommenheit affin ist . ( en.wikipedia.org/wiki/Affine_transformation#Representation )
Debilski
Ja, du hast recht. Vielen Dank, dass Sie mich auf diesen Unterschied hingewiesen haben. (Warum nennen wir es dann übrigens lineare Regression, obwohl es affin ist?)
Bayer
20

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.

Bayer
quelle
18

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

Oke Uwechue
quelle
16

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.

Mhor Mé
quelle
Mit Normalisierung sind Sie wahrscheinlich besser dran. Was ist ein Beispiel für ein modernes Netzwerk, das "mangelnde Voreingenommenheit" verwendet, um eine Größeninvarianz zu erzeugen?
AwokeKnowing
@AwokeKnowing, ich glaube, das übliche ResNet nutzt dies, da es Teil seiner "Initialisierung" ist, aber ich bin nicht genau sicher, ob sie dies genau zu diesem Zweck getan haben, oder vielleicht aus Gründen der Modellgröße / -effizienz und ich ' Ich bin mir nicht sicher, ob dieses Konzept irgendwo veröffentlicht wird. Aber ich denke, es ist auf theoretischer Ebene völlig verständlich. Wenn Sie keine Verzerrung haben, die nicht skaliert, werden beim Skalieren von Werten alle Ausgaben einfach entsprechend skaliert. Wenn man sich dieses Konzepts bewusst ist oder nicht, hat ein großer Teil der modernen Architekturen zumindest in einem großen Teil ihrer Strukturen keine Vorurteile.
Mhor Mé
16

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.

Martin Thoma
quelle
Das klingt völlig analog zum Prozess der Modellierung von Systemen "von Hand" mit linearer Regression. Das einfachste Modell wäre Y_bar = Mittelwert (Y). Anschließend erhöhen Sie die Komplexität, indem Sie verschiedene X-Begriffe einfügen und anhalten, wenn kein signifikanter Informationsgewinn vorliegt.
IRTFM
15

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

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

Geben Sie hier die Bildbeschreibung ein

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

Geben Sie hier die Bildbeschreibung ein

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: Geben Sie hier die Bildbeschreibung ein

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: Geben Sie hier die Bildbeschreibung ein

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

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
1
Hilfreiche Erklärung / Illustration
Javadba
10

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.

Jordan Bennett
quelle
9

Erweiterung der @ zfy-Erklärung ... Die Gleichung für einen Eingang, ein Neuron und einen Ausgang sollte folgendermaßen aussehen:

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

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ügenb * 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:

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

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

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

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.

RobMcZag
quelle
Ich scheine mich aus Andrew Ngs Klasse daran zu erinnern, dass die Voreingenommenheit in einem Teil des Trainingsprozesses weggelassen wurde. Könnten Sie Ihre Antwort aktualisieren, um zu erklären, dass es sich um "nur eine weitere Eingabe" handelt?
AwokeKnowing
@AwokeKnowing Ich erinnere mich nicht daran aus Andrew Ngs Klasse, aber das war vor ein paar Jahren. Außerdem kann die Vorspannung ein- oder ausgeschaltet sein, je nachdem, was Sie lernen möchten. Ich habe gelesen, dass sie es in der Bildverarbeitung nicht verwenden, um eine Skalierung zu ermöglichen. Für mich, wenn Sie es verwenden, verwenden Sie es auch im Training. Der Effekt besteht darin, die Koeffizienten zu stabilisieren, wenn alle oder ein Teil der Eingaben null oder fast null sind. Warum sollten Sie während des Trainings keine Verzerrung verwenden und diese dann verwenden, wenn Sie den NN verwenden, um Ausgaben für neue Eingaben vorherzusagen? Wie könnte das nützlich sein?
RobMcZag
Nein, es war eher so, als würde man es im Vorwärtsdurchlauf verwenden, aber nicht, wenn man den Gradienten für Backprop berechnet, oder so ähnlich.
AwokeKnowing
@AwokeKnowing Ich nehme an, das ist eine Möglichkeit, Speicherplatz und Zeit zu sparen. Sie können entscheiden, dass Sie keine Koeffizienten für die Bias-Einheiten lernen möchten. Dies kann in Ordnung sein, wenn Sie mindestens eine verborgene Schicht haben, da die Vorspannung eine gewisse Eingabe für diese Schicht liefert und die Ausgabe durch die Koeffizienten von der ersten zur zweiten Schicht gelernt werden kann. Ich bin nicht sicher, ob sich die Konvergenzgeschwindigkeit ändern wird. In meinem einschichtigen Beispiel müssen Sie auch den Bias-Koeffizienten lernen, der auf die Ausgabe angewendet wird.
RobMcZag
Bei vielen einfachen Problemen wurden die Zieldaten herabgesetzt und skaliert, sodass keine Verzerrung erforderlich ist. Das Potenzial für einen übermäßigen Ausreißereinfluss bei Variablen mit großen Bereichen wird verringert.
IRTFM
9

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.

Naren Babu R.
quelle
8

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

Yumlembam Rahul
quelle
7

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

Edward
quelle
7

In neuronalen Netzen:

  1. Jedes Neuron hat eine Tendenz
  2. Sie können Bias als Schwellenwert anzeigen (im Allgemeinen entgegengesetzte Werte des Schwellenwerts).
  3. Die gewichtete Summe aus Eingangsschichten + Bias entscheidet über die Aktivierung des Neurons
  4. Bias erhöht die Flexibilität des Modells.

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.

Geben Sie hier die Bildbeschreibung ein

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

Ravindra Babu
quelle
1
Gute Interpretation. Aber ich bin nicht klar, wie die Voreingenommenheit lernfähig (oder trainierbar?) Ist. In einem einfachen Fall, in dem Verlust = ReLU (Omega * x + a), kann das Gewichts-Omega durch die Kettenregel trainiert werden, aber wie kann die Vorspannung atrainiert werden, wenn der Gradient zu aimmer konstant ist?
Libin Wen
4

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.

Aman Pradhan
quelle
0

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.

Euler
quelle
3
Bias-Einheiten und der Bias-Varianz-Kompromiss sind separate Konzepte. Die Frage betrifft das erstere.
SigmaX
0

Die Verzerrung hilft, eine bessere Gleichung zu erhalten

Stellen Sie sich die Eingabe und Ausgabe wie eine Funktion vor y = ax + bund 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 beibehalten y = ax, haben Sie Ein Parameter nur zur Anpassung, selbst wenn Sie den besten finden, um den aglobalen Fehler zu minimieren, ist er weit vom gewünschten Wert entfernt

Sie können sagen, dass die Verzerrung die Gleichung flexibler macht, um sie an die besten Werte anzupassen

Karam Mohamed
quelle