pub fn gradient_update( embeddings: &mut Array2<f64>, gradients: &Array2<f64>, learning_rate: f64, l2_reg: f64, )
Apply gradient descent update with L2 regularization (optimized)