Neural networks and deep learning学习笔记 -1

 

 

第一章

神经元的类型:perceptron 感知器,sigmoid S型神经元  算法:stochastic gradient descent随机梯度下降

 perceptron的数学模型:

 

公式进一步简化

w. x 向量w和向量x的点击

b 偏置 = -threshold

 

perception的问题是输出跳跃太大。

 

sigmoid 神经元:

它的输入可以是0~1之间的任意小数

输出公式(激活函数):

公式曲线:

输出偏移量:

输出偏移量可以近似用一个weight和bias偏移量的线性函数来表达,这样就可以方便的通过调整weight和bias来调整输出偏移量 (我可以这样理解:已知需要一个线性导函数f(w,b),求解原函数作为算法。或者说要求原函数随着自变量的变化速率是线性的)

 

练习题:

1)对于一个sigmoid网络,如果对所有的weight和bias同时乘以一个C常数>0,证明网络的行为没有变。

因为输出偏移量是weight和bias偏移量的线性函数,同时两个入参乘以C,则输出偏移量和乘以C,都是正向放大。

2)对于一个perceptron网络,如果w.x+b不等于0,那么替换为sigmoid神经元,证明,对所有的weight和bias同时乘以一个C常数>0,当c为无穷大,网络等同于perceptron网络。

e(-z) 乘以C = (e(-c(w.x+b)) = ((e(-c))z) ,则激活函数结果等于perceptron的输出公式

 

前馈网络:输出会不会loopback到以前的神经元做输入

recurrent neural network:输出会作为在一个有限的时间作为以前的神经元的输入,这个网络更像人类的大脑

 

梯度下降:

首先引入代价函数

他是每个训练样本代价的平均值。

输入输出都用向量表示。

y(x) 表示给定一个输入向量[x...],期望的输出向量。

a表示给定一个输入向量[x...],实际的输出向量。他和w,x,b有关。

||y(x)-a||是向量差的模长度。

最终函数是一个均方差函数。

我们的目的就是通过调整w,b来将代价函数的输出降到最小。

 

导数的解释(来自知乎):

导数是曲线的切线的斜率。

一条曲线的割线,总是有斜率的。固定住一个点,让另一个点去靠近它,这时候斜率在发生变化。但是这些斜率有一个特点,就是它们可以在两个点越来越近的时候,越来越接近一个数值。这个值,就叫做【导数】了。

 偏导数是多元函数,固定其他变量,变化一个方向的变量求导,可以理解是沿着该坐标轴所在平面,函数变化曲线的切线斜率

 

梯度下降的工作方式就是不断计算梯度C,然后沿着相反的方向移动,向谷底逼近。问题:如何构造一个符合这种曲面的函数?

梯度下降的问题就是样本量大的情况下,每个样本都要计算,计算量比较大,因此引入了随机梯度下降。

随机梯度下降的原理:

 

在样本集合中随机取M个样本,计算他们的∇C,认为这个结果近似是所有样本的∇C,然后在选择M个样本继续训练,知道所有样本用完,这个称为一个训练迭代期(epoch)

 

posted @ 2017-02-10 15:01  怎么也得过啊  阅读(277)  评论(0编辑  收藏  举报