DataScience 板


LINE

既然都报名了,所以就读了。 以下会用我自己的理解、用比较口头的叙述,若用字不精确、还请见谅。 ---- arXiv: https://arxiv.org/abs/1706.02515 I. Abstract Deep Learning 中有两个很成功的 model,CNNs 在 vision 上、RNNs 在 NLP tasks 上。 那麽传统的 Feed-forward NN (以下称 FNNs) 的 Deep Learning 成功故事却极少。 FNN 表现好的状况都是 shallow (对比於其他两个 deep model) 的, 里面的 abstract representation 没办法做得 high-level,因爲 shallow。 本篇提出 self-normalizing neural networks (SNNs) 的方法, 让 FNNs 有能力做出 high-level abstract representation 的能力。 这个 SNNs 你只要躺着用,每一层 layer 的 output 都会自动收敛到 mean = 0, variance = 1 ,对比其他 normalization 方法是需要主动去 做 normalization 操作的(笔者注:像是 batch norm 你要导入额外的参数 γ 跟 β,而且是需要学习的参数,所以 SNNs 也太爽了吧,躺着用) 本篇 proposed 这个 SNNs 使用的 activation function 是 "scaled exponential linear units" (SELUs),这个 activation function 有 self-normalizing 的特性。这篇用 Banach fixed-point theorem (笔者注:?) 证明,SNNs 把 layer output 收敛到 mean = 0, var = 1 的能力,而且是能够 抵抗 noise 跟有的没的 perturbations。 SNNs 的收敛性带来以下好处: 1) 网路能够变 deep 2) 能够导入 strong regularization scheme (笔者注:e.g. dropout 像是 noise term) 3) learning 的稳定性高 即使在尚未把网路收敛到 var = 1 的状况,本篇证明这个 var 是有上下界的,因此 不会出现 gradient exploding 或 vanishing 的状况。 本篇火力展示: 1) 121 tasks from the UCI machine learning repository 2) drug discovery benchmarks 3) astronomy tasks with standard FNNs 本篇有 code: https://github.com/bioinf-jku/SNNs II. Introduction 这里前两段在讲 CNN、RNN 成功的故事,麻烦各位有兴趣自行阅读,里面就是大量的 citation。 在 training deep 的 CNN 方面,有 batch normalization、layer normalization、 weight normlization。但是这些 normlization 的技术会受到来自 SGD、 stochastic regularization (e.g. dropout) 等的干扰。 CNN 与 RNN 的 model 因为有 weight sharing 的关系,training 过程中受到的干扰 比较少,而且整个 model 比较稳定。而这些干扰对 FNNs 就影响很大, 如 figure 1 所示。本篇认为 FNNs 因为对干扰很敏感,而比 CNN、RNN 不好训练。 SNNs 则够 robust 去抵抗这些干扰,如 Figure 1 所示。 III. Self-normalizing Neural Networks (SNNs) 先定义一堆符号: 1) actvation function f 2) weight matrix W 两个 layer 中间的 weight matrix 3) activations in lower layer x 就是两个 layer 之间,前面的 layer 的 output 4) input z = Wx 後面 layer 的会拿到 乘完 weight matrix 的东西 5) activation in higher layer y = f(z) 後面 layer 的 output 6) activations 的 mean μ = E(x_i) ~ μ = E(y_i) 7) activation 的 variance (注:这里的 notation 是 $nu$) ν = Var(x_i) ~ ν = Var(y_i) 8) weight vector 的 mean 为 ω 9) weight vector 的 var 为 τ 10) g 是个 function,代表两个 layer 之间 mean 跟 variance 的关系。 ~ ~ g(μ, ν) = (μ, ν) batch normalization、layer normalization 或 weight normalization 则是去确保这个 g function 会把东西 mapping 到 predefined values, 通常是 (0, 1)。 Definition 1: 我们称一个网路是 self-normalizing 需满足以下条件。 它的每一个 activations y 必须有一个 mapping g: Ω→Ω, 而且这个 g 拥有一个好的 fixed point (ω, τ)。 Ω定义成 Ω = { (μ, ν) | μ ∈ [μ_min, μ_max], ν ∈ [ν_min, ν_max]}g(Ω) ⊆ᆪ[。 当 g 被多次重复的 apply 到 ΩΩ里面的每个点,会收敛到 fixed point (ω, τ)。 Definition 1 笔者注 这里我们的 g function 就是 normalization 的手段。 数学上的 fixed point 定义成 g(ω, τ) = (ω, τ), 即不管怎麽 apply mapping,其结果不动的点。 这个 fixed point 是由 layer 中间 weight vector 的 mean 跟 var 组成。 如果整个 networks 的 activations (就是每个 layer 的 y)的 mean and var 都在 predefined intervals 里面,那麽我们会说整个网路被 normalized 了。 现在我们单看两个 layer 之间的 activations x and y, 如果 x 的 mean 跟 var 值域已经在 predefined intervals 那麽 y 的 mean 跟 var 也会在 predefined intervals。 因此我们的 normalization 有 transitive 的特性,横跨整个网路。 最後,如果 g 被 iteratively apply,这些 mean 跟 var 会收敛到 fixed point。 SSNs 能够使 activations x 的 nomalization propagating 到整个网路。 每个 layer 的 fixed point (ω, τ) 可以一样,也可以不同,没限制。 建构一个 SNNs 的网路: 其实就是针对 g function 做设计,那麽要从两个地方下手,互相搭配 1) 精心设计的 activation function 2) weight matrix 的 initialization function 先来讲第一种 approach,本篇提出了 "scaled exponential linear units" (SELU) 来达成 FNNs 的 self-normalizing。见本文 equation 2 selu(x) = λ( x > 0 ? x : (αe^x - α) ) 我们研究过其他 activation function,以下皆不能作出 SNNs: ReLUs, sigmoid, tanh, leaky ReLUs 都不适用。 在设计这个 activation function 有以下几个要点: 1) function 的值域要包含正负,好让我们控制 mean 2) 要有 saturation regions,即微分接近 0 的区域 (笔者注: 像是 sigmoid 的两边,对於 大 跟 很大 的 x 的 output 都是趋近 1), 这样才能吸收 variance 过大的状况 3) 要有斜率大於 1 的 regions,来处理 vaiarnce 过小的状况 4) 是个 continuous curve 根据这些要点,我们 proposed 的 SELU 的 λ 的选择上要大於 1 。 g function 的推导: 前面我们已经选出了我们的 activation function f(x) = selu(x) 那麽 gf 之间的关系就很明确了。透过 z 把整件事情连起来。推导在 paper 的 equation 3 ~ 5。 详细的推导这里不叙述了。 这里做了些假设在 z 上面,只要整个隐藏层的 node 数量够多, Deep Learning 中上百个 node 很常见,那麽 z 的 distribution, 根据中央极限定理,会形成一个 normal distribution,文中是用 normal dist. 下去推导的。 对 fixed point (0, 1) 的讨论: 假设我们的 weight matrix 已经 normalized 出 ω = 0, τ = 1。 也就是 fixed point (μ ,ν) = (0, 1)。 现在我们把这个 μν 带入上一段写出来的 equation 4 跟 5,可以解出我们 selu(x) 里面的参数 α 约为 1.6733 与 λ 约为 1.0507 笔者注:底下还有些对於这个 fixed point 选择的证明,使 g 是个 contraction mapping,即这个 mapping stable 会收敛。 fixed point 对 unnormalized weights 的讨论: 在网路 training 的过程中,weight vector 可能被更新了,然後就不 normalized 了。 而在我们采用上一段得出的两个参数 α, λ 的状况下, 如果 weight vector 的 mean 跟 var (ω, τ) 够接近 (0, 1), 这个 g function 的 fixed point 尽管不是 (0, 1), 但也会很接近 (0, 1)。 而且这段接下来讲述各种不同的 variance ν的状况,全部的证明都附在 appendix。 简单来说,这里证明了 SNNs 的 g 的 fixed point 在 unnormalized weights 的状况下是存在的。 而且对於各种 ν 过大或过小的状况都能够处理,而能防止网路的更新上的 gradient exploding 或是 vanishing。证明就麻烦各位有兴趣自行研读了。 笔者注:所以大家在 init 完 weights 後,即使 training 过程中的 weights 不 normalized 也没关系。我们的 g 够厉害。 weight initialization: 基本上就是你能够作出 ω = 0, τ = 1 的方法都可以,本篇提了几个: uniform distribution、truncated Gaussian distribution,还有一篇 前人的 MSRA initialization 都有相似的效果。 "Alpha-dropout" 本篇提出一个新的 dropout 技术,来用在 SNNs 中。 这个 Alpha-drouput 会随机把 output 改成 -λα(在使用 SELU 的状况下), 而能够维持 activations 的 mean 跟 variance 不变。 在我们的经验中 dropout rate 设定成 0.05 或 0.1 有不错的效果。 III. 实验 在这个 section 中,跑了些不同的 normalization 技术的比较, 这个部分就麻烦各位有兴趣再来读这里的表格了。 IV. 结论 我们的 SNNs 让 FNNs 能够在 training 上大跃进。而且在越 deep 效果越好。 解决了 gradient exploding 跟 vanishing 的问题。 ---- 个人心得: 大概花了两天来写这个 post,就不管有没有符合徵文标准的字数了。 大家觉得有学到点啥比较重要。 而有些个人的理解与见解已经混在文中了。 要不我们也来提出个啥 SNNs 的 activation function 就叫 PTT 好了? --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.113.73.135
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DataScience/M.1531069344.A.95A.html
1F:推 GCWShadow: 推同校 07/09 02:44
2F:推 yoyololicon: 校友推 07/09 06:16
3F:推 aszx4510: 未看完先推 改天有时间一次补完 感谢心得 07/09 07:26
4F:推 goldflower: 推个 话说之前处理个问题用SeLU结果差用BN不少 07/09 09:59
5F:推 sma1033: 用过SELU的就知道,有的时候RELU换SELU反而会变差 07/09 11:20
6F:→ MXNet: 我觉得看 data,我自己用 ReLU 在时间序列上效果不好 07/09 11:27
7F:推 jason860421: 推 07/09 12:00
8F:推 st1009: 推参与活动 07/09 12:08
9F:推 jojojen: 推 07/09 12:14
10F:推 johnny8376: 推活动首po 07/09 13:03
11F:推 wilson85771: 推 07/09 13:24
12F:推 PyTorch: 借问一下 那把selu用在convolution layer也有normalize的 07/09 13:34
13F:→ PyTorch: 效果吗? 07/09 13:35
14F:推 liang1230: Selu 会变差常常是因为你忘了normalize你的input 07/09 18:56
15F:推 goldflower: 忘记normalize input就像有没有忘记加分号一样了吧XD 07/10 01:52
16F:→ goldflower: 没normalize input通常结果就直接爆的可能性比较高 07/10 01:52
17F:推 AndrewNg: 小弟认爲你整篇po文写成英文会比现在这样好读。但还是 07/23 14:31
18F:→ AndrewNg: 推个首po 07/23 14:31







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP