MB神经元模型:
从大脑的神经元抽象得到的模型的数学表示
感知机模型(Perceptron单层神经模型)
由于MB神经元不具有学习的功能,产生了感知机模型,感知机模型,是在MB神经元的基础上,添加了损失函数(误差反向传播),如下图:
双层神经模型(BP)
感知机(单层神经元模型)虽然解决了学习问题,但是没有XOR的解决能力,故而有了双层感知机模型:
多层神经模型
多个感知机的叠加,用于处理比较复杂业务
机器学习三要素:
模型 = 数据 +算法 +策略
策略:什么样的模型是好的模型?损失函数。损失函数值越低越好
算法:通过模型中的未知参数,实现最优参数的高效查找
模型----寻找规律
机器学习中,首先要考虑学习什么样的模型,在监督学习中,如模型(y=ax+b)就是要学习的内容
模型通常分为决策函数或者条件概率分布
由决策函数表示的模型为非概率模型,由条件概率分布表示的模型为概率模型
策略----模型好不好
评估模型的好坏,使用损失函数来进行度量,模型给出的值与实际真实值之间存在的差别
损失函数度量模型一次预测的好坏,跟损失函数值有关,值越小,模型越好
常用的损失函数有下面几个:
算法机器学习的算法就是求解最优化问题的算法。如果最优化问题有显示的解析解,这个最优化问题就比较简单,但通常这个解析解不存在,所以就需要利用数值计算的方法来求解。机器学习可以利用已有的最优化算法,也可以开发自己的最优化算法
泛化:模型具有好的泛化能力是指:模型不但在训练数据集上表现效果好,对于新数据的适应能力效果也好
泛化能力的表现:
欠拟合:模型在训练集和新数据集的表现都不好
原因:模型过于简单。
出现场景:一般出现在学习模型刚刚开始训练的时候
解决方法:添加其他特征项、添加多项式特征(比如将一次方改为平方)、减少正则化参数
过拟合:模型在训练集上表现好,在新数据集上表现差
原因:模型太复杂、数据不纯、训练数据太少
出现场景:过度优化
解决方法:重新清洗数据、增大训练数据量、采用正则化惩项、采用dropout方法(删除一个神经元)
如何设计一个神经网络结构?
1、确定神将网络层数
1)输入层和输出层仅一层,隐藏层有多层
2、确定每层单元的个数
1)输入层单元个数根据输入数据特征的个数确定
2)输出层单元格数根据目标分类的个数确定
3)隐藏的单元个数如何确定?
=》隐层个数设定没有明确规则,根据准确度来进行判断和改进
=》留一法和交叉验证法(用于验证)
如何构建一个机器学习系统
1.数据 2.业务
数据探索
特征工程
数据集切分为训练集和测试集
训练集+算法-->MODEL
通过测试集X灌入算法中得到一个预测值Y1
形成误差|Y-Y1|
模型训练过程
评价指标
模型的选择----奥卡姆剃刀原则
给定两个泛化误差相同的模型,应选择教为简单的模型,这就是奥卡姆剃刀原则
机器学习成熟库
Spark的MLLIB 基于JAVA的WEKA 基于Python的sklearn
tensorflow库---深度学习(CNN DNN RNN)
Keras库--基于tensorflow封装的库、MXnet、Caffe等