好玩的人工智能
快乐的深度学习

了解神经网络,从神经元到RNN,CNN和深度学习

图片来自谷歌

神经网络是目前最流行的机器学习算法之一。随着时间的推移,神经网络在准确性和速度方面优于其他算法,已经得到了明确的证明。随着CNN(卷积神经网络),RNN(回归神经网络),自动编码器,深度学习等各种变体,神经网络正逐渐成为数据科学家或机器学习从业者的统计学家的线性回归。因此,必须对神经网络是什么,如何组成以及它的影响范围和局限有基本的了解。这篇文章试图解释神经网络从其最基本的构建块神经元开始,然后深入研究其最流行的变体,如CNN,RNN等。

什么是神经元?

顾名思义,神经网络的灵感来自人类大脑的神经结构,就像在人类大脑中一样,基本构建块被称为神经元。它的功能类似于人类神经元,即它接收一些输入并触发输出。在纯粹的数学术语中,机器学习世界中的神经元是数学函数的占位符,其唯一的工作是通过在所提供的输入上应用函数来提供输出。

神经元中使用的功能通常被称为激活功能。迄今为止已经尝试了5种主要的激活功能,步骤,sigmoid,tanh和ReLU。以下详细描述这些中的每一个。

激活功能

步功能

阶梯函数定义为

如果x的值大于等于0,则输出为1;如果x的值小于零,则输出为0。可以看出步进函数在零时是不可微分的。目前,神经网络使用反向传播方法和梯度下降来计算不同层的权重。由于阶梯函数在零处是不可微分的,因此它不能用梯度下降方法取得进展并且在更新权重的任务中失败。

为了克服这个问题,引入了sigmoid函数而不是step函数。

Sigmoid功能

sigmoid函数或逻辑函数在数学上定义为

当z或自变量趋于负无穷大时,函数的值趋向于零,当z趋于无穷大时,函数的值趋向于1。需要记住,此函数表示因变量行为的近似值,并且是一个假设。现在出现的问题是为什么我们使用sigmoid函数作为近似函数之一。这有一些简单的原因。

1.它捕获数据中的非线性。虽然是近似的形式,但非线性的概念对于精确建模至关重要。

2. S形函数在整个过程中是可微分的,因此可以用于梯度下降和反向传播方法来计算不同层的权重。

3.依赖于S形函数的因变量的假设固有地假设自变量的高斯分布,这是我们在很多随机发生的事件中看到的一般分布,这是一个很好的通用分布。

然而,S形函数也存在梯度消失的问题。从图中可以看出,S形函数将其输入压缩到非常小的输出范围[0,1]并且具有非常陡峭的梯度。因此,仍然存在大的输入空间区域,即使很大的变化也会在输出中产生非常小的变化。这被称为消失梯度的问题。该问题随着层数的增加而增加,从而使神经网络的学习停滞在一定水平。

Tanh功能

tanh(z)函数是sigmoid的重新缩放版本,其输出范围是[ – 1,1]而不是[0,1]。[1]

在某些地方使用Tanh函数而不是sigmoid函数的一般原因是因为数据以0为中心,因此导数更高。较高的梯度有助于提高学习率。下面附有两个函数tanh和sigmoid的绘制梯度。[2]

对于tanh函数,对于[-1,1]之间的输入,我们有[0.42,1]之间的导数。

另一方面,对于sigmoid函数,对于[0,1]之间的输入,我们有[0.20,0.25]之间的导数

从上面的图片可以看出,Tanh函数具有比Sigmoid函数更高的导数范围,因此具有更好的学习率。然而,消失梯度的问题仍然存在于Tanh函数中。

ReLU功能

整流线性单元是深度学习模型中最常用的激活函数。如果它接收到任何负输入,则该函数返回0,但对于任何正值x,它返回该值。因此,它可以写成f(x)= max(0,x)。

图形上看起来像这样[3]

Leaky ReLU是最知名的之一。对于正数,它与ReLU相同。但是对于所有负值而言,它不是0,而是具有恒定的斜率(小于1)。

该斜率是用户在构建模型时设置的参数,通常称为α。例如,如果用户设置α= 0.3,则激活功能为。

1
f(x) = max (0.3*x, x)

这具有理论上的优势,即通过受

1
x

所有值的影响,它可以更完整地使用x中包含的信息。

还有其他选择,但是从业者和研究人员通常都发现没有足够的好处来证明使用除ReLU以外的任何其他方法。在一般实践中,ReLU发现其性能优于sigmoid或tanh功能。

神经网络

到目前为止,我们已经涵盖了神经元和激活函数,这些函数一起用于任何神经网络的基本构建块。现在,我们将深入探讨什么是神经网络及其不同类型。如果他们对此有疑问,我会强烈建议人们重新审视神经元和激活功能。

在理解神经网络之前,必须了解神经网络中的层是什么。一层只是一组神经元,它们接收输入并提供输出。通过分配给神经元的激活函数处理对这些神经元中的每一个的输入。例如,这是一个小型神经网络。

网络的最左边的层称为输入层,最右边的层称为输出层(在此示例中,只有一个节点)。中间层节点称为隐藏层,因为在训练集中未观察到其值。我们还说我们的示例神经网络有3个输入单元(不计算偏置单元),3个隐藏单元和1个输出单元 [4]

任何神经网络都有1个输入和1个输出层。例如,隐藏层的数量在不同网络之间不同,这取决于要解决的问题的复杂性。

这里要注意的另一个重点是每个隐藏层可以具有不同的激活功能,例如,隐藏层1可以使用sigmoid函数,隐藏层2可以使用ReLU,然后隐藏层3中的Tanh全部在同一个神经元中网络。要再次使用的激活功能的选择取决于所讨论的问题和所使用的数据类型。

现在,对于神经网络进行准确预测,这些神经元中的每一个都在每一层都学习一定的权重。他们学习权重的算法称为反向传播,其细节超出了本文的范围。

具有多于一个隐藏层的神经网络通常被称为深度神经网络

卷积神经网络(CNN)

卷积神经网络(CNN)是在计算机视觉领域中大量使用的神经网络的变体之一。它的名称来自它所包含的隐藏层的类型。CNN的隐藏层通常由卷积层,合并层,完全连接的层和标准化层组成。这里它只是意味着不使用上面定义的常规激活函数,而是使用卷积和池函数作为激活函数。

要详细了解它,需要了解卷积和池是什么。这两个概念都来自计算机视觉领域,并在下面定义。

卷积:卷积对两个信号(1D)或两个图像(2D)进行操作:您可以将一个视为“输入”信号(或图像),将另一个(称为内核)视为“过滤器”输入图像,产生输出图像(因此卷积将两个图像作为输入并产生第三个作为输出)。[5]

在外行术语中,它接收输入信号并在其上应用滤波器,实质上将输入信号与内核相乘以获得修改的信号。在数学上,两个函数f和g的卷积定义为

其中,只不过是输入函数和内核函数的点积。

在图像处理的情况下,更容易将内核可视化为在整个图像上滑动并因此改变过程中每个像素的值。

图片来源:机器学习大师[6]

合并:池化是基于样本的离散化过程。目标是对输入表示(图像,隐藏层输出矩阵等)进行下采样,降低其维数并允许对包含在子区域中的特征进行合并。

池有两种主要类型,通常称为最大和最小池。顾名思义,最大池化是基于从所选区域中获取最大值,而最小池化是基于从所选区域中获取最小值。

因此,可以看出,卷积神经网络或CNN基本上是深度神经网络,其由除了用于引入非线性的激活函数之外具有卷积和池化功能的隐藏层组成。

更详细的解释可以在

http://colah.github.io/posts/2014-07-Conv-Nets-Modular/

递归神经网络(RNN)

简称为递归神经网络或RNN,是自然语言处理中大量使用的神经网络的一个非常重要的变体。在通用神经网络中,通过多个层处理输入并产生输出,假​​设两个连续输入彼此独立。

然而,在许多现实生活场景中,这种假设并不正确。例如,如果想要在给定时间预测股票的价格或者想要预测序列中的下一个词,则必须考虑对先前观察的依赖。

RNN被称为循环,因为它们对序列的每个元素执行相同的任务,输出取决于先前的计算。考虑RNN的另一种方式是它们有一个“记忆”,它可以捕获到目前为止计算的信息。从理论上讲,RNN可以利用任意长序列中的信息,但在实践中,它们仅限于回顾几个步骤。[7]

架构方面,RNN看起来像这样。可以将其想象为多层神经网络,其中每层代表在特定时间t的观察结果。

RNN已经证明在自然语言处理方面取得了巨大的成功,尤其是它们的变体LSTM,它们能够比RNN更长远。如果您有兴趣了解LSTM,我当然鼓励您访问

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

在本文中,我试图从理论的角度涵盖神经网络,从最基本的结构,神经元和覆盖到最流行的神经网络版本开始。这篇文章的目的是让读者了解神经网络是如何从头开始构建的,它使用的所有领域以及最成功的变体是什么。

我知道还有很多其他流行的版本,我将在后续帖子中介绍。如果您希望早些时候覆盖它,请随时提出一个主题。


未经允许不得转载:零点智能 » 了解神经网络,从神经元到RNN,CNN和深度学习
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

零点智能 人工智能社区,加Q群:469331966

投稿&建议&加Q群