Der Gradientenabstieg funktioniert nicht ganz so, wie Sie es vorgeschlagen haben, aber ein ähnliches Problem kann auftreten.
Wir berechnen nicht den durchschnittlichen Verlust aus der Charge, sondern die durchschnittlichen Gradienten der Verlustfunktion. Die Gradienten sind die Ableitung des Verlusts in Bezug auf das Gewicht, und in einem neuronalen Netzwerk hängt der Gradient für ein Gewicht von den Eingaben dieses spezifischen Beispiels und auch von vielen anderen Gewichten im Modell ab.
Wenn Ihr Modell 5 Gewichte hat und Sie eine Mini-Batch-Größe von 2 haben, erhalten Sie möglicherweise Folgendes:
Beispiel 1. Verlust = 2, Gradienten = ( 1,5 , - 2,0 , 1,1 , 0,4 , - 0,9 )
Beispiel 2. Verlust = 3, Gradienten = ( 1,2 , 2,3 , - 1,1 , - 0,8 , - 0,7 )
Der Durchschnitt der Gradienten in dieser Mini-Charge wird berechnet ( 1,35 , 0,15 , 0 , - 0,2 , - 0,8 )
0
als Antwort auf Kommentare bearbeiten:
kL.ichwj
∂L.∂wj= 1k∑ki = 1∂L.ich∂wj
Der Tutorial-Code, auf den Sie in den Kommentaren verlinkt haben, verwendet Tensorflow, um den durchschnittlichen Verlust zu minimieren.
Tensorflow zielt darauf ab, zu minimieren1k∑ki = 1L.ich
Um dies zu minimieren, werden die Gradienten des durchschnittlichen Verlusts in Bezug auf jedes Gewicht berechnet und die Gewichte mithilfe des Gradientenabfalls aktualisiert:
∂L.∂wj= ∂∂wj1k∑ki = 1L.ich
Die Differenzierung kann in die Summe gebracht werden, so dass sie dem Ausdruck aus dem Ansatz in meinem Beispiel entspricht.
∂∂wj1k∑ki = 1L.ich= 1k∑ki = 1∂L.ich∂wj