首页 > Web开发 > 详细

[Deep Learning] 神经网络编程基础 (Basics of Neural Network Programming)

时间:2019-11-29 21:54:10      阅读:95      评论:0      收藏:0      [点我收藏+]

    在神经网络中,假如有m个训练集,我们想把他们加入训练,第一个想到得就是用一个for循环来遍历训练集,从而开始训练。但是在神经网络中,我们换一个计算方法,这就是 前向传播反向传播

 对于逻辑回归,就是找出合适得参数w和b,在二分类中,输出得结果是0或者1,所以我们得假设函数得输出应该在0,1之间。那么线性肯定是不合适的。我们称输出结果在0,1之间的函数为 S 函数(sigmoid 函数)。

  技术分享图片 

  那么逻辑回归的代价函数又是什么呢? 为了训练逻辑回归模型的参数参数??和参数??我们,需要一个代价函数,通过训练代价函数来得到参数??和参数??。

  那么 如何衡量预测值和实际值的误差呢? 这里我们用损失函数来表示。

  在逻辑回归中用到的损失函数为:技术分享图片

 

  技术分享图片

 

 

  我们可以衡量预测值和实际值之间的关系了,那么我们如何找到最合适的w和b呢? 这里我们需要用到梯度下降法。

  在上图中的J(w,b)应该是一个凸函数,如果是下图的函数,是一个非凸函数且有很多局部最小值,那我们是无法用梯度下降法获取到最合适的参数值。

技术分享图片

  所以我们必须定义代价函数为凸函数。

技术分享图片

 

 其中,学习率依然表示步长。

上面说,前向传播和反向传播是为了帮助我们计算神经网络,这里我们来看一下是如何帮我们计算的。

 

首先,我们先把一个神经网络计算画成一个计算图。

 技术分享图片

 

 

  我们尝试计算函数??,??是由三个变量a,b,c组成的函数,这个函数是3(a + bc) 。计算这个函数实际上有三个不同的步骤,首先是计算 b 乘以 c,我们把它储存在变量u中,因此u = bc; 然后计算v = a + u;最后输出J = 3v,这就是要计算的函数J。我们可以把这三步
画成如下的计算图,我先在这画三个变量a,b,c,第一步就是计算u = bc,我在这周围放个矩形框,它的输入是b,c,接着第二步v = a + u,最后一步J = 3??。

 

 

  举个例子: ?? = 5,b = 3,c = 2 ,u = bc就是 6,就是 5+6=11。J是 3 倍的 ,因此。即3 × (5 + 3 × 2)。如果你把它算出来,实际上得到 33 就是J的值。 当有不同的或者一些特殊的输出变量时,例如本例中的J和逻辑回归中你想优化的代价函数J,因此计算图用来处理这
些计算会很方便。从这个小例子中我们可以看出,通过一个从左向右的过程,你可以计算出??的值。为了计算导数,从右到左(红色箭头,和蓝色箭头的过程相反)的过程是用于计算导数最自然的方式。

 

  

 

[Deep Learning] 神经网络编程基础 (Basics of Neural Network Programming)

原文:https://www.cnblogs.com/ynxf/p/11960492.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!