最近看到一篇文章非常有意思的文章, 是关于正则化的探讨, 作者发现在不同阶段对数据进行不同的正则化操作会有非常大的影响,在正确的位置进行正确的正则化操作可以为模型带来巨大的提升

一元@炼丹笔记

本文一共两块内容,

第一块介绍LayerNorm以及BatchNorm的联系&区别;

第二块则专注于介绍论文的内容,该篇论文是基于实践经验的,

个人觉得非常值得一试。

  1. LayerNorm 和 BatchNorm的介绍;
  2. 论文的解读

关于LayerNorm & BatchNorm

BatchNorm

BatchNorm是对一批样本进行处理, 对一批样本的每个特征分别进行归一化,举个简单的例子,加入我有一批样本, 每个样本有三个特征,,分别是身高,体重,年龄,那么我做归一化的时候,就是对体重做归一化,对身高做归一化,对年龄做归一化,三者之间不会有交叉影响。

这个看起来很符合直观的感觉,可以看做是降低每个特征量纲的影响,我们也经常会在CTR等深度模型的MLP部分见到BatchNorm操作。

也正因为如此,

所以BatchNorm会受到Batch size的影响;

当Batchsize小的时候效果往往不是非常稳定.

LayerNorm

LayerNorm是对一个样本进行处理, 对一个样本的所有特征进行归一化,乍一看很没有道理,因为如果对身高体重和年龄一起求一个均值方差,都不知道这些值有什么含义,但存在一些场景却非常有效果--NLP领域。

在NLP中,N个特征都可能表示不同的词,这个时候我们仍然采用BatchNorm的话,对第一个词进行操作,很显然意义就不是非常大了,因为任何一个词都可以放在第一个位置,而且很多时候词序对于我们对于句子的影响没那么大,而此时我们对N个词进行Norm等操作可以很好地反映句子的分布。(LN一般用在第三维度,[batchsize, seq_len,dims]),因为该维度特征的量纲是相同的,所以并没有太多区别。

背景

在非常多CTR相关的论文中,很多工作主要都Focus在模型结构方面的优化或者引入新的信息等,而这么做往往都忽略了模型中的一些小的模块的作用,

例如Normalization,在CTR相关的结构中我们发现,大家经常会把BatchNorm放在最后的MLP层, 但是这么做够吗?

Normalization是否发挥了最大的作用?

是否是最优的方案?

本文通过大量的系统的实验,给出了结论:

没有,还有更好的方案,

本文通过在CTR模型的不同地方加入不同的正则化策略(BatchNorm,LayerNorm等),最终取得了非常好的效果。那究竟是怎么做的呢?

我们继续往下看,下面的框架很简单,显示作者提出模型的核心组成部分VO-LayerNorm,然后是基于此提出的新的NormDNN,最后是实验验证部分。

Variance-Only LayerNorm

这是一个经验得出来的操作,作者在大量的实验中发现,原始的LayerNorm有些复杂化了,在对其进行不断的精简实验后,作者发现在CTR数据集上的效果并没有带来下降,反而更好了。下面我们看看这一步步精简的操作:

复杂版本LayerNorm

LayerNorm在NLP任务中取得了非常好的效果,但是实践中,Xu等人发现这个LayerNorm的bias和gain增加了过拟合的风险,并且经过试验他们发现简化LayerNorm也可以取的非常不错的效果。

简化版的LayerNorm

我们把bias以及gain同时删除,得到精简版的LayerNorm,

在大量的实验中,我们发现简化版本的LayerNorm并没有什么性能损失,相反的还可以取的更好的效果。

然后作者在CTR相关的数据集上又进行了大量的实验,发现对模型效果影响最大的不是re-centering等操作,反而方差带来的影响更大,于是作者提出了新的LayerNorm。

Variance-Only LayerNorm

此处,作者直接除以了方差,虽然更加精简了,但是实验效果却显示这么做在CTR数据集上却可以取得更好的效果。

NormDNN

在不同的地方使用不同形式的Normalization策略会带来什么样的影响呢?此处作者主要探索了两个部分, 特征Embedding部分的Normalization以及MLP部分的Normalization。在大量的实验之后,作者得到了一种提升最大的方案:

  1. 对于数值类的特征,我们使用Variance-Only LayerNorm或者LayerNorm;
  2. 对于类别特征,我们使用BatchNorm;
  3. 对于MLP部分,我们使用LayerNorm;

在特征Embedding层的Normalization

在MLP处加入Normalization

此处作者发现在非线性的激活函数之前加入Normalization操作的效果是比先使用激活函数再做Normalization处理要好的。

为什么Normalization是有效的Why

作者最后分析了一下Normalization为什么有效,并绘制了不同的Normalization对于我们均值和方差带来的影响,从图中以及实验中看来,我们发现 Normalization有效的最大一个原因在于方差的影响而不是均值。

同时我们发现很多神经元的输出大部分在使用Variance-Only LayerNorm之后都会被push输出一个负数的值,然后被RELU过滤掉,这可以减少噪音带来的影响,同样的,我们将Normalization的导数表示为:

实验

特征Embedding上加入Normalization是否有效?

从上面的实验中,我们发现,在特征Embedding层加入Normalization都是有效的,而且LayerNorm以及相关的变种是效果相对稳定以及最好的;

Normalization对于MLP的影响

从上面的实验中,我们发现,在MLP层加入Normalization都是有效的,但是具体选用哪种Normalization需要依据不同的任务进行选择;

Normalization对于Feature EMbedding & MLP的影响

从上面的实验中,我们发现,在MLP层以及特征Embedding层都加入Normalization都是比单个加入都有效的,在MLP侧加入VO-LN的Normalization往往能取得更好的效果;

Normalization对于数值以及类别特征的 EMbedding的影响

从上面的实验中,我们发现,对数值的EMbedding使用LayerNorm相关的效果更好,对数值特征使用LayerNorm相关的正则化方法,在MLP处使用VO-LN往往可以取得最好的效果.

NormDNN 与 其他网络比较

出乎意料,在三个数据集上,我们只需要对不同层做Normalization的处理就可以取得比DeepFM,xDeepFM更好的效果;

NormDNN: Numerical Embedding用LayerNorm相关的处理; Categorical Feature使用BatchNorm相关的处理; 在MLP部分使用VO-LN

泛化到其他Deep相关的模型

我们把初始化的方案应用到更加复杂的网络结构上也都取得了更好的效果;也就是说这种Normalization的方案可以扩充到其他的所有最新网络结构上

小结

从上面的内容来看,Normalization对于模型的帮助是非常大的; 对Embedding之后的特征进行Normalization(数值Embedding处用LayerNorm相关的Normalization,Categorical部分使用BatchNorm相关的处理,MLP部分使用VO-LN)可以取得非常大的提升;非常值得一试。

一本有仙气的笔记,记录了AI的不凡

Normalization在CTR问题中的迷之效果相关推荐

  1. WSDM2021 | 多交互注意力网络用于CTR预估中细粒度特征学习

    | 作者:YEN | 单位:东北大学 | 研究方向:推荐系统.计算广告 本文分享一篇发表在WSDM'21的点击率预估方面的文章:交互注意力网络用于CTR预估中细粒度特征学习 论文核心内容:构建更细粒度 ...

  2. SIGIR 2021|重新思考Attention在CTR预估中作用

    ©PaperWeekly 原创 · 作者 | 金金 单位 | 阿里巴巴研究实习生 研究方向 | 推荐系统 论文标题: Looking at CTR Prediction Again: Is Atten ...

  3. 深度学习在CTR预估中的应用 | CTR深度模型大盘点

    作者丨辛俊波 单位丨腾讯 研究方向丨CTR预估,推荐系统 前言 深度学习凭借其强大的表达能力和灵活的网络结构在 NLP.图像.语音等众多领域取得了重大突破.在广告领域,预测用户点击率(Click Th ...

  4. CTR预估中GBDT与LR融合方案

    1. 背景 CTR预估(Click-Through Rate Prediction)是互联网计算广告中的关键环节,预估准确性直接影响公司广告收入.CTR预估中用的最多的模型是LR(Logistic R ...

  5. 广告CTR预估中用户行为学习和记忆建模

    分享嘉宾:邹衡@阿里,并非花名"擎苍" 编辑整理:陈晟 出品平台:DataFun 导读:CTR 预估是计算广告的底层通用技术,在 CPC/OCPC 营销模式下,预估准确性对广告主流 ...

  6. 伪相关、伪关系与中介变量——统计名词中的迷思

    伪相关.伪关系与中介变量--统计名词中的迷思 转载 2016-11-02 19:00:53 标签:杂谈 这篇文章造福那些记不清统计基础概念的人.如果对标题中的三个名词有所疑惑,那么这篇文章可能会对你有 ...

  7. CTR/推荐系统中多任务/多目标学习应用概述文章汇总

    来源:CTR/推荐系统中多任务/多目标学习应用概述文章汇总 - 知乎 1.文章 吴海波:电商多目标优化小结 (2019.8-267) SunSuc:推荐系统中如何做多目标优化 (2019.12-163 ...

  8. ctr预估 php,深度学习在CTR预估中的应用

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 作者:辛俊波 | 腾讯 应用研究员 一.前言 深度学习凭借其强大的表达能力和灵活的网络结构在NLP.图像.语音等众多领域取得了重大突破.在广 ...

  9. 深度学习在CTR预估中的应用

    Deep Learning for Click-Through Rate Estimation Weinan Zhang, Jiarui Qin, Wei Guo, Ruiming Tang, Xiu ...

最新文章

  1. java operators_Java Basic Operators
  2. 控制~线性系统~的能控性和能观性
  3. ​两院院士评选“2021年中国/世界十大科技进展新闻”揭晓
  4. ES6 - let、const与作用域
  5. 基于pxe+dhcp+ks实现自动安装系统
  6. python获取IP位置信息
  7. c语言删增,C语言中初始、增加和删除进程信号的操作方法简介
  8. HALCON示例程序high.hdev使用不同方法提取区域
  9. 英语笔记:写作:Limiting the use of disposable plastic bags
  10. 1012.log4cplus项目应用
  11. Linux下的特殊权限SetUID
  12. 代码创建数据库_表--SqlServer数据库
  13. 基于Modbus TCP的MCGS上位机软件教程
  14. 笔记31 笨办法学python练习39可爱的词典
  15. Python 打新股,我建议你这么来操作!
  16. 【雅思阅读】王希伟阅读P3(Heading)
  17. unity火焰粒子效果
  18. css3遮罩——新功能引导层
  19. IV与PSI的理解--深入浅出
  20. CANoe之CAPL编程(CANoe系列其三)

热门文章

  1. 苹果浏览器移动端click事件延迟300ms的原因以及解决办法
  2. PHP+MySQL登录注册,完整版,详细注释
  3. PHP中文URL编解码(urlencode()rawurlencode()
  4. php mvc开发系列教程第三节 Controller 类实现
  5. 基因注释神器UCSC Genome Browser使用教程
  6. Python 3.9.1 安装教程
  7. HFSS15.0安装步骤
  8. Qt学习(十一):QT设置静态数据库
  9. ida 反编译 linux bin,使用IDA pro逆向ARM M系核心的Bin固件
  10. 基于UDP的服务器端和客户端