From d7c70a149a1e1da979c8e4db530e782b5e53aa3a Mon Sep 17 00:00:00 2001 From: CoderOverflow Date: Wed, 10 Apr 2019 16:51:02 +0800 Subject: [PATCH] =?UTF-8?q?2.12.6=20=E9=9A=8F=E6=9C=BA=E6=A2=AF=E5=BA=A6?= =?UTF-8?q?=E5=92=8C=E6=89=B9=E9=87=8F=E6=A2=AF=E5=BA=A6=E5=8C=BA=E5=88=AB?= =?UTF-8?q?=EF=BC=9F=20=E5=85=AC=E5=BC=8F=E4=BF=AE=E8=AE=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 2.12.6 随机梯度和批量梯度区别? 公式修订 --- ch02_机器学习基础/第二章_机器学习基础.md | 32 ++++++++++++------------ 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/ch02_机器学习基础/第二章_机器学习基础.md b/ch02_机器学习基础/第二章_机器学习基础.md index 801137b..bb6edef 100644 --- a/ch02_机器学习基础/第二章_机器学习基础.md +++ b/ch02_机器学习基础/第二章_机器学习基础.md @@ -628,30 +628,30 @@ $$ 由于样本不同,特征取值范围也不同,导致迭代速度慢。为了减少特征取值的影响,可对特征数据标准化,使新期望为0,新方差为1,可节省算法运行时间。 ### 2.12.6 随机梯度和批量梯度区别? -​ 随机梯度下降和批量梯度下降是两种主要梯度下降法,其目的是增加某些限制来加速运算求解。 +​ 随机梯度下降(SDG)和批量梯度下降(BDG)是两种主要梯度下降法,其目的是增加某些限制来加速运算求解。 下面通过介绍两种梯度下降法的求解思路,对其进行比较。 假设函数为: $$ -h_\theta (x_1,x_2,...,x_3) = \theta_0 + \theta_1 + ... + \theta_n x_n +h_\theta (x_0,x_1,...,x_3) = \theta_0 x_0 + \theta_1 x_1 + ... + \theta_n x_n $$ 损失函数为: $$ J(\theta_0, \theta_1, ... , \theta_n) = - \frac{1}{2m} \sum^{m}_{j=0}(h_\theta (x^{(j)}_0 - ,x^{(j)}_1,...,x^{(j)}_n)-y_j)^2 + \frac{1}{2m} \sum^{m}_{j=0}(h_\theta (x^{j}_0 + ,x^{j}_1,...,x^{j}_n)-y^j)^2 $$ 其中,$m​$为样本个数,$j​$为参数个数。 1、 **批量梯度下降的求解思路如下:** a) 得到每个$ \theta ​$对应的梯度: $$ -\frac{\partial}{\partial \theta_i}J({\theta}_0,{\theta}_1,...,{\theta}_n)=\frac{1}{m}\sum^{m}_{j=0}(h_\theta (x^{(j)}_0 - ,x^{(j)}_1,...,x^{(j)}_n)-y_j)x^{(j)}_i +\frac{\partial}{\partial \theta_i}J({\theta}_0,{\theta}_1,...,{\theta}_n)=\frac{1}{m}\sum^{m}_{j=0}(h_\theta (x^{j}_0 + ,x^{j}_1,...,x^{j}_n)-y^j)x^{j}_i $$ b) 由于是求最小化风险函数,所以按每个参数 $ \theta ​$ 的梯度负方向更新 $ \theta_i ​$ : $$ -\theta_i=\theta_i - \frac{1}{m} \sum^{m}_{j=0}(h_\theta (x^{(j)}_0 - ,x^{(j)}_1,...,x^{(j)}_n)-y_j)x^{(j)}_i +\theta_i=\theta_i - \frac{1}{m} \sum^{m}_{j=0}(h_\theta (x^{j}_0 + ,x^{j}_1,...,x^{j}_n)-y^j)x^{j}_i $$ c) 从上式可以注意到,它得到的虽然是一个全局最优解,但每迭代一步,都要用到训练集所有的数据,如果样本数据很大,这种方法迭代速度就很慢。 相比而言,随机梯度下降可避免这种问题。 @@ -661,13 +661,13 @@ a) 相比批量梯度下降对应所有的训练样本,随机梯度下降法 损失函数可以写成如下这种形式, $$ J(\theta_0, \theta_1, ... , \theta_n) = - \frac{1}{m} \sum^{m}_{j=0}(y_i - h_\theta (x^{(j)}_0 - ,x^{(j)}_1,...,x^{(j)}_n))^2 = + \frac{1}{m} \sum^{m}_{j=0}(y^j - h_\theta (x^{j}_0 + ,x^{j}_1,...,x^{j}_n))^2 = \frac{1}{m} \sum^{m}_{j=0} cost(\theta,(x^j,y^j)) $$ b)对每个参数 $ \theta​$ 按梯度方向更新 $ \theta​$: $$ -\theta_i = \theta_i + (y_j - h_\theta (x^{(j)}_0, x^{(j)}_1, ... ,x^{(j)}_n)) +\theta_i = \theta_i + (y^j - h_\theta (x^{j}_0, x^{j}_1, ... ,x^{j}_n)) $$ c) 随机梯度下降是通过每个样本来迭代更新一次。 随机梯度下降伴随的一个问题是噪音较批量梯度下降要多,使得随机梯度下降并不是每次迭代都向着整体最优化方向。 @@ -678,17 +678,17 @@ c) 随机梯度下降是通过每个样本来迭代更新一次。 | 方法 | 特点 | | :----------: | :----------------------------------------------------------- | | 批量梯度下降 | a)采用所有数据来梯度下降。
b) 批量梯度下降法在样本量很大的时候,训练速度慢。 | -| 随机梯度下降 | a) 随机梯度下降用一个样本来梯度下降。
b) 训练速度很快。 -c) 随机梯度下降法仅仅用一个样本决定梯度方向,导致解有可能不是最优。 -d) 收敛速度来说,随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解。 | +| 随机梯度下降 | b) 随机梯度下降用一个样本来梯度下降。
b) 训练速度很快。 | + | c) 随机梯度下降法仅仅用一个样本决定梯度方向,导致解有可能不是最优。 | + | d) 收敛速度来说,随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解。 | 下面介绍能结合两种方法优点的小批量梯度下降法。 -3、 **小批量(mini-batch)梯度下降的求解思路如下** +3、 **小批量(Mini-Batch)梯度下降的求解思路如下** 对于总数为$m$个样本的数据,根据样本的数据,选取其中的$n(1< n< m)$个子样本来迭代。其参数$\theta$按梯度方向更新$\theta_i$公式如下: $$ \theta_i = \theta_i - \alpha \sum^{t+n-1}_{j=t} - ( h_\theta (x^{(j)}_{0}, x^{(j)}_{1}, ... , x^{(j)}_{n} ) - y_j ) x^{j}_{i} + ( h_\theta (x^{j}_{0}, x^{j}_{1}, ... , x^{j}_{n} ) - y^j ) x^{j}_{i} $$ ### 2.12.7 各种梯度下降法性能比较