1.神经网络与深度学习的发展历程:
2.神经网络与大脑神经元
神经网络的起源、结构、个体间的信息交互方式是以我们大脑神经元为模板的,我们的大脑神经元如下所示:
3.神经网络源头--M-P神经元模型
M-P 模型问题:
• 模型不能训练,也就是没有学习的过程:
可以说不能称作是机器学习,上图中的w0,w1,w2都是预设好的定死的,不能够通过
学习来调整。
• 在机器学习中,不仅有模型,还有一个学习的概念:
怎么样给一个模型输入不同的样本让这个模型最后适应你的数据,最后学习到适合你当
前数据的参数,比如w0,w1等
4.可学习的模型-感知机模型
感知机(perceptron)是处理二分类的线性分类模型。感知机旨在求出将训练数据进行线性划分的分离超平面,属于判别模型,所以,导入误分类的损失函数,利用梯度下降法极小化损失函数,求得感知机模型,感知机预测是用学习得到的感知机模型对新输入的数据进行分类。感知机在1957年由Rosenblatt提出,是神经网络和支持向量机的基础。
由输入空间到输出空间的如下函数:
f(x)=sign(w⋅x+b)
称为感知机。其中w为权重,b为偏置,sign为符号函数:
sign(x)={+1,x≥0−1,x<0
所以,感知机输出是{+1,-1}.
几何解释:
线性方程
wx+b=0
对应特征空间的一个超平面S,其中w为该平面的法向量,b为超平面的截距。这个超平面将特征空间分为两个部分,位于两部分的点分别被分为正负两类,因此,超平面S被称为分离超平面。
有了感知机模型以后学术界就觉得感知机是实现人工智能的方式。但是随着研究的进展,大家发现感知机不能学习一个XOR异或问题
5.解决异或问题:
两层感知机解决异或问题
6.神经网络简单架构:
6.1确定神经网络层数
• (1)输入层和输出层仅有一层,隐层有多层
6.2确定每层单元的个数
• (1)输入层单元个数根据输入数据个数定
• (2)输出层单元个数根据目标分类个数确定
• (3)隐层的单元个数如何确定?
=>隐层个数设定没有明确规则,根据准确度来进行判断和改进。
=>留一法和交叉验证法
7.神经网络简单总结
最开始出现了MP模型,但是这个时候并不具有深度学习的特征,只是简单的模拟神经元架构而已,之后出现了感知机模型具有深度学习特征,但是出现了异或的问题,我们解决异或的手段是两层神经元网络架构BP,这个模型也是有缺点的,它的提取能力是有限的,所以目前市场上出现了卷积层神经网络(CNN)与循环层神经网络(RNN),但是这两个模型都是在两层架构BP的基础上实现的。
8.神经网络与深度学习的应用领域
目前市场上神经网络与深度学习的重点引用领域在人脸识别(隔代遗传人脸识别、狗脸识别)无人驾驶(涉及语音识别、图像识别)目标检测和追踪。
9.机器学习三要素
9.1模型 :模型的定义在于寻找规律,在机器学习中首先要确定什么样的模型,模型通常分为决策函数与条件概率分布,
9.2策略:同来评估模型的好坏,使用损失函数来进行度量,常用的损失函数有:
9.3算法
机器学习的算法就是求解最优化问题的算法,优化问题上有显示的解析解,这个优化就比较简单,但是一般时候这个解析解不存在,就需要利用数值计算的方法求解,机器学习可以利用已经有的最优化算法,也可以开发独自的最优化算法。
10.机器学习系统的构建
不同模型有不同的拟合效果,我们要选择最适合的:
第三个值泛化性最好的,也是最优先选择的模型,一与二都是出于欠拟合状态,四出于过拟合状态。
这里有一个模型泛化的说法:
泛化:模型具有好的泛化能力指的是:模型不但在训练数据集上表现的效果很好,对于新数据的适应能力也有很好的效果
泛化能力的表现:过拟合和欠拟合
过拟合overfitting:模型在训练数据上表现良好,在未知数据或者测试集上表现差。
产生的原因:可能是模型太过于复杂、数据不纯、训练数据太少等造成。
出现的场景:当模型优化到一定程度,就会出现过拟合的情况。
解决办法:(1)重新清洗数据
(2)增大训练的数据量
(3)采用正则化方法对参数施加惩罚:常用的有L1正则和L2正则
(4)采用dropout方法,即采用随机采样的方法训练模型,常用于神经网络算法中。
欠拟合underfitting:在训练数据和未知数据上表现都很差
产生的原因:模型过于简单
出现的场景:欠拟合一般出现在机器学习模型刚刚训练的时候,也就是说一开始我们的模型往往是欠拟合也正是因为如此才有了优化的空间,我们通过不断优化调整算法来使得模型的表达能力更强
解决办法:(1)添加其他特征项:因为特征项不够而导致欠拟合,可以添加其他特征项来很好的解决。
(2)添加多项式特征:可以在线性模型中通过添加二次或三次项使得模型的泛化能力更强。
(3)减少正则化参数,正则化的目的是用来防止过拟合的,但是现在模型出现了欠拟合,需要减少正则化参数。
11 模型选择的原则-奥卡姆剃刀原则
给定两个具有相同泛化误差的模型,较简单的模型比较复杂的模型更可取。奥卡姆剃刀原则是模型选择的基本而且重要的原则。
12 机器学习算法层面目前的情况
近几年随着众多强大开源库的出现,我们不用像以前那样用编程语言一步一步的去实现机器学习的算法,我们使用成熟的机器学习库里面的算法来完成我们要的功能,我们只需要了解各个模型的参数如何调整,或者算法应用到实际业务中的一些简单改动即可。
13 机器学习库(目前常用的、简单介绍)
Scikit-learn:简单高效的数据挖掘和数据分析工具可供大家使用,可在各种环境中重复使用建立在NumPy,SciPy和matplotlib上开源,可商业使用-获取BSD许可证
Scikit-learn算法选择
SparkMLLIB:MLlib是Spark机器学习库
Weka
WEKA的全名是怀卡托智能分析环境(Waikato Environment forKnowledge Analysis),同时weka也是新西兰的一种鸟名,而WEKA的主要开发者来自新西兰。
WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。
如果想自己实现数据挖掘算法的话,可以看一看weka的接口文档。在weka中集成自己的算法甚至借鉴它的方法自己实现可视化工具并不是件很困难的事情。