机器学习理论基础—神经网络公式学习
M-P神经元
M-P神经元(一个用来模拟生物行为的数学模型):接收n个输入(通常是来自其他神经
元),并给各个输入赋予权重计算加权和,然后和自身特有的阈值进行比较 (作减法),最后经过激活函数(模拟“抑制"和“激活")处理得到输出(通常是给下一个神经元)
通过对公式形式的观察可以发现M-p神经元与线性回归模型之间有密切的联系。
单个M-P神经元:感知机(sgn[符号函数]作激活函数)、对数几率回归(sigmoid作激活函数)
多个M-P神经元:神经网络
感知机模型
感知机模型:激活函数为sgn(阶跃函数)的神经元(是一个用来分类的模型)
从几何的角度来说,感知机解决的是线性可分的数据集T,感知机的学习目标是求得能对数据集T完全正确划分的超平面。
n维空间的超平面(WtX+b=0)
- 超平面方程不唯一
- 法向量w垂直超平面
- w和b唯一确定一个超平面
- 法向量指向的一半空间为正空间,另一半为负空间
感知机的学习策略
感知机学习策略:随机初始化w,b,将全体训练样本代入模型找出误分类样本,假设此时误分类样本集合为M包含于T,对任意一个误分类样本(x,y)∈M来说,当wtx-θ≥0时,模型输出值为y=1,样本真实标记为y=0;反之,当wtx-θ< 0时,模型输出值为 = 0,样本真实标记为y = 1。综合两种情形可知,以下公式恒成立。
损失函数
所以若给定数据集T其损失函数可以定义为:
显然,此损失函数是非负的。如果没有误分类点,损失函数值是0。而且,误分类点越少,误分类点离超平面越近,损失函数值就越小。
之后极小化损失函数并对其进行优化。首先给定一个数据集
x的值属于实数空间,y的值属于0或1,在求参数w和θ的过程中要极小化损失函数的解
若将阈值θ看做是一个固定输入为-1的哑节点,即
可以将求解的问题简化为:
感知机学习算法
使用随机梯度下降的方法来进行实现
感知机学习算法:当误分类样本集合M固定时,那么可以求得损失函数L(w)的梯度为:
感知机的学习算法具体采用的是随机梯度下降法,也就是极小化过程中不是一次使M中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。所以权重w的更新公式为:
其中n代表的是学习率
神经网络
由于像感知机这种单个神经元分类能力有限,只能分类线性可分的数据集,对于线性不可分的数据集则无能为力,但是多个神经元构成的神经网络能够分类线性不可分的数据集(西瓜书上异或问题的那个例子),且有理论证明(通用近似定理):只需一个包含足够多神经元的隐层,多层前馈网络(最经典的神经网络之一)就能以任意精度逼近任意复杂度的连续函数。因此,神经网络既能做回归,也能做分类,而且不需要复杂的特征工程。
多层前馈网络
多层前馈网络:每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。(隐层阈值rh,输出层國值θ)
将神经网络(记为NN)看作一个特征加工函数
(单输出)回归:后面接一个R’→R的神经元,例如:没有激活函数的神经元
分类:后面接一个R’→[0,1]的神经元,例如:激活函数为sigmoid函数的神经元。
因此神经网络可以用在分类与回归任务上,做分类时套用对数几率回归而做回归时需要套用的是,线性回归的模型。
在模型训练过程中,神经网络(NN)自动学习提取有用的特征,因此,机器学习向“全自动数据分析”又前进了一步。
假设多层前馈网络中的激活函数全为sigmoid函数,且当前要完成的任务为一个(多输出)回归任务,因此损失函数可以采用均方误差(分类任务则用交叉熵)该单个样本的均方误差(损失)为
BP误差逆传播算法
误差逆传播算法(BP算法):基于随机梯度下降的参数更新算法
其中只需推导出这个损失函数E关于参数w的一阶偏导数(梯度)即可(链式求导)。值得一提的是,由于NN(εc)通常是极其其复杂的非凸函数,不具备像凸函数这种良好的数学性质,因此随机梯度下降不能保证一定能走到全局最小值点,更多情况下走到的都是局部极小值点。