深度学习知识点

1.边缘检测算子

因为边缘是梯度变化的位置,在数学中可以用导数表示,

de9760eb2a1e42db8642591e331979b0.png

 那么用算子就可以表示为 [1,-1] ,这样就可以表示用来f(x+1,y) - f(x,y)

7226eb62c87a4833be35f885dfb51b46.png

 6c46540cd075402589a345913db6ca73.png

 af288057fefd42fd9f19537fb1cd7d74.png

2.抑制过拟合的方法有哪些

过拟合(overfitting)是指在模型参数拟合过程中的问题,由于训练数据包含抽样误差,训练时,复杂的模型将抽样误差也考虑在内,将抽样误差也进行了很好的拟合。

具体表现就是最终模型在训练集上效果好;在测试集上效果差。模型泛化能力弱

1. 获取更多数据

2.网络结构 Architecture

这个很好理解,减少网络的层数、神经元个数等均可以限制网络的拟合能力;

3.正则化

4.结合多种模型

5.bagging

分段函数:用不同的模型拟合不同部分的训练集

6.dropout

3.轻量级的网络有啥了解(mobilenet)

其主要创新点在于深度可分离卷积,而整个网络实际上也是深度可分离模块的堆叠。

4.深度可分离卷积

对比于标准卷积,逐深度卷积将卷积核拆分成为单通道形式,在不改变输入特征图像的深度的情况下,对每一通道进行卷积操作,这样就得到了和输入特征图通道数一致的输出特征图

5.介绍下K近邻、kmeans聚类算法

K近邻算法也称为knn算法。

knn算法的核心思想是未标记样本的类别,由距离其最近的k个邻居投票来决定。

具体的,假设我们有一个已标记好的数据集。此时有一个未标记的数据样本,我们的任务是预测出这个数据样本所属的类别。knn的原理是,计算待标记样本和数据集中每个样本的距离,取距离最近的k个样本。待标记的样本所属类别就由这k个距离最近的样本投票产生。

假设X_test为待标记的样本,X_train为已标记的数据集,算法原理如下:

- 遍历X_train中的所有样本,计算每个样本与X_test的距离,并把距离保存在Distance数组中。

- 对Distance数组进行排序,取距离最近的k个点,记为X_knn。

- 在X_knn中统计每个类别的个数,即class0在X_knn中有几个样本,class1在X_knn中有几个样本等。

- 待标记样本的类别,就是在X_knn中样本个数最多的那个类别。

算法优缺点

优点:准确性高,对异常值和噪声有较高的容忍度。

缺点:计算量较大,对内存的需求也较大。

算法参数

其算法参数是k,参数选择需要根据数据来决定。

k值越大,模型的偏差越大,对噪声数据越不敏感,当k值很大时,可能造成欠拟合;

k值越小,模型的方差就会越大,当k值太小,就会造成过拟合。

kmeans聚类算法

K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。

假设要把样本集分为k个类别,算法描述如下:

(1)适当选择k个类的初始中心,最初一般为随机选取;

(2)在每次迭代中,对任意一个样本,分别求其到k个中心的欧式距离,将该样本归到距离最短的中心所在的类;

(3)利用均值方法更新该k个类的中心的值;

(4)对于所有的k个聚类中心,重复(2)(3),类的中心值的移动距离满足一定条件时,则迭代结束,完成分类。

Kmeans聚类算法原理简单,效果也依赖于k值和类中初始点的选择。

6.介绍下随机森林和SVM算法

随机森林是一种基于bagging的分类算法,它通过自助法(bootstrap)重采样技术,从原始训练样本集N中有放回地重复随机抽取n个样本生成新的训练样本集合训练决策树,然后按以上步骤生成m棵决策树组成随机森林,新数据的分类结果按分类树投票多少形成的分数而定。

随机森林大致过程如下:

1)从样本集中有放回随机采样选出n个样本;

2)从所有特征中随机选择k个特征,对选出的样本利用这些特征建立决策树(一般是CART,也可是别的或混合);

3)重复以上两步m次,即生成m棵决策树,形成随机森林;

4)对于新数据,经过每棵树决策,最后投票确认分到哪一类。

7.随机森林特点:

随机森林有很多优点:

1) 每棵树都选择部分样本及部分特征,一定程度避免过拟合;

2) 每棵树随机选择样本并随机选择特征,使得具有很好的抗噪能力,性能稳定;

3) 能处理很高维度的数据,并且不用做特征选择;

4) 适合并行计算;

5) 实现比较简单;

缺点:

1) 参数较复杂;

2) 模型训练和预测都比较慢。

SVM算法:

是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机。

将数据通过一个函数 ϕ ( x ) \phi(x)ϕ(x) 将数据映射到高维空间中,即 x → ϕ ( x ) x \rightarrow \phi(x)x→ϕ(x)
在高维空间中利用线性分类学习方式从训练数据中学习分类模型,在这一步,就可以使用线性支持向量机算法帮我们解决问题。
 

SVM可分为三种:

- 线性可分SVM

当训练数据线性可分时,通过最大化硬间隔(hard margin)可以学习得到一个线性分类器,即硬间隔SVM。

- 线性SVM

当训练数据不能线性可分但是近似线性可分时,通过最大化软间隔(soft margin)也可以学习到一个线性分类器,即软间隔SVM。

- 非线性SVM

当训练数据线性不可分时,通过使用核技巧(kernel trick)和最大化软间隔,可以学习到一个非线性SVM。

SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。

常用核函数:

  • 线性核
  • 多项式核
  • 高斯核
  • 拉普拉斯核
  • Sigmoid 核

这里我们再强调一下,在求目标函数的过程中,我们有求内积的操作,但是维数过大,在高维上求内积的计算量非常大,SVM在数学上有一个特性:在低维上内积,用内积的结果做转换,相当于把数据在高维上做内积,结果是一样的。

8.Batch-norm作用和参数  怎样实现

batch norm的作用

1.batch norm对于输入数据做了零均值化和方差归一化过程,方便了下一层网络的训练过程,从而加速了网络的学习,防止过拟合,环节梯度爆炸和梯度消失。不同batch的数据,由于加入了batch norm,中间层的表现会更加稳定,输出值不会偏移太多。各层之间受之前层的影响降低,各层之间比较独立,有助于加速网络的学习。梯度爆炸和梯度消失现象也得到了一些缓解(我自己加上去的)。

2. batch norm利用的是mini-batch上的均值和方差来做的缩放,但是不同的mini-batch上面的数据是有波动的,相当于给整个模型引入了一些噪音,从而相当于有了一些正则化的效果,从而提升表现。

测试时的batch norm在训练过程中,y,b参数和w相似,直接利用梯度值乘以学习率,更新值就好了。需要注意的是,batch norm中的z的均值和方差都是通过每一个mini-batch上的训练数据得到的。在测试过程中,不能通过单独样本的数据计算均值和方差,我们可以通过让训练过程中的每一个mini-batch的均值和方差数据,计算指数加权平均,从而得到完整样本的均值和方差的一个估计。在测试过程中,使用该值作为均值和方差,从而完成计算。

关于BN
其实BN操作的目地是使一批feature map 进行归一化,避免数据过大而导致网络性能的不稳定。输入数据经过若干层的网络输出其实会让数据特征分布和初始分布不一致,降低模型的泛化性能,引入BN机制后,先将特征变为标准正态分布,然后再通过γ和β两个参数将标准正态分布适当拉回归一化前的分布,相当于在原分布和标准正态分布进行折中,以此增强模型的泛化性。

BN的运算过程
这里假设特征图的格式为 (N,C,H,W) 类型,这里假设为 (2,2,2,2)类型的,比如下图,上下为两个通道,横向为两个特征图,每个特征图为 2*2 ,经过 BN后,最终结果为 右半部份。具体计算公式为:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5NzUwNDYx,size_16,color_FFFFFF,t_70#pic_center

 watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5NzUwNDYx,size_16,color_FFFFFF,t_70#pic_center

即最终计算的时候,是将特征图中,同一批次中,按照通道进行归一化,每个样本的不同通道间是没什么关系的,不同样本的相同通道是符合同一个正态分布的。

BN训练和测试时的参数是一样的吗?

对于BN,在训练时,是对每一批的训练数据进行归一化,也即用每一批数据的均值和方差。

而在测试时,比如进行一个样本的预测,就并没有batch的概念,因此,这个时候用的均值和方差是全量训练数据的均值和方差,这个可以通过移动平均法求得。

对于BN,当一个模型训练完成之后,它的所有参数都确定了,包括均值和方差,gamma和bata。

9.L1/L2的区别和作用

L1/L2的区别

- L1是模型各个参数的绝对值之和。

L2是模型各个参数的平方和的开方值。

aeb541f7638844efb97b274ae50872d0.png

- L1会趋向于产生少量的特征,而其他的特征都是0。

因为最优的参数值很大概率出现在坐标轴上,这样就会导致某一维的权重为0 ,产生稀疏权重矩阵

L2会选择更多的特征,这些特征都会接近于0。

最优的参数值很小概率出现在坐标轴上,因此每一维的参数都不会是0。当最小化||w||时,就会使每一项趋近于0。

L1的作用是为了矩阵稀疏化。假设的是模型的参数取值满足拉普拉斯分布。

L2的作用是为了使模型更平滑,得到更好的泛化能力。假设的是参数是满足高斯分布。

10.关于XGB和随机森林LGB的区别和联系

xgboost采用的是level-wise的分裂策略,而lightGBM采用了leaf-wise的策略,区别是xgboost对每一层所有节点做无差别分裂,可能有些节点的增益非常小,对结果影响不大,但是xgboost也进行了分裂,带来了务必要的开销。 leaft-wise的做法是在当前所有叶子节点中选择分裂收益最大的节点进行分裂,如此递归进行,很明显leaf-wise这种做法容易过拟合,因为容易陷入比较高的深度中,因此需要对最大深度做限制,从而避免过拟合。

boosting方法

提升学习(Boosting)是一种机器学习技术,可以用于回归和分类的问题,它每一步产生弱预测模型(如决策树),并加权累加到总模型中;如果每一步的弱预测模型的生成都是依据损失函数的梯度方式的,那么就称为梯度提升(Gradient boosting);

随机森林

概念:随机森林利用随机的方式将许多决策树组合成一个森林,每个决策树在分类的时候决定测试样本的最终类别

在Bagging策略的基础上进行修改后的一种算法

11.梯度下降法与牛顿法

梯度下降法实质就是每次迭代让损失函数(目标函数)值变小,从而只要迭代次数足够多,函数值最终必定可以等于最小值,意味着找到了最小值点。迭代的方向使用了梯度,并且每次迭代函数值都变小,所以叫“梯度下降”。梯度下降法关键点在于函数值要降,至于是不是沿着负梯度方向其实无所谓,只要每次迭代方向能让函数值变低就行,如果不是梯度方向处理起来非常麻烦,而使用梯度方向,处理起来会更简单。

梯度下降法的“步长”(类似于我上面提到的r)有固定和每次迭代不固定两种方案。步长不固定方案,每次迭代都会寻找一个能沿负梯度下降最多的步长,这种方法叫“最速梯度下降法“。最速梯度下降是在沿负梯度方向这个前提条件下的最速,不是说在所有可行方向中沿负梯度方向是最速。沿负梯度方向随着步长的不同,函数值下降不同,“最速梯度下降法“是要找到能沿负梯度方向函数值下降最多的那个步长。

为什么说牛顿法和梯度下降法本质不同,是因为牛顿法实施的前提条件(初始迭代点如果离最小值点比较近,同时最小值点附近是一个凹形的)如果不满足牛顿法并不能保证迭代后函数值是降低的,也就是牛顿法可能会跑到其它局部最大点处。牛顿法并不是像梯度下降法那样通过保证每次迭代函数值是降低的来保证最终找到最小值点

12.评测指标:

1.F1值

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQUtB6ICB5a6e5Lq6,size_19,color_FFFFFF,t_70,g_se,x_16

采用F1值,可以很好的平衡精确率和召回率

精确率 Precision:True Positive在all predicted positives的比例召回率 Recall:True Positive在all actual positives的比例

2.AUC

本次挑战的是经典的预测任务,以AUC作为衡量标准。

评测指标
使用ROC曲线下面积AUC(Area Under Curve)作为评价指标。AUC值越大,预测越准确。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQUtB6ICB5a6e5Lq6,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQUtB6ICB5a6e5Lq6,size_20,color_FFFFFF,t_70,g_se,x_16

AUC值范围为[0,1],AUC值越高,表示二分类的预测结果越令人满意。

AUC = 1 时,表明在任何分类阈值下,分类结果都正阳性。

AUC = 0.5 时,表明分类结果为完全随机。

AUC < 0.5 时,表明分类结果弱于随机结果。

13.感知机

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0NzY3Nzg0,size_16,color_FFFFFF,t_70

 14.朴素贝叶斯的推导以及假设条件

假设各属性变量之间相互独立,条件独立性假设不成立时,朴素贝叶斯分类器仍有可能产生最优贝叶斯分类器。

条件概率
P(A∣B)= P(B)P(AB)

15.池化层的反向传播

池化层没有激活函数可以直接看成用线性激活函数,即σ(z)=zσ(z)=z,所以σ′(z)=1σ′(z)=1。接下来看看池化层如何递推δlδl。

e33104f071a44def94eb584622011c4d.png

为了符合梯度计算,我们在误差矩阵周围填充了一圈0,此时我们将卷积核翻转后和反向传播的梯度误差进行卷积,就得到了前一次的梯度误差,然后用(BP2)就可以得到上一层的误差

16.在卷积神经网络中,感受野的定义是:卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小。

70

 70

70

70

第一个feature_map的感受野默认为1,感受野的计算公式:r=r*stride+(k-1)
这里r是上一层的感受野,stride是步长,k是kernel_size。

全局stride等于所有stride的累乘。

 17.CNN(卷积神经网络)的参数量计算和浮点计算量分析

1、2D卷积

参考CNN 模型所需的计算力(flops)和参数(parameters)数量是怎么计算的?,可以知道,一个2D卷积的浮点数运算次数为:

a93765bb9ff34e65a5fc7118db843b61.png 可以这么理解,卷积操输出每一个值需要的运算次数为  0a867fd2e438416b86de5106a948b38e.png次乘法以及  3704b1a6ca0b4c0fa24d7a731249209c.png次加法,共输出  e7999653988a4ca2b1bdfbbc1fb663c5.png个值。

如果考虑bias,卷积操作输出每一个值需要的运算次数再加1,那么总运算次数为:

2ca003b7d44e422dbeedae1fe44b67a1.png

2、3D卷积

3D卷积的卷积核多了一个维度,输出数据多了一个时间维度,因此总运算次数为:

fbe00a1134c6450abfdeb319132006a7.png

因此3D卷积运算次数是2D卷积的 ed59e4537c56410e89af37f38070a882.png 倍。

18.常见激活函数特点


激活函数分为两类,饱和激活函数和不饱和激活函数。
饱和激活函数的代表是sigmoid,tanh。特点是:收敛慢,容易梯度消失。
非饱和激活函数的特点是:收敛快,抑制梯度消失,抑制过拟合。
sigmoid:计算量大。梯度消失,会改变原始数据分布。

Sigmoid函数也称为S型生长曲线,常被用作神经网络激活函数,将变量映射到0,1之间

20200901160132927.png
tanh:计算量大,梯度消失比sigmoid好点
relu:计算简单,有效防止了梯度消失和梯度爆炸,会出现神经元死亡。
leakrelu:解决了神经元死亡的问题,但是多了一个参数a
ELU:避免dying神经元,并且处处连续,从而加速SGD,但是计算比较复杂

softmax 多分类比较常用一些,主要用途是把一些输入映射为0-1之间的实数,并且归一化保证和为1,而多分类的概率之和也刚好为1。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2thdHJpbmExcmFuaQ==,size_16,color_FFFFFF,t_70

19.卷积后图像的大小

20200417125536907.png

 20

DNN中的梯度消失和梯度爆炸是由于激活函数引起的,主要是sigmoid函数。
因为在反向传播的过程中我们需要对激活函数进行求导,而sigmoid激活函数的导数如下图:
所以如果网络足够长的话,经过多个激活函数的导数以后就会出现梯度接近于0的情况。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p1c3Rzb2xvdw==,size_16,color_FFFFFF,t_70

梯度爆炸是由于权重参数初始化太大时,权重参数与激活函数的导数相乘导致梯度爆炸的出现。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p1c3Rzb2xvdw==,size_16,color_FFFFFF,t_70

 ytorch和tensorflow之间的不同点就要知道两者在运算模式上的差异,前者是一个动态的框架,所谓动态框架,就是说在运算过程中,会根据不同的数值,按照最优方式进行合理安排。而相对来说后者属于静态框架,所谓静态框架,就是只需要建构一个tensorflow的计算图,然后才能够将不同的数据输入进去,进行运算,这世界上就带来了一个非常严重的问题,那就是计算的流程处于固定状态,这种不灵活的运算方式,必然会导致在结算结果上效率比较低下。从运算过程的区别来看,pytorch的优势比较明显。

20.尖峰法

语音识别中使用CTC训练,除了blank外,其余的训练目标会形成尖峰,怎么解释这一现象的形成? - 知乎知乎,中文互联网高质量的问答社区和创作者聚集的原创内容平台,于 2011 年 1 月正式上线,以「让人们更好的分享知识、经验和见解,找到自己的解答」为品牌使命。知乎凭借认真、专业、友善的社区氛围、独特的产品机制以及结构化和易获得的优质内容,聚集了中文互联网科技、商业、影视、时尚、文化等领域最具创造力的人群,已成为综合性、全品类、在诸多领域具有关键影响力的知识分享社区和创作者聚集的原创内容平台,建立起了以社区驱动的内容变现商业模式。icon-default.png?t=N7T8https://www.zhihu.com/question/302589692?sort=created

21.python迭代器

迭代器有两个方法:iter()和 next()方法。

迭代器却是按需加载,有一点内容就会放在内容里面,我们就可以立刻使用内存中的数据进行我们的逻辑处理。这样就不要所有的数据都写入到内存中就可以使用,大大的提升了使用效率。

iter(iterable)从可迭代对象中返回一个迭代器,iterable必须是能提供一个迭代器的对象

next(iterator) 从迭代器iterator中获取下一了记录,如果无法获取下一条记录,则触发stoptrerator异常

说明:

1.迭代器只能往前取值,不会后退

2.用iter函数可以返回一个可迭代对象的迭代器

示例:

iter()函数介绍:生成一个迭代器对象

iter()函数用法:iter(iterable)

参数介绍:iterable —> 可迭代的数据类型(比如列表、字典、元组以及集合类型等)

示例:

1

iter([1, 2, 3])

返回值:

<list_iterator at 0x4f3bff0>

next()函数介绍:返回迭代器中的数据

next()函数用法:next(iterable)

参数介绍:iterable —> 迭代器对象

示例:

1

2

iter_obj = iter([1,2,3])

next(iter_obj)

返回值:

# >>> 1,2,3
# >>> StopIteration

综上,我们得出结论:

iter(iterable)从可迭代对象中返回一个迭代器,iterable必须是能提供一个迭代器的对象

next(iterable) 从迭代器iterator中获取下一了记录,如果无法获取下一条记录,则触发stoptrerator异常

22.生成器

  1. yield 把函数变成了一个生成器。
  2. 生成器函数的执行过程看起来就是不断地 执行->中断->执行->中断 的过程。
  3. 一开始,调用生成器函数的时候,函数不会立即执行,而是返回一个生成器对象;
  4. 然后,当我们使用 next() 作用于它的时候,它开始执行,遇到 yield 语句的时候,执行被中断,并返回当前的迭代值,要注意的是,此刻会记住中断的位置和所有的数 据,也就是执行时的上下文环境被保留起来;
  5. 当再次使用 next() 的时候,从原来中断的地方继续执行,直至遇到 yield ,如果没有 yield ,则抛出异常。
     

23.deeplab

分辨率

  • 问题:连续的池化或下采样操作会导致图像的分辨率大幅度下降,从而损失了原始信息,且在上采样过程中难以恢复
  • 减少分辨率的损失的方法:
  1.         空洞卷积
  2.         用步长为2的卷积操作代替池化

多尺度特征

  • 将不同尺度的特征图送入网络做融合,对于整个网络性能的提升很大
  • 但是由于图像金字塔的多尺度输入,造成计算时保存了大量的梯度,从而导致对硬件的要求很高
  • 将网络进行多尺度训练,在测试阶段进行多尺度融合。如果网络遇到了瓶颈,可以考虑引入多尺度信息,有助于提高网络性能。

24.可变性卷积

可变形卷积是指卷积核在每一个元素上额外增加了一个参数方向参数,这样卷积核就能在训练过程中扩展到很大的范围。
 

25.transformer 

它是一个黑盒子,当我们在做文本翻译任务是,我输入进去一个中文,经过这个黑盒子之后,输出来翻译过后的英文

里面主要有两部分组成:Encoder 和 Decoder

放大一个encoder,发现里边的结构是一个自注意力机制加上一个前馈神经网络

self-attention的输入就是词向量,即整个模型的最初的输入是词向量的形式。那自注意力机制呢,顾名思义就是自己和自己计算一遍注意力,即对每一个输入的词向量,我们需要构建self-attention的输入。在这里,transformer首先将词向量乘上三个矩阵,得到三个新的向量,之所以乘上三个矩阵参数而不是直接用原本的词向量是因为这样增加更多的参数,提高模型效果。对于输入X1(机器),乘上三个矩阵后分别得到Q1,K1,V1,同样的,对于输入X2(学习),也乘上三个不同的矩阵得到Q2,K2,V2。

上式背后的原理很简单。步骤一计算了两个不同向量之间的得分,得分是为了确定我们在对当前位置的词进行编码时,对其他词的关注程度。步骤二对分数进行归一化处理,使其具有更稳定的梯度,以达到更好的训练效果,步骤三将分数转为概率。最后,每个值向量乘以求和概率,概率较大的向量将被下面各层更加关注
多头注意力的意义了啊,每个字经过多头注意力机制之后会得到一个R矩阵,这个R矩阵表示这个字与其他字在N个角度上(比如指代,状态…)的一个关联信息,这个角度就是用多个头的注意力矩阵体现的。这就是每个字多重语义的含义

26.逻辑回归

义的线性回归分析模型,属于机器学习中的监督学习。其推导过程与计算方式类似于回归的过程,但实际上主要是用来解决二分类问题(也可以解决多分类问题)。通过给定的n组数据(训练集)来训练模型,并在训练结束后对给定的一组或多组数据(测试集)进行分类。其中每一组数据都是由p 个指标构成。

逻辑回归可以分为线性与非线性,也可以根据类的个数分为二分类与多分类问题,使用时需要灵活应用,能够构造损失函数并求梯度,同时能够用算法实现并进行训练预测。

27.CNN两大神器:局部感知、参数共享

  1. CNN并不是所有上下层神经元都能直接相连,而是通过“卷积核”作为中介。同一个卷积核在所有图像内都是共享的,图像通过卷积操作后仍然保留原来的位置关系。
  2. 复合多个“卷积层”和“采样层”对输入信号进行加工,然后再连接层实现与输出目标之间的映射。多层的目的:一层卷积学到的特征往往是局部的,层数越高,学到的特征就越全局化。

局部感知

  • 一般认为图像的空间联系是局部的像素联系比较密切,而距离较远的像素相关性较弱,因此,每个神经元没必要对全局图像进行感知,只要对局部进行感知,然后在更高层将局部的信息综合起来得到全局信息。利用卷积层实现:(特征映射,每个特征映射是一个神经元阵列):从上一层通过局部卷积滤波器提取局部特征。卷积层紧跟着一个用来求局部平均与二次提取的计算层,这种二次特征提取结构减少了特征分辨率。
  • 即网络部分连通,每个神经元只与上一层的部分神经元相连,只感知局部,而不是整幅图像。(滑窗实现)
     

参数共享

  • 在局部连接中,每个神经元的参数都是一样的,即:同一个卷积核在图像中都是共享的。(理解:卷积操作实际是在提取一个个局部信息,而局部信息的一些统计特性和其他部分是一样的,也就意味着这部分学到的特征也可以用到另一部分上。所以对图像上的所有位置,都能使用同样的学习特征。)卷积核共享有个问题:提取特征不充分,可以通过增加多个卷积核来弥补,可以学习多种特征。
  • 对于一个100x100像素的图像,如果我们用一个神经元来对图像进行操作,这个神经元大小就是100x100=10000,单如果我们使用10x10的卷积核,我们虽然需要计算多次,但我们需要的参数只有10x10=100个,加上一个偏向b,一共只需要101个参数。我们取得图像大小还是100x100。
  • 如果我们取得图像比较大,它的参数将会更加多。我们通过10*10的卷积核对图像进行特征提取,这样我们就得到一个Feature Map。
  • 一个卷积核只能提取一个特征,所以我们需要多几个卷积核,假设我们有6个卷积核,我们就会得到6个Feature Map,将这6个Feature Map组成一起就是一个神经元。这6个Feature Map我们需要101*6=606个参数。这个值和10000比还是比较小的

28.Pythonlist浅拷贝、深拷贝和赋值的区别

浅拷贝: 独立的不用于原列表的地址,修改元素不会相互影响。拷贝父对象,不会拷贝对象的内部的子对象。 但 若原列表中的元素包含列表等特殊类型时,上述方法则无效 ,修改时会同时影响原列表和浅拷贝的列表。
因为浅复制只是改变了第一层的引用地址,a中存储的列表的第二层引用没有改变,是单独分配的空间。此时需要用到列表的深层复制。

深拷贝:完全拷贝了父对象及其子对象

直接赋值:对象的alias。

29.pytorch和tensorflow区别

创建和运行计算图可能是两个框架最不同的地方。在PyTorch中,图结构是动态的,这意味着图在运行时构建。而在TensorFlow中,图结构是静态的,这意味着图先被“编译”然后再运行。
TensorFlow中构建阶段和执行阶段是分开的,途中的节点被称为op,op执行计算产生一个或多个tensor。TensorFlow中的图则描述了计算过程。比如在构建阶段op的执行被描述成图,在会话阶段使用绘画执行途中的op。通常在构建阶段创建一个图来表示和训练神经网络, 然后在执行阶段反复执行图中的训练 op。构造阶段完成后, 才能启动图.。启动图的第一步是创建一个 Session对象, 如果无任何创建参数, 会话构造器将启动默认图。

30.从GCN到GAT、GraphSAGE

31.数据增强

  • 首先是从样本层面进行考虑,设计合理的采样方法,使得训练数据均衡;
  1. 随机欠采样:从样本多的类别中随机选出一部分数据,与样本少的类别,组成新的数据集;
  2. 随机过采样:通过有放回的方式,样本少的类别中随机选出样本,样本的数量多于原有数量,与样本多的数据形成新的数据集
  • 其次是从模型和算法的角度考虑,设计或改进方法,减小不均衡的影响;
  • 最后是从分类的评价标准上考虑,设计合理的评价指标,评估模型分类非均衡数据的效果。
  1. 不应该选择单一的指标,如分类准确率来评价模型性能的好坏。

    可以设置如精度、召回率、F1、ROC曲线、AUC值等指标,来综合评估

  2. 损失函数,focal loose

32.python 浅拷贝和深拷贝区别

浅拷贝(影子克隆):只复制对象的基本类型,对象类型,仍属于原来的引用

深拷贝(深度克隆):不仅复制对象的基本类,同时也复制原对象的对象,完全是新对象产生的

深拷贝:对原对象的地址的拷贝,新拷贝了一份与原对象不同的地址的对象,修改对象中的任何值,都不会改变深拷贝的对象的值。

浅拷贝:对原对象的值的拷贝,地址仍是一个指针指向原对象的地址,浅拷贝或者原对象的值发生变化,那原对象和浅拷贝对象的值都会随着被改变。

import copy
a = [1, 2, 3, 4, ['a', 'b']]
b = a #赋值,传对象的引用
c = copy.copy(a) #浅拷贝,对象拷贝
d = copy.deepcopy(a) #深拷贝,对象拷贝
 
a.append(5) #修改对象a,列表末尾添加数字5
a[4].append('c') #修改对象a中的列表['a', 'b']
 
print 'a= ', a
print 'b= ', b
print 'c= ', c
print 'd= ', d
 
输出结果:
a = [1, 2, 3, 4, ['a', 'b', 'c'], 5] #修改了原始对象,变为修改后的列表
b = [1, 2, 3, 4, ['a', 'b', 'c'], 5] #对象的引用,对象的任何值变化都随着变化
c = [1, 2, 3, 4, ['a', 'b', 'c']] #浅拷贝,不可变元素不能改变,可变元素随着原始对的变化而变化了
d = [1, 2, 3, 4, ['a', 'b']] #深拷贝,原始对象的值发生任何变化,深拷贝新的对象内存地址不会发生任何变化

33. 余弦距离,欧式距离,马氏距离之间的关系

欧式距离:

20190806200341794.png

马氏距离:

20190806203251823.png

S为协方差矩阵,当样本集合的协方差矩阵是单位矩阵时,即样本的各个维度上的方差均为1.马氏距离就等于欧式距离相等。

余弦距离:

20190806212010642.png

两个向量间的余弦值可以通过使用欧几里得点积公式求出:

20190806212225900.png

从三维图可以看出:

虚线为欧式距离:欧氏距离衡量的是空间各点的绝对距离,跟各个点所在的位置坐标直接相关。

夹角为余弦距离:衡量的是空间向量的夹角,更加体现在方向上的差异,而不是位置。

 watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQ0NTM4OTg=,size_16,color_FFFFFF,t_70

欧氏距离更倾向于:体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析

余弦距离:更多的是从方向上区分差异,而对绝对的数值不敏感,更多的用于使用用户对内容评分来区分兴趣的相似度和差异,同时修正了用户间可能存在的度量标准不统一的问题(因为余弦距离对绝对数值不敏感)。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度学习期末知识点的PDF包含了深度学习的重要概念和技术,以下是对PDF内容的回答: 深度学习是一种基于人工神经网络的机器学习方法。它通过对大量数据进行训练来自动学习模式和表示,从而实现对复杂任务的高效处理。深度学习的核心概念包括神经网络、激活函数、损失函数、反向传播算法等。 神经网络是深度学习的基本模块,由多个神经元按层次组成。每个神经元接收上一层神经元的输出,并通过激活函数对输入进行非线性转换。常见的激活函数有Sigmoid、ReLU、Tanh等。神经网络的层数越多,可以表示的复杂模式就越多。 在深度学习中,损失函数用于度量模型预测与真实值的差异。常见的损失函数有均方误差(MSE)、交叉熵(Cross Entropy)等。模型通过反向传播算法来更新权重,以最小化损失函数。反向传播算法基于链式法则,将梯度从输出层传递到输入层,用于调整每个神经元的权重。 深度学习中的优化算法用于求解损失函数的最优解。常见的优化算法有随机梯度下降(SGD)、动量法、Adam等。这些算法通过迭代更新权重,使得损失函数逐渐减小。 除了基本概念和技术,深度学习的应用也涵盖了图像识别、语音识别、自然语言处理等领域。深度学习的模型结构也在不断发展,如卷积神经网络(CNN)适用于图像处理,循环神经网络(RNN)适用于序列数据。 综上所述,深度学习期末知识点的PDF内容涵盖了深度学习的核心概念、技术和应用。通过学习深度学习的知识,我可以理解神经网络的工作原理,掌握优化算法的选择和应用,以及应用深度学习解决实际问题的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值