机器学习斯坦福课后作业笔记解读.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
作业三题目解析:本作业主要有两个知识点:使用逻辑回归来实现多分类问题(one-vs-all)以及神经网络应用,应用场景是机器学习辨认手写数字0到9。多分类逻辑回归问题对于N分类问题(N=3),就需要N个假设函数(预测模型),也即需要N组模型参数θ(θ一般是一个向量)然后,对于每个样本实例,依次使用每个模型预测输出,选取输出值最大的那组模型所对应的预测结果作为最终结果。主要应用三个函数:predictOneVsAll.m,oneVsAll.m,lrCostFunction.m其中,oneVsAll中用优化函数fmincg来找到最优参数,结果是参数矩阵k*n+1,其中k是多分类的类别数,n则是特征数,此处包含了k个模型,每个模型有各自的参数,在预测函数中,[c,i] = max(sigmoid(X * all_theta), [], 2),把k个模型中结果最大的那个类别选中。c是每一行中最大的数,是一个列向量,i是每一行最大的那个数字的列位置此处的主要是要求用向量规则计算损失函数和损失函数的倒数公式,不再利用循环。损失函数(未应用正则化)如下:F:\mechine learning\ex3梯度函数如下在应用了正则化之后的函数如下,需要注意的是此时偏置参数不可计算在内,需要减去梯度函数同理,的求导要单独分开Matlab的max用法知识点加一:[a,b]=max(A, [], 2)函数中,a是每一行中最大的数,是一个列向量,b是每一行最大的那个数字的列位置神经网络的计算模型应用的具体语句,主要问题在于函数维数的准确把握,每一层都需要对输入进行一次添加偏置项,X是这样,a_super_2也是这样!作业四题目解析:首先用题目提供的参数在前向传播算法下实现多分类问题,其次需要用后向传播算法(BP神经网络)学习最优参数。前向传播算法的计算主要完成的函数包括损失函数的编写。其中,需要注意的是Θ(1) (Theta1)是一个25*401矩阵,行的数目为25,由隐藏层的单元个数决定(不包括bias unit),列的数目由输入特征数目决定(加上bias unit之后变成401)。同理,参数矩阵Θ(2) (Theta2)是一个10*26矩阵,行的数目由输出结果数目决定(0-9 共10种数字),列的数目由隐藏层数目决定(25个隐藏层的unit,再加上一个bias unit)。神经网络结构图如下:对应编程部分如下,神经网络层与层之间的关系要理清:损失函数的计算公式如下:其中需要注意的是,YK是一个重新构造的矩阵(m*k),只包括0和1.正则化部分可以参见作业三的思路,此处不详叙。BP神经网络算法(后向传播算法)BP算法是用来计算神经网络的代价函数的梯度。当我们的输入特征非常的多(上百万...),参数矩阵Θ非常大时,就需要大量地进行计算了,Ng在课程中也专门提到,当实际训练神经网络时,要记得关闭 Gradient Checking,BP算法,则解决了这个计算量过大的问题。从输出层开始,往输入层方向以“某种形式”的计算,得到一组我们所需要的梯度。偏导数可以由当前层神经元向量a(l)与下一层的误差向量δ(l+1)相乘得到,所以,当前层的误差向量δ(l)可以由下一层的误差向量δ(l+1)与权重矩阵Θ的乘积得到,也就是可以从后往前逐层计算误差向量(这就是后向传播的来源),然后通过简单的乘法运算得到代价函数对每一层权重矩阵的偏导数。此处理论可参见神经网络学习笔记首先修改sigmoidGradient.m函数,Sigmoid函数的导数有一个特点,即Sigmoid的导数可以用Sigmoid函数自己本身来表示。其次,修改randInitializeWeights.m函数,PDF直接复制过来的代码非常容易出错,手打比较好,第一步:计算出各层的输入输出,a1,z2,a2,z3,a3,其中,z2是输入a1乘以隐藏层的参数矩阵,得到第二层的输入,a2=sigmoid(z2),假设函数为sigmoid,每一层的节点数可以类似于第二层的输入的特征数量,比如,第一层的输入是400特征,加上一个偏置项,成为401项,则第二层的参数矩阵为25*401,相乘后得到m*25,相当于是m个拥有25个特征的样本。此处应该注意的是a1=[1;a1],此处是在for循环之下,for i=1:m;第二步:计算输出层的误差项,公式如下,yk可以直接用上面的,进行转置,配合维数:第三步:隐藏层的残差计算公式,注意,此处的参数不包括偏置项第四步:在不同的层内,叠加相应的梯度(循环到每个样本)注意这是不包含误差项在内的。,所以残差项要从第二个开始。第五步:把累计的误差均分成m份。得到神经网络的损失函数和下降梯度之后,再用优化函数fmincg找到最佳的参数。作业五题目解析:水坝放水量与水位变化之间关系,水位变化的历

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档