| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 【论文复现】Swish-Activation(2017) -> 正文阅读 |
|
[人工智能]【论文复现】Swish-Activation(2017) |
前言论文地址: https://arxiv.org/pdf/1710.05941.pdf. Swish的优点有: 1.无上界(避免过拟合) 一、背景\qquad 在深度神经网络中选择合适的激活函数对网络的动态训练和任务的性能具有显著的影响。因为每个深度神经网络的核心都是进行线性变换,然后紧接一个激活函数 f ( ? ) f(\cdot) f(?),激活函数在训练神经网络的过程中扮演着非常重要的角色。 \qquad 现在最受欢迎被大家广泛接受的激活函数是 修正线性单元 Rectified Linear Unit (ReLU) 激活函数。使用 ReLU激活函数的网络一般会比使用 Sigmoid 活着 Tanh的网络更容易优化,因为当输入x为正时,梯度是线性的。而且因为 ReLU 函数的简单性和高效性,我们常常把ReLU激活函数当成一个默认的激活函数用在我们的神经网络训练过程中。 \qquad 但是今年来,也有人不断的尝试手动设计一些激活函数,虽然这些激活函数在某些特定的模型或者特定的数据集当中取得了不错的效果,但是仍然无法手动找到一个可以像ReLU激活函数那样可以在广泛的数据集或者模型当中取得不错效果的激活函数。 \qquad 而我们的这次的工作就是使用自动搜索技术自动的搜索最佳的激活函数(多个一元或者二元函数组合)。 二、方法:自动搜索技术
\qquad
这里的自动搜索技术就是一个类似NAS的自动搜索最佳匹配方案的一个搜索技术。将一些一元和二元函数组合在一起组成一个搜索空间,这个搜索空间的设计最大的挑战就是要同时考虑效率和性能,所以我们尽量的将一些简单的一元函数或者二元函数组合成一个简单的搜索空间。用到的一元函数和二元函数如下:
\qquad 为了验证这些激活函数的普适性,在这之后作者又在很多模型和数据集上做了实验,如下图,发现只有激活函数 S w i s h ( x ) = x ? σ ( β x ) Swish(x)=x \cdot \sigma(\beta x) Swish(x)=x?σ(βx) 和 m a x ( x , σ ( x ) ) max(x, \sigma(x)) max(x,σ(x))的性能在众多的模型和函数中都表现的优于ReLU激活函数,而且 S w i s h ( x ) = x ? σ ( β x ) Swish(x)=x \cdot \sigma(\beta x) Swish(x)=x?σ(βx)的性能优于 m a x ( x , σ ( x ) ) max(x, \sigma(x)) max(x,σ(x))。所以我们下面再对 S w i s h ( x ) Swish(x) Swish(x)激活函数作进一步的分析。 三、Swish 激活函数公式: S w i s h ( x ) = x ? σ ( β x ) = x ? 1 1 + e ? β x Swish(x) = x \cdot \sigma(\beta x) = x \cdot \frac{1}{1 + e^{-\beta x}} Swish(x)=x?σ(βx)=x?1+e?βx1? ,其中 β \beta β是一个常数或者可训练的参数 如上图为不同参数下的 S w i s h ( x ) Swish(x) Swish(x) 函数,可以看到:
总结:由此可见 S w i s h ( x ) Swish(x) Swish(x) 函数是介于线性函数和 ReLU 函数之间进行线性插值的函数,而参数 β \beta β 则控制插值的程度。 而且从图中也可以看出:
当 x>0 时,通过对函数求一阶导可知:
当x<0 时,由下图也可以看出函数的大部分都落在了区间(-5,0)之间,且呈峰形分布(不单调),这也可以表面Swish函数的非单调性是一个很重要的性质。 \qquad 最后,整理下Swish的优点有:无上界(避免过拟合)、有下界(产生更强的正则化效果)、平滑(处处可导 更容易训练)、x<0具有非单调性(对分布有重要意义 这点也是Swish和ReLU的最大区别)。 四、PyTorch实现普通的Swish:
还有一种更高效的Swish实现方式:
另外还有一种和Swish函数很像的函数:hard-swish 公式:
h
a
r
d
?
s
w
i
s
h
(
x
)
=
x
?
R
e
L
U
6
(
x
+
3
)
6
=
x
?
m
i
n
(
m
a
x
(
0
,
x
+
3
)
,
6
)
6
hard-swish(x) = x \cdot \frac{ReLU6(x+3)}{6} = x \cdot \frac{min(max(0, x+3), 6)}{6}
hard?swish(x)=x?6ReLU6(x+3)?=x?6min(max(0,x+3),6)?
Reference链接: 博客. |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/22 11:19:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |