当前位置: 首页 > news >正文

泰安网站建设哪家好公司注册的公司

泰安网站建设哪家好,公司注册的公司,网站域名地址,医美推广平台有哪些文章目录 背景方法通俗理解什么是重参数化gumbel-softmax为什么是gumbeltorch实现思考 背景 这里举一个简单的情况#xff0c;当前我们有p1, p2, p3三个概率#xff0c;我们需要得到最优的一个即max(p1, p2, p3)#xff0c;例如当前p3 max(p1, p2, p3)#xff0c;那么理想… 文章目录 背景方法通俗理解什么是重参数化gumbel-softmax为什么是gumbeltorch实现思考 背景 这里举一个简单的情况当前我们有p1, p2, p3三个概率我们需要得到最优的一个即max(p1, p2, p3)例如当前p3 max(p1, p2, p3)那么理想输出应当为[0, 0, 1]然后应用于下游的优化目标这种场景在搜索等场景经常出现。 如果暴力的进行clip或者mask操作转化为独热向量的话会导致在梯度反向传播的时候无法更新上游网络。因为p1和p2对应的梯度一定为0。 方法通俗理解 针对上述情况采用重参数化的思路可以解决。 即然每次前向传播理想情况下是0-1独热向量向量但同时能保证[p1, p2, p3]这个分布能被根据概率被更新。于是采用了一种重参数化的方法即从每次都从一个分布中采样一个u这个u属于一个均匀分布从这个均匀分布通过转换变成[p1, p2, p3]这个分布。这样就能即保证梯度可以反向传播同时根据每次采样来实现按照[p1, p2, p3]这个分布更新而不是每次只能更新最大的一个。 而这种方法就是重参数化。 什么是重参数化 Reparameterization重参数化这是一个方法论是一种技巧。 我们首先可以抽象出来它的数学表达形式 L θ E z p θ ′ ( z ) ( f θ ( z ) ) \begin{equation} L_{\theta} E_{zp_{\theta}(z)}(f_{\theta}(z)) \end{equation} Lθ​Ezpθ′​(z)​(fθ​(z))​​ 注意在有些时候 θ ′ ∈ θ \theta \in \theta θ′∈θ或者 θ ′ θ \theta \theta θ′θ。 如何理解这里我们的优化目标是 L θ L_{\theta} Lθ​其中 f θ ( ) f_{\theta}() fθ​()一般是我们的模型而计算 z z z是从分布 p θ ′ ( z ) p_{\theta}(z) pθ′​(z)中采样得到的。但是问题是我们不能把一个分布输入到 f θ ( ) f_{\theta}() fθ​()中去只能从选择一个特定的 z z z但是这样就没法更新 θ ′ \theta θ′。 综上重参数化就是从给定分布中采样得到一个 z z z同时保证了梯度可以更新 θ ′ \theta θ′这种保证采样分布和给定分布无损转换的采样策略叫做重参数化。个人理解欢迎大佬指正 由于我们现在解决的是gumbel-softmax问题所以只关注当 p θ ′ ( z ) p_{\theta}(z) pθ′​(z)是离散的情况下此时 L θ E z p θ ′ ( z ) ( f θ ( z ) ) ∑ p θ ′ ( z ) ( f θ ( z ) ) \begin{equation} L_{\theta} E_{zp_{\theta}(z)}(f_{\theta}(z)) \sum p_{\theta}(z)(f_{\theta}(z)) \end{equation} Lθ​Ezpθ′​(z)​(fθ​(z))∑pθ′​(z)(fθ​(z))​​ 这也就是gumbel-softmax要解决的数学形式。 gumbel-softmax gumbel-softmax给出的采样方案叫做gumbel max 从原来的 a r g m a x i ( [ p 1 , p 2 , . . . ] ) argmax_i([p1, p2, ...]) argmaxi​([p1,p2,...])到 a r g m a x i ( l o g ( p i ) − l o g ( − l o g ( ϵ i ) ) ) , ϵ i ∈ U [ 0 , 1 ] argmax_i(log(p_i)-log(-log(\epsilon_i))), \epsilon_i \in U[0, 1] argmaxi​(log(pi​)−log(−log(ϵi​))),ϵi​∈U[0,1] 也就是先算出各个概率的对数 l o g ( p i ) log(p_i) log(pi​)然后从均匀分布 U U U中采样随机数 ϵ i \epsilon_i ϵi​把 − l o g ( − l o g ϵ i ) −log(−log\epsilon_i) −log(−logϵi​)加到 l o g ( p i ) log(p_i) log(pi​)然后再进行后续操作。 这里可以理解为通过 ϵ \epsilon ϵ的采样将随机性增加。有的人会疑问为什么格式变得这么复杂各种算log这是为什么这个就涉及到下一节了具体原因就是来保证数学的变换正确性即我增加了随机性但是保证分布的期望仍然是和原始[p1, p2, p3]是一致的这个证明在下一节是有比较严谨的数学证明的。 但是这里还有一个问题就是argmax或者说onehot操作仍然会丢失梯度所以采用带超参 τ \tau τ的softmax来进行平滑 s o f t m a x ( ( l o g ( p i ) − l o g ( − l o g ( ϵ i ) ) ) / τ ) \begin{equation} softmax((log(p_i)-log(-log(\epsilon_i)))/\tau) \end{equation} softmax((log(pi​)−log(−log(ϵi​)))/τ)​​ 其中 τ \tau τ也被称为退火参数用来调整平滑的程度 τ \tau τ越小越接近onhot向量。 这里也解释清楚了所谓gumbel-softmax是通过gumbel max实现重参数化通过带退火参数的softmax实现梯度反向传递。 为什么是gumbel 这就涉及到一个gumbel max的证明了。 目标是证明针对 l o g ( p i ) − l o g ( − l o g ( ϵ i ) ) log(p_i)-log(-log(\epsilon_i)) log(pi​)−log(−log(ϵi​))当 a r g m a x i ( l o g ( p i ) − l o g ( − l o g ( ϵ i ) ) ) 1 argmax_i(log(p_i)-log(-log(\epsilon_i))) 1 argmaxi​(log(pi​)−log(−log(ϵi​)))1时其概率为 p 1 p_1 p1​。 假设 l o g ( p 1 ) − l o g ( − l o g ( ϵ 1 ) ) log(p_1)-log(-log(\epsilon_1)) log(p1​)−log(−log(ϵ1​)) 最大 则 l o g ( p 1 ) − l o g ( − l o g ( ϵ 1 ) ) l o g ( p 2 ) − l o g ( − l o g ( ϵ 2 ) ) log(p_1)-log(-log(\epsilon_1)) log(p_2)-log(-log(\epsilon_2)) log(p1​)−log(−log(ϵ1​))log(p2​)−log(−log(ϵ2​)) l o g ( p 1 ) − l o g ( − l o g ( ϵ 1 ) ) l o g ( p 3 ) − l o g ( − l o g ( ϵ 3 ) ) log(p_1)-log(-log(\epsilon_1)) log(p_3)-log(-log(\epsilon_3)) log(p1​)−log(−log(ϵ1​))log(p3​)−log(−log(ϵ3​)) … l o g ( p 1 ) − l o g ( − l o g ( ϵ 1 ) ) l o g ( p 2 ) − l o g ( − l o g ( ϵ 2 ) ) log(p_1)-log(-log(\epsilon_1)) log(p_2)-log(-log(\epsilon_2)) log(p1​)−log(−log(ϵ1​))log(p2​)−log(−log(ϵ2​)) - ϵ 1 p 2 / p 1 ϵ 2 \epsilon_1^{p_2/p_1} \epsilon_2 ϵ1p2​/p1​​ϵ2​ 所以 p 1 p1 p1 大于 p 2 p_2 p2​ 的概率是 ϵ 1 p 2 / p 1 \epsilon_1^{p_2/p_1} ϵ1p2​/p1​​ 同理 p 1 p1 p1 大于 p 3 p_3 p3​ 的概率是 ϵ 1 p 3 / p 1 \epsilon_1^{p_3/p_1} ϵ1p3​/p1​​ … 所以 l o g ( p 1 ) − l o g ( − l o g ( ϵ 1 ) ) log(p_1)-log(-log(\epsilon_1)) log(p1​)−log(−log(ϵ1​)) 最大的概率是 ϵ 1 p 2 / p 1 \epsilon_1^{p_2/p_1} ϵ1p2​/p1​​ * ϵ 1 p 3 / p 1 \epsilon_1^{p_3/p_1} ϵ1p3​/p1​​ * … ϵ 1 ( 1 − p 1 ) / p 1 \epsilon_1^{(1-p_1)/p_1} ϵ1(1−p1​)/p1​​ E ( ϵ 1 ( 1 − p 1 ) / p 1 ) E(\epsilon_1^{(1-p_1)/p_1}) E(ϵ1(1−p1​)/p1​​) ∫ 0 1 ϵ 1 ( 1 − p 1 ) / p 1 d ϵ \int_{0}^{1}\epsilon_1^{(1-p_1)/p_1} d\epsilon ∫01​ϵ1(1−p1​)/p1​​dϵ ∫ 0 1 ϵ 1 ( 1 / p 1 ) − 1 d ϵ 1 \int_{0}^{1}\epsilon_1^{(1/p_1)-1} d\epsilon_1 ∫01​ϵ1(1/p1​)−1​dϵ1​ ( p 1 ( ϵ 1 1 / p 1 ) ) ∣ 0 1 (p_1(\epsilon_1^{1/p_1}))|^1_0 (p1​(ϵ11/p1​​))∣01​ p 1 p_1 p1​ 证明假设成立 torch实现 def sample_gumbel(shape, eps1e-20):U torch.rand(shape)U U.cuda()return -torch.log(-torch.log(U eps) eps)def gumbel_softmax_sample(logits, temperature0.5):y torch.log(logits) sample_gumbel(logits.size())return F.softmax(y / temperature, dim-1)def gumbel_softmax(logits, temperature1, hardFalse):input: [B, n_class]return: [B, n_class] an one-hot vectory gumbel_softmax_sample(logits, temperature)if not hard:return yshape y.size()_, ind y.max(dim-1)y_hard torch.zeros_like(y).view(-1, shape[-1])y_hard.scatter_(1, ind.view(-1, 1), 1)y_hard y_hard.view(*shape)# Set gradients w.r.t. y_hard gradients w.r.t. yy_hard (y_hard - y).detach() yreturn y_hard思考 为什么gumbel-softmax和softmax的输出是不一样的 为什么argmax(gumbel-softmax) 和 argmax(softmax)的结果也不一定一样这是正常的吗 大家共勉
http://www.zqtcl.cn/news/184338/

相关文章:

  • 建设领域行政处罚查询网站wordpress数据库发文章
  • 怎么做网页的多开器宿迁seo优化
  • 别人帮做的网站怎么修改病句店铺引流的30种方法
  • 网站备案幕布怎么申请绍兴cms建站模板
  • 做网站熊掌号软件设计公司排名
  • 深圳 做网站学做西点的网站
  • 静态网站安全性百度服务平台
  • 网站vi设计公司网站建设app
  • 书店网站建设策划书总结每天看七个广告赚40元的app
  • 做网站的属于什么专业成都广告制作安装公司
  • 天津市网站建设公司网站制作费用
  • 网站制作公司 郑州wordpress图片中文不显示解决
  • 网站建设模式有哪些方面jquery做的装修网站
  • 佛山手机建网站企业网站公司单位有哪些
  • 给企业做网站的平台有没有专门做衣服搭配的网站
  • 青岛本地网站最近军事新闻大事
  • 潍坊哪里有做360网站的成都官微最新发布
  • 还有哪些网站可以做淘宝活动企业建设网站的方式
  • 上海技术公司做网站2022引流人脉推广软件
  • 网站排名优化技术安徽省城乡和建设厅网站
  • 平阴县建设工程网站英文网站模板制作
  • 网站制作超链接怎么做厦门公司建站
  • 阿里云做的网站怎么备份建筑设计网站issuu
  • 网上做设计网站广西做网站找谁
  • 网站优化成本建设项目网站备案申请表
  • 做公众号首图网站上海短期网站建设培训
  • 网站开发最好佛山优化网站排名
  • 服务器搭建网站打不开网站建设信息平台
  • 宽屏蓝色企业网站源码如何编辑网站标题
  • 免费搭建手机网站广告公司怎么取名