Optimizer (一)Adagrad 矩阵形式公式理解

学习记录,如有错误请指出,感谢大家指导谢大家指导建议。

本篇记录来自medium原网址

Adagrad的特点在于对于每一个参数的学习率是不同的,除了公共学习率 \eta 之外,每一个参数的学习率还有一个额外的系数。

Optimizer (一)Adagrad 矩阵形式公式理解_第1张图片

其中 \epsilon 代表极小数防止分母为0, I为单位矩阵。\theta_{t+1},\theta_t 是当前轮次和下一轮的参数向量,维度等于参数个数。g_t是当前轮次每一个参数的导数。G_t是一个矩阵,定义如下

Optimizer (一)Adagrad 矩阵形式公式理解_第2张图片

可以看到Gt就是每一轮导数向量和自身的外积,取对角线元素后加上一个极小值防止分母为0。

Optimizer (一)Adagrad 矩阵形式公式理解_第3张图片

这里只取对角线说明假设了每一个参数之间的更新是独立的。同时只取对角线的话我们甚至在计算的过程当中可以不保存整个矩阵,只需要维护一个Gt向量就可以了。在每轮计算完之后将对应参数的导数按照公式更新Gt即可。上式中的-1/2是一个element-wise的运算操作,化简之后如下

Optimizer (一)Adagrad 矩阵形式公式理解_第4张图片

将矩阵乘法计算完之后得到最终结果

Optimizer (一)Adagrad 矩阵形式公式理解_第5张图片

 每一个参数的学习率除了 \eta之外,还与自身历史累计的梯度相关。与SGD(stochastic gradient descent)相比,SGD每一次更新学习率对于所有参数都是相同的。但是Adamgrad也存在一个很明显的问题,由Gt的每一个维度在每一轮更新中都是加上一个正数(g_t g_t^T),这会导致学习率变的越来越小且没有下限,这会导致当迭代轮次变多时出现梯度消失的情况

Optimizer (一)Adagrad 矩阵形式公式理解_第6张图片

你可能感兴趣的:(深度学习)