第1周学习心得:深度学习和pytorch基础

目录

  • Part1 视频学习
    • 一、绪论
    • 二、神经网络基础
  • Part2 代码练习
    • 一、pytorch基础练习
    • 二、螺旋数据分类

Part1 视频学习

一、绪论

1、人工智能具有三个层面:计算智能、感知智能和认知智能。计算智能指计算机具有快速计算和记忆存储能力;感知智能指计算机对自然界的事物具有听说看认等感知能力(无人车,小度小度);认知智能指计算机具有逻辑推理、知识理解和决策能力(网络游戏AI)。

2、深度学习是机器学习的一个方法,机器学习是人工智能的一个方法。

3、知识工程或专家系统,指的是根据专家定义的知识和经验,进行推理和判断,从而模拟人类专家的决策过程来解决问题。特点是人工定义规则,如根据某调查问卷当中用户的作答来产生有意义的结论。其优点是结果容易解释,缺点是专家系统的构建费时费力,具有主观性。而机器学习由机器自动训练来产生决策过程。优点是效率大大提高,缺点是结果不易解释。在问题规模较小时,使用人工来解决问题即可,而问题规模较大时,若问题规则较简单,最好用专家系统实现;若问题规则较复杂,最好用机器学习实现。

4、计算机视觉是机器学习的一个应用领域。其可以进行的任务类型有人脸识别、图像分类、目标检测、图像搜索、图像分割、视频监控等。

5、机器学习的定义:计算机系统用经验提高自身性能。

6、机器学习的学习方法:构建模型,确定目标函数,求解目标函数。

7、从问题建模角度来看,机器学习分为监督学习、无监督学习、半监督学习和强化学习。强化学习的数据无标记,但对于不同输出有奖励惩罚机制。

8、从数据分布角度来看,机器学习模型分为参数模型和非参数模型:线性回归、感知机、k-means算参数模型,k近邻、SVM、决策树、随机森林算非参数模型。参数模型优点数据需求少,训练快速,缺点是复杂度有限;非参数模型优点对数据适应性强,缺点是数据需求大,容易过拟合。

9、从建模对象角度来看,分为生成模型和判别模型:生成模型先从数据中学习联合概率分布,然后用贝叶斯公式求条件分布;判别模型直接学习条件分布。

10、深度学习的“不能”:(1)容易被攻击;(2)模型复杂度高,难以纠错调试,(3)参数不透明,(4)对数据依赖性强;(5)对开放性推理问题无能为力;(6)人类知识无法进行有效监督,可能会出现偏见。

二、神经网络基础

1、神经网络由神经元组成。一个神经元包括n个上一层神经元的输入,n个上一层神经元的连接权重,自身阈值,激活函数。

2、激活函数的作用是解决非线性问题。

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

4、神经网络中,神经元的输入和权重可被看做矩阵的线性变换,激活函数可被看做非线性变换。

5、神经网络的深度对函数复杂度的贡献是指数增长的,宽度对函数复杂度的贡献是线性增长的。

6、神经网络的训练方法是误差反向传播。

7、梯度是一个向量,指多元函数的最大方向导数的方向和这个最大值。

8、深层神经网络具有梯度消失问题,因此三层神经网络是主流。

9、梯度消失的解决:逐层预训练,ReLU激活函数,辅助损失函数,批标准化。

Part2 代码练习

一、pytorch基础练习

1、pytorch中的数和矩阵都由“张量”数据类型表示,即torch.tensor类。数可以是整数、浮点数等。

2、用tensor来定义各种数据时,可以用torch类的预定义方法实现。

3、tensor和tensor之间可进行数字或矩阵运算,这些运算全部由方法来实现。一些方法以“运算符重载”的方式呈现,如矩阵加法由+表示,数量积由@表示等。

4、from matplotlib import pyplot as plt是画图时的常见操作,但matlabplotlib 只能显示numpy类型的数据,因此需要用tensor类的numpy()方法转换成numpy类型的变量,然后再画图即可。

5、学习Python库的真正方法是百度和各种博客,pytorch也不例外。

二、螺旋数据分类

1、解决 sprial classification 问题的网址报错404,无法打开。

2、需要打开colab的GPU环境。

3、样本的特征维度指的是单个样本特征向量的长度。共有3000个样本,每个样本的特征都可由一个长度为2的数组表示,因此特征矩阵X是3000*2的。

4、通过nn.Linear(2,100)和nn.Linear(100,3),创建了输入层-隐层-输出层的神经网络,输入层包含2个神经元,隐层包含100个神经元,输出层包含3个神经元。由输入层输入样本的特征,输出层3个神经元分别输出样本属于第0,1,2类的概率。

5、损失函数,通常命名为criterion,优化函数,通常命名为optimizer。

6、每一次反向传播之前都要把梯度清零。

7、加入ReLU激活层后,使得模型由线性变为非线性,因此能更好地拟合螺旋数据,从而显著提升模型性能。

你可能感兴趣的:(深度学习,pytorch)