百面机器学习-2

特征工程

  文本表示模型

  question:有哪些文本表示模型?它们各有什么优缺点?

  answer:词袋模型和N-gram模型、主题模型、词嵌入与深度学习模型

  最基础的文本表示模型是词袋模型。就是将每篇文章看成一袋子 词,并忽略每个词出现的顺序。具体地说,就是将整段文本以词为单位切分开, 然后每篇文章可以表示成一个长向量,向量中的每一维代表一个单词,而该维对 应的权重则反映了这个词在原文章中的重要程度。常用TF-IDF来计算权重,公式 为TF-IDF(t,d)=TF(t,d)×IDF(t) 。

其中TF(t,d)为单词t在文档d中出现的频率,IDF(t)是逆文档频率,用来衡量单词t对 表达语义所起的重要性,表示为

意思就是:如果一个单词在非常多的文章里面都出现,那么它可能是一个比 较通用的词汇,对于区分某篇文章特殊语义的贡献较小,因此对权重做一定惩 罚。将文章进行单词级别的划分有时候并不是一种好的做法,比如英文中的natural language processing(自然语言处理)一词,如果将natural,language,processing这 3个词拆分开来,所表达的含义与三个词连续出现时大相径庭。通常,可以将连续 出现的n个词(n≤N)组成的词组(N-gram)也作为一个单独的特征放到向量表示 中去,构成N-gram模型。另外,同一个词可能有多种词性变化,却具有相似的含 义。在实际应用中,一般会对单词进行词干抽取(Word Stemming)处理,即将不 同词性的单词统一成为同一词干的形式。

  主题模型用于从文本库中发现有代表性的主题(得到每个主题上面词的分布 特性),并且能够计算出每篇文章的主题分布。

  词嵌入是一类将词向量化的模型的统称,核心思想是将每个词都映射成低维 空间(通常K=50~300维)上的一个稠密向量(Dense Vector)。K维空间的每一 维也可以看作一个隐含的主题,只不过不像主题模型中的主题那样直观。
  由于词嵌入将每个词映射成一个K维的向量,如果一篇文档有N个词,就可以 用一个N×K维的矩阵来表示这篇文档,但是这样的表示过于底层。在实际应用 中,如果仅仅把这个矩阵作为原文本的表示特征输入到机器学习模型中,通常很 难得到令人满意的结果。因此,还需要在此基础之上加工出更高层的特征。在传 统的浅层机器学习模型中,一个好的特征工程往往可以带来算法效果的显著提 升。而深度学习模型正好为我们提供了一种自动地进行特征工程的方式,模型中 的每个隐层都可以认为对应着不同抽象层次的特征。从这个角度来讲,深度学习 模型能够打败浅层模型也就顺理成章了。卷积神经网络和循环神经网络的结构在 文本表示中取得了很好的效果,主要是由于它们能够更好地对文本进行建模,抽 取出一些高层的语义特征。与全连接的网络结构相比,卷积神经网络和循环神经 网络一方面很好地抓住了文本的特性,另一方面又减少了网络中待学习的参数, 提高了训练速度,并且降低了过拟合的风险。

  Word2Vec

  谷歌2013年提出的一种最常用的浅层的神经网络模型,包含CBOW(Continues Bag of Words)和Skip-gram。

  question:Word2Vec是怎么工作的?和隐狄利克雷模型(LDA)有什么区别和联系?

  answer:LDA是利用文档中单词的共现关 系来对单词按主题聚类,也可以理解为对“文档-单词”矩阵进行分解,得到“文档主题”和“主题-单词”两个概率分布。而Word2Vec其实是对“上下文-单词”矩阵进行 学习,其中上下文由周围的几个单词组成,由此得到的词向量表示更多地融入了 上下文共现的特征。也就是说,如果两个单词所对应的Word2Vec向量相似度较 高,那么它们很可能经常在同样的上下文中出现。

  补充:上述分析的是 LDA与Word2Vec的不同,不应该作为主题模型和词嵌入两类方法的主要差异。主 题模型通过一定的结构调整可以基于“上下文-单词”矩阵进行主题推理。同样地, 词嵌入方法也可以根据“文档-单词”矩阵学习出词的隐含向量表示。主题模型和词 嵌入两类方法最大的不同其实在于模型本身,主题模型是一种基于概率图模型的生成式模型,其似然函数可以写成若干条件概率连乘的形式,其中包括需要推测 的隐含变量(即主题);而词嵌入模型一般表达为神经网络的形式,似然函数定义在网络的输出之上,需要通过学习网络的权重以得到单词的稠密向量表示。

 

  知识点:CBOW的目标是根据上下文出现的词语来预测当前词的生成概率,如图 1.3(a)所示;而Skip-gram是根据当前词来预测上下文中各词的生成概率,如图 1.3(b)所示。

其中w(t)是当前所关注的词,w(t−2)、w(t−1)、w(t+1)、w(t+2)是上下文中出现 的词。这里前后滑动窗口大小均设为2。

  CBOW和Skip-gram都可以表示成由输入层(Input)、映射层(Projection)和 输出层(Output)组成的神经网络。 

  图像数据不足时的处理方法

  question:在图像分类任务中,训练数据不足会带来什么问题?如何缓解数据量不足带来的问题?

  answer:训练数据不足带来的问题主要表现在过拟合方面, 即模型在训练样本上的效果可能不错,但在测试集上的泛化效果不佳。对应的处理方法大致也可以分两类,一是基于模型的方法,主要是采用降 低过拟合风险的措施,包括简化模型(如将非线性模型简化为线性模型)、添加 约束项以缩小假设空间(如L1/L2正则项)、集成学习、Dropout超参数等;二是基 于数据的方法,主要通过数据扩充(Data Augmentation),即根据一些先验知 识,在保持特定信息的前提下,对原始数据进行适当变换以达到扩充数据集的效果。具体到图像分类任务中,在保持图像类别不变的前提下,可以对训练集中的 每幅图像进行以下变换。

(1)一定程度内的随机旋转、平移、缩放、裁剪、填充、左右翻转等,这些 变换对应着同一个目标在不同角度的观察结果。
(2)对图像中的像素添加噪声扰动,比如椒盐噪声、高斯白噪声等。

(3)颜色变换。例如,在图像的RGB颜色空间上进行主成分分析,得到3个 主成分的特征向量p1,p2,p3及其对应的特征值 λ1,λ2,λ3,然后在每个像素的RGB值上 添加增量[p1,p2,p3]•[α1λ1,α2λ2,α3λ3]T,其中 α1,α2,α3是均值为0、方差较小的高斯分布随 机数。
(4)改变图像的亮度、清晰度、对比度、锐度等。

 

  除了直接在图像空间进行变换,还可以先对图像进行特征提取,然后在图像 的特征空间内进行变换,利用一些通用的数据扩充或上采样技术,例如 SMOTE(Synthetic Minority Over-sampling Technique)算法。抛开上述这些启发式 的变换方法,使用生成模型也可以合成一些新样本,例如当今非常流行的生成式 对抗网络模型。
此外,借助已有的其他模型或数据来进行迁移学习在深度学习中也十分常 见。例如,对于大部分图像分类任务,并不需要从头开始训练模型,而是借用一 个在大规模数据集上预训练好的通用模型,并在针对目标任务的小数据集上进行 微调(fine-tune),这种微调操作就可以看成是一种简单的迁移学习。

 

posted @ 2020-03-31 21:58  看星星的小宇  阅读(301)  评论(0)    收藏  举报