5月24日到5月30日

1.长尾分布—在处理小样本和一些异常点的时候作用就突显出来了
link
Thin-tailed distribution (好像还没有中文翻译),比如正态分布。也就是说,在远离峰值的尾部区域,时间发生的概率更低一些。所以正态分布用来对那些主流事件发生较多,非主流事件发生较少的情况进行建模更为合适。
**重尾分布(Heavy-tailed distribution)**更适用于对那些离峰值较远的稀有事件也会有相当的概率发生的情况。重尾分布作为一个大的类别,还包含三个重要的子类别,分别是肥尾分布(Fat-tailed distribution),长尾分布(Long-tailed distribution)和次指数分布(Subexponential distribution)。
长尾分布:二八定律,数据表明右端黄色的尾巴虽然平均需求小但是由于数量巨大,导致其总的营销收益超过主流商品。如果用指数分布进行建模,这些远端的需求也许就会被忽视;而用长尾分布进行建模就可以发现这些新的需求从而带来效益的提高。在这里插入图片描述
肥尾分布:肥尾分布就是针对那些罕见事件虽然发生的概率低,但也必须要考虑到的情况。

2.one-hot (one-hot是比较常用的文本特征特征提取的方法)
one-hot编码,又称“独热编码”。其实就是用N位状态寄存器编码N个状态,每个状态都有独立的寄存器位,且这些寄存器位中只有一位有效,说白了就是只能有一个状态。
one-hot在特征提取上属于词袋模型(bag of words)。首先,将语料库中的每句话分成单词,并编号。然后,用one-hot对每句话提取特征向量。
优点
(1)解决了分类器处理离散数据困难的问题
(2)一定程度上起到了扩展特征的作用(上例中从3扩展到了9)
缺点
(1)one-hot是一个词袋模型,不考虑词与词之间的顺序问题,而在文本中,次的顺序是一个很重要的问题
(2)one-hot是基于词与词之间相互独立的情况下的,然而在多数情况中,词与词之间应该是相互影响的
(3)one-hot得到的特征是离散的,稀疏的
举例
有如下三个特征属性:
性别:[“male”,“female”]
地区:[“Europe”,“US”,“Asia”]
浏览器:[“Firefox”,“Chrome”,“Safari”,“Internet Explorer”]
对于上述的问题,性别的属性是二维的,同理,地区是三维的,浏览器则是思维的,这样,我们可以采用One-Hot编码的方式对上述的样本“[“male”,“US”,“Internet Explorer”]”编码,“male”则对应着[1,0],同理“US”对应着[0,1,0],“Internet Explorer”对应着[0,0,0,1]。则完整的特征数字化的结果为:[1,0,0,1,0,0,0,0,1]。这样导致的一个结果就是数据会变得非常的稀疏。

3.将每个文档表示为向量。矢量分量表示文档中每个单词的权重或重要性。使用余弦相似性度量计算两个文档之间的相似性
思路:1、分词;2、列出所有词;3、分词编码;4、词频向量化;5、套用余弦函数计量两个句子的相似度。
句子A:这只皮靴号码大了。那只号码合适。
句子B:这只皮靴号码不小,那只更合适。
(1)分词:
使用结巴分词对上面两个句子分词后,分别得到两个列表:
listA=[‘这‘, ‘只‘, ‘皮靴‘, ‘号码‘, ‘大‘, ‘了‘, ‘那‘, ‘只‘, ‘号码‘, ‘合适‘]
listB=[‘这‘, ‘只‘, ‘皮靴‘, ‘号码‘, ‘不小‘, ‘那‘, ‘只‘, ‘更合‘, ‘合适‘]
(2)列出所有词,将listA和listB放在一个set中,得到:
set={‘不小’, ‘了’, ‘合适’, ‘那’, ‘只’, ‘皮靴’, ‘更合’, ‘号码’, ‘这’, ‘大’}
将上述set转换为dict,key为set中的词,value为set中词出现的位置,即‘这’:1这样的形式。
dict1={‘不小’: 0, ‘了’: 1, ‘合适’: 2, ‘那’: 3, ‘只’: 4, ‘皮靴’: 5, ‘更合’: 6, ‘号码’: 7, ‘这’: 8, ‘大’: 9},可以看出“不小”这个词在set中排第1,下标为0。
(3)将listA和listB进行编码,将每个字转换其在set中的位置,转换后为:
listAcode=[8, 4, 5, 7, 9, 1, 3, 4, 7, 2]
listBcode=[8, 4, 5, 7, 0, 3, 4, 6, 2]
我们来分析listAcode,结合dict1,可以看到8对应的字是“这”,4对应的字是“只”,9对应的字是“大”,就是句子A和句子B转换为用数字来表示。
(4)对listAcode和listBcode进行oneHot编码,就是计算每个分词出现的次数。oneHot编号后得到的结果如下:
listAcodeOneHot = [0, 1, 1, 1, 2, 1, 0, 2, 1, 1]
listBcodeOneHot = [1, 0, 1, 1, 2, 1, 1, 1, 1, 0]
(5)得出两个句子的词频向量之后,就变成了计算两个向量之间夹角的余弦值,值越大相似度越高。
在这里插入图片描述
4.skip-gram模型
非常赞

5.层级softmax

6.鲁棒性也就是健壮和强壮的意思。它也是在异常和危险情况下系统生存的能力。

7.dense和sparse都是形容网络结构中的隐层的。
形容这个层是紧密连接的(dense)还是稀疏连接的(sparse)
Keras里的dense layer,就是全连接(fully connected)层。
Keras里的dropout layper,就是随机删去了一些连接,也就相当于是sparse layer。

8.NLP词的表示方法类型
(1)词的独热表示one-hot representation
这种方法把每个词表示为一个很长的向量。这个向量的维度是词表大小,其中绝大多数元素为 0,只有一个维度的值为 1,这个维度就代表了当前的词。
缺点

  • 向量的维度会随着句子的词的数量类型增大而增大
  • 任意两个词之间都是孤立的,根本无法表示出在语义层面上词语词之间的相关信息
  • 仅仅将词符号化,不包含任何语义信息。

(2)词的分布式表示distributed representation(将其表示为低维实数向量,意思相近的词将被映射到向量空间中相近的位置
分布假说:词的语义由其上下文决定( a word is characterized by thecompany it keeps)。
基于分布假说的词表示方法,核心思想是上下文的表示以及上下文与目标词之间的关系的建模。

词的分布式表示有三种类型:

  • 基于矩阵的分布表示

  • 基于聚类的分布表示

  • 基于神经网络的分布表示
    基于神经网络的分布表示一般称为词向量、词嵌入( word embedding)或分布式表示( distributed representation)。

    对one-hot的vector做一些改进:一、将vector每一个元素由整形改为浮点型,变为整个实数范围的表示;二、将原来稀疏的巨大维度压缩嵌入到一个更小维度的空间。

9.统计语言模型: 统计语言模型把语言(词的序列)看作一个随机事件,并赋予相应的概率来描述其属于某种语言集合的可能性。给定一个词汇集合 V,对于一个由 V 中的词构成的序列S = ⟨w1, · · · , wT ⟩ ∈ Vn,统计语言模型赋予这个序列一个概率P(S),来衡量S 符合自然语言的语法和语义规则的置信度。
用一句简单的话说,就语言模型就是计算一个句子的概率大小的这种模型,看一句话是不是正常人说出来的。有什么意义呢?一个句子的打分概率越高,越说明他是更合乎人说出来的自然句子。
常见的统计语言模型有N元文法模型(N-gram Model),最常见的是unigram model、bigram model、trigram model等等。

10.在你做某一项具体的NLP任务时如你要用到词向量,建议:要么(1)选择使用别人训练好的词向量,注意,得使用相同语料内容领域的词向量;要么(2)自己训练自己的词向量。
从大量未标注的普通文本数据中无监督地学习出词向量

11.下采样(subsampled)或降采样(downsampled):缩小图像
上采样(upsampling)或图像插值(interpolating):放大图像

12.对高频词抽样
原始文本为“The quick brown fox jumps over the laze dog”.
但是对于“the”这种常用高频单词,这样的处理方式会存在下面两个问题:
(1)当我们得到成对的单词训练样本时,(“fox”, “the”) 这样的训练样本并不会给我们提供关于“fox”更多的语义信息,因为“the”在每个单词的上下文中几乎都会出现。
(2)由于在文本中“the”这样的常用词出现概率很大,因此我们将会有大量的(”the“,…)这样的训练样本,而这些样本数量远远超过了我们学习“the”这个词向量所需的训练样本数。

Word2Vec通过“抽样”模式来解决这种高频词问题。它的基本思想如下:对于我们在训练原始文本中遇到的每一个单词,它们都有一定概率被我们从文本中删掉,而这个被删除的概率与单词的频率有关。
随着单词出现频率的增高,它被采样保留的概率越来越小
举例:
如果我们设置窗口大小span=10(即skip_window=5),并且从我们的文本中删除所有的“the”,那么会有下面的结果:
(1)由于我们删除了文本中所有的“the”,那么在我们的训练样本中,“the”这个词永远也不会出现在我们的上下文窗口中。(the为背景词)
(2)当“the”作为input word时,我们的训练样本数至少会减少10个。(the为中心词)

13.负采样
自然语言处理领域中,判断两个单词是不是一对上下文词(context)与目标词(target),如果是一对,则是正样本,如果不是一对,则是负样本。
负采样:采样得到一个上下文词和一个目标词,生成一个正样本(positive example)。用与正样本相同的上下文词,再在字典中随机选择一个单词,这就是负采样(negative sampling)。
举例
比如给定一句话“这是去上学的班车”,则对这句话进行正采样,得到上下文“上”和目标词“学”,则这两个字就是正样本。
负样本的采样需要选定同样的“上”,然后在训练的字典中任意取另一个字,“梦”、“目”,这一对就构成负样本。
训练需要正样本和负样本同时存在。
正样本上最大化。 越像越好
负样本上最小化。 越不像越好

它是用来提高训练速度并且改善所得到词向量的质量的一种方法。不同于原本每个训练样本更新所有的权重,负采样每次让一个训练样本仅仅更新一小部分的权重,这样就会降低梯度下降过程中的计算量。
举例
当我们用训练样本 ( input word: “fox”,output word: “quick”) 来训练我们的神经网络时,“ fox”和“quick”都是经过one-hot编码的。如果我们的vocabulary大小为10000时,在输出层,我们期望对应“quick”单词的那个神经元结点输出1,其余9999个都应该输出0。在这里,这9999个我们期望输出为0的神经元结点所对应的单词我们称为“negative” word。

当使用负采样时,我们将随机选择一小部分的negative words(比如选5个negative words)来更新对应的权重。我们也会对我们的“positive” word进行权重更新(在我们上面的例子中,这个单词指的是”quick“)。

一个单词被选作negative sample的概率跟它出现的频次有关,出现频次越高的单词越容易被选作negative words
负采样加速收敛,更关注我们需要的词向量。负采样的目的是为了最终输出的上下文单词(正样本),在采样过程中应该保留下来并更新,同时也需要采集部分负样本(非上下文单词)。
通过负采样,在更新隐层到输出层的权重时,只需更负采样的单词,而不用更新词汇表所有单词,节省计算量。

为什么要进行负采样?
负采样提高其训练速度和正确率(提高训练速度并且改善所得到词向量的质量)
(1)知识图谱只包含观察者事实(正三元组样例),未观测到的事实是被分为负例的概率很大。我们需要在没有观测到的三元组中找出和当前三元组对应的负样本,保障prediction准确性
正样本上最大化。 越像越好
负样本上最小化。 越不像越好
(2)training能更快。

14.随机梯度下降算法(Stochastic Gradient Descent):通过对样本中随机一个数据进行权重的更新,从而,减少冗余数据对整个迭代过程的影响,提高收敛效率。
不过,由于是随机取值,所以,可能会落入局部最优中去,而且更新时会出现较大的波动,更新值方差较大。
但是,通过降低学习率能够,使波动减小,呈现出与批量梯度下降相似的效果,同时,随机性能够跳出局部最优的情况,从而得到更好的收敛效果。同时,随机梯度下降在前期的的迭代中效果显著。

15.fine-grained
fine-grained classification是细粒度的图像分类。与coarse-grained classification(粗粒度)相比,粗粒度是分辨是猫还是狗——细粒度是分辨狗这个类别下,这张图是1.吉娃娃还是2.萨摩耶还是n.哈巴狗;

16.交叉验证(数据集很小时防止过拟合)
将数据集平均分成N份,选其中的N-1份作为训练集(training set),剩余的1份作为验证集(validation set)。
用以上N种情况的训练集训练得到模型的参数。

17.BOW模型(bag-of-words)
举例
文档 1:“我喜欢跳舞,小明也喜欢。”
文档 2:“我也喜欢唱歌。”

基于以上这两个文档,便可以构造一个由文档中的关键词组成的词典:
词典={1:“我”,2:“喜欢”,3:“跳舞”,4:“小明”,5:“也”,6:“唱歌”}
这个词典一共包含6个不同的词语,利用词典的索引号,上面两个文档每一个都可以用一个6维向量表示(用整数数字0~n(n为正整数)表示某个单词在文档中出现的次数。这样,根据各个文档中关键词出现的次数,便可以将上述两个文档分别表示成向量的形式
文档 1:[1, 2, 1, 1, 1, 0]
文档 2:[1, 1, 0, 0, 1, 1]

缺点
(1)没有考虑词之间的顺序
(2)每个关键词之间相互独立,失去了词的语义信息。

Bag-of-words模型在计算机视觉的应用
将文本分类问题与图像分类问题相比较,会发现这样的问题,对于文本来讲,文本是由单词组成的,因此提取关键词的过程也是顺理成章,没有任何歧义或者限制。但对于图像来讲,如何定义图像的“单词”,则是需要首先解决的问题之一。研究者们通过对 BoW 模型进行研究和探索,提出了采用k -means 聚类方法对所提取的大量特征进行无监督聚类,将具有相似性较强的特征归入到一个聚类类别里,定义每个聚类的中心即为图像的“单词”,聚类类别的数量即为整个视觉词典的大小。这样,每个图像就可以由一系列具有代表性的视觉单词来表示,如下图所示。
在这里插入图片描述
在应用BoW模型来表述图像时,图像被看作是文档,而图像中的关键特征被看作为“单词”,其应用于图像分类时主要包括三个步骤:
Step1:图像特征提取和描述
特征提取和描述的主要任务是从图像中抽取具有代表性的局部特征。要求这些特征具有较强的可区分性,能最大限度地与其他物体进行区分。此外,还要求被提取的特征具有较好的稳定性,此类特征经常存在于图像的高对比度区域,例如物体边缘与角点。

BoW模型中的一些典型图像特征的提取和描述方法
(1) 规则网格(Regular Grid)方法是特征提取的最简单且有效的方法之一,该方法将图像应用均匀网格进行划分,从而得到一些图像的局部区域特征,此方法在应用于自然场景分类时收到了良好的效果。下图给出了利用规则网格方法得到的特征提取结果。
在这里插入图片描述
采用规则网格法的优点在于:(1)可以人为地设定网格的划分级别,得到想要的特征数目;(2)在划分过程中可以对一些特征进行精确的定位;(3)可以充分利用图像的数据信息,最大限度的做到信息的完整性。
然而该方法也存在一定的缺点,例如引入了大量的冗余(背景)信息,而降低了对象本身所提供的有用信息的价值。

(2) 兴趣点检测方法;兴趣点检测子和兴趣区域检测子的实现方法都是通过数学计算,去抽取满足一定数学条件的特征点或者区域,常用的检测子有edge-laplace、harris-laplace、hessian-laplace、harris-affine、hessian-affine、MSER、salient regions实际上,针对具体任务不同以及应用的数据库不同,最佳检测子的选择也很不相同。

Step2:构建视觉词典
利用聚类算法(如:K-Means算法)对步骤1提取的特征描述子构造单词表(词典),特征描述子分为K个簇,以使簇内具有较高的相似度,而簇间相似度较低,将词义相近的词汇合并,作为单词表中的基础词汇,聚类类别的数量K即为整个视觉词典的大小基础词汇的个数。

Step3:单词表的中词汇表示图像
从每幅图像中提取很多个特征点,这些特征点都可以用单词表中的单词近似代替,通过统计单词表中每个单词在图像中出现的次数,可以将图像表示成为一个K维数值向量。

18.Naive Bayes(朴素贝叶斯)
朴素贝叶斯的关键组成是贝叶斯公式与条件独立性假设。
举例:判断在家日赚百万,惊人秘密…为垃圾短信的概率
p(垃圾短信∣"在家日赚百万") < p("在家日赚百万"∣垃圾短信)p(垃圾短信)

p("在家日赚百万"∣垃圾短信)=p(“在”,“家”,“日”,“赚”,“百”,"万"∣垃圾短信)
=p("在"∣J)p("家"∣J)p("日"∣J)p("赚"∣J)p("百"∣J)p("万"∣J),J为垃圾短信

上面每一项条件概率都可以通过在训练数据的垃圾短信中统计每个字出现的次数得到,然而这里有一个问题,朴素贝叶斯将句子处理为一个词袋模型(Bag-of-Words, BoW),以至于不考虑每个单词的顺序

19.N-Gram是基于一个假设:第n个词出现与前n-1个词相关,而与其他任何词不相关。
N-gram本身也指一个由N个单词组成的集合,各单词具有先后顺序,且不要求单词之间互不相同。
N=1时称为unigram,N=2称为bigram,N=3称为trigram,假设下一个词的出现依赖它前面的一个词,即 bigram,假设下一个词的出现依赖它前面的两个词,即 trigram,以此类推。
理论上,n 越大越好,经验上,trigram 用的最多,尽管如此,原则上,能用 bigram 解决,绝不使用 trigram。

n-gram考虑句子中单词之间的顺序。
第一个特点是某个词的出现依赖于其他若干个词。
第二个特点是我们获得的信息越多,预测越准确。

N-gram模型是一种语言模型(Language Model,LM),语言模型是一个基于概率的判别模型,它的输入是一句话(单词的顺序序列),输出是这句话的概率,即这些单词的联合概率(joint probability)。

N-gram的用途:
(1)词性标注
(2)垃圾短信分类
步骤一:给短信的每个句子断句。
步骤二:用N-gram判断每个句子是否垃圾短信中的敏感句子。
步骤三:若敏感句子个数超过一定阈值,认为整个邮件是垃圾短信。
(3)分词器
用N-gram可以实现一个简单的分词器(Tokenizer)。同样地,将分词理解为多分类问题。
(4)机器翻译和语音识别
 同一句话,可能有多种翻译方式,它们的区别仅在于单词的组合顺序,这时候使用N-gram分别计算各种情况的概率,选最大的那个即可。
在这里插入图片描述

同一种发音,可能被解析成不同的句子,然而其中有一种更符合语法规则。
在这里插入图片描述
当N变大时,更容易出现这样的状况:某些n-gram从未出现过,这就是稀疏问题
例如,在bi-gram中,若词库中有20k个词,那么两两组合就有近2亿个组合。其中的很多组合在语料库中都没有出现,根据极大似然估计得到的组合概率将会是0,从而整个句子的概率就会为0。
因此,我们要进行数据平滑(data Smoothing),数据平滑的目的有两个:一个是使所有的N-gram概率之和为1,使所有的n-gram概率都不为0。它的本质,是重新分配整个概率空间,使已经出现过的n-gram的概率降低,补充给未曾出现过的n-gram。

优点:(1) 采用极大似然估计,参数易训练;(2) 完全包含了前 n-1 个词的全部信息;(3) 可解释性强,直观易理解。
缺点:(1) 缺乏长期依赖,只能建模到前 n-1 个词;(2) 随着 n 的增大,参数空间呈指数增长;(3) 数据稀疏,难免会出现OOV的问题;(4) 单纯的基于统计频次,泛化能力差。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值