Warum werden in neuronalen Netzen Bias-Knoten verwendet?


29
  1. Warum werden in neuronalen Netzen Bias-Knoten verwendet?
  2. Wie viele solltest du verwenden?
  3. In welchen Ebenen sollten Sie sie verwenden: Alle ausgeblendeten Ebenen und die Ausgabeebene?

1
Diese Frage ist für dieses Forum etwas weit gefasst. Ich denke, es ist am besten, ein Lehrbuch zu lesen, das sich mit neuronalen Netzen wie Bishop Neural Networks for Pattern Recognition oder Hagan Neural Network Design befasst .
Sycorax sagt Reinstate Monica

2
FTR, ich denke nicht, dass dies zu weit gefasst ist.
gung - Wiedereinsetzung von Monica

Antworten:


24

Der Bias-Knoten in einem neuronalen Netzwerk ist ein Knoten, der immer eingeschaltet ist. Das heißt, sein Wert auf , ohne Rücksicht auf die Daten , die in einem bestimmten Muster. Es ist analog zum Achsenabschnitt in einem Regressionsmodell und hat dieselbe Funktion. Wenn ein neuronales Netzwerk in einer bestimmten Schicht keinen Bias-Knoten hat, kann es in der nächsten Schicht keine Ausgabe erzeugen, die von 0 abweicht (auf der linearen Skala oder dem Wert, der der Transformation von 0 entspricht, wenn sie durchlaufen wird) die Aktivierungsfunktion), wenn die Merkmalswerte 0 sind .1000

enter image description here

Stellen Sie sich ein einfaches Beispiel vor: Sie haben ein Feed-Forward- Perzeptron mit 2 Eingangsknoten und x 2 und 1 Ausgangsknoten y . x 1 und x 2 sind Binärmerkmale und werden auf ihren Referenzpegel gesetzt, x 1 = x 2 = 0 . Multiplizieren Sie diese 2 0 mit den gewünschten Gewichten w 1 und w 2 , addieren Sie die Produkte und geben Sie die gewünschte Aktivierungsfunktion ein. Ohne einen Bias-Knoten nur einenx1x2yx1x2x1=x2=00w1w2Ausgangswert ist möglich, was zu einer sehr schlechten Anpassung führen kann. Bei Verwendung einer logistischen Aktivierungsfunktion muss beispielsweise 0,5 sein , was für die Klassifizierung seltener Ereignisse schrecklich wäre.y.5

Ein Bias-Knoten bietet einem neuronalen Netzwerkmodell eine beträchtliche Flexibilität. In dem oben angegebenen Beispiel war der einzige vorhergesagte Anteil, der ohne einen Vorspannungsknoten möglich ist, , aber mit einem Vorspannungsknoten kann jeder Anteil in ( 0 , 1 ) für die Muster mit x 1 = x 2 = 0 angepasst werden . Für jede Schicht j , in dem ein Bias - Knoten hinzugefügt wird, wird der Vorspannungsknoten addiert N j + 1 weitere Parameter / Gewichte zu schätz (wobei N j + 1 ist die Anzahl der Knoten in der Schicht j50%(0,1)x1=x2=0jNj+1Nj+1 ). Je mehr Parameter angepasst werden müssen, desto länger dauert das Training des neuronalen Netzes. Es erhöht auch die Wahrscheinlichkeit einer Überanpassung, wenn nicht wesentlich mehr Daten als Gewichte gelernt werden müssen. j+1

Mit diesem Verständnis können wir Ihre expliziten Fragen beantworten:

  1. Vorspannungsknoten werden hinzugefügt, um die Flexibilität des Modells für die Anpassung an die Daten zu erhöhen. Insbesondere ermöglicht es dem Netzwerk, die Daten anzupassen, wenn alle Eingabe-Features gleich , und verringert sehr wahrscheinlich die Abweichung der angepassten Werte an anderer Stelle im Datenraum. 0
  2. In der Regel wird ein einzelner Bias-Knoten für die Eingangsschicht und jede verborgene Schicht in einem Feedforward-Netzwerk hinzugefügt. Sie würden niemals zwei oder mehr zu einer bestimmten Ebene hinzufügen, aber Sie könnten Null hinzufügen. Die Gesamtzahl wird daher weitgehend von der Struktur Ihres Netzwerks bestimmt, obwohl andere Überlegungen gelten könnten. (Mir ist weniger klar, wie Bias-Knoten zu anderen neuronalen Netzwerkstrukturen als Feedforward hinzugefügt werden.)
  3. Meistens wurde dies behandelt, aber um genau zu sein: Sie würden der Ausgabeebene niemals einen Bias-Knoten hinzufügen. das würde keinen Sinn ergeben.

Ist CNN in dieser Hinsicht anders? seitdem ich meine Conv-Ebenen verzerre, verschlechtert sich die Leistung (Genauigkeit)! und wenn ich sie entferne, geht es tatsächlich höher!
Rika

@Hossein, nicht das ich wüsste, aber du könntest eine neue Frage stellen. Ich bin dort kein großer Experte.
gung - Wiedereinsetzung von Monica

Brauche ich immer noch Bias-Knoten, wenn meine Eingänge niemals auf 0 gehen?
alec_djinn

1
@alec_djinn, yes. Almost certainly the model would be biased without them, even if you never have 0 for an input value. By analogy, it may help to read: When is it ok to remove the intercept in a linear regression model?
gung - Reinstate Monica

1
@krupeshAnadkat, "The bias node in a neural network is a node that is always 'on'. That is, its value is set to 1 without regard for the data in a given pattern." So you can connect if if you like, just always change the resulting value of the node back to 1 before you multiply it by the weight, since a bias node is a node whose value is always 1.
gung - Reinstate Monica

2

Simple, short answers:

  1. To shift the input function / be more flexible about the learned function.
  2. A single bias node per layer.
  3. Add them to all hidden layers and the input layer - with some footnotes

In a couple of experiments in my masters thesis (e.g. page 59), I found that the bias might be important for the first layer(s), but especially at the fully connected layers at the end it seems not to play a big role. Hence one can have them at the first few layers and not at the last ones. Simply train a network, plot the distribution of weights of the bias nodes and prune them if the weights seem to be too close to zero.

This might be highly dependent on the network architecture / dataset.


would bias node have arrows connecting to it from previous layer? or it just contributes to next layer by multiplying its value "1" with weight in the weighted sum passed to activation. Answer to this will save hours, please do help
krupesh Anadkat

1
The bias is just an added number to the next layers activation. One way to visualize it is by having a constant 1 value in the previous layer and one weight (one bias value) for each of the next layers neurons.
Martin Thoma

2

In the context of neural networks, Batch Normalization is currently the gold-standard for making smart "bias nodes." Instead of clamping a neuron's bias value, you instead adjust for the covariance of the neuron's input. So in a CNN, you would apply a batch normalization just between the convolutional layer and the next fully connected layer (of say, ReLus). In theory, all fully connected layers could benefit from Batch Normalization but this in practice becomes very expensive to implement since each batch normalization carries its own parameters.

Concerning why, most of the answers already have explained that, in particular, neurons are susceptible to saturated gradients when the input pushes the activation to an extreme. In the case of ReLu's this would be pushed to the left, giving a gradient of 0. In general, when you train a model, you first normalize the inputs to the neural network. Batch Normalization is a way of normalizing the inputs inside the neural network, between layers.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.