神经网络_学习笔记1215

来源:互联网 发布:nginx 域名指向目录 编辑:程序博客网 时间:2024/04/30 23:20

1、理解神经网络,首先是我们要理解最基本的神经元模型:


这个“神经元”是一个以 \textstyle x_1, x_2, x_3 及截距 \textstyle +1 为输入值的运算单元,其输出为 \textstyle  h_{W,b}(x) = f(W^Tx) = f(\sum_{i=1}^3 W_{i}x_i +b) ,其中函数 \textstyle f : \Re \mapsto \Re 被称为“激活函数”。激活函数,不是指这个函数去激活什么,而是指如何把“激活的神经元的特征”通过函数把特征保留并映射出来。就比如激活函数中有阀值函数,即根据加权后的输出值,来判断输出{1,0}中的一个值。激活函数众所周知有tanh,sigmoid,ReLU等。


tanh   是设置一个值,大于0.5通过的为1,不然就为0。

sigmoid  采用S形函数。

ReLU    简单而粗暴,大于0的留下,否则一律为0。


比如如下的这样一个神经网络:


其中直线上的数字为权重,即是上式中的W。圆圈中的数字为阀值,即是定义式中函数f的一个参数(对于阀值函数来说就是阀值的值)。比如,第二层,如果输入大于1.5则输出1,否则0;第三层,如果输入大于0.5,则输出1,否则0。我们来一步步算。


第一层阀值是1.5,所以除了R1其他输出都是0。


第二层同理。



2、所谓神经网络就是将许多个单一“神经元”联结在一起,这样,一个“神经元”的输出就可以是另一个“神经元”的输入。例如,下图就是一个简单的神经网络:



我们使用圆圈来表示神经网络的输入,标上“+1”的圆圈被称为偏置节点,也就是截距项。神经网络最左边的一层叫做输入层,最右的一层叫做输出层。中间所有节点组成的一层叫做隐藏层,因为我们不能在训练样本集中观测到它们的值。同时可以看到,以上神经网络的例子中有3个输入单元(偏置单元不计在内),3个隐藏单元及1个输出单元。


我们用 \textstyle {n}_l 来表示网络的层数,本例中 \textstyle n_l=3 ,我们将第 \textstyle l 层记为 \textstyle L_l 。本例神经网络有参数 \textstyle (W,b) = (W^{(1)}, b^{(1)}, W^{(2)}, b^{(2)}) ,其中 \textstyle W^{(l)}_{ij} 是第 \textstyle l 层第 \textstyle j 单元与第 \textstyle l+1 层第 \textstyle i 单元之间的联接参数(其实就是连接线上的权重), \textstyle b^{(l)}_i 是第 \textstyle l+1 层第 \textstyle i 单元的偏置项。因此在本例中, \textstyle W^{(1)} \in \Re^{3\times 3} , \textstyle W^{(2)} \in \Re^{1\times 3} 。注意,没有其他单元连向偏置单元(即偏置单元没有输入),因为它们总是输出 \textstyle +1。同时,我们用 \textstyle s_l 表示第 \textstyle l 层的节点数(偏置单元不计在内)。


我们用 \textstyle a^{(l)}_i 表示第 \textstyle l 层第 \textstyle i 单元的激活值(输出值)。当 \textstyle l=1 时, \textstyle a^{(1)}_i = x_i ,也就是第 \textstyle i 个输入值(输入值的第 \textstyle i 个特征)。对于给定参数集合 \textstyle W,b ,我们的神经网络就可以按照函数 \textstyle h_{W,b}(x) 来计算输出结果。本例神经网络的计算步骤如下:









3、Element-Wise Operations:

对于一个向量或者是矩阵这种多元素的变量,Element-Wise Operations在于其运算是对每一个元素操作的。即,如果是加号,那么就每一个元素都要加上一个确定的值。




参考文章:

http://ufldl.stanford.edu/wiki/index.php/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C

https://www.douban.com/note/348196265/







0 0
原创粉丝点击