[deeplearning-002] 单节点神经网络推导

来源:互联网 发布:get it 编辑:程序博客网 时间:2024/06/17 01:12

这个例子是最基础的例子,深度学习是它的各种形式的扩展。几个关键点:神经网络结构,激活函数,向量化,随机梯度下降算法,是深度学习的基石。

1.训练集
设训练集合是{x(i),y(i)}i=1...n,其中xR1×dx是个向量,数据集有n个样本。

2.神经网络结构
一个神经元,有d+1个输入,前d个是向量x的输入,最后一个是b的输入。神经元的激活函数是sigmoid函数,也就是:

f(x)=11+exp(x)=11+ex

求导的话,就是f(x)=f(x)(1f(x)),可以推导出来的。

3.神经网络的输出
对一个样本而言,计算神经元的输出。x和b作为输入,传递到神经元的应激函数之前的值是xW+b,其中WRd×1表示神经连接的权重。这个值再经过神经元的应激函数形成输出,因此,神经元的输出是

fW,b(x)=f(xW+b)=f(j=1dxjWj+b)

4.代价函数
.上一步,是一个样本时神经网络的输出。训练后的神经网络,期望在全部样本集上,让样本的拟合误差最小,设代价函数是MSE,那么在全部样本上,拟合误差代价函数如下:

J(W,b)=12i=1n(f(xiW+b)yi)2

注意,这里的xi是粗体,表示一个向量,也就是一个样本,跟上面的xj不一样。

5.随机梯度下降求极值
上式求最小值。未知数是Wb。按照梯度下降算法,可知
wji+1=wjiηJ(W,b)wj(wji)
这里,i表示第i次迭代,wj表示W的第j个元素。这就是梯度下降法求解W

为简化起见,设z=xiW+b

J(W,b)wj=i=1n(fzzwj(fw,b(z)yi))=i=1nfw,b(z)(1fw,b(z))xji(fw,b(z)yi)

随机梯度下降的话,就每次随机选择若干个wj进行计算。

对于b,有下式:

J(W,b)b=i=1n(fzzwj(fw,b(z)yi))=i=1nfw,b(z)(1fw,b(z))(fw,b(z)yi)

6.正则化
有时候,为了防止过拟合,在第4步的公式,会加上一个对W的正则:

J(W,b)=12i=1n((f(xiW+b)yi)2+12μWTW

由此导致梯度下降算法会略做改变。

7.代码实现
本质上,单节点神经网络就是Logistic Regression。本博之前已经给出详细的推导过程,请参考
http://blog.csdn.net/lizhe_dashuju/article/details/49864569