def SGD_basic(free_param, gradient, grad_scale):
    """ Stochastic Gradient Descent (SGD) implementation to minimize
		the cost function 
		
		Parameters:
		-----------
		free_param : numpy.array
			2D-array containing the set of optimized free parameter,
			stacked along the first axis.
		gradient : numpy.array
			Gradient at the center point calculated by the randomly chosen 
			local environment. The gradient always points in the direction
			of steepest ascent.
		grad_scale : positive float
			Scales the step size in the gradient descent. Often also
			referred to as learning rate. Necessary to compensate for the
			"roughness" of the objective function field.

		Returns:
		-------
		free_param_next : numpy.array
			1D-array containing the set of optimized free parameter
			for the next iteration step. """
    free_param_next = free_param[-1] - grad_scale * gradient
    return free_param_next
