这次的代码题没自己跑,感觉还是要基本理解了才有意义,看了tensorflow官方的例子:神经风格迁移 | TensorFlow Core,感觉还是有很多地方似是而非,还是先补基础吧,等基础都补完再回头来跑这些东西吧,话说图像风格转换我感觉还是挺有意思的。
以下为作业
10月31日 第四次作业说明
- 提交截止时间:11月6日 19:59:59
- 本次作业提交到腾讯文档中的个人的文件夹中。
- 作业的文件命名格式:学号-姓名-第四次作业
任务一、回答以下问题。
- 数据预处理时缺失值怎么处理。
- 重要性低,缺失率高: 去除该字段
- 重要性低,缺失率低:不做处理或简单填充
- 重要性高,缺失率低:通过计算、通过经验或业务知识估计
- 重要性高,缺失率高:尝试从其他渠道补全、使用其他字段计算、去除字段并在结果中标明
- 常见的生成式模型和判别式模型有哪些?
生成式模型:
- 朴素贝叶斯!
- 混合高斯模型!
- 隐马尔科夫模型(HMM)!
- 贝叶斯网络
- Sigmoid Belief Networks
- 马尔科夫随机场(Markov Random Fields)
- 深度信念网络(DBN)
判别式模型:
- K近邻(KNN)
- 线性回归(Linear Regression)
- 逻辑斯蒂回归(Logistic Regression)
- 神经网络(NN)
- 支持向量机(SVM)
- 高斯过程(Gaussian Process)
- 条件随机场(CRF)
- CART(Classification and Regression Tree)
- 下面不属于创建新属性的相关方法的是: (b)
- 特征提取
- 特征修改
- 映射数据到新的空间
- 特征构造
- 假设属性income的最大最小值分别是12000元和98000元。利用最大最小规范化的方法将属性的值映射到0至1的范围内。对属性income的73600元将被转化为: (d)
- 0.781
- 2.554
- 1.958
- 0.716
以下5~10题为选做题(加分题)。
- 单选题。神经网络是对大脑的简单的数学表达。每一个神经元都有输入、处理函数和输出。神经元组合起来形成了网络,可以拟合任何函数。为了得到最佳的神经网络,用梯度下降方法不断更新模型。基于上述关于神经网络的描述,什么情况下神经网络模型被称为深度学习模型?(a)
- 加入更多层,使神经网络的深度增加;
- 有维度更高的数据;
- 当这是一个图形识别的问题时;
- 以上都不正确
- 单选题. 感知机(Perceptron)的任务顺序是:(a)
①随机初始化感知机的权重。
②到数据集的下一批(batch)去计算。
③如果预测值和输出不一致,则调整权重。
④对一个输入样本,计算输出值。
- ①,②,③,④
- ①,④,③,②
- ④,③,②,①
- ③,①,②,④
- 单选题. 在选择神经网络的深度时,下面哪些参数需要考虑?(d)
① 神经网络的类型(例如MLP,CNN);
② 输入数据;
③ 计算能力(硬件和软件能力决定);
④ 学习速率;
⑤ 映射的输出函数
- ①,②,④,⑤
- ②,③,④,⑤
- ①,③,④,⑤
- 都需要考虑
- 单选题。在一个神经网络中,知道每个神经元的权重和偏差是最重要的一步。如果知道了神经元准确的权重和偏差,便可以近似任何函数。那么如何获得每个神经的权重和偏移?(b)
- 搜索每个可能的权重和偏差组合,直到得到最佳值;
- 赋予一个初始值,然后检查跟最佳值的差值,不段迭代调整权重。
- 随机赋值,听天由命
- 以上都不正确
- 单选题。当数据过大以至于无法在RAM中同时处理时,哪种梯度下降方法更有效。 (a)
- 小批量梯度下降法(Mini-Batch Gradient Descent)
- 随机梯度下降法(stochastic Gradient Descent)
- 全批量梯度下降法(Full Batch Gradient Descent)
- 都不是
- 关于梯度下降描述正确的是:(b
- )
- 梯度下降是沿梯度方向移动自变量从而减小函数值。
- 局部极小值是梯度下降算法面临的一个挑战。
- 梯度下降学习率越大越容易发散,所以学习率越小越好。
- 梯度下降学习率越大下降得越快,所以学习率越大越好。
任务二、代码实战。
选做:“快速”图像风格转换(可使用VGGNet训练图像风格网络,获取风格网络模型,然后在VGGNet网络中使用梯度下降法计算图像风格,内容及融合的损失,生成效果图)
要求:提交代码,提交运行结果的截屏。
任务三、阅读经典论文,并做文献综述。
每周一篇经典论文。
- 本周建议阅读:论文《very deep convolutional networks for large-scale image recognition》(2014年,牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司的研究员一起研发出新的深度卷积神经网络:VGGNet,取得ILSVRC2014比赛分类项目第二名和定位项目第一名。VGGNet探索了卷积神经网络的深度与其性能之间的关系,成功地构筑了16~19层深的卷积神经网络,证明了增加网络的深度能够在一定程度上影响网络最终的性能,使错误率大幅下降,同时拓展性又很强,迁移到其它图片数据上的泛化性也非常好。到目前为止,VGG仍然被用来提取图像特征。该模型对深度学习的发展有很大的推动作用。)
VGG简介:
VGG卷积神经网络是牛津大学在2014年提出来的模型。当这个模型被提出时,由于它的简洁性和实用性,马上成为了当时最流行的卷积神经网络模型。它在图像分类和目标检测任务中都表现出非常好的结果。在2014年的ILSVRC比赛中,VGG 在Top-5中取得了92.3%的正确率。同年的冠军是googlenet。
总体描述:
是对深度神经网络深度上的一个探索,VGGNet反复堆叠3×3小型卷积核和2×2最大池化层,成功构筑16~19层深卷积神经网络。
优点:
1.简洁性:
结构简洁,整个网络都用同样大小卷积核尺寸和最大池化尺寸。
2.实用性与扩展性好:
拓展性强,迁移其他图片数据泛化性好。且VGGNet训练后模型参数官方开源。
结构特点:
1.VGGNet 5段卷积,每段2~3卷积层,每段后接最大池化层缩小图片尺寸。
2.每段卷积核数量一样,越后段卷积核数量越多,64-128-256-512-512。
3.多个3×3卷积层堆叠。(2个3×3卷积层串联相当1个5×5卷积)。
模型总结:
1.通过逐步增加网络深度来提高性能,虽然看起来有一点小暴力,没有特别多取巧的,但是确实有效,很多pretrained的方法就是使用VGG的model(主要是16和19),VGG相对其他的方法,参数空间很大,最终的model有500多m,alnext只有200m,googlenet更少,所以train一个vgg模型通常要花费更长的时间,所幸有公开的pretrained model让我们很方便的使用。
2.虽然每一级网络逐渐变深,但是网络的参数量并没有增长很多(相对而言),这是因为参数量主要都消耗在最后3个全连接层。前面的卷积部分虽然很深,但是消耗的参数量不大,不过训练比较耗时的部分依然是卷积,因其计算量比较大。
对卷积网络深度与宽度上的思考:
1.宽度即卷积核的种类个数,在LeNet那篇文章里我们说了,权值共享可以大大减少我们的训练参数,但是由于使用了同一个卷积核,最终特征个数太少,效果也不会好,所以一般神经网络都会有多个卷积核,这里说明宽度的增加在一开始对网络的性能提升是有效的。但是,随着宽度的增加,对网络整体的性能其实是开始趋于饱和,并且有下降趋势,因为过多的特征(一个卷积核对应发现一种特征)可能对带来噪声的影响。
2.深度即卷积层的个数,对网络的性能是极其重要的,ResNet已经表明越深的深度网络性能也就越好。深度网络自然集成了低、中、高层特征。多层特征可以通过网络的堆叠的数量(深度)来丰富其表达。挑战imagenet数据集的优秀网络都是采用较深的模型。网络的深度很重要,但是否能够简单的通过增加更多的网络层次学习更好的网络?这个问题的障碍就是臭名昭著的梯度消失(爆炸)问题,这从根本上阻碍了深度模型的收敛。