学习笔记2-BatchNorm
【基础算法】六问透彻理解BN(Batch Normalization)μB1m∑i1mxiμBm1i1∑mxiσB21m∑i1mxi−μB2σB2m1i1∑mxi−μB2xixi−μBσB2ϵxiσB2ϵxi−μByiγxiβyiγxiβ简单地说,BN层就是对输入数据BBB。
·
什么是BatchNorm?
从上述知乎文章了解到,BN的核心公式是:
μ B = 1 m ∑ i = 1 m x i \mu_B = \frac{1}{m}\sum_{i=1}^m x_i μB=m1i=1∑mxi σ B 2 = 1 m ∑ i = 1 m ( x i − μ B ) 2 \sigma_B^2 = \frac{1}{m}\sum_{i=1}^m (x_i-\mu_B)^2 σB2=m1i=1∑m(xi−μB)2 x ~ i = x i − μ B σ B 2 + ϵ \widetilde{x}_i = \frac{x_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}} x
i=σB2+ϵxi−μB y i = γ x ~ i + β y_i=\gamma\widetilde{x}_i +\beta yi=γx
i+β
简单地说,BN层就是对输入数据 B B B做了一个Z-score标准化,使得数据分布标准化成均值为0方差为1的正态分布。但是标准化的具体操作过程和实现效果值得注意。
- BatchNorm1d()
假设有形状为 [ 5 , 1 , 5 , 1 ] [5,1,5,1] [5,1,5,1]张量数据 B B B,表示有5个1行5列的单通道数据。
[ 1 , 2 , 3 , 4 , 5 ] [ 2 , 3 , 4 , 5 , 6 ] [ 3 , 4 , 5 , 6 , 7 ] [ 4 , 5 , 6 , 7 , 8 ] [ 5 , 6 , 7 , 8 , 9 ] [1,2,3,4,5]\\ [2,3,4,5,6]\\ [3,4,5,6,7]\\ [4,5,6,7,8]\\ [5,6,7,8,9] [1,2,3,4,5][2,3,4,5,6][3,4,5,6,7][4,5,6,7,8][5,6,7,8,9]BatchNorm需要输入一个参数,这个参数表示批归一化层的尺寸,也就是我有多少个特征需要归一化。在这里,每一个张量都有5个特征,因此输入参数5,即BatchNorm(5)。
当执行BatchNorm1d(5)( B B B)时,每一个特征(即每一列)会被执行Z-score标准化。例如,计算第一列的均值为3,标准差为1.4142,第一列标准化的结果为: [ − 1.4142 , − 0.7071 , 0 , 0.7071 , 1.4142 ] T [-1.4142,-0.7071,0,0.7071,1.4142]^T [−1.4142,−0.7071,0,0.7071,1.4142]T
同理,张量数据 B B B的批归一化结果(标准化结果)为: [ − 1.4142 , − 1.4142 , − 1.4142 , − 1.4142 , − 1.4142 ] [ − 0.7071 , − 0.7071 , − 0.7071 , − 0.7071 , − 0.7071 ] [ 0.0000 , 0.0000 , 0.0000 , 0.0000 , 0.0000 ] [ 0.7071 , 0.7071 , 0.7071 , 0.7071 , 0.7071 ] [ 1.4142 , 1.4142 , 1.4142 , 1.4142 , 1.4142 ] [-1.4142,-1.4142,-1.4142,-1.4142,-1.4142]\\ [-0.7071,-0.7071,-0.7071,-0.7071,-0.7071]\\ [0.0000,0.0000,0.0000,0.0000,0.0000]\\ [0.7071,0.7071,0.7071,0.7071,0.7071]\\ [1.4142,1.4142,1.4142,1.4142,1.4142] [−1.4142,−1.4142,−1.4142,−1.4142,−1.4142][−0.7071,−0.7071,−0.7071,−0.7071,−0.7071][0.0000,0.0000,0.0000,0.0000,0.0000][0.7071,0.7071,0.7071,0.7071,0.7071][1.4142,1.4142,1.4142,1.4142,1.4142]
由此可见,使用BatchNorm1d会使特征与特征之间的可比性消失,即列与列变得不可比了。但是,特征值的可比性得到保留。 - BatchNorm2d()
为什么要用BatchNorm?
更多推荐



所有评论(0)