整理一些经常遇到的一些专业名词,属于个人主观理解,仅提供感性认识,详细信息请查阅专业文献!持续更新……


编辑距离

衡量两个字符串的差异程度。假设有str1和str2两个字符串,编辑距离指的是str1经过多少次变化可以得到str2。一次变化指的是对单个字符的插入、删除、替换操作。这个经常出现在算法题中,可有以下递归式解出。

image

i,j分别时str1和str2的下标,lev(i,j)表示字符串str1前i个字符(从1开始算包括i)和str2前j个字符的编辑距离。

Inductive bias

翻译叫归纳偏置,特别不好理解,其实应该可以说是先验知识。比如说有人跟你提到一种你从没见过的狗狗,但是根据以往的知识你可以想得到这狗狗应该有四条腿,一条尾巴,以及喜欢吃翔…… 你对未知事物的一个提前认知就可以称作先验知识。

Self-supervised Learning

自监督学习,顾名思义就是自己监督自己。人工标注的数据是很昂贵的,所以一个自然的想法就是能不能让从数据本身产生“标签”,之所以打个引号,是因为这个“标签”和传统的标注这张图是猫还是狗的标签不太一样。比如在自然语言处理中经常用一句话的前几个词去预测下一个词,具体来说,对于“我想吃苹果”这句话,现在知道了“我 想 吃”三个词,目标是预测下一个词“苹果”,而“苹果”这个词就是这个样本的“标签”。

Auto-encoder (AE)and Variational auto-encoder(VAE)

两者主要利用的是自监督的思想,把一个东西,比如图片,扔进编码器,得到一个向量,再把这个向量扔到解码器里面,我们希望根据这个向量的信息经过解码器能得到原来那个东西。下图是自动编码器的示意图:

AE

你可能会奇怪,费老大劲就为了得到一个和原来一样的东西(其实也不能说是一样,一般来说肯定会有损失)为了啥?有啥用?要是说得到的这张图确实没啥用,但是中间那个向量就有用了。比如说上面图片中,蒙娜丽萨的图片经过编码器得到一个向量,而这个向量经过解码器可以还原蒙娜丽萨的图片。这就意味着这个向量包含了这张图片的大部分信息,也就是说,可以用这个向量来表示这张图片,可以看成是数据的降维或者特征抽取之类的巴拉巴拉……

AE的方法只能得到一个图片的向量表示,我们也可以用这个向量来还原图像,但是我们如果想随便用一个向量来经过编码器生成一张新的“合理”的图片这是办不到的。因为能还原图像的向量是经过编码器得到的“合理”向量,而随便拿一个向量极大可能是不“合理”的。而变分自动编码器就是为了解决这样一个问题,如下图:

在自动编码器(AE)的基础上对生成的向量添加了一些约束,让生成的变量服从高斯分布(也就是正态分布)。这样我们从这个高斯分布中随机采样得到向量基本上是合理的变量,通过这种方式我们就可以“生成”图片了,而不仅仅是存储图片。

这里面数学原理还是蛮有趣的,我最近也在了解。

Pre-train and Fine-tune

Pre-train 已经训练好可以直接拿来用的模型参数,而不需要从头开始训练(train from scratch)

Fine-tune 在pre-train参数基础上根据下游任务进行调整,通常截断最后一层(softmax)

一个直观的理解是一座高山,比如五岳,上面有很多景点,是我们要去的地方。我们没法直达景点,又不想从山底下开始爬,所以我们可以坐缆车到山腰,再自己走到想去的景点。坐缆车到山腰等于就是利用了pre-train,省了不少事,各个想去的景点就是下游任务,我们根据自己的目的地从山腰调整我们的路线就是fine-tune。

pre-train在自然语言处理(NLP)中应用很广泛,比如pre-train word embedding 比如 word2vec,通常作为初始化模型的第一层,属于比较浅层的方法,用表达能力换效率。缺点是每个词对应一个固定的vector,但是很多情况下一个词是有很多含义的,即一词多义,与它所处的语境有关。pre-train language model 比如 ELMo能学习到更深层次的特征,一定情况下可以缓解这个问题。

为什么预训练模型泛化性能好?可能原因:由于训练数据足够大,可以归纳出一组假设空间,而这组假设空间包含了大部分任务(这也要求预训练任务应该是比较通用的)。fine-tune就是从中选出一个最优的假设。

Domain adaptation (DA)

为了实现在target domain中逼近在source domain中的表现效果而引入的手段,使得模型更普适。是迁移学习中一种代表性方法。

Dropout

训练网络的一个trick,让神经元以一定概率停止工作。

背景:模型参数过多,训练样本太少,容易过拟合

可能原因:

  • 取平均作用。因为dropout掉不同的神经元得到不同的网络,而最后的结果可以看作不同网络取平均,不同网络的过拟合可能会相互抵消。
  • 减少对特定特征的依赖,提高泛化性能。比如要训练一个识别树叶的网络,训练集中的叶子边缘呈锯齿状,但是不是所有的树叶都有锯齿状的边缘,通过dropout可能会破坏掉这个边缘特征。

dropout可以有效缓解过拟合,在一定程度上达到正则化的效果。

end-to-end

我查到有两种解释:

  1. 输入原始数据,输出最后结果
  2. joint learning 将多个阶段/多步堆在一起优化(因为无法保证各阶段最优合起来还是最优),即将pipline变为单个网络

这两者有一个共同点,就是把模型当成一个黑箱子,我们希望扔进出数据就能得到相应结果

non-trival

是指具有一定复杂度,需要一定脑力活动加工才能得到的(结果、结论、实现……)

Sparse matrix

稀疏矩阵,大部分元素为0的矩阵。

稀疏矩阵的存储:

  • 支持有效修改
    • **Dictionary of keys (DOK)**:用字典形式存储,key是行和列的索引,value是该位置的值,
    • **List of lists (LIL)**:每一行存储一个列表