Mini-Batch Gradient Descent - Wie wird richtig gemittelt?
Hey, ich muss als Übungsaufgabe ein einfaches Feed Forward Neural Network mit numpy implementieren. Das läuft jetzt auch schon ganz gut, jedoch bekomme ich noch immer leicht abweichende Ergebnisse zur Referenz, die sich durch eine andere effektive Learning Rate erklären ließen. Dafür habe ich das Mitteln der Mini-Batches in Verdacht. Grobe Struktur des aktuellen Netzwerkes: Es gibt einen Forward-Pass mit einem Mini-Batch, jeder Layer speichert die entsprechenden Inputs Es gibt einen Backward-Pass mit dem MSE über dem Mini-Batch, jeder Layer speichert die Gradienten Die Weights & Biases werden mit den gespeicherten Inputs & Gradienten geupdated Da die Inputs/Gradienten aus einem Mini-Batch entstanden sind, haben sie noch eine Dimension in der Batch Size, welche ich irgendwie loswerden muss. Nutze ich dafür jetzt die Summe oder das arithmetische Mittel, um ein einziges Update aus dem Batch zu bekommen? Im Endeffekt beeinflusst die Division durch die Batch Size ja die effektive Learning Rate. Einerseits würde ich das arithmetische Mittel nehmen, damit die Updates unabhängig von der Batch Size sind. Oder ist das doppelt gemoppelt und das Mitteln über den Loss des Batches reicht bereits, um die Batch Size auszugleichen?