天天看点

第一次作业:深度学习基础

林欣蕊:

一、视频心得及总结

1.总结

随着深度学习的深入,人们探究深度学习从“能做什么”到深度学习的“不能”:

1.算法输出不稳定,容易被攻击

2.模型复杂度高,难以纠错和调试

3.模型层级复合度高,参数不透明

4.端到端训练方式对数据依赖性强,模型增量性差

5.专注直观感知类问题,对开放性推理问题无能为力

6.人类知识无法有效引入进行监督,机器偏见难以避免

M-P神经元;激活函数;单层感知器:首个可供学习的人工神经网络;多层感知器;万有逼近定理;误差反向传播;梯度消失;局部极小值;逐层预训练;微调;受限玻尔兹曼机;自编码器(最小化重构错误);深度信念网络(多个RBM);一般玻尔兹曼机(随即神经网络和递归神经网络的一种);

2.问题

1.微调的维度是什么?预先怎么知道该上调还是下调呢,缩小/增大的范围咋确定呢?

二、代码练习:

(1)基础

(1)定义数据

第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
(2)定义操作
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础

2.螺旋数据分类

(3)

之前的步骤都很顺利,直接复制代码然后运行查看,但是中途遇到的问题:关于叉乘的乘法这行代码(如下图所示)。

第一次作业:深度学习基础
开始怀疑是不支持这个运算,但是带入其他代码又是可以用的(如下图找到的例子成功运行@)。
第一次作业:深度学习基础
最后通过这篇文章(​​https://discuss.pytorch.org/t/runtimeerror-expected-scalar-type-int-but-found-float/102140​​ )找到解决办法,运行成功(猜测是@运算时并不能智能转换成float类型,需要人工操作?)。
第一次作业:深度学习基础
(2)螺旋数据分类
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
准确率很低很低,只有一半。
第一次作业:深度学习基础
加了relu函数后,准确率大大提高,因为好奇为啥relu函数就能提高这么大精确度,去网上查了相关文章,感受就是在某一个科学领域,从0开始拓荒,然后后来者对其不断深入研究开发,直到成熟,就像为了提高准确率,先是出现了sigmoid和双曲正弦函数,再就是这个relu函数(由于效果突出,之后发展出Leaky ReLU,Elu, PReLu等),我真的难以想象人脑怎么想出这么多东西。再就是:学好数学真的太重要了,不然看公示的时候还得查符号的代表含义以及来源过程。
第一次作业:深度学习基础
 崔王仙子:

  1. 总结

(1)单层感知器解决不了异或问题

(2)relu比较牛逼

(3)多层神经网络存在梯度消失的问题

(4)受限玻尔兹曼是来自能量分布所提出的

  1. 问题

(1)神经网络为什么要有这么多层?

(2)为什么所有的机器学习基本上都要从二分类开始解决?

(3)为什么神经网络层数越多越好?

遇到的问题:

(1)xxx is not defined

第一次作业:深度学习基础

错因:我早上打了一部分代码因为有事情就保存然后把电脑关机了,我第二次打开直接加代码进行运行发现很多东西报错“未定义”,需要全部重新挨着运行下来才行....无语

(2)Expected scalar type Float but found Long

第一次作业:深度学习基础

错因:v是默认了long型的,但是m是float型的,需要在定义v的时候把向量的数据类型加上依据dtype=torch.float,如图,则可以正常运行了

第一次作业:深度学习基础
  1. 基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础

黄可: 

一、视频学习

问题:

  1. 从前深度学习时代到后深度学习时代,我们还需要做什么?
  2. 我还是没能理解机器是如何学习样本数据的内在规律的。
  3. 人工智能如何与心理学和哲学相联系,想不明白。

总结:

人工智能>机器学习>深度学习。人工智能是一个宏大的命题,通过与各个领域相结合,惠及生活。机器学习需要对问题建模,确定目标函数,继而求解模型参数。机器学习根据有无监督分为全监督学习、无监督学习和半监督学习,又根据是否应用了神经网络分为深度学习和传统机器学习,在前深度学习时代我们需要采集大量数据进行分析,而在后深度学习时代我们只需要少量数据就可以交给机器进行深度学习。

二、代码练习

2.1 pytorch基础

第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础

感想:一般定义数据使用torch.Tensor,可以定义一个数、一个数组、矩阵、任意维度的数组,在输入老师给的代码中的m @ v时,出现了报错,显示我使用了错误的类型的变量,有点迷茫,查了一下百度,试着加了两个输出变量类型的代码,查看之后,我把这两行代码去掉,使用tensor.type方法修改变量类型,程序正常执行。

2.2 螺旋数据分类

第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础

 赵梓奥:

【第一部分】视频学习心得及问题总结

  1. 绪论

(1)现状:我国人工智能供给不足问题严重  

(2)教育部措施:加快培养人工智能高端性人才

(3)人工智能定义的关键点:感知、认知、决策、执行

(4)人工智能之父:麦卡锡、明斯基(1956年组织达特矛斯会议,AI诞生)

(5)图灵与人工智能(验证码系统;模仿游戏,二战期间破解Enigma系统)

(6)人工智能高速发展期:2006年->2010年->2012年

(7)人工智能三个层面:计算智能、感知智能、认知智能

(8)人工智能>机器学习>深度学习(范围上)

(9)机器学习:机器自动训练数据

过程:建模(问题建模,确定假设空间) 策略(确定目标函数) 算法(求解模型参数)

监督学习:样本有标记         无监督学习:样本没有标记   

半监督学习:部分有标记,部分没有

强化学习:样本没有标记,但知道与输出目标相关的反馈

参数模型:对数据分布进行假设(待求解的数据映射用一组参数刻画)  

非参数模型:不对数据分布进行假设(数据所有统计特性来源于本身)

生成模型:对联合分布P(X,Y)建模

判别模型:对条件分布P(Y|X)建模

(10)深度学习:错误率低于人类(2015年ResNet) 应用:Google无人自行车

  1. 深度学习概述

深度学习的“不能”

(1)算法输出不稳定,容易被“攻击”

(2)模型复杂度高,难以纠错和调试

(3)模型层次复合程度高,参数不透明

(4)端对端训练方式对数据依赖性强,模型增量性差

(5)专注直观感知类问题,对开放性推理问题无能为力

(6)人类知识无法有效引入监督,机器偏见难以避免

总结:稳定性差。可调试性差、参数不透明、机器偏见、增量性差、推理能力差

从专家学习、统计机器学习、到概率图模型再到深度学习,模型准确率不断提高,解释性却没有提高

神经网络

激活函数

(1)S性函数:容易饱和,输出不对称(没有负值)

(2)双极S性函数:解决输出不对称问题

(3)ReLU修正线性单元:解决饱和区问题

(4)Leaky ReLU

非线性激活函数(以S性函数为例):近似实现逻辑非、逻辑与、逻辑或  

单层感知器(缺点:无法实现异或、同或)

例:三层感知器实现同或门,组合单层感知器,解决非线性问题

万有逼近定理:如果一个隐层包含足够多的神经元,三层前馈神经网络(输入-隐层-输出)能以任意精度逼近任意预定的连续函数

双隐层感知器逼近非连续函数(输入-隐层1-隐层2-输出)

神经网络将原始输入空间投影到线性可分的空间去分类/回归

(1)增加节点数:增加维度,即增加线性变换能力

(2)增加层数:增加激活函数的次数,即增加非线性转换次数

增加网络深度比增加宽度带来更强的网络能力,深度对函数复杂度的贡献高

深层神经网络的问题:梯度消失、局部极小值。所以,很长一段时间,三层神经网络是主流

解决方法:逐层预训练(相对更加收敛,训练更快)

疑问:什么样的数据集适合节点数多的模型,什么样的数据集适合层数多的模型,模型具体是怎么训练的,为什么加了ReLU激活函数之后,准确率大大提高

【第二部分】代码练习

2.1 pytorch基础练习

第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础

编写时出现的问题

​​当使用这个@运算符时,报错提示数据类型有问题,于是通过百度,更改了一下类型,使用了.float()这个方法,运行成功,问题解决​​。

第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础

 陈轶鑫:

1.视频学习

1.1绪论

人工智能:使一部机器像人一样 感知、认知、决策、执行的人工程序或系统。

人工智能三个层面

1 计算智能: 快速计算、记忆存储

2 感知智能:能听会说、能看会认

3 认知智能:能理解、思考、决策

人工智能可结合用于多领域:金融:芝麻信用;内容创作;机器人

人工智能 包含 机器学习 包含 深度学习

第一次作业:深度学习基础

逻辑演绎vs归纳总结

第一次作业:深度学习基础

知识工程vs机器学习

第一次作业:深度学习基础

机器学习:从数据中自动提取知识

1.计算机视觉:人脸识别、图像分类、目标检测、图像搜索、图像分割、视频监控

2.语音技术:语音识别、语音合成、声纹识别

3.自然语言处理:文本分类、机器翻译、知识图谱、自动问答、信息检索、文本生成

机器学习的方法:(主要前两个)

1.模型:问题建模,确定假设空间

2.策略:确定目标函数

3.算法:求解模型参数

模型:

1.数据标记:监督VS无监督学习模型

无监督学习:从数据中学习模式,用于描述数据。目的:发现数据中模式、有意义信息

监督学习:从数据中学习标记分界面,用于预测数据标记。目的:学习输入

半监督学习:部分数据标记已知

强化学习:数据标记未知,但知道与输出目标相关的反馈。决策类问题。

2.数据分布:参数VS无参数模型(指数据分布的参数,是否假设数据分布)

参数模型模型参数固定,非参数模型自适应数据,模型参数随样本变化。

参数模型:假设,待求解的数据模式、映射可用一组有限、固定数量的参数刻画(线性回归、逻辑回归、感知机、k均值聚类) 

优点:数据需求少、训练快速;缺点:模型复杂性有限,与真实目标函数拟合度小。

非参数模型:不假设,数据所有统计特性来源于数据本身(k近邻、svm、决策树、随机森林)

优点:对数据适应性强,可拟合不同函数形式;缺点:数据需求大、容易过拟合

3.建模对象:判别vs生成模型

生成模型:对输入x与输出y的联合分布建模

优点:提供更多信息;样本量大时,更快收敛到真实分布;支持复杂训练情况

缺点:数据需求大;预测类问题准确率较低

判别模型:对已知输入x条件下输出y的条件分布建模

传统机器学习:人工设计特征

深度学习:分层

深度学习三个助推剂:大数据、计算力、算法

深度学习应用研究:视觉+语言

深度学习理论研究:从能到不能

深度学习的不能

2.模型复杂度高,难以纠错与调试

3.模型层级复合程度高,参数不透明?

4.人类知识无法有效引入进行监督,机器偏见难以避免(算法依赖于数据,数据不是中立的,从真实社会抽取必然带有不平等)

5.端对端训练方式对数据依赖性强,模型增量性差(样本数据量小时,深度学习无法体现强大拟合能力)

6.专注直观感知类问题,对开放性推理问题无能为力

解释性vs泛化性

深度学习泛化性很强,解释性很弱

连接主义+符号主义

第一次作业:深度学习基础

1.2神经网络基础

2.1浅层神经网络

M-P神经元

没有激活函数相当于矩阵相乘:多层和一层一样;只能拟合线性函数

激活函数例子?

单层感知器:最早的神经网络的模型

通过激活函数(只)能够划分线性问题

多层感知器:可解决非线性问题

单隐层神经网络:单层感知器对于非线性问题,训练无效果;增加隐层后,训练效果显著

第一层感知器进行了空间变换,第二层感知器处理变换后的函数(线性)

隐层可完成:

第一次作业:深度学习基础

万有逼近定理:若一个隐层包含足够多的神经元,三层前馈神经网络(输入-隐层-输出)能以任意精度逼近任意预定的连续函数。

双隐层感知器可逼近任意函数(包含非连续函数)。

第一次作业:深度学习基础

神经网络层数越多越好?

训练数据的作用,让神经网络选择非线性、线性的变换

第一次作业:深度学习基础

多层神经网络的问题:梯度消失

神经网络的参数学习:误差反向传播。前馈与反馈

1.层数多时,会使得局部极小值增多,更可能收敛到不好的局部极小值

2.层数多时,只能更新后面的层参数,前面层的参数无法更新

第一次作业:深度学习基础
第一次作业:深度学习基础

2.2从神经网络到深度学习

逐层预训练

权重初始化

1.不同初始值会收敛到不同极值点

2.逐层预训练后会降低收敛到差的局部极小值,且训练效率更高

两种方法:

1.自编码器:没有额外监督信息

是一个多层神经网络;

目的是减少误差;

中间隐层是代表输入的特征,可最大程度代表原输入信号

将多个自编码器得到的隐层串联;所有层预训练完成后,进行基于监督学习的全网络微调

2.受限玻尔兹曼机(RBM)

是两层神经网络,包含可见层(输入层)与隐藏层;

不同层间全连接,层内无连接;

没有显式的重构过程

第一次作业:深度学习基础
第一次作业:深度学习基础

自编码器vsRBM

第一次作业:深度学习基础

由于判别式模型更泛用,自编码器更多地被运用。现在都不常用了。

第一次作业:深度学习基础

人工智能>机器学习>神经网络>深度学习。深度学习有其局限性。无隐层的神经网络无法解决非线性问题。隐层越多并不意味着越好,即神经网络的层数不是越多越好。三层就可以逼近任意函数。为了避免收敛误差过大,梯度消失问题,三层神经网络是主流。曾用过逐层预训练来改善训练效果,现在基本被淘汰了。

1.不理解:模型层级复合程度高,参数不透明。

2.不理解激活函数来源、哪里用、怎么用

3.人工智能解决模型增量差、开放性推理问题的思路。

2.代码练习

1.

第一次作业:深度学习基础

提示出错,根据提示将v改为float型后成功运行。

第一次作业:深度学习基础

之前用c语言没做过这种可视化的图表,感觉很有意思,很厉害。

2.

2.1

第一次作业:深度学习基础

1.不改动

训练模型一:8s

第一次作业:深度学习基础

训练模型二:9s

第一次作业:深度学习基础

用了 Rule函数的模型训练效果显著提升。

2.样本改为10000

训练模型一:11s

第一次作业:深度学习基础

训练模型二:12s

第一次作业:深度学习基础

样本点增加,训练结果差别不大。

3.隐层节点改为1000

训练模型一:9s

第一次作业:深度学习基础

训练模型二:10s

第一次作业:深度学习基础

隐层节点增加,用了激活函数的模型效果显著提升;而模型一基本不变。

总结:使用合适的激活函数、增加隐层节点可以提高训练效果。同时会一定程度上增加训练时间。

//样本类别改为7还挺好看的

第一次作业:深度学习基础

 2.2

第一次作业:深度学习基础
第一次作业:深度学习基础

 查了nn.linear()参数的意义,还是不理解函数做了什么。

第一次作业:深度学习基础

Relu激活函数对训练模型的改善极大。

激活函数Rule的作用是什么,参数的意义是什么?

 王鑫尧:

第一部分 视频学习

1.1学习心得

01绪论

相关运用不断突破,促进各国不断部署人工智能发展战略,这是人工智能领域人才供需失衡的主要原因。得益于数据、算力和算法的集中突破,人工智能近年来开始进入落地实践阶段。以深度学习为主要代表的人工智能技术正在语音识别、数据挖掘、自然语言处理等领域展露强劲发展势头,相关应用突破还可能给医疗、交通、制造、金融、教育等领域带来巨变。

第一次作业:深度学习基础

02深度学习概述

生物神经网络是人工神经网络的起源。然而,人工神经网络(ANNs)的工作机制与大脑的工作机制并不是十分的相似。

神经元通过树突从其他神经元中接受信号。树突的信号强度称为突触权值,用于与传入信号相乘。树突传出的信号在细胞体中累积,如果最后的信号强度超过了某个阈值,神经元就会允许轴突中的信息继续传递。否则,信号就会被阻止而得不到进一步的传播。激活函数决定了信号是否能够被通过。

1.2问题总结

01 网络是怎么学习的 训练过程中的最小权值和偏置怎么找

02 不同类型激活函数分别解决什么类型的问题?

03 为什么线性函数组合可以解决非线性问题

04 为什么需要需要非线性激活函数

第二部分 代码练习

2.1 pytorch基础练习

第一次作业:深度学习基础

出错!将v改为float型后运行成功。

第一次作业:深度学习基础
第一次作业:深度学习基础
第一次作业:深度学习基础

1.激活函数相当于对原数据空间进行了一次空间变换?为什么这样的空间变换能够保证得到的结果一定线性可分?

2.Relu激活函数的作用?

继续阅读