深度学习中的一些定义
将输出误差反向传播给网络参数,以此来拟合样本的输出。本质上是最优化的一个过程,逐步趋向于最优解。但是每一次更新参数利用多少误差,就需要通过一个参数来控制,这个参数就是学习率(Learning rate),也称为步长。
<UNK>
: 低频词或未在词表中的词<PAD>
: 补全字符
什么是深度学习里的Embedding?
这个概念在深度学习领域最原初的切入点是所谓的Manifold Hypothesis(流形假设)。流形假设是指“自然的原始数据是低维的流形嵌入于(embedded in)
原始数据所在的高维空间”。那么,深度学习的任务就是把高维原始数据(图像,句子)映射到低维流形,使得高维的原始数据被映射到低维流形之后变得可分,而这个映射就叫嵌入(Embedding)
。比如Word Embedding
,就是把单词组成的句子映射到一个表征向量。
什么是Dropout?
Dropout
可以比较有效的缓解过拟合的发生,在一定程度上达到正则化的效果。Dropout
可以作为训练深度神经网络的一种trick
供选择。在每个训练批次中,通过忽略一半的特征检测器(让一半的隐层节点值为0),可以明显地减少过拟合现象。这种方式可以减少特征检测器(隐层节点)间的相互作用,检测器相互作用是指某些检测器依赖其他检测器才能发挥作用。Dropout
说的简单一点就是:我们在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征。代码层面实现让某个神经元以概率p停止工作,其实就是让它的激活函数值以概率p变为0。比如我们某一层网络神经元的个数为1000个,其激活函数输出值为y1、y2、y3、......、y1000,我们dropout比率选择0.4,那么这一层神经元经过dropout后,1000个神经元中会有大约400个的值被置为0。
torch.reshape()
变换张量tensor的形状。
示例:
>>> c=torch.randn((2,5)) >>> print(c) tensor([[ 1.0559, -0.3533, 0.5194, 0.9526, -0.2483], [-0.1293, 0.4809, -0.5268, -0.3673, 0.0666]]) >>> d=torch.reshape(c,(5,2)) >>> print(d) tensor([[ 1.0559, -0.3533], [ 0.5194, 0.9526], [-0.2483, -0.1293], [ 0.4809, -0.5268], [-0.3673, 0.0666]])
NLP常用标识符
UNK
:低频词或未在词表中的词PAD
:补全字符GO/SOS
:句子起始标识符EOS
:句子结束标识符SEP
:两个句子之间的分隔符MASK
:填充被掩盖掉的字符