第一章
神经元的类型: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)