学习总结

来源:互联网 发布:mysql数据库默认密码 编辑:程序博客网 时间:2024/05/22 12:54

1机器学习


1.1 逻辑回归:

分析因变量y取某个值的概率与自变量x的关系,0<y<1,可以理解为实际上是寻找一个以x为变量的函数;

Logistic回归为概率型非线性回归模型,是研究二分类观察结果与一些影响因素之间关系的一种多

分析方法。通常的问题是,研究某些因素条件下某个结果是否发生,比如医学中根据病人的一些症状来判断它是

否患某种病。

 

在讲解Logistic回归理论之前,我们先从LR分类器说起。LR分类器,即Logistic Regression Classifier。

在分类情形下,经过学习后的LR分类器是一组权值,当测试样本的数据输入时,这组权值与测试数据按

线性加和得到

 

           

 

这里是每个样本的个特征。

之后按照sigmoid函数的形式求出

 

           

 

由于sigmoid函数的定义域为,值域为,因此最基本的LR分类器适合对两类目标进行分类。

所以Logistic回归最关键的问题就是研究如何求得这组权值。

求权值可以使用梯度下降法、或极大似然估计来做。


1.2 梯度下降法


但是又一个问题引出了,虽然给定一个函数,我们能够根据cost function知道这个函数拟合的好不好,但是毕竟函数有这么多,总不可能一个一个试吧?
因此我们引出了梯度下降:能够找出cost function函数的最小值;
梯度下降原理:将函数比作一座山,我们站在某个山坡上,往四周看,从哪个方向向下走一小步,能够下降的最快;

当然解决问题的方法有很多,梯度下降只是其中一个,还有一种方法叫Normal Equation;

方法
(1)先确定向下一步的步伐大小,我们称为Learning rate;
(2)任意给定一个初始值:
(3)确定一个向下的方向,并向下走预先规定的步伐,并更新
(4)当下降的高度小于某个定义的值,则停止下降;

算法



特点
(1)初始点不同,获得的最小值也不同,因此梯度下降求得的只是局部最小值;
(2)越接近最小值时,下降速度越慢;

问题:如果初始值就在local minimum的位置,则会如何变化?
答:因为已经在local minimum位置,所以derivative 肯定是0,因此不会变化;

如果取到一个正确的值,则cost function应该越来越小;
问题:怎么取值?
答:随时观察值,如果cost function变小了,则ok,反之,则再取一个更小的值;

下图就详细的说明了梯度下降的过程:

 
从上面的图可以看出:初始点不同,获得的最小值也不同,因此梯度下降求得的只是局部最小值;

注意:下降的步伐大小非常重要,因为如果太小,则找到函数最小值的速度就很慢,如果太大,则可能会出现overshoot the minimum的现象;

下图就是overshoot minimum现象:

 
如果Learning rate取值后发现J function 增长了,则需要减小Learning rate的值;


Integrating with Gradient Descent & Linear Regression


梯度下降能够求出一个函数的最小值;
线性回归需要求出,使得cost function的最小;

因此我们能够对cost function运用梯度下降,即将梯度下降和线性回归进行整合,如下图所示:



梯度下降是通过不停的迭代,而我们比较关注迭代的次数,因为这关系到梯度下降的执行速度,为了减少迭代次数,因此引入了Feature Scaling;


Feature Scaling


此种方法应用于梯度下降,为了加快梯度下降的执行速度
思想:将各个feature的值标准化,使得取值范围大致都在-1<=x<=1之间;

常用的方法是Mean Normalization,即
 
或者:
[X-mean(X)]/std(X);

举个实际的例子,

有两个Feature:
(1)size,取值范围0~2000;
(2)#bedroom,取值范围0~5;
则通过feature scaling后,
    


练习题

我们想要通过期中开始成绩预测期末考试成绩,我们希望得到的方程为:

给定以下训练集:

midterm exam(midterm exam)2final exam89792196725184749488368769476178
我们想对(midterm exam)^2进行feature scaling,则经过feature scaling后的值为多少?

max = 8836,min=4761,mean=6675.5,则x=(4761-6675.5)/(8836-4761) = -0.47;


多变量线性回归


前面我们只介绍了单变量的线性回归,即只有一个输入变量,现实世界不可能这么简单,因此此处我们要介绍多变量的线性回归;

举个例子:
房价其实由很多因素决定,比如size、number of bedrooms、number of floors、age of home等,这里我们假设房价由4个因素决定,如下图所示:



我们前面定义过单变量线性回归的模型:


 
这里我们可以定义出多变量线性回归的模型:



Cost function如下:
 

如果我们要用梯度下降解决多变量的线性回归,则我们还是可以用传统的梯度下降算法进行计算:



 

总练习题:

 


1.我们想要根据一个学生第一年的成绩预测第二年的成绩,x为第一年得到A的数量,y为第二年得到A的数量,给定以下数据集:

xy34214301
(1)训练集的个数是多少?  4个;
(2)J(0,1)的结果是多少?
J(0,1) = 1/(2*4)*[(3-4)^2+(2-1)^2+(4-3)^2+(0-1)^2] = 1/8*(1+1+1+1) = 1/2 = 0.5;

我们也可以通过vectorization的方法快速算出J(0,1):



1.3 神经网络各层权重、偏差的大小确定方法


每层神经元个数n[i]由神经网络构架者自行确定,每层参数的个数由该层输入的个数n[i-1],及本层神经元数目n[i]共同确定,权重矩阵大小为[n[i],n[i-1]],偏差b向量大小为[n[i],1].

当输入样本为n时,注意numpy库的传播作用。


深层神经网络其实就是包含更多的隐藏层神经网络。如下图所示,分别列举了逻辑回归、1个隐藏层的神经网络、2个隐藏层的神经网络和5个隐藏层的神经网络它们的模型结构。

这里写图片描述

命名规则上,一般只参考隐藏层个数和输出层。例如,上图中的逻辑回归又叫1 layer NN,1个隐藏层的神经网络叫做2 layer NN,2个隐藏层的神经网络叫做3 layer NN,以此类推。如果是L-layer NN,则包含了L-1个隐藏层,最后的L层是输出层。

下面以一个4层神经网络为例来介绍关于神经网络的一些标记写法。如下图所示,首先,总层数用L表示,L=4。输入层是第0层,输出层是第L层。n[l]表示第l层包含的单元个数,l=0,1,,L。这个模型中,n[0]=nx=3,表示三个输入特征x1,x2,x3n[1]=5n[2]=5n[3]=3n[4]=n[L]=1。第l层的激活函数输出用a[l]表示,a[l]=g[l](z[l])W[l]表示第l层的权重,用于计算z[l]。另外,我们把输入x记为a[0],把输出层y^记为a[L]

注意,a[l]W[l]中的上标l都是从1开始的,l=1,,L

这里写图片描述

2. Forward Propagation in a Deep Network

接下来,我们来推导一下深层神经网络的正向传播过程。仍以上面讲过的4层神经网络为例,对于单个样本:

第1层,l=1

z[1]=W[1]x+b[1]=W[1]a[0]+b[1]

a[1]=g[1](z[1])

第2层,l=2

z[2]=W[2]a[1]+b[2]

a[2]=g[2](z[2])

第3层,l=3

z[3]=W[3]a[2]+b[3]

a[3]=g[3](z[3])

第4层,l=4

z[4]=W[4]a[3]+b[4]

a[4]=g[4](z[4])

如果有m个训练样本,其向量化矩阵形式为:

第1层,l=1

Z[1]=W[1]X+b[1]=W[1]A[0]+b[1]

A[1]=g[1](Z[1])

第2层,l=2

Z[2]=W[2]A[1]+b[2]

A[2]=g[2](Z[2])

第3层,l=3

Z[3]=W[3]A[2]+b[3]

A[3]=g[3](Z[3])

第4层,l=4

Z[4]=W[4]A[3]+b[4]

A[4]=g[4](Z[4])

综上所述,对于第l层,其正向传播过程的Z[l]A[l]可以表示为:

Z[l]=W[l]A[l1]+b[l]

A[l]=g[l](Z[l])

其中l=1,,L

3. Getting your matrix dimensions right

对于单个训练样本,输入x的维度是(n[0],1)神经网络的参数W[l]b[l]的维度分别是:

W[l]: (n[l],n[l1])

b[l]: (n[l],1)

其中,l=1,,Ln[l]n[l1]分别表示第l层和l1层的所含单元个数。n[0]=nx,表示输入层特征数目。

顺便提一下,反向传播过程中的dW[l]db[l]的维度分别是:

dW[l]: (n[l],n[l1])

db[l]: (n[l],1)

注意到,W[l]dW[l]维度相同,b[l]db[l]维度相同。这很容易理解。

正向传播过程中的z[l]a[l]的维度分别是:

z[l]: (n[l],1)

a[l]: (n[l],1)

z[l]a[l]的维度是一样的,且dz[l]da[l]的维度均与z[l]a[l]的维度一致。

对于m个训练样本,输入矩阵X的维度是(n[0],m)。需要注意的是W[l]b[l]的维度与只有单个样本是一致的:

W[l]: (n[l],n[l1])

b[l]: (n[l],1)

只不过在运算Z[l]=W[l]A[l1]+b[l]中,b[l]会被当成(n[l],m)矩阵进行运算,这是因为python的广播性质,且b[l]每一列向量都是一样的。dW[l]db[l]的维度分别与W[l]b[l]的相同。

但是,Z[l]A[l]的维度发生了变化:

Z[l]: (n[l],m)

A[l]: (n[l],m)

dZ[l]dA[l]的维度分别与Z[l]A[l]的相同。




1.4 神经网络的构建方法

1、确定神经网络的结构

2、初始化参数  各层权重及偏差

3、循环

      a.计算前向传递函数

      b.计算损失函数

      c.计算反向传递函数,获得各层dw,db;

      d.更新参数


1.5  神经网络超参数调试

学习率   迭代次数    隐藏层层数   各层隐藏单元数    激活函数等都是超参数


调试思路:

1、参考论文中给出的数据,通过实验验证其有效性

未全待续,,,,,,,,



1.6 方差与偏差问题

方差衡量训练集与开发集训练准确度之间的差值

偏差描述训练集的准确度 ,准确度越高,偏差越小

(可避免偏差,是人类分类的误差与机器分类误差之差的衡量,可用其对神经网络是否还有提升空间进行分析)


对于高偏差的情况:通过更大的神经网络来训练、以解决高偏差问题、或使用更好的算法

高方差问题:通过正则化方法解决高方差   (dropout 、 L2、) 、使用更大的训练集














原创粉丝点击