def backtrack(loss, K, y, beta, L, eta, grad, norm, alpha, gamma, max_iter):
    """
    Implements the backtracking line search algorithm
    """
    for _ in range(max_iter):
        a = loss(K, y, beta - eta * grad, L)
        b = loss(K, y, beta, L) - alpha * eta * norm

        if a <= b:
            return eta
        eta *= gamma

    return eta