资源描述
学习必备欢迎下载作业三题目解析 :本作业主要有两个知识点:使用逻辑回归来实现多分类问题(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 learningex3 梯度函数如下在应用了正则化之后的函数如下,需要注意的是此时偏置参数不可计算在内,需要减去梯度函数同理,的求导要单独分开精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 8 页学习必备欢迎下载Matlab的 max 用法知识点加一: a,b=max(A, , 2)函数中, a 是每一行中最大的数,是一个列向量,b 是每一行最大的那个数字的列位置神经网络的计算模型应用的具体语句, 主要问题在于函数维数的准确把握,每一层都需要对输入进行一次添加偏置项, X 是这样, a_super_2也是这样!精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 8 页学习必备欢迎下载作业四题目解析 :首先用题目提供的参数在前向传播算法下实现多分类问题,其次需要用后向传播算法( BP 神经网络)学习最优参数。前向传播算法的计算主要完成的函数包括损失函数的编写。其中,需要注意的是 (1) (Theta1)是一个 25*401矩阵,行的数目为 25 ,由隐藏层的单元个数决定 ( 不包括 bias unit),列的数目由输入特征数目决定( 加上 bias unit之后变成 401) 。同理,参数矩阵 (2) (Theta2)是一个 10*26矩阵,行的数目由输出结果数目决定 (0-9 共 10 种数字), 列的数目由隐藏层数目决定 (25 个隐藏层的 unit,再加上一个 bias unit)。神经网络结构图如下:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 8 页学习必备欢迎下载对应编程部分如下,神经网络层与层之间的关系要理清:损失函数的计算公式如下:其中需要注意的是, 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直接复制过来的代码非常容易出错,精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 8 页学习必备欢迎下载手打比较好,第一步:计算出各层的输入输出, 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份。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 8 页学习必备欢迎下载得到神经网络的损失函数和下降梯度之后,再用优化函数 fmincg找到最佳的参数。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 8 页学习必备欢迎下载作业五题目解析 : 水坝放水量与水位变化之间关系, 水位变化的历史记录为x, 放水量为 y。交叉验证数据 Xval, yval 。理论内容是关于偏差、方差以及学习曲线为代表的诊断法,为改善机器学习算法的决策提供依据;此处分为两个部分。第一部分:拟合直线回归只有两个参数, 主要完成损失函数和下降梯度计算函数,最后用优化函数求出最佳参数,但是从拟合结果看不理想。此处不用 ,因为仅有两个参数,不存在过拟合的可能。第二部分:偏差与方法的平衡一般而言高偏差意味着欠拟合,高方差意味着过拟合,Error = Bias + Variance。Error反映的是整个模型的准确度,Bias反映的是模型期望与真实目标的差距, 即模型本身的精准度, Variance反映的是模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。利用学习曲线评价模型, 推进模型的构建。 通过不断加大训练数据, 在不同的数据量时得到的参数模型, 计算该参数模型的训练误差和交叉验证误差,观察其随着数据量增大是否有变化,从结果来看, 在参数数量很少情况下, 模型误差随着数据量的增大并无明显改善。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 8 页学习必备欢迎下载多项式回归首先要把特征向量x 拓展,polyFeatures.m需要将线性回归进行扩展,引入高次项,具体做法是将原本是向量的X 扩展成行数不变, 列数为多项式最高次的矩阵,此处选择了最高8 次项。其次,以防数据经过高次项的计算加大计算量,要进行数据归一化, 用函数featureNormalize.m, 接下来,不断调整 的值,通过学习曲线和回归拟合结果来观察过拟合与欠拟合的现象。最后,通过函数 validationCurve.m来选择最适合的精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 8 页
展开阅读全文