第一部分:深度学习。
1、神经网络基础问题。
1)backpropagation
后向传播是在求解损失函数l对参数w求导时候用到的方法,目的是通过链式法则对参数进行一层一层的求导。这里重点强调:要将参数进行随机初始化而不是全部置0,否则所有隐层的数值都会与输入相关,这称为对称失效。
大致过程是:
首先前向传导计算出所有节点的激活值和输出值, 计算整体损失函数:
然后针对第l层的每个节点计算出残差(本质就是整体损失函数对每一层激活值z的导数),所以要对w求导只要再乘上激活函数对w的导数即可。
2)梯度消失、梯度**。
梯度消失:这本质上是由于激活函数的选择导致的, 最简单的sigmoid函数为例,在函数的两端梯度求导结果非常小(饱和区),导致后向传播过程中由于多次用到激活函数的导数值使得整体的乘积梯度结果变得越来越小,也就出现了梯度消失的现象。
梯度**:同理,出现在激活函数处在激活区,而且权重w过大的情况下。但是梯度**不如梯度消失出现的机会多。
3)常用的激活函数。
4)参数更新方法。
5)解决overfitting的方法。
dropout, regularization, batch normalizatin,但是要注意dropout只在训练的时候用,让一部分神经元随机失活。
batch normalization是为了让输出都是单位高斯激活,方法是在连接和激活函数之间加入batchnorm层,计算每个特征的均值和方差进行规则化。
2、cnn问题。
1) 思想。
改变全连接为局部连接,这是由于**的特殊性造成的(图像的一部分的统计特性与其他部分是一样的),通过局部连接和参数共享大范围的减少参数值。可以通过使用多个filter来提取**的不同特征(多卷积核)。
2)filter尺寸的选择。
通常尺寸多为奇数(1,3,5,7)
3)输出尺寸计算公式。
输出尺寸=(n - f +padding*2)/stride + 1
步长可以自由选择通过补零的方式来实现连接。
4)pooling池化的作用。
虽然通过卷积的方式可以大范围的减少输出尺寸(特征数),但是依然很难计算而且很容易过拟合,所以依然利用**的静态特性通过池化的方式进一步减少尺寸。
5)常用的几个模型,这个最好能记住模型大致的尺寸参数。
2、rnn1、rnn原理:
在普通的全连接网络或cnn中,每层神经元的信号只能向上一层传播,样本的处理在各个时刻独立,因此又被成为前向神经网络(feed-forward+neural+networks)。而在rnn中,神经元的输出可以在下一个时间戳直接作用到自身,即第i层神经元在m时刻的输入,除了(i-1)层神经元在该时刻的输出外,还包括其自身在(m-1)时刻的输出。所以叫循环神经网络。
2、rnn、lstm、gru区别。
rnn引入了循环的概念,但是在实际过程中却出现了初始信息随时间消失的问题,即长期依赖(long-term dependencies)问题,所以引入了lstm。
lstm:因为lstm有进有出且当前的cell informaton是通过input gate控制之后叠加的,rnn是叠乘,因此lstm可以防止梯度消失或者**。推导forget gate,input gate,cell state, hidden information等因为lstm有进有出且当前的cell informaton是通过input gate控制之后叠加的,rnn是叠乘,因此lstm可以防止梯度消失或者**的变化是关键,下图非常明确适合记忆:
gru是lstm的变体,将忘记门和输入们合成了一个单一的更新门。
3、lstm防止梯度弥散和**。
lstm用加和的方式取代了乘积,使得很难出现梯度弥散。但是相应的更大的几率会出现梯度**,但是可以通过给梯度加门限解决这一问题。
4、引出word2vec
这个也就是word embedding,是一种高效的从原始语料中学习字词空间向量的**模型。分为cbow(continous bag of words)和skip-gram两种形式。其中cbow是从原始语句推测目标词汇,而skip-gram相反。
cbow可以用于小语料库,skip-gram用于大语料库。具体的就不是很会了。
3、gan1、gan的思想。
gan结合了生成模型和判别模型,相当于矛与盾的撞击。生成模型负责生成最好的数据骗过判别模型,而判别模型负责识别出哪些是真的哪些是生成模型生成的。但是这些只是在了解了gan之后才体会到的,但是为什么这样会有效呢?
假设我们有分布pdata(x),我们希望能建立一个生成模型来模拟真实的数据分布,假设生成模型为pg(x;θ)我们的目的是求解θ的值,通常我们都是用最大似然估计。但是现在的问题是由于我们相用nn来模拟pdata(x),但是我们很难求解似然函数,因为我们没办法写出生成模型的具体表达形式,于是才有了gan,也就是用判别模型来代替求解最大似然的过程。
在最理想的状态下,g可以生成足以“以假乱真”的**g(z)。对于d来说,它难以判定g生成的**究竟是不是真实的,因此d(g(z)) 0.5。
这样我们的目的就达成了:我们得到了一个生成式的模型g,它可以用来生成**。
2、gan的表达式。
通过分析gan的表达可以看出本质上就是一个minmax问题。其中v(d, g)可以看成是生成模型和判别模型的差异,而minmaxd说的是最大的差异越小越好。这种度量差异的方式实际上叫做jensen-shannon divergence。
3、gan的实际计算方法。
因为我们不可能有pdata(x)的分布,所以我们实际中都是用采样的方式来计算差异(也就是积分变求和)。具体实现过程如下:
有几个关键点:判别方程训练k次,而生成模型只需要每次迭代训练一次,先最大化(梯度上升)再最小化(梯度下降)。
但是实际计算时v的后面一项在d(x)很小的情况下由于log函数的原因会导致更新很慢,所以实际中通常将后一项的log(1-d(x))变为-logd(x)。
实际计算的时候还发现不论生成器设计的多好,判别器总是能判断出真假,也就是loss几乎都是0,这可能是因为抽样造成的,生成数据与真实数据的交集过小,无论生成模型多好,判别模型也能分辨出来。解决方法有两个:1、用wgan 2、引入随时间减少的噪声。
4、对gan有一些改进有引入f-divergence,取代jensen-shannon divergence,还有很多,这里主要介绍wgan
5、wgan上面说过了用f-divergence来衡量两个分布的差异,而wgan的思路是使用earth mover distance (挖掘机距离 wasserstein distance)。
第二部分、机器学习准备。
1、决策树树相关问题。
1)各种熵的计算。
熵、联合熵、条件熵、交叉熵、kl散度(相对熵)
熵用于衡量不确定性,所以均分的时候熵最大。
kl散度用于度量两个分布的不相似性,kl(p||q)等于交叉熵h(p,q)-熵h(p)。交叉熵可以看成是用q编码p所需的bit数,减去p本身需要的bit数,kl散度相当于用q编码p需要的额外bits。
交互信息mutual information :i(x,y) =h(x)-h(x|y) =h(y)-h(y|x) 表示观察到x后,y的熵会减少多少。
2)常用的树搭建方法:id3、c4.5、cart
上述几种树分别利用信息增益、信息增益率、gini指数作为数据分割标准。
其中信息增益衡量按照某个特征分割前后熵的减少程度,其实就是上面说的交互信息。
用上述信息增益会出现优先选择具有较多属性的特征,毕竟分的越细的属性确定性越高。所以提出了信息增益率的概念,让含有较多属性的特征的作用降低。
cart树在分类过程中使用的基尼指数gini,只能用于切分二叉树,而且和id3、c4.5树不同,cart树不会在每一个步骤删除所用特征。
3)防止过拟合:剪枝。
剪枝分为前剪枝和后剪枝,前剪枝本质就是早停止,后剪枝通常是通过衡量剪枝后损失函数变化来决定是否剪枝。后剪枝有:错误率降低剪枝、悲观剪枝、代价复杂度剪枝。
4)前剪枝的几种停止条件。
节点中样本为同一类。
特征不足。
如果某个分支没有值则返回父节点中的多类。
样本个数小于阈值。
2、逻辑回归相关问题。
计算机视觉复习
一 名词解释。视知觉 直方图均衡化 拉普拉斯算子 统计模式识别 人工智能 无监督学习 视感觉 直方图规定化 马尔算子 人工神经网络 有监督学习。模糊聚类 参考 1.视知觉主要论述人们从客观世界接收到视觉刺激后如何反应以及反应所采用的方式,视知觉是在神经中枢进行的一组活动,它把视野中一些分散的刺激加以...
计算机视觉 作业
视觉是各个应用领域,如制造业 检验 文档分析 医疗诊断,和军事等领域中各种智能 自主系统中不可分割的一部分。由于它的重要性,一些先进国家,例如美国把对计算机视觉的研究列为对经济和科学有广泛影响的科学和工程中的重大基本问题,即所谓的重大挑战 grand challenge 计算机视觉的挑战是要为计算机...
计算机视觉作业
1 什么是游程长度编码?答 图象分割 把图像划分成区域,使得每一个区域对应一个候选的目标,这种划分称为图象分割 1.图像分割最简形式 把灰度图 gray image 转换成二值图 简单阈值化方法,自动阈值化方法 模态方法 mode 迭代式阈值选择法,自适应阈值化方法,变量阈值化方法,双阈值方法。3 ...