吴恩达深度学习课程笔记

来源:互联网 发布:js导出excel兼容ie 编辑:程序博客网 时间:2024/05/16 08:48

1,二分类

规范化符号

用x表示输出,y表示输出,一般x是矩阵形式xi=[xi1,xi2,......xin]^T ,按照列的形式表示。

训练集的规模使用m表示,表示里面有m个训练样本,形式为:{(x1,y1),(x2,y2),......(xm,ym)};使用m_train表示训练集,m_test表示测试集。

神经网络中训练集的表示方式使用矩阵的的方法:

X=[x1,x2.........xm]矩阵的X.shape为nx,m;其中nx表示x1中包含的输入特征数量,m表示样本的数量,Y=[y1,y2,......ym],则Y.shape=1,m

在其他算法中有时会使用x.T转置的方式,即X.shape为m,nx。

2、logistics regression

2.1 模型

对输入的x进行预测,得到y^,并且使用y^表示概率p(y=1|x),具体的意义就是当给一个输入x时,通过模型得到对应的输入x所得为y=1的概率,y^表示的是一个条件概率。

input:x是一个n_x维向量,x∈R^(nx),

logistics regression的回归参数:w,也是一个n_x维向量,m∈R^(nx);偏置b是一个实数,b∈R

output:y^=w^t*x+b 这是一个线性模型,但不适合进行二分类模型,由于y^表示的是一个概率,因此y^∈[0,1],因此进行线性模型改造y^=sigmoid(w^t*x+b)。

对于该函数,如果w^t*x+b非常大或者非常小,sigmoid(w^t*x+b)趋近于1或0并且所得曲线的斜率趋近于0,不利于进行梯度下降法训练,这也是sigmoid的一个弊端。

在进行logistics regression训练时,就是要得到参数w和b

2.2 定义损失函数,训练模型


在logistics regression模型中,使用误差平方作为损失函数会导致,模型非凸,会使得梯度下降法找不全局最优解。

在logistics regression中定义损失函数为loss function:L(y^,y)=-(y*log(y^)+(1-y)*(log(1-y^)))

该方法是通过极大似然估计的方法得到的。

成本函数 cost function :J(w,b)=∑L(y^,y)

损失函数针对单个样本而言,成本函数针对的是整个训练集,成本函数衡量了参数w,b在训练集上的效果。

在进行模型训练时,目的是得到使成本函数尽可能小的参数w,b。

对于logistics regression可以看做是一个小的神经网络,可以当做是输入层到一个隐层之间的连接。

2.2.3 梯度下降法 gradient decent algorithm

选择上述的成本函数,是为了使得J(w,b)是一个凸函数。

首先对参数w,b进行初始化,对于logistics regression 来说任何初始化方法都能得到全局最优解。梯度下降法就是从初始点开始每次向成本函数最小的点前进一步,梯度下降法运行一次,所得点选择梯度下降最快的方向,经过若干次迭代,得到接近于全局最优解的点,并得到进行不断迭代的参数w,b。

更新规则:w:=w-α*(dJ(w,b)/dw) α表示学习率learning rate。

              b:=b-α*(dJ(w,b)/db)

如果成本函数含有两个及以上的变量使用偏导符号の,如果函数含有一个变量直接使用求导符号d。表达的意思是一样的。

2.2.4 向量化

在code过程中,最好使用向量化的方式

对于整个样本集,含有m个样本,对于y^=w^t*x+b变量为w^t,b均含有m个值,则可有使用y=numpy.dot(w,t)+b计算向量内积的方式进行计算,会提升代码运行速率。

此外还涉及到矩阵的加法减法等numpy的操作:

一个一维矩阵与一个常数进行加减乘除运算,Python中会自动将常数扩展成相同的维度

3.logistics regression 向神经网络的延伸

和logisti regression类似,ANN神经网络是在logistics regression基础上不断叠加

对于logistics regression 一个样本的不同特征值进行权重及偏置计算,得到一个结果,该结果进行激活函数的运算得到输出值,并且该输出结果表示的是概率,



阅读全文
0 0
原创粉丝点击