误差函数拟合优缺点_GELU的两个初等函数近似是怎么来的?

fb2814bba5b97e51982f1fbf2d80cfcd.gif

©PaperWeekly 原创 · 作者|苏剑林

单位|追一科技

研究方向|NLP、神经网络

GELU,全称为 Gaussian Error Linear Unit,也算是 RELU 的变种,是一个非初等函数形式的激活函数。它由论文 Gaussian Error Linear Units (GELUs) [1] 提出,后来被用到了 GPT 中,再后来被用在了 BERT 中,再再后来的不少预训练语言模型也跟着用到了它。

随着 BERT 等预训练语言模型的兴起,GELU 也跟着水涨船高,莫名其妙地就成了热门的激活函数了。

7b5cc51d8e1ca5f7fd98c29930a611c7.png

▲ GELU函数图像 在 GELU 的原始论文中,作者不仅提出了 GELU 的精确形式,还给出了两个初等函数的近似形式,本文来讨论它们是怎么得到的。 4fe5161c054d4042dc84bba2b042ff3d.png GELU函数 GELU 函数的形式为:

8f67e1fc9f7a05503fc390b17e5ff5bd.png

其中 是标准正态分布的累积概率函数,即:

8ea710e82d77c90c823463dbd907fc57.png

这里 。然后原论文还提了两个近似: 615f030811af6f507cb1d5999e4c89e0.png 以及:

4d32d8422cb322e83c965fe29d54a531.png

现在仍然有不少 Transformer 架构模型的实现都是用近似(4)作为 GELU 函数的实现。不过很多框架已经有精确的 计算函数了,所以初等函数近似形式的价值可能不会很大,因此大家就当是一道数学分析练习题吧。 b7ce934a3c7566315542c40f61721a63.png 用啥近似 显然,要找 GELU 的近似形式,就相当于找 近似,这也等价于找 的近似。

62bd3f34b6e556531efdb96ce118205b.png

▲ erf函数图像 首先,我们要解决第一个问题:用什么函数来近似。从 图像我们可以看出它的特点: 1. 它是一个奇函数,即 ; 2. 它单调递增,并且:

1f4c9a1edec25acc865939baaabe8a44.png

奇函数我们有很多,比如 等,并且奇函数的叠加、复合函数依然是奇函数,比如 ;又是奇函数,又单调递增且有界的,我们最容易想到的可能是 ,事实上, 确实跟 很相似。 因此,我们可以从 触发,构造一些可能的拟合形式,比如: 873e95bd5f74bfc31ac279c00869ca75.png 3d6cd05922792230c60305b1d7eefe45.png 怎样近似 有了待拟合的形式之外,下面要考虑的就是怎么拟合、以什么标准的问题了,说白了,就是想个办法求出各项系数来。一般来说,有两种思路:局部拟合和全局拟合。

3.1 局部拟合

局部拟合基于泰勒展开,比如考虑近似形式 ,我们在 x=0 处展开,得到:

66df9ef2fb033d0d213cd1ee2b890dfd.png

让前两项为 0,刚好得到两个方程,求解得到:

7c4a757c938ac2a21608a0169154f67c.png

代入 ,并换成数值形式,那么就是:

acae27d607be888615087cba9dc09e5d.png

3.2 全局拟合

式(8)已经跟式(4)很接近了,但是第二个系数还是差了点。这是因为(8)纯粹是局部近似的结果,顾名思义,局部近似在局部会很精确,比如上面的推导是基于 x=0 处的泰勒展开,因此在 x=0 附近会比较精确,但是离 0 远一点时误差就会更大。因此,我们还需要考虑全局误差。

比较容易想到的全局误差是积分形式的,比如用 去逼近 f(x) 时,我们去算:

1790e32c98609c1e46db7fc47f1840ac.png

但是,每个 x 处的误差重要性可能不一样,因此为了不失一般性,还要乘以一个权重 ,即:

96e23468734aa3831d2f7763944a57f9.png

不同的 会导致不同的解,哪个 最适合,也不容易选择。 因此,我们不去优化这种积分形式的误差,我们优化一个更直观的 形式的误差:

9a43bf5d86a9b08101523eb8f17f2de3.png

这个式子很好理解,就是“找一个适当的 ,使得最大的 都尽可能小”,这样的目标符合我们的直观理解,并且不涉及到权重的选取。 3.3 “局部-全局”混合 基于这个思想,我们固定 ,然后去重新求解 。固定这个 a 是因为它是一阶局部近似,我们希望保留一定的局部近似,同时希望 b 能尽可能帮我们减少全局误差,从而实现局部近似与全局近似的混合。所以,现在我们要求解:

a891f88f9f73a00795066ca8af0b50c7.png

用 scipy 可以轻松完成求解:

import numpy 

最后得到 b=0.035677337314877385,对应的形式就是:

9628cbeb87b59cb5686d6256eb129266.png

最后几位有效数字可能有误差,但前面部分已经跟式(4)完美契合了。补充说明下,式(4)提出自论文 Approximations to the Cumulative Normal Function and its Inverse for Use on a Pocket Calculator [2] ,已经是 40 多年前的结果了。

至于第一个近似,则来自论文 A logistic approximation to the cumulative normal distribution [3] ,它是直接用 全局逼近 的结果,即:

cb121de1e3dc28abb34f48a1f882d7d7.png

解得 ,即:

5e04db89a4fff359c814600e19a46652.png

这跟式(3)同样很吻合。

346636bf781a917cf21f7bc53a118c13.png

文章小结 本文带大家一起做了道数学分析题——介绍了 GELU 激活函数,并试图探索了它的两个近似形式的来源。

参考链接

[1] https://arxiv.org/abs/1606.08415 [2] https://www.jstor.org/stable/2346872 [3] https://core.ac.uk/download/pdf/41787448.pdf

bb0d8b354ac4d5d7fe1d71502a9794a2.png

点击以下标题查看更多往期内容: 

  • 变分推断(Variational Inference)最新进展简述

  • 变分自编码器VAE:原来是这么一回事

  • 图神经网络三剑客:GCN、GAT与GraphSAGE

  • 如何快速理解马尔科夫链蒙特卡洛法?

  • 深度学习预训练模型可解释性概览

  • ICLR 2020:从去噪自编码器到生成模型

afb8a564327d4a83628d8c0e15217a68.gif

#投 稿 通 道#

 让你的论文被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。

📝 来稿标准:

• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向) 

• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接 

• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志

📬 投稿邮箱:

• 投稿邮箱:hr@paperweekly.site 

• 所有文章配图,请单独在附件中发送 

• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

关于PaperWeekly

PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

a11a6cae74bfc36b7bb7143dece16030.gif

168d0742355812f9dc8c694dc768bd13.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值