Merge pull request #326 from CoderOverflow/patch-10

2.12.6 随机梯度和批量梯度区别? 公式修订
This commit is contained in:
scutan90 2019-04-10 16:55:36 +08:00 committed by GitHub
commit ffe87edd82
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 16 deletions

View File

@ -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采用所有数据来梯度下降。<br/>b) 批量梯度下降法在样本量很大的时候,训练速度慢。 |
| 随机梯度下降 | a) 随机梯度下降用一个样本来梯度下降。<br/>b) 训练速度很快。
c) 随机梯度下降法仅仅用一个样本决定梯度方向,导致解有可能不是最优。
d) 收敛速度来说,随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解。 |
| 随机梯度下降 | b) 随机梯度下降用一个样本来梯度下降。<br/>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 各种梯度下降法性能比较