ITPub博客

首页 > > > 3.1 神经元与激励函数

3.1 神经元与激励函数

作者:RayChou 时间:2019-12-27 11:56:08 0 删除 编辑

3.1 神经元与激励函数



前言

  同学们好,欢迎来到深度学习的课程学习。所谓深度学习,现在通常是有两种流传的解释。一种是说这种学习是基于深度神经网络(Deep Nerual Networks)的学习,所以叫深度学习;还有一种说法是说这种技术能够让模型从海量的样本中去发现更多更深层的特征和规律,所以才叫深度学习。不过呢,似乎目前学术界仍然是第一种观点为主,给大家在跟别人讨论相关问题的时候做个参考吧。全连接网络是深度学习应用中最为传统的一种网络结构,我们就先介绍它。

神经元

  神经网络,或者称人工神经网络(ANN,Artificial Neural Network)。我们现在说的深度学习就是基于深度神经网络来实现的一系列应用的统称。神经网络是一种人类由于受到生物神经细胞结构的启发而研究出的一种算法与建模体系。

    人的神经元就像上图一样具有多个树突,主要用来接受传入信息;而轴突只有一条,轴突尾端有许多轴突末梢可以给其他多个神经元传递信息。轴突末梢跟其他神经元的树突产生连接,从而传递信号。这个连接的位置在生物学上叫做“突触”。一个神经元完成了一个简单的信息接收,处理,输出的基本动作。

  信号在神经细胞之间的传递是用化学信息进行传递的,这些化学信号的构成简单来说就是靠一些有机化学分子的传输来传递信息。但是这些有机分子的成分是非常复杂,人类至今对这些化学分子的作用机理还是摸不早头脑,并没有形成完整的理论体系。但是呢,就在这种神经细胞之间靠刺激来传递信息的方式之中,人类获得了一个启示——是否我们也可以设计这样一种由网络连接的处理单元,让它们彼此之间通过某种刺激,协同完成信息的处理和传递呢?这里不得不佩服前人的洞见啊。

  在1957年Rosenblatt提出了感知机模型(Perceptorn),这种模型和现时流行框架中的神经网络单元形式上非常接近。我们想要了解神经网络,就应该先看看它最基本的组成单元——神经元。

上图便是最简单的神经元结构,左边模拟生物神经元的输入,右边模拟生物神经元的输出。这里的输入可以是一个值,也可以是多个值,比如像上图所示,就是输入4个值。既然能同时输入多个值,所以神经元的输入通常都是以向量的形式作为输入的。

我们刚已经了解过神经元的输入和输出,那有同学就会问那神经元中间是做什么的呢?也就是说,一个输入经过了什么变换获得了一输出呢?莫慌,其实神经元的中间层就由两部分构成,分别是“线性模型”与“激励函数”。


线性模型

线性模型非常简单,说白了就跟函数一样的,就是计算,而且就是一个线性计算。

此处输入的x是一个n维的向量,w是系数,也是一个向量,后面是一个偏置(Bias)b。这里和我们之前讲过的线性回归中

几乎是一样的。下面我们以一个例子来说明下的它的计算过程:

那么这时候神经元的输出是怎样的呢?

实际就指的是一个1行n列,和一个n行1列的向量相乘,即对应维度的值相乘(这个例子中n=5),就这么简单。这种计算方式叫做点积,也可以说是矩阵运算中最简单的一种方式。现在我们已经有一个神经元了,按照前面理解线性回归的方式,至少它现在是可以去拟合一个线性回归的模型了。

激活函数

上面我们讲到了神经元的线性模型结构,不过还没完,一个神经元通常由两个部分组成,我们才刚刚看了它的前半部,还没看它的后半部。那么后半部分是什么呢?

神经元的后半部通常都会有一个激励函数。激励函数(Activation Function),也有翻译成激活函数的,它也是神经元中重要的组成部分。激励函数在一个神经元当中跟随在

函数之后。

  下面我们来说说到底什么是激活函数。说白了,它依然是一个函数,也是为了计算。不过,不同的是这里的函数跟之前的函数稍稍有点不一样,它是一个非线性函数。我们知道,线性函数在坐标系上面的表达是一条直线,而非线性函数是一条曲线。那么我们加这个激活函数的作用是什么呢?前面我们说过,如果没有这个激活函数,神经元就是一个线性模型,但是呢,在现实生活中,并不是所有东西都能用一条直线分割开的(大多数情况不能)。

我们看到上面两个图,在左边的图中,要将蓝点和橙点分开,显然我们用一条直线(线性函数)就能区分开。但是右边的图,如果单单用一条直线明显是不能区分开蓝点和橙点的,这时就要运用到我们的曲线(非线性函数)。这下看懂了吧,加入了激活函数后,能很好地解决线性模型所不能解决的问题。

下面,我们来介绍一下常用的激活函数:

  • Sigmoid函数
  • Tanh函数
  • ReLU函数
  • Leaky ReLU函数


1、Sigmoid函数

  Sigmoid函数基本上是我们所有学习神经网络的人第一个接触到的激励函数了。它的定义是这样的:

这个形状是不是有点似曾相识的感觉?像不像逻辑回归?其实它和逻辑回归在数学上表示的含义是一致的,就是把输入的x向量通过这样一个非线性变换投射到0到1的区间中去,出现一个非常明显的非线性变化。在特征相差比较复杂或是相差不是特别大时效果比较好。


2、Tanh函数

Tanh函数也算是比较常见的激励函数了,在后面学习RNN(循环神经网络,Recurrent Neural Networks)的时候我们就会接触到了。

Tanh函数也叫双曲正切函数,表达式如下:

大家可以看到,Tanh函数跟Singmoid函数长相是很相近的,都是一条“S”型曲线。只不过Tanh函数是把输入值投射到-1和1的区间上去。


3、ReLU函数

ReLU函数是目前大部分CNN(卷积神经网络,Convolutional Neural Networks)网络中喜欢使用的激励函数,它的全名是Rectified Linear Units。中文应叫“修正线性单元”或者“线性整流函数”。

ReLU函数表达式如下:

从图中可看出,在这个函数的原点左侧部分斜率为0,在右侧则是一条斜率为1的直线。从样子上来看,这显然是非线性的函数,x小于0时输出一律为0,x大于0时输出就是输入值。这同样是一种非常典型的非线性函数,而且网络里多用它也是因为它有一些优秀的特性,后面我们也会继续介绍。


4、Leaky ReLU函数

  Leaky ReLU和ReLU有点像,函数形状是这样的。表达式为


小结

  本章我们讲述了神经元的组成和内部机构。我们知道了神经元的内部有“线性模型”和“激活函数”构成。但是神经元仅仅是神经网络中最基础的单元,要构成一个完整的神经网络我们需要利用这些基本单元来进行网络构建。下一章,我们将讲述如何利用神经元构建神经网络。如你对本章有疑问,欢迎在讨论区与我讨论。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69954080/viewspace-3146529/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 5.2.1.4 池化层
下一篇: 语言与文字.
请登录后发表评论 登录
全部评论
现任金山办公软件人工智能组高级AI研发工程师。多年从事机器学习,特别是NLP自然语言处理算法的研究及开发工作。拥有丰富的软件开发经验,以及丰富的人工智能算法训练平台开发经验。

注册时间:2019-11-14

  • 博文量
    71
  • 访问量
    60597