记录一些深度学习基础知识

batch normalization与layer normalization

索引:NLP中 batch normalization与 layer normalization

BN、LN可以看作横向和纵向的区别。
经过归一化再输入激活函数,得到的值大部分会落入非线性函数的线性区,导数远离导数饱和区,避免了梯度消失,这样来加速训练收敛过程。
BatchNorm这类归一化技术,目的就是让每一层的分布稳定下来,让后面的层可以在前面层的基础上安心学习知识。
BatchNorm就是通过对batch size这个维度归一化来让分布稳定下来。LayerNorm则是通过对Hidden size这个维度归一。

https://i.loli.net/2020/07/11/MJnY847uNvWSaTk.png#shadow
记录一些深度学习基础知识_第1张图片
在nlp中,LN则是针对一句话进行缩放的,且LN一般用在第三维度,如[batchsize, seq_len, dims]中的dims,一般为词向量的维度,或者是RNN的输出维度等等,这一维度各个特征的量纲应该相同。因此也不会遇到上面因为特征的量纲不同而导致的缩放问题。

记录各种损失函数

CrossEntropyLoss()

参考文章:https://zhuanlan.zhihu.com/p/98785902

Pytorch中CrossEntropyLoss()函数的主要是将softmax-log-NLLLoss合并到一块得到的结果。

  1. Softmax后的数值都在0~1之间,所以ln之后值域是负无穷到0。
  2. 然后将Softmax之后的结果取log,将乘法改成加法减少计算量,同时保障函数的单调性 。
  3. NLLLoss的结果就是把上面的输出与Label对应的那个值拿出来

因此,label(target)可以只有一维的label指,预测的y可以是label长度的包含隐层维度的tensor,如下:

y_pred:
 tensor([[ 2.8883,  0.1760,  1.0774],
        [ 1.1216, -0.0562,  0.0660],
        [-1.3939, -0.0967,  0.5853]])
y_target
 tensor([1, 2, 0])

你可能感兴趣的:(NLP,深度学习,深度学习,nlp)