Softmax

给定softmax的输入(z1,z2,...,zn)(z_1,z_2,...,z_n)(z1​,z2​,...,zn​),则输出为f(z1,f(z2),...,f(zn))f(z_1,f(z_2),...,f(z_n))f(z1​,f(z2​),...,f(zn​)),其中f(zi),i∈[1,n]f(z_i),i\in[1,n]f(zi​),i∈[1,n]的计算方式为:

f(zi)=ezi∑j=1nezjf(z_i)=\frac{e^{z_i}}{\sum_{j=1}^ne^{z_j}}f(zi​)=∑j=1n​ezj​ezi​​

Sampled softmax

目前流行的基于神经网络的机器翻译(NMT)模型,采用的是Encoder-Decoder结构,对于输入序列x=(x1,x2,...,xSn)\boldsymbol{x}=(x_1,x_2,...,x_{S_n})x=(x1​,x2​,...,xSn​​),生成对应的目标序列y=(y1,y2,...,yTn)\boldsymbol{y}=({y_1,y_2,...,y_{T_n})}y=(y1​,y2​,...,yTn​​),模型的建模目标是最大化目标序列的条件概率。

logP(y∣x)=∑t=1TnP(yt∣y&lt;t,x)logP(\boldsymbol{y}|\boldsymbol{x})=\sum_{t=1}^{T_n}P(y_t|y_{&lt;t},\boldsymbol{x})logP(y∣x)=t=1∑Tn​​P(yt​∣y<t​,x)

对于包含N个样本的训练数据,模型的训练目标就是最大化整体条件概率:

θ∗=argmaxθ∑n=1N∑t=1Tnlogp(ytn∣y&lt;tn,xn)\theta^*=argmax_{\theta}\sum_{n=1}^N\sum_{t=1}^{T_n}logp(y_t^n|y_{&lt;t}^n,\boldsymbol{x}_n)θ∗=argmaxθ​n=1∑N​t=1∑Tn​​logp(ytn​∣y<tn​,xn​)

详细的模型结构在这里就不再展开,可以参考我之前的文章深度模型(二):Attention,在这里我们主要关注模型softmax层的计算。

softmax层输出目标序列中第ttt位的符号概率分布,计算方式为:

p(yt∣y&lt;t,x)=exp(wtTϕ(yt−1,zt,ct)+bt)Zp(y_t|y_{&lt;t},x)=\frac{exp(w_t^T\phi(y_{t-1},z_t,c_t)+b_t)}{Z}p(yt​∣y<t​,x)=Zexp(wtT​ϕ(yt−1​,zt​,ct​)+bt​)​
=exp(wtTϕ(yt−1,zt,ct)+bt)∑yk∈Vexp(wkTϕ(yt−1,zt,ct)+bk)=\frac{exp(w_t^T\phi(y_{t-1},z_t,c_t)+b_t)}{\sum_{y_k\in V}exp(w_k^T\phi(y_{t-1},z_t,c_t)+b_k)}=∑yk​∈V​exp(wkT​ϕ(yt−1​,zt​,ct​)+bk​)exp(wtT​ϕ(yt−1​,zt​,ct​)+bt​)​

其中V表示目标序列的词汇表,yt−1y_{t-1}yt−1​表示目标序列中前一位的符号,ztz_tzt​表示Decoder当前的隐状态,ctc_tct​表示Encoder隐状态的Attention值。

可以看出为了计算目标符号yty_tyt​的条件概率,必须计算ZZZ值,这需要对词表VVV中的符号进行遍历,计算量随着词表规模的变大而变大,目前词表的规模从几千到几万不等。

为了支持超大规模的词表,一个很自然的思路就是,能不能通过一些算法达到近似计算ZZZ值的目的呢。论文《On Using Very Large Target Vocabulary for Neural Machine Translation》提出了一种对ZZZ值的近似计算方法,这就是sampled softmax:

p(yt∣y&lt;t,x)=exp(wtTϕ(yt−1,zt,ct)+bt)Z^p(y_t|y_{&lt;t},x)=\frac{exp(w_t^T\phi(y_{t-1},z_t,c_t)+b_t)}{\widehat Z}p(yt​∣y<t​,x)=Zexp(wtT​ϕ(yt−1​,zt​,ct​)+bt​)​
=exp(wtTϕ(yt−1,zt,ct)+bt)∑yk∈V′exp(wkTϕ(yt−1,zt,ct)+bk)=\frac{exp(w_t^T\phi(y_{t-1},z_t,c_t)+b_t)}{\sum_{y_k\in V'}exp(w_k^T\phi(y_{t-1},z_t,c_t)+b_k)}=∑yk​∈V′​exp(wkT​ϕ(yt−1​,zt​,ct​)+bk​)exp(wtT​ϕ(yt−1​,zt​,ct​)+bt​)​

其中V′V'V′就是采样得到的词表,词表规模要远小雨整体的词表VVV,因此整体的词表VVV的规模不再造成计算量增长的问题。采样方式和V′V'V′的选择方式,以后有时间再补上。

深度模型(七):Sampled Softmax相关推荐

  1. Sampled Softmax,你真的会用了吗?

    作者 | 夜小白 整理 | NewBeeNLP 前面两篇关于文本匹配的博客中,都用到了Sampled-softmax训练方法来加速训练. 基于表征(Representation)的文本匹配.信息检索. ...

  2. 一文讲懂召回中的 NCE NEG sampled softmax loss

    深度学习中与分类相关的问题都会涉及到softmax的计算.当目标类别较少时,直接用标准的softmax公式进行计算没问题,当目标类别特别多时,则需采用估算近似的方法简化softmax中归一化的计算. ...

  3. NNs(Neural Networks,神经网络)和Polynomial Regression(多项式回归)等价性之思考,以及深度模型可解释性原理研究与案例...

    1. Main Point 0x1:行文框架 第二章:我们会分别介绍NNs神经网络和PR多项式回归各自的定义和应用场景. 第三章:讨论NNs和PR在数学公式上的等价性,NNs和PR是两个等价的理论方法 ...

  4. 从DSSM语义匹配到Google的双塔深度模型召回和广告场景中的双塔模型思考

    ▼ 相关推荐 ▼ 1.基于DNN的推荐算法介绍 2.传统机器学习和前沿深度学习推荐模型演化关系 3.论文|AGREE-基于注意力机制的群组推荐(附代码) 4.论文|被"玩烂"了的协 ...

  5. 论文浅尝 | 使用预训练深度模型和迁移学习方法的端到端模糊实体匹配

    论文笔记整理:高凤宁,南京大学硕士,研究方向为知识图谱.实体消解. 链接:https://doi.org/10.1145/3308558.3313578 动机 目前实体匹配过程中实体之间的差异比较微妙 ...

  6. 深度模型的日志异常检测,还有谁不会?

    摘要:日志异常检测的核心是借助AI算法自动分析网络设备日志来发现并定位故障,根据送入检测模型的数据格式,日志异常检测算法模型分为序列模型和频率模型,其中序列模型又可以分为深度模型和聚类模型. AIOp ...

  7. 【论文速览】深度模型-降维与聚类

    [论文速览]深度模型-降维与聚类 [文章一]InfoGAN: Interpretable Representation Learning by Information Maximizing Gener ...

  8. 文本匹配开山之作-DSSM论文笔记及源码阅读(类似于sampled softmax训练方式思考)

    文章目录 前言 DSSM框架简要介绍 模型结构 输入 Encoder层 相似度Score计算 训练方式解读 训练数据 训练目标 训练方式总结 DSSM源码阅读 训练数据中输入有负样本的情况 输入数据 ...

  9. 【机器学习】sampled softmax loss

    目录 1.前置知识softmax loss 2.sampled softmax 1.1.问题引入 1.2.如何通俗理解sampled softmax机制? 3.sampled softmax loss ...

最新文章

  1. User Profile Service 服务未能登录转载自(sailing的新浪博客)
  2. 【Docker】容器与系统时间同步
  3. 开发者社区精选直播合集一览
  4. SQLite FTS3/FTS4与一些使用心得
  5. 西门子主程序调用子程序_S7200Smart 子程序局部变量使用教程
  6. MySQL高级知识(十一)——Show Profile
  7. python基础教程书籍-7本Python必读的入门书籍
  8. 下载Windows10纯净官方镜像
  9. 网站速度这样优化,让你的网站飞起来
  10. 年薪50万的程序员_如何才能撩到年薪50万的程序员?
  11. HTML5中如何实现rpx布局
  12. 大学生活快要结束了,才想要珍惜~~~
  13. Discord/MidJourney注册遇到电话号码无效 invalid phone number
  14. Halcon学习笔记_05:一维码、二维码
  15. 中国数据竞赛解决方案汇总
  16. ipa文件在线上传工具,代替xcode
  17. GSM移动通信系统的A3A8加密算法源码
  18. win7电脑右键菜单选项的顺序怎么调整
  19. IT咨询巨头埃森哲遭遇勒索攻击事件,给了我们哪些启示?
  20. 5年测试经验华为社招:半月3次面试,成功拿到Offer

热门文章

  1. android的SDK离线安装详细教程
  2. python控制同学电脑(源码)
  3. java joda datetime_Java如何在Joda-Time中格式化DateTime对象?
  4. mycncart 之网银在线chinapay支付方式
  5. 给现在缺钱的年轻人一个大胆的建议!
  6. 【狂怒/战逆豪情/怒火特攻队】下载
  7. apdu 移动sim_中国移动手机支付业务及关键技术
  8. 手机淘宝商品详情API接口开发文档
  9. java 乱码怎么是繁体字_[求助]怎么是乱码,里面好多繁体汉字
  10. Web(二)html5基础-表格高级样式的设置