机器学习“傻瓜式”理解(7)梯度下降法(第二部分)

小批量梯度下降算法

事实上,我们在实际的生产活动中,最经常使用的便是小批量梯度下降法,这种方法综合了随机梯度下降法和批量梯度下降法两种算法,一定程度上避免了他们的缺点,这种算法实现的思路便是每次计算优化的方向既不是查看所有的样本也不是查看单一的样本,而是每次抽取K个样本,把这k个样本的梯度作为优化方向。这样有两个优点:
(1)较之批量梯度下降法,小批量梯度下降法运行速度更快。
(2)较之随机梯度下降法,比之更稳定,更能接近批量梯度下降算法的优化方向。
实现代码已更新到GitHub中。
GitHub

梯度下降法的其他思考

我们有几个问题待解决,那便是我们在BGD和SGD中具体封装实现的时候,计算梯度的方法是使用的推导公式,但是如何去确定梯度下降法的准确性这一问题需要解决,因为有时候我们推导出来的公式可能会有一些错误。
我们使用数学严格公式的方式推导的计算导数的公式为:
在这里插入图片描述
代码封装如下:

        def dJ_debug(theta,X_b,y,epsilon):
            res = np.empty(len(theta))
            for i in range(res):
                theta_1 = theta.copy()
                theta_1[i] += epsilon
                theta_2 = theta.copy()
                theta_2[i] -= epsilon
                res[i] = (J(X_b,theta_1,y) - J(X_b,theta_2,y))  / (2*epsilon)

            return res
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章