自然语言处理:重要采样的梯度推导

本文详细解析了《DeepLearning》一书12.4.3.3节中,如何通过采样词的子集来避免计算所有未出现词对梯度的贡献,从而加速神经语言模型的训练过程。通过数学推导,展示了如何简化梯度计算,提高模型训练效率。

对于《Deep Learning》一书中12.4.3.3节,公式(12.13)至(12.16)的详细推导过程。
加速神经语言模型训练的一种方式是,避免明确的计算所有未出现在下一位置的词对梯度的贡献。每个不正确的词在此模型下具有低概率。枚举所有这些词的计算成本可能会很高。相反,我们可以仅采样词的子集,梯度的推导过程如下:
∂logP(y∣C)∂θ=∂log softmaxy(a)∂θ=∂∂θlogeay∑ieai=∂∂θ(ay−log∑ieai)=∂ay∂θ−∂∂θlog∑ieai=∂ay∂θ−1∑jeaj∂∂θ∑ieai=∂ay∂θ−1∑jeaj∑i∂eai∂θ=∂ay∂θ−1∑jeaj∑ieai∂ai∂θ=∂ay∂θ−∑ieai∑jeaj∂ai∂θ=∂ay∂θ−∑iP(y=i∣C)∂ai∂θ \begin {aligned} \frac{\partial {\rm log}P(y|C)}{\partial \theta} &= \frac{\partial {\rm log\ softmax}_y(a) }{\partial \theta} \\ &= \frac{\partial}{\partial \theta} {\rm log} \frac{e^{a_y}}{\sum_i{e^{a_i}}}\\ &= \frac{\partial}{\partial \theta}(a_y - {\rm log}\sum_i{e^{a_i}}) \\ &=\frac{\partial a_y}{\partial \theta} -\frac{\partial}{\partial \theta}{\rm log} \sum_i{e^{a_i}}\\ &=\frac{\partial a_y}{\partial \theta} - \frac{1}{\sum_j{e^{a_j}}}\frac{\partial}{\partial \theta}\sum_i{e^{a_i}}\\ &= \frac{\partial a_y}{\partial\theta} - \frac{1}{\sum_j{e^{a_j}}} \sum_i\frac{\partial e^{a_i}}{\partial \theta}\\ &= \frac{\partial a_y}{\partial\theta} - \frac{1}{\sum_j{e^{a_j}}} \sum_i{e^{a_i}}\frac{\partial a_i}{\partial \theta}\\ &= \frac{\partial a_y}{\partial\theta} - \sum_i\frac{e^{a_i}}{\sum_j{e^{a_j}}} \frac{\partial a_i}{\partial \theta}\\ &= \frac{\partial a_y}{\partial\theta} - \sum_i P(y=i|C) \frac{\partial a_i}{\partial \theta} \end {aligned} θlogP(yC)=θlog softmaxy(a)=θlogieaieay=θ(aylogieai)=θayθlogieai=θayjeaj1θieai=θayjeaj1iθeai=θayjeaj1ieaiθai=θayijeajeaiθai=θayiP(y=iC)θai
本文内容编辑:郑杜磊

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值