注意力机制(Attention Mechanism):
注意力机制受到人类视觉注意力机制的启发,即关注图像特定部分的能力。即当神经网络发现输入数据的关键信息后,通过学习,在后继的预测阶段对其予以重点关注。
Attention Mechanism可以帮助模型对输入的X每个部分赋予不同的权重,抽取出更加关键及重要的信息,使模型做出更加准确的判断,同时不会对模型的计算和存储带来更大的开销,这也是Attention Mechanism应用如此广泛的原因。
对nlp领域,Attention Mechanism的目的是要把一个句子中,对句子的含义最重要,贡献最大的词语找出来。
反向传播
一种有效计算神经网络中梯度的算法,更一般地说,是一种前馈计算图。可以把它归结为从网络输出开始应用差异化的链规则并向后传播梯度。
降维
作用是减少数据量和成本,维度越大需要的数据量越多,成本就越高。
Dropout
是神经网络的正则化技术,可防止过度拟合。它通过在每次训练迭代中将它们的一部分随机设置为0来防止神经元过度适应。可以以各种方式解释丢失,例如从指数数量的不同网络中随机采样。
感受野(Receptive Field):
卷积神经网络每一层输出的特征图(feature map)上的像素点在输入图片上映射的区域大小。再通俗点的解释是,特征图上的一个点对应输入图上的区域。
LSTM
一种时间循环神经网络,是为了解决一般的RNN存在的长期依赖问题而专门设计出来的。
激活函数:
为了向网络中加入非线性因素,加强网络的表示能力,解决线性模型无法解决的问题。常见的有阶跃函数、sigmoid函数、ReLU函数。输出层所用的激活函数:一般回归问题使用恒等函数,二元分类问题使用sigmoid函数(包括双曲正切函数等等),多元分类问题可以使用softmax函数。
Adagrad:
一种自适应学习速率算法,它可以跟随时间变化,并自动调整每个参数的学习速率。它可以代替vanilla SGD使用,并且对稀疏数据特别有用,它可以为不经常更新的参数分配更高的学习率。
Affine layer(仿射层):
一种神经网络中的完全连接层。仿射意味着前一层中的每个神经元都连接到当前层中的每个神经元。在许多情况下,这是神经网络的“标准”层。在进行最终预测之前,通常会在卷积神经网络或递归神经网络的输出之上添加仿射层。仿射层通常形式的y=f(Wx+b),其中x是该层的输入,W参数,b偏置向量,f是非线性激活函数。
Adadelta:
一种基于梯度下降的学习算法,可以随时间调整每个参数的学习速率。它被认为是对Adagrad的改进,因为Adagrad对超参数很敏感,并且可能过于快速的降低学习速度。Adadelta类似于rmsprop,可以用来代替朴素SGD。
Adam:
一种类似于rmsprop的自适应学习速率算法,但是使用梯度的第一和第二时刻的运行平均值直接估计更新,并且还包括偏差校正项。
patch:
在CNN学习训练过程中,不是一次来处理一整张图片,而是先将图片划分为多个小的块,卷积核每次只查看图像的一个小块,这一小块就称为patch,然后通过卷积核移动到图像的另一个patch。
损失函数:
为了让神经网络能自动的学习,一般使用梯度下降法寻找损失函数最小的值,从而寻找到最优参数(权重和偏置)。
BatchNorm()函数:
一般在cnn的卷积层之后添加,主要是对数据进行归一化处理,这使得数据在进行Relu之前不会因为数据过大而导致网络性能的不稳定。
输出层的softmax函数:
将全连接层的输出结果正规化(将输出值的和调整为1)后再输出。
mini-batch学习:
由于训练数据太多,在所有数据中选一批一批进行学习。
深度学习
深度学习过程也叫端到端的训练过程。
end-to-end(端到端)的方法,一端输入我的原始数据,一端输出我想得到的结果。只关心输入和输出,中间的步骤全部都不管。
归一化(normalization):
对于一维数据有(Xi-Xmin)/(Xmax-Xmin),使数据在相同尺寸,缩放仅仅跟最大、最小值的差别有关。输出范围在0-1之间.数据归一化会使得最优解的寻优过程会变得平缓,更容易正确的收敛到最优解。
标准化(standardization):
对于一维数据有(Xi-u)/σ,缩放和每个点都有关系,通过方差体现出来。与归一化对比,标准化中所有数据点都有贡献。输出范围是负无穷到正无穷。
归一化和标准化:
两者本质上都是一种线性变换。如果对输出结果范围有要求,用归一化。如果数据较为稳定(图像或是视频的数据值处于固定区间),不存在极端的最大最小值,用归一化。如果数据存在异常值和较多噪音,用标准化,可以间接通过中心化避免异常值和极端值的影响。
Batch_size:
每次喂给模型的样本数量。
Epoch_size
是训练所有样本总的次数。Epoch:当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一次epoch。训练时使用多个Epoch可以理解为背诵了词典多少次。背多了,就记牢了。背得次数太多就过拟合了。
Batch Norm
以进行学习时的mini-batch为单位按mini-batch进行正规化。
张量(Tensor):
是PyTorch里面基础的运算单位,与Numpy的ndarray相同都表示的是一个多维的矩阵。 与ndarray的最大区别就是,PyTorch的Tensor可以在 GPU 上运行,而 numpy 的 ndarray 只能在CPU上运行,在GPU上运行大大加快了运算速度。
嵌入
将输入(例如单词或句子)映射到向量中。有一种流行的嵌入类型是word嵌入,例如word2vec或GloVe。它们可以嵌入句子,段落或图像。
网络退化问题:
在神经网络可以收敛的前提下,随着网络深度增加,网络的表现先是逐渐增加至饱和,然后迅速下降。
残差网络:
进行跳层连接,残差单元可以以跳层连接的形式实现,很好地解决了深度神经网络的退化问题。
Seq2Seq模型(序列到序列的模型)
属于Encoder-Decoder模型的一种,是输出的长度不确定时采用的模型,RNN一个重要的变种:N vs M,原始的N vs N要求序列等长,然而我们遇到的大部分问题序列都是不等长的。
感知机
是二分类的线性分类模型。
多层感知机
是一种人工神经网络,设定权重的工作需要由人工来进行,又叫全连接前馈神经网络。
神经网络
为了解决多层感知机需要人工设定权重的问题出现的,能够自动地从数据中学习到合适的权重(一般采用梯度下降法来进行反向传播设置权重),这是和多层感知机最大的区别。
卷积神经网络
是含有卷积层池化层全连接层的神经网络。
GAN模型系列
生成对抗模型(GAN)
2014年提出的一种深度学习模型。
卷积神经网络模型系列
LeNet:
CNN元祖,1998年首次提出,进行手写数字识别的网络。
Alexnet:
2012年提出,引发深度学习热潮的导火线,网络结构和LeNet没有太大的不同,但是围绕它们的环境和计算机技术有了很大的进步。
NiN:
AlexNet问世不久后提出的,可以显著减小模型参数尺寸,从而缓解过拟合。然而该设计有时会造成获得有效模型的训练时间的增加。
GoogLeNet:
2014年提出,Inception采用了模块化的结构,从另一种角度来提升训练结果:能更高效地利用计算资源,在相同的计算量下能提取到更多的特征,从而提升训练结果。
VGG:
2014年提出,结构整洁,拓展性很强,迁移到其他图片数据上的泛化性非常好。
ResNet:
2015年提出,由于网络的加深会造成梯度爆炸和梯度消失的问题,为了让更深的网络也能训练出好的效果而提出ResNet。
SqueezeNet:
2017年提出,参数少,模型文件小。
DenseNet:
DenseNet模型主要由DenseBlock和Transition组成,其中:
DenseBlock是由多层模块组成,每层的特征图大小相同,层与层之间采用密集相连的。
Transition是连接两个相邻的DenseBlock,并通过pooling使得特征图大小降低,还能起到压缩模块的作用。
DenseBlock中的非线性组合函数H()采用的是:BN+Relu+3x3Conv结构。