软件工程第二次作业
1、视频学习心得
刘少愉:对人工智能、机器学习、深度学习的概念和三者之间的包含关系有了一定了解,重点了解了深度学习的能与不能,学习到深度学习具有对数据依赖性强、迁移能力差、开放思维和推理能力差等特性,并对浅层神经网络、激活函数、单层感知器、万有逼近定理、逐层预训练和自编码器有了一定了解。
郭隆鑫:人工智能的发展颇受各国重视,相关人才缺乏。人工智能能与许多领域相结合。神经网络经历三次兴起,两次衰落,目前仍处于第三次兴起中。人工智能>机器学习>深度学习。如今的深度学习技术还存在许多缺陷与不足,即“六不能”。PyTorch作为新出现的深度学习开发框架,发展迅速。
程陆瑶:根据两个视频的学习,我对深度学习有了一定的了解。对于深度学习中存在的问题,像是深度学习的“不能”及其相应的解释有了进一步的认识。对于一些知识,像是激活函数(例如S性函数,双极S性函数,ReLu修正线性单元,Leaky ReLu等),万有逼近定理,梯度和梯度下降,误差反向传播,RBM和自编码器等方面的知识有了一定的了解,学习了预训练的实际作用。通过观看视频,我了解了相关知识,感觉有所收获。
金子懿:通过学习两个视频我对深度学习有了一个初步的了解。了解了人工智能的起源及发展历程以及人工智能与各个领域的结合。对机器学习有了一个初步的认知。认识到人工智能,机器学习和深度学习这三者之间的关系。了解到神经网络结构的发展,了解到了神经网络的发展历程。学习到大数据,算法和计算力是深度学习的三个助推剂。学习到了深度学习的概述。对深度学习的能与不能有了一定的了解。对生物神经元,单层感知器,多层感知器,万有逼近定律,反向传播和梯度消失逐层预训练,自编码器,受限玻尔兹曼机等知识有了一定的理解。
曹舟雯:在认真观看了视频之后,我学到了很多关于机器学习和深度学习的知识。首先,人工智能已经发展的越来越成熟,也越来越能和实际生活相结合。我知道了人工智能、机器学习和深度学习大致包含的内容。同时我还了解到深度学习相较于传统机器学习的优点。不过深度学习也有很多不足之处,比如其算法输出不稳定,容易被攻击并且模型增量性差等等,我还学到了很多深层神经网络的知识。
杨雯: 在视频学习中,我意识到我国的人工智能人才供给不足,有着较为广阔的前景。“人工智能“概念诞生于1956年美国达特茅斯会议,使一部机器人像人一样进行感知、认知、决策、执行的人工程序或系统。人工智能大致可以分为三个层面:计算智能(能存能算)、感知智能(能听会说、能看会认)、认知智能(能理解,会思考)。机器学习是基于数据自动学习,知识工程构建费时费力,而机器学习提高信息处理的效率,且准确率较高。通过调查问卷的例子,对知识工程和机器学习的区别与特点有了更深的认识,知识工程并非已过时,而是依然很重要。机器学习可以从模型、策略、算法学习。应用了深度神经网络的机器学习称之为深度学习。传统机器学习:人工设计特征,特征往往比分类器更重要。巡逻机器人检测狗屎这个例子描述了前深度学习时代、深度学习时代、后传统学习时代构造这个机器人的做法。而Google无人自行车让人无比好奇与憧憬未来深度学习究竟会为我们的生活造成怎样的便利。
深度学习的“不能“:一:算法输出不稳定,容易被”供给“;二:模型复杂度高,难以纠错和调试;三:模型层级符合程度高,参数不透明;四:端到端训练方式对数据依赖性强,模型增量性差;五:专注直观感知类问题,对开放行推理问题无能为力;六:人类知识无法有效引入进行监督,机器偏见难以避免。还学习了神经网络每一层的作用。神经网络经历了”三起两落“。
2、视频学习问题总结
刘少愉:
1、对梯度消失那部分的反相传播公式不是很理解
2、单层感知器部分非线性激活函数逻辑或+1的权重为10,为什么最终的激活函数里是-10?
郭隆鑫:
1、在三层前馈神经网络的BP算法的讲解中,+1、x1、x2三个箭头的是如何指向同一个z1的,在w与b固定的情况下,不应该是每个x对应唯一的z值?
程陆瑶:三层前馈神经网络的BP算法还有一些不理解
金子懿:对误差反向传播不是很理解。
曹舟雯:
(1)神经网络的参数学习中的误差反向传播问题
(2)梯度消失的产生
(3)受限玻尔兹曼机的模型求解问题
杨雯:
1:如何判断使用专家系统与机器学习的情况
2:三层前馈神经网络的BP算法
3、pytorch基础练习
刘少愉:
1、 定义数据:tensor
2、 定义操作
郭隆鑫:
1、定义数据
2、定义操作
程陆瑶:
关键步骤截图:
定义数据:
全为1的多维数组:
创建空张量:
随机初始化张量
创建全0张量:
基于现有tensor创建新的tensor:
利用原tensor但是重新定义dtype
创建m,并求其元素数量和对应位置的数
返回第一列全部元素:
返回第0行全部元素:
创建tensor为1到5:
求m和v矩阵乘积,但因为数据溢出,需要将m和v由long型改为float型:
m第0行与v矩阵乘积:
m和随机数组相加:
将m转置:
金子懿:
曹舟雯:
Tensor支持各种各样类型的数据,包括:torch.float32, torch.float64等等,在这里我们练习了很多种创建Tensor的方法,除此之外的方法我们同样也可以在网上查询得到。并且我们还练习了Tensor的一些计算方法,在计算时要注意Tensor的类型,必要时进行类型转换,否则容易出错。
杨雯:
4、螺旋数据分类
刘少愉:
郭隆鑫:
1、构建线性模型分类
2、构建两层神经网络分类
程陆瑶:
金子懿:
曹舟雯:
杨雯:
5、代码练习遇到的问题及总结
刘少愉:对pytorch的基本语法和操作有了一定能够了解,学习了Tensor的基本操作,以及螺旋数据分类的原理和实际代码操作,并且解决了float和long的类型转换问题。
郭隆鑫:在使用@时出现了溢出的情况,
查找发现是因为float得到了long
经修改
问题得到解决。
学会了pytorch的基本写法,有了一些基本了解,大概知道了运行平台的使用方法
程陆瑶:通过对于相应代码的练习,对于PyTorch有了一定的学习,对于数据的定义和Tensor的用法以及Tensor相关的运算方法有了一定的了解,并且对于Colab的使用有了一定的掌握,对螺旋数据分类有了基本了解。在代码训练时,在执行m@v时,发现其为long型会有溢出,需要改为float,然后通过一定的学习,发现可以用m=m.float()和v=v.float()来进行转换,通过本次代码练习,我感觉收获颇多。
金子懿:pytorch基础练习里面有一部分代码运行错误将m,v变为float型就能正确运行了。通过这两个练习我了解了创建tensor的各种方法以及用tensor来进行的基本运算,布尔运算,线性运算。学习了如何解决sprial classification问题。学习到每一次反向传播前都要清除梯度。通过练习认识到线性模型无法将一个复杂的数据分布准确分类,在两层神经网络中加入ReLU激活函数之后准确率得到了显著提高。
曹舟雯:通过这次练习,我基本了解了PyTorch的一些语法和谷歌的Colab平台的使用方法。在本次练习中我们需要下载绘图函数,引入重要的库并且初始化重要参数,接下来分别构建线性模型分类和两层神经网络分类。要注意在PyTorch中反向传播前要手动将梯度清零,因为这样便于梯度累加等操作。并且对于复杂的神经分布,线性模型一般难以准确分类。
杨雯:机器学习可以从模型、策略、算法三方面来学习。