| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> Batch Normalization究竟学到了数据的什么信息? -> 正文阅读 |
|
[人工智能]Batch Normalization究竟学到了数据的什么信息? |
原文链接: 大家好,我是泰哥。上节为大家介绍了数据归一化的发展历程,本节就讲讲Batch Normalization的计算思路,看看它究竟强在哪里?为什么它可以使模型梯度保持平稳。 1 归一化不会改变数据分布任何归一化的本质都是对数据进行平移和放缩。
接下来,我们使用Z-score对其进行归一化操作,然后对比查看归一化前后数据集分布:
可以发现,数据在坐标中的绝对值会发生变化,但是归一化前后数据分布不变。 2 归一化其实是仿射变化数据的仿射变换用矩阵形式来进行表示就是: x ^ = x ? w + b \hat x = x * w + b x^=x?w+b其中x是原数据,w是参数矩阵,b是截距, x ^ \hat x x^是经过变换之后的数据。此处以Z-Score为例,探讨归一化操作转化为仿射变换的方法。 在归一化运算时,我们进行了如下操作: 稍作变换,就可以写成如下表达式:
x
s
t
d
(
x
)
?
m
e
a
n
(
x
)
s
t
d
(
x
)
=
x
?
1
s
t
d
(
x
)
?
m
e
a
n
(
x
)
s
t
d
(
x
)
\begin{aligned} \frac{x}{std(x)} - \frac{mean(x)}{std(x)} \\ = x \cdot\frac{1}{std(x)}- \frac{mean(x)}{std(x)} \\ \end{aligned}
std(x)x??std(x)mean(x)?=x?std(x)1??std(x)mean(x)?? 3 将平移与缩放设为参数那么在归一化的过程中,放缩的部分可以通过矩阵乘法来完成,而平移部分则更加简单,让数据集加上由每一列平移幅度所构成的向量即可完成。 在实际操作中,我们将归一化操作看成一个特殊的线性层,也将极大拓展归一化操作可以出现的位置。在经典机器学习领域,对数据的归一化只停留在输入数据时对数据进行统一处理,那么在迭代过程中,数据会逐渐失去初始化之后所带来的良好特性,此时如果我们可以像添加线性层一样,在任意隐藏层前后添加归一化层进行处理,就能避免迭代过程中数据逐渐偏移所导致的梯度不平稳问题。 4 BN实际流程BN的平移和放缩分为两个阶段:
其实两个阶段做的是一件事,就是对参数进行平移和缩放。我们可以将第一阶段理解为将数据本身的均值与方差设为了初始值,第二阶段则是根据反向传播来不断的更新参数。 最终训练结束,数据将朝向方差为 γ \gamma γ、均值为 β \beta β的分布方向靠拢。 5 BN的衍生在BN诞生之后,根据不同的业务场景,又衍生出了原理相同的一些方法,比如 它们只是选择了数据的不同维度进行了缩放与平移,但是与BN的原理一致。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/26 9:52:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |