MindSpore学习笔记
链接整理
Attention Is All You Need
MindSpore官网文档
MindSpore社区论坛
MindSPore Gitee网址
MindSpore 大模型平台
MindSpore B站教程
Transformer 动画讲解
机器学习
机器学习是一类算法的总称,这些算法希望可以从大量的数据中学习得出最优模型,并利用最优模型对未知的新数据进行预测与分析,这种模型适用于新数据的能力被称为泛化能力对数据进行学习的目的就是获得泛化能力
问题:计算机程序如何随着经验积累自动提高性能,在不直接针对问题进行编程的情况下,赋予计算机学习能力的一个研究领域
机器学习基本概念
- 简洁定义:对于某类任务T与性能度量P,一个计算机程序被认为可以从经验E中学习是指,通过经验E改进后,它在任务T上由性能度量P衡量的性能有所提升
- 任务T:分类、回归、转录
- 度量P:准确率、错误率、概率对数平均值
假设我们要收集关于苹果的数据,以便让机器进行归纳学习,收集到的有限的数据和合集成为数据集(Data Set),数据集中每个数据子集可称为样本(Sample)或示例(Instance),每个样本中一般包含对象的特征(Feature)信息和标签(Lable)信息
- 形容对象表现的事项成为属性或特征,例如:苹果的色泽、大小、形状等
- 属性上的取值成为属性值,例如黄绿、橙红
- 标签则为预测的结果信息,即可以是离散值也可以是连续值,例如甜、不甜,或者苹果的水分含量
- 训练集(Training Set):训练集中的数据被用来学习模型,即学习关于数据的某种潜在的规律
- 测试集(Test Set):测试集中的数据用来检验模型的好坏,即评判学习得出的规律与真实规律之间的差异
- 属性构成的空间成为属性空间(Attribute Space) 或样本空间(Sample Space)
机器学习的主要任务:分类,回归,聚类
- 分类是解决数据属于哪一类的问题,预测的目标是离散值
- 回归问题是根据输入预测出一个数值,预测的目标是连续值
- 聚类任务则可以根据数据样本上抽取的特征,让让本抱团,例如用户群体划分等
经典机器学习方法:线性回归、逻辑回归、决策树
线性回归(Linear Regression)
- 目标值预期是输入变量的线性组合
- 线性回归是利用数理统计中的回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法
- 线性回归就是选择一条线性函数来很好的拟合已知数据并预测未知数据
- 线性回归通常用于预测输入和输出之间的关系
- 线性回归可以分为一元线性回归和多元线性回归,其中一元线性回归只包含一个自变量,而多元线性回归包含两个或两个以上的自变量
逻辑回归
- 逻辑回归是一种分类算法,其预测结果是离散的分类,逻辑回归是在线性回归的基础上增加了一个sigmoid函数
- 逻辑回归的优点
- 直接对分类的概率建模,无需实现假设数据分布,从而避免了假设分布不准确带来的问题
- 不仅可以预测出类别,还能得到该预测的概率,这对一些利用概率辅助决策的任务很有用
- 对数几率函数是任意阶可导的凸函数,有许多数值优化算法都可以求出最优解
- 逻辑回归实际上是使用线性回归模型的预测值逼近分类任务真实标记的对数概率,其中事件的几率是指该事件发生的概率与不发生的概率之比
逻辑回归与线性回归都是一种广义线性模型(Generalized Linear Model)
决策树
监督学习的定义
给定有限样本,每个样本都有一组属性和一个类别,这些类别是事先确定的,那么通过学习得到一个分类器,这个分类器能够对新出现的对象给出正确分类在机器学习中,决策树是一个预测模型,它代表的是对象属性与对象值之间的一种映射关系
决策树模型呈树形结构,在分类问题中,表示基于特征对示例进行分类的过程
决策树由结点和有向边组成,结点有两种类型:内部结点和叶结点
内部节:一个特征或属性
叶节点:一个类决策树的优点
- 决策树易于理解和实现
- 对于决策树,数据的准备往往是简单或者不必要的
- 易于通过静态测试来对模型进行评测
决策树的缺点
- 对连续的字段比较难预测
- 对有时间顺序的数据,需要很多预处理的工作
- 当类别太多时,错误可能就会增加的比较快
- 没有考虑变量之间的相关性,每次筛选都只考虑一个变量
人工神经网络
生物神经网络
- 生物神经网络就是由突触连接的神经元形成的网络,网络内部的信息传递以神经元的电活动为基础,人脑能够实现的种种神奇而复杂的功能实际上就是生物神经网络的功能
- 模拟生物神经网络由简单的处理单元(神经元)组成的大规模并行分布式处理器
- 学习方式
- 有监督学习(SupervisedLearning)已知一组正确的输入输出结果的条件下,神经网络依据这些数据,调整并确定权值(误差校正学习)
- 强制学习,作为一种输入模式被提出的同时,一个适当的相应层神经元在外界作用下被迫动作,,不断强制使连接强度增加,并随着时间的推移,在没有外力作用下去分类(以上两种都包含Hebbian学习)。例如,机器人在没有人类指导的前提下通过试错来学习执行任务
- 无监督学习(UnsupervisedLearning),只有输入数据没有正确的输出结果情况下,确定权值
神经网络性能
- 稳定性:对于反馈神经网络而言,系统输出是动态的,如果把整个神经网络看成是一个控制系统,则该系统的输出最终是否收敛至一个稳定状态就反应了该网络的稳定性
- 鲁棒性:当网络的某些神经元或某些连接被破坏时,系统仍能够继续工作的能力
- 适应性:当外界环境(输入信号的统计特性)发生变化时,系统能够自适应地调整内部参数的能力,即网络的学习能力
人工神经网络的工作特点
- 利用神经元连接和连接强度来存储知识而非存储器
- 学习能力强,鲁棒性、容错性好
- 分布式存储与分布式信息处理
- 非编程、联想记忆、连接主义
- 应用范围极广,几乎可以囊括所有的计算技术
人工神经网络在信息处理领域的应用
- 模式分类与识别
- 图像
- 视频
- 语音分类
- 故障诊断
- 最优化
- 连续函数寻优
- 动态规划
- 数据挖掘
- 数据库技术
- 模式聚类
- 智能控制
- 工业模型
- 机器人导航
深度学习基本原理
计算机视觉 机器学习 机器翻译 自然语言处理
- 基本原理
深度学习采用的模型主要是神经网络模型,为了完成从输入到输出之间的映射变换,深度神经网络通过对数据集中的样本进行学习,再经过一系列数据变换来实现这种输入到目标的映射 - 深度神经网络中包含多个隐藏层,其中每层实现的特征变换由该层的权重值来决定,权重也被称为该层的参数
深度学习与传统神经网络
- 相同点:二者均采用分层结构,系统包括输入层、隐藏层(多层)、输出层组成的多层网络,只有相邻层结点之间有连接,同一层以及跨层结点之间相互无连接
- 不同点:采用不同的训练机制
- 神经网络:采用迭代算法来训练整个网络,随机设定初值,计算当前网络的输出,然后根据当前输出和样本真实标签之间的差去改变前面各层的参数,直到收敛
- 深度学习:如果对所有层同时训练,时间复杂度会太高,如果每次训练一层,偏差逐层传递会出现过拟合。因此深度学习整体上是一个分层训练机制
神经网络与深度学习并不等价,神经网络只是深度学习可以采用的众多模型中的其中一种
- 由于神经网络模型可以使用误差反向传播算法,从而可以比较好地求解权值问题,因此神经网络模型成为深度学习中主要采用的模型
深度学习模型
视觉感知任务
- 对于许多视觉感知任务而言,很难知道应该提取哪些特征。
- 例如:汽车检测,车轮易受到阴影、光源照射的影响等
- 深度学习的目标是分离出能解释观察数据的变差因素(特征),并通过这些较为简单的变差因素来表达更为复杂表示
- 开始通过传感器(CMOS),来获得数据,然后通过预处理、特征提取,特征选择,最后实现推理、预测或者识别等
深度卷积神经网络
- 卷积神经网络(Convolutional Neural Networks,CNN),是一类包含卷积计算且具有深度结构的前馈神经网络
- 基本的卷积神经网络的结构如图所示
| 输入层 | 卷积层 | 池化层 | 卷积层 | 池化层 | 全连接层 | 输出层 |
|---|
- 卷积过程:卷积神经网络中的特征提取过程,每个神经元的输入与前一层的局部感受野相连,并提取该局部的特征
卷积神经网络结构主要结构特性是局部连接,如果每个神经元只与上一层中的部分神经元相连接,就是一维卷积网络,将其由一维扩展到二维,就是卷积神经网络,另一个特点是权值共享
- 卷积神经网络的优点就在于局部连接和权值共享减少了神经网络需要训练的参数的个数,并且使用卷积来提取多维(d>2)空间特征
深度学习应用
深度学习开发框架
| Caffe | TensorFlow | MindSpore | PaddlePaddle |
|---|---|---|---|
| Theano | Torch | Marvin | ConvNetJs |
良好的框架具备关键特征:优化的性能、易于理解和编码、良好的社区支持、并行化的进程以及自动计算梯度
- Caffe:可以被用于图像分类、目标识别、图像分割等领域,同样也可用于处理非图像数据的分类、回归问题
- TensorFlow:是谷歌公司研发的第二代人工智能学习系统,已被用于语音识别、图像识别等多个领域
- TensorFlow使用灵活,不仅支持CNN、RNN和LSTM等深度学习算法,还支持一般机器学习算法的搭建
- TensorFlow支持分布式计算,可以同时在多GPU上进行训练,并能够在不同平台上自动运行模型,具备较高性能
- MindSpore:是华为公司研发的一种深度学习框架,2020年首发开源。华为希望通过这款完整的软件框架,实现一次性算子开发、一致的开发和调试体验、并以此帮助开发者实现一次开发,应用在所有设备上平滑迁移的能力
深度学习视觉应用
- 医学影响识别
- 人脸识别
手写数字识别讲解
深度学习的基本步骤包括
- 数据收集和预处理
- 构建模型架构
- 训练模型(调整参数以最小化损失函数)
- 验证和测试模型性能
- 调整和优化,部署应用
