- Warum werden in neuronalen Netzen Bias-Knoten verwendet?
- Wie viele solltest du verwenden?
- In welchen Ebenen sollten Sie sie verwenden: Alle ausgeblendeten Ebenen und die Ausgabeebene?
Antworten:
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 .
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 einenAusgangswert 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.
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 j ). 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.
Mit diesem Verständnis können wir Ihre expliziten Fragen beantworten:
Simple, short answers:
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.
1
value in the previous layer and one weight (one bias value) for each of the next layers neurons.
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.