深度学习网络疑问与解答

目录

1 卷积的计算和连接方式和视觉系统的一样?
2 卷积的计算速度和计算量比全连接少?
3 权重初始值假如都是正的会有问题吗?
4 为什么我推导softmax-crossentropy恒大于0
5 所有都相同,一个宽度为2,另一个宽度为3的两个神经网络a、b,a能不能表示b,b能不能表示a?
6 深度学习模型的表达能力是很强吗?有多强
7 深度学习拟合随机性有多大?
8输入的越多其表达能力越强?
9 参数越少越不容易过拟合?
10为什么说深度学习的最优解是np-hard问题?
11 是否有方法可以找到最优解?
12 validation set的意义是什么?假如将validation set 加入到训练集和用validation set作为停止训练的判定两种哪种会在test set 有更好的精度?为什么会有更好的精度?能否用数学语言来解释?
13 预训练的作用有多大?
14 矩阵运算与导数传播的关系
15 为什么层数越多表达能力越强
16 接收域和准确率的关系

1 卷积的计算和连接方式和视觉系统的一样?

答:不一样
Hubel 和 Wiesel 于 1962 年进行的一项有趣的试验详细说明了这一观点,他们验证出大脑中的一些个体神经细胞只有在特定方向的边缘存在时才能做出反应(即放电)。
卷积只是在模拟视觉系统的工作方式,视觉系统的具体连接方式和计算方式和卷积不一定是一样的,卷积只是模仿工作方式。

提出问题的原因

由于卷积是需要高频的计算的,而人脑的神经元是连死不会动的,卷积是一个滑窗,不可能神经元会自己动,一会连这一会连那吧。因此提出这个问题。

2 卷积的计算速度和计算量比全连接少?

cpu上的计算速度:

strides=(3, 3)
kernal_num = 300
x1 = keras.layers.Conv2D(filters=kernal_num,kernel_size=(3,3),padding='valid',strides=strides,activation=activation)(input)
x1 = keras.layers.Conv2D(filters=kernal_num,kernel_size=(3,3),strides=strides, activation=activation)(x1)
kernal_num = 300
x1 = keras.layers.Dense(kernal_num, activation=activation)(input1)
x1 = keras.layers.Dense(kernal_num, activation=activation)(x1)
x1 = keras.layers.Dense(kernal_num, activation=activation)(x1)
x1 = keras.layers.Dense(kernal_num, activation=activation)(x1)
x1 = keras.layers.Dense(kernal_num, activation=activation)(x1)
x1 = keras.layers.Dense(kernal_num, activation=activation)(x1)

全连接比卷积快很多很多,而且上面这个代码全连接有6层,卷积才两层,且步长是3,3,而且padding是valid。

gpu上的计算速度:

显卡为1个rxt2080ti
全连接:3s
卷积:为了公平,因此卷积核大小变成1,6层网络48s

参数量

全连接:3003006=5410^4
卷积:300
16=1810^2

但是其实有个问题啊,现在的所有的卷积网络虽然越往后他的feature map越来越小,但是都会把维度扩大。因此感觉卷积没有之前说的那么有优势。

3 权重初始值假如都是正的会有问题吗?

答案:会

weights1_m = tf.Variable(initial_value=np.random.uniform(-1, 1, [32 * 32 * 3, 300]))
weights1_b = tf.Variable(initial_value=np.zeros([300]))
dense1 = tf.sigmoid(tf.matmul(input1, weights1_m) + weights1_b)

weights_o_m = tf.Variable(initial_value=np.random.uniform(-1, 1, [300, 10]))
weights_o_b = tf.Variable(initial_value=np.zeros([10]))
output = tf.matmul(dense1, weights_o_m) + weights_o_b

里面的取值范围在0-1时loss不变,但是调成-1,1时就正常训练了。

3.1 原因分析

将权重都为大于0的核输出出来,发现输出都等于1。。。
由于输入都是正的,所以有一千多个输入情况下,即使每一个都很小,但是加起来就会很大。
虽然理论上将sigmoid是不可能输出是1的,但是计算机仅仅是一个逼近值,因此没loss。
因此从理论上将sigmoid虽然和其他的都是一样的非线性函数,但是他很容易就进入了饱和状态,假如计算机的位数是无穷的情况下饱和状态也可以恢复,但是假如过于饱和这个核就训练死了,永远都是1或0。

4 为什么我推导softmax-crossentropy恒大于0

参考这个网站的推到:
https://www.cnblogs.com/wuliytTaotao/p/10787510.html
发现了我推错的原因。
我一开始认为crossentropy中只有对的是不等于0的,因此错的直接就删掉了,不做求导。但是这样是不行的,你不能一开始假定那些等于0的等于0来求导,正解是先对所有的求导,再把值代入进行计算。

5 所有都相同,一个宽度为2,另一个宽度为3的两个神经网络a、b,a能不能表示b,b能不能表示a?

答:

b能表示a,因为只要让那个核的权重是0就行了。a不能表示b,因为每一个特征都是线性无关的,因此只要多出的那个核不是和其他某个核一模一样,b就不能被a表示。

推导

在这里插入图片描述

6 深度学习模型的表达能力是很强吗?有多强

不强,因为实验证明其拟合一个sin函数都很费劲,用MISH激活函数。我指的复杂度是最简单就是拟合sin,复杂一些就是sin(nx),其中n的值越大函数就越复杂,实验显示n为3的时候5层的网络可以较好拟合。

7 深度学习拟合随机性有多大?

拟合一个正弦曲线,同样的模型有许多种可能结果,而且和训练轮数没关系,都是训练到loss不降为止。学习率的话,调成0.1也有可能是第一幅图的结果。
construct_model(activation=MISH, random_zero_ratio=1, layer_num=5, kernal_num=24)
在这里插入图片描述

在这里插入图片描述

将核的数量变为300个看看是否会减少收敛不好的概率?


这是目前为止最好的结果,没有具体统计结果,但是感觉上来说核的数量越少,越有可能停留在不好的收敛点,而核多则更有可能收敛到更优的极值点。


上图是300个核的收敛最差点,而且它是收敛在那个点,而不是没训练完。
将那个初始权重存储,经过多次重新训练,有时候可以突破,有时候无法突破甚至更差,将训练轮数增大到500epoch,有些极小值点仍旧无法突破,且每次收敛的极小值点是不同的,很难收敛到那个历史最小loss点。
收敛过程是随机的,即使在相同的起点,也经常会收敛到不同极值点,如0.28、0.2、0.18、0.15、0.10最小点。

8 输入的越多其表达能力越强?

是,证明过程。有两个函数f和f撇,f可以表示f撇,但是f撇不能表示f,说明f比f撇复杂。
在这里插入图片描述

9 参数越少越不容易过拟合?

很多书上会说参数越少,越不容易过拟合。经过验证发现并非如此。

activation = MISH
kernal_num = 40
x1 = keras.layers.Dense(kernal_num, activation=activation)(input1)
x1 = keras.layers.Dense(kernal_num, activation=activation)(x1)
x1 = keras.layers.Dense(kernal_num, activation=activation)(x1)
x1 = keras.layers.Dense(kernal_num, activation=activation)(x1)

相同情况下,不同参数是kernal_num,a模型300,b模型200,在cifar10两个模型训练集准确率都可达到1,但是b模型的测试集准确率为52.5,而a模型准确率是54.5。所有的训练都收敛了,并且取一个最大准确率的节点。
经过大量其他kernal_num测试,发现参数变少,训练集准确率可以达到1,但是测试集准确率越来越低。

10 为什么说深度学习的最优解是np-hard问题?

假设有两个节点a和b,每个节点的取值有10种,0.1,0.2,0.3,。。。,0.9。
y=ax1+bx2,给定一组数据,找到最优的a和b的取值有多少种可能?
答:10*10种。
那么现在有300W个参数,每个参数的取值可能float32种,可能的结果就是float32**(300W)这么多种解。
因此通过遍历搜索,如宽度优先搜索是不可能解出来的,假如有足够的算力有可能。
因此采用随机梯度下降算法来近似逼近最优解。

11 是否有方法可以找到最优解?

做了一个实验,目标函数是y=ax+b。给定其两个点,拟合函数是y=ax+axx+b。结果为:
在这里插入图片描述
一般情况下数据量是不足的,网络是过拟合的。网络的未知参数过多,因此有无穷多个局部极小值点,而我们得到的只是其中的一个。
因此我个人认为:梯度下降法也是另一种贪婪算法,它前进的方向是向下的方向,像一个人想要找到一个最低点,然后看到向下的路就顺着往下走。
而我们的最终目的可能是寻找地球上最低点,不同的人随机的分布在地球的不同地点,类似于不同的初始值。
因此只有你走遍地球每个角落,才能知道哪个是最好的。而单纯的梯度下降这种贪婪算法是找不到的。

12 validation set的意义是什么?假如将validation set 加入到训练集和用validation set作为停止训练的判定两种哪种会在test set 有更好的精度?为什么会有更好的精度?能否用数学语言来解释?

将问题简化为,现在有10道题,随机从里面抽了5道题,现在一个人可以答对4道题,那么请问这个人在10道题或者说另外5道题其准确率是多少????

主要问题是这10道题的相关性问题,假如10道题完全相互独立,没有任何关系,那么其余的5道题没法通过这个来判定。

validation set 意义

是这样,假设有一个集,里面有100个元素,有一个函数,可以正确判断其中50个元素,那么现在随机从里面抽50个元素
问题1:函数都判断对的概率是多少?
1/C(50,100),C(50,100)的意思是从100个元素里面取50个有多少种取法。
问题2:函数判断对的概率是50的概率是多少?
C(25,50)*C(25,50)/C(50,100)=F(50)
意思是从对的取25个,错的取25个,除以100个取50个。10个元素情况下大约百分之10的概率。
问题3:函数判断对的概率与实际概率小于百分之20的概率是多少?
F(40)+F(41)+…+F(60)
意思是把准确率40、41、。。。、60的概率加起来。没算,我觉得应该是很高吧。
问题4:集合中有无穷多个元素,那么准确率相差小于百分之10的概率是多少?
在这里插入图片描述
最后公式忘写一个除以那个C(m,n)了。
然后当m=n情况下概率就是1,只有概率等于实际概率才成立。
具体再怎么化简

解释1

以我目前的知识来解释就是:比如在代价函数是均方差情况下,其拆分开是这样的:
在这里插入图片描述
若只有一个数据情况下,w的维数为1,那么可以得到唯一解。若w的维数为n的情况下,那么由于数据量不足导致没有唯一解,导致其有多个解。而不同的初值会直接导致不同的最终解。
若w的维数很大,那么其图像是极其复杂的,因此不同的随机梯度下降的路径也会最终影响收敛点。
因此可以看作是x1的约束条件会产生一个集合,这个集合中的点会使其对应代价函数等于0。而在有n个代价函数情况下,其最终的解是所有集合的交集。

而validation set 中每个元素都有一个解的取值集合范围Bj ,训练集则是每个解的w取值范围是Ai ,因此最终,∩Bj 和∩Ai 越大,

13 预训练的作用有多大?

在cifar10 上,未预训练的res18和34在没有预训练的情况下分别达到了:
model = resnet18(True)#test_acc::61%

model=resnet34() #train_acc::0.9999 test_acc::0.5774

而在有预训练模型的情况下,准确率为:
17 [0.0001] 1.1258136597462e-05 2020-12-21 14:23:28
train_acc::0.9993
test_acc::0.8443

可以见到明显提高了

14 矩阵运算与导数传播的关系

在这里插入图片描述
由图可以看到,若忽略激活函数的情况下,梯度的传播其实就是矩阵相乘的结果,矩阵的内容就是其前面层的权重。
若要再考虑非线性激活函数的作用,那么只需要在里面再加上激活函数的乘子,原式中的项保持不变。

15 为什么层数越多表达能力越强

有一种数据压缩的方法,叫做二分类法,比如自然语言处理里,一共有几万个词,那么就有几万个类。有一种优化方法叫做二分类,就是首先几万个词作一个二分类,再在二分类基础上再作二分类。如此作的话,几万个类只需要用2**n个类就可以表示出来。

假设我们的内存只够使用1000个核,如何合理的分配这些核来对数据作分类?比如构造一层宽度为1000的网络和构造两层500的网络还是3层333的网络?
假如1000的网络的分类能力是1000的话,那么B网络就是500*500=2500。C网络则是333**3=9000000。
因此通过网络的层数来使网络的表达能力增大。

16 接收域和准确率的关系

假如接收域是整个图片,待分类的目标在图片中越大,则分类的准确率越高。这也就是为什么目标检测网络通过控制接收域的大小来对不同大小的目标进行分类。

8深度学习每一个核都是一个特征,那么是否会有重复的特征?是否会有无效的特征?假如有1000个有用的特征,那么每次深度学习都可以拟合出这些特征吗?哪一个核变成哪一个特征,为什么会变成那个特定的特征?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值