def sgd(w, dw, params={}):
    """
    Perform Vanilla SGD for parameter update.
    Arguments:
        w: numpy array of current weight
        dw: numpy array of gradient of loss w.r.t. current weight
        params: dictionary containing hyper-parameters
            - lr: float of learning rate
    Outputs:
        next_w: updated weight
        params: updated dictionary of hyper-parameters
    """
    # set default parameters
    params.setdefault('lr', 1e-2)
    # update w
    next_w = w - params['lr'] * dw

    return next_w, params