UFLDL阅读笔记1—Multi-Layer Neural Network

来源:互联网 发布:动漫死神知乎 编辑:程序博客网 时间:2024/05/21 14:08

背景

问题

有一组数据形式为(x(i),y(i)),其中x是输入的向量,神经网络可以去非线性地拟合这组数据,其形式为hW,b(x),其中的参数有W,b

单个神经元

  1. 示意图
    这里写图片描述
  2. 实质
    先把输入向量x的各个分量进行线性组合加一个偏移成为ni=1Wixi+b,再将这个结果通过activation function f,就会得到单个神经元的输出hW,b(x)
  3. activation function
    常见的activation function有3种类型:
    • sigmoid f(z)=11+exp(z)
    • tanh f(z)=tanh(z)=ezezez+ez
    • rectified linear f(z)=max(0,x)

3个函数的图像如下:
这里写图片描述

Neural Network model

定义

单个神经元结构分层全链接。其中,最左边为input layer,最右边是output layer ,中间是hidden layer ,层内标注为“+1”的节点表示的是一个偏移量,叫做bias units 。以下是一个简单的神经网络模型
这里写图片描述

参数说明

其实任意两个节点之间的连接线上都对应了一个参数,每层都是上一层的线性组合作为输入传到下一层,因此每层配有各自的W,b来代表这一层的权重,其中W表示普通节点上的权重,b代表bias unit的权重。这个简单网络有3层,我们用上标代表层数,因此有两组这样的参数(W,b)=(W(1),b(1),W(2),b(2)).
- 对于每两层之间的W,用下标代表是哪两个神经元的链接。Wij表示靠前一层的第j个节点与靠后一层的第i个节点的连接线的上的权重。注意这个前后的顺序和直觉上的想法不太一样,其原因是为了方便各项表达式最终可以写成矩阵乘法的形式,这个在之后可以体现。
- 对于每两层之间的b,用下标代表前一层的bias unit和后一层的哪一个神经元相连,因此只需要一个下标bi代表和后一层的第i个神经元的连接线上的权重。
从以上的参数分析我们可以得出,W(1)R3×3,这里前一个3代表隐含层节点数,后一个3代表输入层节点数;W(2)R1×3b(1)R1×3;b(2)R1×1

forward propagation表达式

a(2)1a(2)2a(2)3hW,b(x)=f(W(1)11x1+W(1)12x2+W(1)13x3+b(1)1)=f(W(1)21x1+W(1)22x2+W(1)23x3+b(1)2)=f(W(1)31x1+W(1)32x2+W(1)33x3+b(1)3)=a(3)1=f(W(2)11a(2)1+W(2)12a(2)2+W(2)13a(2)3+b(2)1)

容易看出,把以上形式简写成矩阵形式即为:
z(2)a(2)z(3)hW,b(x)=W(1)x+b(1)=f(z(2))=W(2)a(2)+b(2)=a(3)=f(z(3))

这里的参数z代表每层的输入经过了线性组合的结果,参数a代表z经过了激活函数之后的结果,其关系如下所示:
z(l+1)a(l+1)=W(l)a(l)+b(l)=f(z(l+1))

以上是一个简单的神经网络的前向传播过程。事实上,一个神经网络的架构中,隐含层可以有很多层,输出层也可以有不止一个节点。

Backpropagation算法

cost function

对于一个测试用例,cost function代表网络输出值和真实值的平方误差的二分之一,用下面的式子表示:

J(W,b;x,y)=12hW,b(x)y2.

对于所有的测试用例,cost function代表每一个用例的cost的平均+正则项(W中的每一个元素的和再乘正则系数)。表达式如下:
J(W,b)=[1mi=1mJ(W,b;x(i),y(i))]+λ2l=1nl1i=1slj=1sl+1(W(l)ji)2=[1mi=1m(12hW,b(x(i))y(i)2)]+λ2l=1nl1i=1slj=1sl+1(W(l)ji)2

说明:
1. 正则项的作用是约束W不要太大(因为优化的目标就是让J尽可能小),防止过拟合的发生。
2. 用神经网络进行分类,若用的是sigmoid神经元,标签应该采用(0, 1);若采用tanh神经元,标签应采用(-1,1)
3. 用神经网络进行拟合,应在保证输出在[0,1](sigmoid),或-1,1

0 0
原创粉丝点击