神经网络原理
;
注:轴突会连接其它神经元,神经网络中,轴突端则会进入下一层神经元网络;
;
注:MP神经元模型中,输入的n维数据的线性组合的加和达到了一定强度,超过了阈值时,才会产生输出;
;
注:Logistic回归也是,即输入的线性组合加和,该和在sigmoid函数中大于阈值时,取1,即产生输出,否则为0,不产生输出;
;
注:Logistic回归中,当y=1的概率大于y=0的概率时(此时p(y=1|x,w) / p(y=0|x,w) > 1,即log(p(y=1|x,w) / p(y=0|x,w)) > 0),产生输出,当y=1的概率小于y=0时,输出0,视为没有输出;
;
注:最常用的激活函数是截断线性神经元(ReLU),该神经元当输入强度超过阈值后,输出的强度是线性的,不是固定值;ReLU的好处:1)可以解决sigmoid函数的梯度消失问题(sigmoid函数反向传播时,会越传越小,导致梯度消失);2)ReLU属于截断函数,可以产生稀疏的效果;
;
注:单层神经元网络模型(单层感知器),因决策面的形关,不能解决异或问题;两层感知器可以解决该问题;多层感知器随着拟合函数的不同,决策面可以是任何形状,但此时容易产生过拟合问题;
优化算法BP
多层感觉知机中,要求的参数也是输入的线性系数w(由输入数据训练);
(Multi-layer Perceptron, MLP)
;
注:输入—输出的示例中,V和W都是线性系数,g和h都是激活函数,X到Z是一层神经元网络,后面是另外一层;线性函数的截距项放在线性系数中,即图中的x0和z0;激活函数g和h原则上是可以不一样的,但通常做的时候会设置成一样的;
以下为参数计算,目标是在不考虑正则的情况下,使损失最小,以L2损失为例,先写出损失函数,然后求最小值;
;
注:中,因w在激活函数h中,所以得用复合函数求导法则链式求导,即对
的第i项Ji对w求导时,要先J对b求导,再乘以b对w求导,因
,因此b对w求导后等于
;
求导时,因
是b的函数,
函数中除
这一项外,其它的都视为常数(包括
11,
12.....其它包含
的项),求导的函数可视为(C - f(x))^2对x求导(C为常数),用复合函数求导法则得2(C-f(x))*(-1) = 2(f(x) - C);
(对V求导)
;
注:BP是back propagation(反向传播)的缩写;
;
http://blog.csdn.net/pennyliang/article/details/6695355
;
神经元网络由于每一层的节点数原则可以很多,层数原则上可以很深,且每一层的激活函数可以不一样,造就了其强大的表示能力,但也容易过拟合,因此神经网络一定要加上正则;
;
注:在神经元网络在校验集上的误差开始增大时,表示已经开始过拟合了;
因为上面示例的是两层神元网络,因此L2正则是V和W的相加,此处是假设V和W的权重是一样的,如果不一同的话,还需要单独立对V和W设置权重;
;
目前,浅层神经元网络能解决的问题,SVM基本都能解决,且没有神经元网络这么多缺点,因此,现在浅层的神经元网络基本没什么用;
;
注:机器学习的模型的流程基本都一样,首先根据任务需要确定一个损失函数,如回归时,用L2损失,分类时,用负log似然损失,确定损失函数后,损失函数加上正则项即为目标函数,有了目标函数后,要对目标函数求解最小值,即对参数求导(梯度),并让其等于0;
;
注:梯度消失带来的问题:靠近输出端的神经网络已经训练好了,但因梯度消失导致反传播的残差传不到靠近输入端,导致输入端的神经元网络的参数仍处于随机的状态,此时靠近输入端的神经元网络有和没有都是一样的效果;
Scikit learn中的MLP实现
;
注:activation参数表示激活函数类型,solver表示优化算法,默认值adam是随机梯度下降算法的一个改进版本;alpha表示正则参数;因为该类处理的是分类问题,因此损失函数只支持负log似然损失;
;
注:隐含层参数hidden_layer_sizes为(100,200)时表示有两个隐含层,且第一层的节点数为100,第二层的节点数为200;神经元网络中参数hidden_layer_sizes和正则系数alpha是影响性能最重要的两个参数;
;
主成分分析(PCA)
降维的原因:特征过于复杂,且有冗余,对特征进行降维后,可以带来存储、计算以及性能上的提升;
降维的方法有很多种,最常用的就是主成分分析(PCA);
;
注:数据包括的信息取决于数据的不确定性,即数据越随机,包含的信息越多,数据越确定,包含的信息越少;
;
;
注:arctan2.5是由上上图中分割线的夹角决定的;
;
;
注:降维是通过变换将矩阵重构,然后抛弃掉一些重要程度低的维度,最后用K个基来近似原来的;
;
注:序列的变换是可逆的,但重构值与原始值存在误差;
;
注:被置为0的维度是被扔掉掉的维度,一般为0的维度都要求该维度的幅值(数据变化幅度)很小;
注:降维和聚类一样,输入的数据里没有y值,都属于无监督学习,从数据提取的角度看,PCA可以看成是数据提取的一种方式;
;
注:以下为算法过程,PCA的基向量为矩阵的特征向量;
;
注:PCA最后保留的是协方差矩阵,进行特征值分解后,特征值最大的前K个值对应的特征向量;
;
注:PCA的目标函数为一个带约束条件的优化问题,x为原来D维原数据,重构值则为K个基向量的近似;
;
注:等于K+1到D的求和,
为单位阵,∑为协方差矩阵;
;
;
;
;
;
;
Scikit learn中的PCA实现
;
;
;
;
注:noise_variance_表示每一维方差的大小,components_表示主成分的方向;
;