SOTA激活函数学习
学习 函数 激活 SOTA
2023-09-11 14:21:07 时间
除了之前较为流行的RELU激活函数,最近又新出了几个效果较好的激活函数
一、BERT激活函数 - GELU(gaussian error linear units)高斯误差线性单元
数学公式如下:
X是服从标准正态分布的变量。
近似的数学计算公式如下:
函数图如下:
橙色曲线为:GELU
蓝色曲线为:Mish函数
特性:当输入x减小的时候,输入会有一个更高的概率被dropout掉,这样的激活变换就会随机依赖于输入了,在激活中引入了随机正则的思想,是一种对神经元输入的概率描述。但是其实GELU相比Mish函数就要差一点,首先在大于0阶段,Mish函数的梯度是要略大于GELU,在负轴阶段Mish函数比GELU要晚一点趋近于0,也就是神经元能够晚一点死掉。
import math import numpy as np from matplotlib import pyplot as plt def mish(x): return x * math.tanh(math.log(1+math.exp(x))) def GELU(x): return 0.5*x*(1+math.tanh(math.sqrt(2/math.pi)*(x+0.044715*x**3))) x = np.linspace(-10,10,1000) y=[] z=[] for i in x: y.append(mish(i)) z.append(GELU(i)) plt.plot(x,y) plt.plot(x,z) plt.grid() plt.ylim(-1,6) plt.xlim(-7,7) plt.show()
二、Mish激活函数
公式如下:
函数图如下:
橙色曲线为:ln(1+e^(x))
蓝色曲线为:Mish函数
import math import numpy as np from matplotlib import pyplot as plt def mish(x): return x * math.tanh(math.log(1+math.exp(x))) def ln_e(x): return math.log(1+math.exp(x)) x = np.linspace(-10,10,1000) y=[] z=[] for i in x: y.append(mish(i)) z.append(ln_e(i)) plt.plot(x,y) plt.plot(x,z) plt.grid() plt.show()
相关文章
- Android Hook学习之ptrace函数的使用
- 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(上)
- php之快速入门学习-15(php函数)
- 复盘:何种情况下,神经网络称为深度学习?哪种激活函数输出负数?采用GAP作用于全连接层可降低参数量大小
- 机器学习笔记之狄利克雷过程(六)预测任务求解
- opencv2函数学习之blur,GaussianBlur,medianBlur和bilateralFilter:实现图像平滑处理
- opencv2函数学习之flip:实现图像翻转
- 机器学习的数学基础 - 常见分布函数
- (数据科学学习手札101)funcy:Python中的函数式编程百宝箱
- (数据科学学习手札19)R中基本统计分析技巧总结
- PMP学习所得
- Tensorflow2.0 入门与实战学习笔记(一、二)-优化函数、学习率、反向传播
- Redis学习---面试基础知识点总结
- 【树莓派4B学习】九、获取mjpeg-stream视频流
- 【C++快速上手】八、C++虚函数的vptr与vtable学习笔记
- 学习python第三天之多行函数
- python爬虫学习(二):定向爬虫例子-->使用BeautifulSoup爬取"软科中国最好大学排名-生源质量排名2018",并把结果写进txt文件
- nginx 学习笔记(5) nginx调试日志
- 【深度学习】——激活函数(sigmoid、tanh、relu、softmax)
- 深度学习之图像分割
- 机器学习-异常检测算法(二):Local Outlier Factor