机器学习06神经网络--学习


代价函数


标记方法:

神经网络的训练样本有 m 个

每个包含一组输入 x 和一组输出信号 y

L 表示神经网络层数

Sl表示每层的 neuron 个数(SL 表示输出层神经元个数)


将神经网络的分类定义为两种情况:
二类分类:SL=1, y=0 or 1 表示哪一类; 
K 类分类:SL=K, yi = 1 表示分到第 i 类;(K>2)





Cost Function:


归一化的那一项只是排除了每一层 θ0后,每一层的 θ 矩阵的和。

最里层的循环 j 循环所有的行(由 sl +1 层的激活单元数决定);

循环 i 则循环所有的列,由该层(sl 层)的激活单元数所决定。 


—————————————————————————————————————————————————————————


反向传播算法 (Backpropagation Algorithm)


为了计算代价函数的偏导数:


需要采用一种反向传播算法

也就是首先计算最后一层的误差, 然后再一层一层反向求出各层的误差, 直到倒数第二层。


公式推导:





1、先计算输出层的误差:


2、再根据下述公式向前依次递推计算所有隐含层误差:(黑色单线箭头)


3、最后根据公式更新参数值:




总结:

首先用正向传播方法计算出每一层的激活单元, 利用训练集的结果与神经网络预测的结果求出最后一层的误差;

然后利用该误差运用反向传播法计算出直至第二层的所有误差;

之后,我们便可以计算代价函数的偏导数了,计算方法如下:



——————————————————————————————————————————————————————————————————


随机初始化(Random Initialization)

任何优化算法都需要一些初始的参数。

通常初始参数为正负 ε 之间的随机值。

假设我们要随机初始一个尺寸为 10×11 的参数矩阵,代码如下: 

Theta1 = rand(10, 11) * (2*eps) – eps 


——————————————————————————————————————————————————————————————————


综合:

使用神经网络时的步骤: 
网络结构: 首先要做的是选择网络结构, 即决定选择多少层以及每层分别有多少个单元。
 

第一层的单元数为训练集的特征数量。 

最后一层的单元数是训练集结果的类标数量。 

如果隐藏层数大于 1,确保每个隐藏层的单元个数相同,通常情况下隐藏层单元的个数越多越好。 

我们真正要决定的是隐藏层的层数和每个中间层的单元数。 


训练神经网络: 
1. 参数的随机初始化 
2. 利用正向传播方法计算所有的 hθ(x) 
3. 计算输出层及隐含层的误差 
4. 利用反向传播方法计算所有偏导数 
5. 利用梯度数值检验方法检验这些偏导数 
6. 使用优化算法来最小化代价函数


——————————————————————————————————————————————————————————————————


梯度检验(Gradient Checking)

当我们对一个较为复杂的模型(例如神经网络)使用梯度下降算法时,可能会存在一些不容易察觉的错误。

意味着, 虽然代价看上去在不断减小, 但最终的结果可能并不是最优解。 

为了避免这样的问题, 我们采取梯度数值检验 (Numerical Gradient Checking)  方法。

这种方法的思想是通过估计梯度值来检验我们计算的导数值是否真的是我们要求的。  

对梯度的估计采用的方法是在代价函数上沿着切线的方向选择离两个非常近的点,然后计算两个点的平均值用以估计梯度。

即对于某个特定的 θ,我们计算出在 θ-ε 处和 θ+ε 的代价值(ε 是一个非常小的值,通常选取 0.001),然后求两个代价的平均,用以估计在 θ 处
的代价值。 



Octave 中代码如下: gradApprox = (J(theta + eps) – J(theta - eps)) / (2*eps) 

当 θ 是一个向量时, 我们则需要对偏导数进行检验。

因为代价函数的偏导数检验只针对一个参数的改变进行检验,下面是一个只针对 θ1进行检验的示例:

 

最后我们还需要对通过反向传播方法计算出的偏导数进行检验。 



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/387261.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Logistic Regression Classifier逻辑回归

Logistic Regression Classifier逻辑回归主要思想就是用最大似然概率方法构建出方程,为最大化方程,利用牛顿梯度上升求解方程参数。 优点:计算代价不高,易于理解和实现。缺点:容易欠拟合,分类精度可能不高…

机器学习07应用机器学习的建议

决定下一步做什么(Deciding What to Try Next) 确保在设计机器学习系统时,能够选择一条最合适、最正确的道路。 具体来讲,将重点关注的问题是:假如你在开发一个机器学习系统,或者想试着改进一个机器学习…

CSS3--5.颜色属性

HTML5中添加了一些新的颜色的表示方式 1.RGBA:说得简单一点就是在RGB的基础上加进了一个通道Alpha。RGBA在RGB的基础上多了控制alpha透明度的参数。以上R、G、B三个参数,正整数值的取值范围为:0 - 255。百分数值的取值范围为:0.0%…

逻辑回归的通俗解释 逻辑回归的定位

1 逻辑回归的定位 首先,逻辑回归是一种分类(Classification)算法。比如说: 给定一封邮件,判断是不是垃圾邮件给出一个交易明细数据,判断这个交易是否是欺诈交易给出一个肿瘤检查的结果数据,判断…

机器学习08机器学习系统设计

首先要做什么 一个垃圾邮件分类器算法为例: 为了解决这样一个问题,首先要做的决定是如何选择并表达特征向量 x。 可以选择一个由 100 个最常出现在垃圾邮件中的词所构成的列表,根据这些词是否有在邮件中 出现,来获得我们的特…

数学笔记1——导数1(导数的基本概念)

什么是导数导数是高数中的重要概念,被应用于多种学科。从物理意义上讲,导数就是求解变化率的问题;从几何意义上讲,导数就是求函数在某一点上的切线的斜率。我们熟知的速度公式:v s/t,这求解的是平均速度&a…

python接口自动化(四)--接口测试工具介绍(详解)

简介 “工欲善其事必先利其器”,通过前边几篇文章的介绍,大家大致对接口有了进一步的认识。那么接下来让我们看看接口测试的工具有哪些。 目前,市场上有很多支持接口测试的工具。利用工具进行接口测试,能够提供测试效率。例如&…

机器学习09支持向量机

支持向量机(Support Vector Machines) 在监督学习中,许多学习算法的性能都非常类似,因此,重要的不是你该选择使用学习算法 A 还是学习算法 B,而更重要的是, 应用这些算法时,所创建的大量数据在应用这些算…

数学笔记2

数学笔记2——导数2(求导法则和高阶导数)和、差、积、商求导法则设uu(x),vv(x)都可导,则:(Cu)’ Cu’, C是常数(u v)’ u’ v’(uv)’ u’ v’(u/v)’ (u’v – uv’) / v21、2不解释,下面给出3、4的推导过程乘法法则的推导过乘法法则…

机器学习10聚类

无监督学习 在非监督学习中,我们需要将一系列无标签的训练数据,输入到一个算法中, 然后让它找这个数据的内在结构。 我们可能需要某种算法帮助我们寻找一种结构。图上的数据看起来可以分成两个分开的点集(称为簇)&am…

关联分析(Association analysis)

关联分析(Association analysis) 简介 大量数据中隐藏的关系可以以‘关联规则’和‘频繁项集’的形式表示。rules:{Diapers}–>{Beer}说明两者之间有很强的关系,购买Diapers的消费者通常会购买Beer。 除…

机器学习11主成分分析

降维(Dimensionality Reduction) : 一、 降维目的: 目的一:数据压缩(Data Compression) 目的二:数据可视化(Visualization) 二、 主成分分析(PCA) 主成分…

使用Apriori进行关联分析(一)

使用Apriori进行关联分析(一)大型超市有海量交易数据,我们可以通过聚类算法寻找购买相似物品的人群,从而为特定人群提供更具个性化的服务。但是对于超市来讲,更有价值的是如何找出商品的隐藏关联,从而打包促…

主成分分析法 (PCA) 用于数据可视化实验 -- Matlab版

第一步:下载数据集。 https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass.html#pendigits 第二步:改变数据格式。 注:此数据集的各特征值均为像素,即属于同一量纲,故无需归一化步骤。 原格式为&a…

机器学习12推荐系统

推荐系统(Recommender Systems) 推荐系统根据浏览用户过去买过什么书,或过去评价过什么电影来判断并推荐新产品给用户。 这些系统会为像亚马逊和网飞这样的公司带来很大一部分收入。 因此,对推荐系统性能的改善,将对这些企业的有实质性和…

使用Apriori进行关联分析(二)

使用Apriori进行关联分析(二)书接上文(使用Apriori进行关联分析(一)),介绍如何挖掘关联规则。发现关联规则我们的目标是通过频繁项集挖掘到隐藏的关联规则。所谓关联规则,指通过某个…

数学笔记3——导数3(隐函数的导数)

数学笔记3——导数3(隐函数的导数)幂函数的扩展形式f(x) xn的导数:f’(x) nxn-1,n是整数,该公式对f(x) xm/n, m,n 是整数同样适用。推导过程:什么是隐函数引自知乎:“如果方程F(x,y)0能确定y…

机器学习13大规模数据集

大型数据集的学习(Learning With Large Datasets) 如果我们有一个低方差的模型, 增加数据集的规模可以帮助你获得更好的结果。 我们应该怎样应对一个有 100 万条记录的训练集? 以线性回归模型为例,每一次梯度下降…

Java07多线程

14 多线程 操作系统的多任务(multitasking):在同一时刻运行多个程序的能力。 多线程在较低的层次上扩展了多任务的概念:一个程序同时执行多个任务。 通常,每一个任务称为一个线程(tread)&…

MySQL字段拼接Concat

有时候,从数据库中拿出的数据并不是我们想要的格式,比如,有以下的vendors表 如果,想以 name (location)的格式展现出来,那么就要用到MySQL的Concat了。 Concat()拼接串,即把多个串连接起来形成一个较长的串…