Merge pull request #326 from CoderOverflow/patch-10
2.12.6 随机梯度和批量梯度区别? 公式修订
This commit is contained in:
commit
ffe87edd82
|
|
@ -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 各种梯度下降法性能比较
|
||||
|
|
|
|||
Loading…
Reference in New Issue