cs231n-神经网络简介及理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012931582/article/details/57462200

神经网络

简单介绍

神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。

神经网络是一种非线性模型,假如我们构建一个非常简单的2层神经网络,和之前的线性分类器表示如下:

duibi

可知神经网络是一种非线性模型.

神经元

神经网络最基本的组成单位就是神经元,每一个神经元结构如下:

cell

对于一个神经元来说,输入是输入的信号,经过与权重相乘,相加,然后需要经过一个非线性函数输出,这里的非线性函数叫做激活函数. 可以看出来,如果把loss函数应用到单个神经元的输出上,那就可以看做一个线性分类器了.

激活函数

常用的激活函数有以下几种:

jihuo

扫描二维码关注公众号,回复: 3133336 查看本文章

Sigmoid

σ(x)=1/(1+ex)
它把输入压缩到(0,1)之间;非常大的负数趋向于0,非常大的正负趋向于1。Sigmod现在已经少用了,因为
1、Sigmoid有梯度消失的问题。
2、Sigmoid输出不是零中心的。例如输出全是正数,那么下一层全连接(Wx)输入就全是正数,这将导致反向传播时梯度(Wx 梯度为x)要么全是正数,要么全是负数;在使用梯度下降算法时,呈现出Z字下降。这个问题可以通过批量梯度下降解决。

在使用sigmoid作为激活函数的时候,单个神经元就可以看做是一个逻辑回归模型.

Tanh

tanh(x)=2σ(2x)1

它的输出是零中心的[-1,1],但是它同样存在梯度消失问题。

ReLu

f(x)=max(0,x)

ReLU近几年比较受欢迎。它有以下优缺点
1、优点:使用SGD时,它比Sigmoid/Tanh收敛速度快。
2、优点:和Sigmoid和Tanh相比,它计算简单。
3、缺点:脆弱,容易死掉。死掉是指,比较大的梯度经过神经元后,可以导致ReLU输出都小于0,即不再激活。这个可以同构调整学习率部分解决。

Leaky ReLU

f(x)=1(x<0)(αx)+1(x>=0)(x)


f(x)=max(αx,x)

其中α是一个很小的常数。$Leaky ReLU是解决ReLU死掉问题的。详细介绍参考这里

Maxout

归纳ReLU和Leaky ReLU,得到更通用的一般形式

max(wT1x+b1,wT2x+b2)

例如,当W1=0,b1=0时就是ReLU函数。它克服了ReLU的缺点,保留了其优点。但是其参数增加了一倍。

在神经网络中,很少见到在同一个网络的不同神经元中使用不同的激活函数,即使这样做没有什么问题。

神经网络结构

arc
命名规则:在定义神经网络层数时,不包括输入层。例如上图中,左边的神经网络有2层,右边的神经网络有3层。
输出层:输出层通常没有激活函数,因为输出层一般用来评分,它的值范围是任意的。
定义神经网络大小:最常用的有神经元个数和参数个数。

隐含层的理解

神经网络隐含层的理解,以两层神经网络为例:

隐含层的每一个神经元都可以看做是一个线性分类器,都对应着一个分类边界,比如说隐含层有100个神经元,进行图片分类任务的时候,这100个神经元的每一个作用是把每一类中的子类分出来,比如说不同颜色的车,不同朝向的车,然后在输出层的时候,把这些线性的边界连接在一起,变成一个完整的分类边界,比如下图:

3ceng

这是隐含层有三个神经元的情况,可以看出,有三条线性的边界,左边,右上和右下,最后的分类边界就是三条边界连接在一起。(激活函数的一个作用就是可以把几条线性的边界用非线性的平滑方式连接在一起,可以看看这个高票回答)现在最常用的激活函数是relu(也就是max(0,x))

一般来说,隐含层规模越大,拟合效果越好:

nih

但是容易有过拟合的情况,这个时候,不应该减小隐含层的规模,而是引入正则项.

zhengze

有一个在线的例子 可以调整参数查看效果

总结

1、介绍了几个激活函数。
2、介绍了神经网络和全连接层。
3、神经网络可以近似所有函数。
4、大的神经网络往往效果更好,但是需要其他手段防止过拟合。

猜你喜欢

转载自blog.csdn.net/u012931582/article/details/57462200