李宏毅-2021春-机器学习/深度学习学习笔记-Deep Learning【4】

四、Loss Function: Classification

1、把你的类别,用One-hot Vector表示

  向量数组中,不同下标的每个元素,都表示一种不同的类别:
C l a s s 1 C l a s s 2 C l a s s s 3 y 1 ^ = [ 1 0 0 ] y 2 ^ = [ 0 1 0 ] y 3 ^ = [ 0 0 1 ] \qquad Class1 \quad\qquad Class2 \quad\qquad Classs3\\ \hat{y_1}={\begin{bmatrix} 1\\0\\0 \end{bmatrix}} \qquad \hat{y_2}={\begin{bmatrix} 0\\1\\0 \end{bmatrix}} \qquad \hat{y_3}={\begin{bmatrix} 0\\0\\1 \end{bmatrix}} Class1Class2Classs3y1^=100y2^=010y3^=001

2、目标计算

  分类目标函数计算框架:
s o f t m a x [ b ′ + W ′ σ ( b + W x ) ] = y ′ ← ⋯ → y ^ softmax[b^\prime+W^\prime\sigma(b+Wx)]=\pmb{y}^\prime\gets\cdots\to \hat{\pmb{y}} softmax[b+Wσ(b+Wx)]=yyyyyy^
其中, y \pmb{y} yyy表示一组向量,Softmax函数如下:
y i ′ = e x p ( y i ) ∑ j e x p ( y i ) y^\prime_i=\frac{exp(y_i)}{\begin{matrix} \sum_jexp(y_i) \end{matrix}} yi=jexp(yi)exp(yi)
这是当目标类别大于两个的时候,当分类只有两个的时候,我们不使用softmax,而是直接套用sigmoid函数;

3、分类的损失

  最小化交叉熵损失: e = − ∑ i y ^ i l n y i ′ e=-{\begin{matrix} \sum_i\hat{y}_ilny^\prime_i \end{matrix}} e=iy^ilnyi极其常用,以及部分变形),注意,如果你在网络中使用了损失函数Cross-entropy,则在构建网络的时候不需要进行Softmax函数的添加,因为已经集成在其中了;

五、Quick Introduction of Batch Normalization

1、目标:

  让训练数据的每个属性拥有一个相同的数据范围,好处是在梯度下降时每个参数更新的程度都近似统一:

D a t a 1 : [ 1 , 2 , 3 , 4 , . . . , 100 ] 、 D a t a 2 : [ 100 , 200 , 300 , 400 , . . . 1000 ] → [ 0.01 ∼ 1 ] Data1:[1,2,3,4,...,100]、Data2:[100,200,300,400,...1000]\to[0.01\sim1] Data1:[1,2,3,4,...,100]Data2:[100,200,300,400,...1000][0.011]

2、Feature Normalization

  假如我们的数据集中有如下向量数据(上标表示某一个,下标表示某一个特征属性):
x 1 x 2 x 3 x n [ x 1 1 x 2 1 x 3 1 ⋮ x m 1 ] [ x 1 2 x 2 2 x 3 2 ⋮ x m 2 ] [ x 1 3 x 2 3 x 3 3 ⋮ x m 3 ] … [ x 1 n x 2 n x 3 n ⋮ x m n ] \pmb{x^1}\quad\qquad\pmb{x^2}\quad\qquad\pmb{x^3}\qquad\qquad\quad\pmb{x^n} \\ \begin{bmatrix} x^1_1\\x^1_2\\x^1_3\\\vdots\\x^1_m\end{bmatrix}\quad \begin{bmatrix} x^2_1\\x^2_2\\x^2_3\\\vdots\\x^2_m\end{bmatrix}\quad \begin{bmatrix} x^3_1\\x^3_2\\x^3_3\\\vdots\\x^3_m\end{bmatrix}\quad \dots\quad \begin{bmatrix} x^n_1\\x^n_2\\x^n_3\\\vdots\\x^n_m\end{bmatrix} x1x1x1x2x2x2x3x3x3xnxnxnx11x21x31xm1x12x22x32xm2x13x23x33xm3x1nx2nx3nxmn
(1)Trianing: x ~ i j = x i j − m i σ i \tilde{x}^j_i=\frac{x^j_i-m_i}{\sigma_i} x~ij=σixijmi,其中, m i m_i mi是第i个维度下的Batch里所有数据的平均值, σ i \sigma_i σi是标准差,可以在每一层的输出或者激活函数之后的输出后加批归一化。

  此外,有时会在批处理化之后接乘一些向量以免数据分布反而太过集中: x ~ i j = γ ⨀ x ~ j + β \tilde{x}^j_i=\gamma\bigodot\tilde{x}^j+\beta x~ij=γx~j+β(很少用,基本没在代码里见过,可能也是集成在了某些函数里我不知道吧…)

(2)Testing:应为我们在测试的时候有时候可能会没有一个Batch大小的数据供我们使用,在pytroch中,其解决方法是这样的,因为我们在训练的时候会计算出很多的均值 μ 1 , μ 2 . . . μ t \mu^1,\mu^2...\mu^t μ1,μ2...μt以及方差 σ 1 , σ 2 , . . . σ t \sigma^1,\sigma^2,...\sigma^t σ1,σ2,...σt,所以在每次得到一个新的均值与方差的时候,pytorch会计算一个总体样式的均值,计算方法如下:
μ ˉ ← p μ ˉ + ( 1 − p ) μ t σ ˉ ← p σ ˉ + ( 1 − p ) σ t \bar{\mu}\gets p\bar{\mu}+(1-p)\mu^t \qquad \bar{\sigma}\gets p\bar{\sigma}+(1-p)\sigma^t μˉpμˉ+(1p)μtσˉpσˉ+(1p)σt
其中, μ t 、 σ t \mu^t、\sigma^t μtσt都是表示最新的那个值,p为一个参数,默认设置为0.1,最后在训练完的时候会将 μ ˉ 、 σ ˉ \bar{\mu}、\bar{\sigma} μˉσˉ带入到测试中去;

(3)如果想要将批处理话用在卷积神经网络(CNN)上,请参考Sergey loffe与Christian Szegedy的论文[1]

3、其他的Normalization的方法(截止到2021/6/12日前的引用数量)

(1)Batch Renormalization[2],引用:300+;

(2)Layer Renormalization[3],引用:3000+;

(3)Instance Renormalization[4],引用:1500+;

(4)Group Renormalization[5],引用:1200+;

(5)Weight Renormalization[6],引用:1100+;

(6)Spectrum Renormalization[7],引用:100+;

[1] Ioffe S, Szegedy C. Batch normalization: Accelerating deep network training by reducing internal covariate shift[C]// Proceedings of the International conference on machine learning. PMLR, 2015: 448-456.

[2] Ioffe S. Batch renormalization: Towards reducing minibatch dependence in batch-normalized models[J]. arXiv preprint arXiv:1702.03275, 2017.

[3] Ba J L, Kiros J R, Hinton G E. Layer normalization[J]. arXiv preprint arXiv:1607.06450, 2016.

[4] Ulyanov D, Vedaldi A, Lempitsky V. Instance normalization: The missing ingredient for fast stylization[J]. arXiv preprint arXiv:1607.08022, 2016.

[5] Wu Y, He K. Group normalization[C]//Proceedings of the European conference on computer vision . 2018: 3-19.

[6] Salimans T, Kingma D P. Weight normalization: A simple reparameterization to accelerate training of deep neural networks[J]. arXiv preprint arXiv:1602.07868, 2016.

[7] Yoshida Y, Miyato T. Spectral norm regularization for improving the generalizability of deep learning[J]. arXiv preprint arXiv:1705.10941, 2017.

你可能感兴趣的:(李宏毅深度学习机器学习笔记,机器学习,深度学习,人工智能,optimization)