NUS学习之神经网络理论

本文详细介绍了神经网络的基本原理,包括人工神经元模型、感知器、多层感知器以及它们在函数逼近和分类问题中的应用。讨论了激活函数的重要性,特别是非线性激活函数如sigmoid和ReLU。还提到了循环神经网络(RNN)、卷积神经网络(CNN)和生成对抗网络(GAN)等深度学习模型,以及它们在自然语言处理和图像生成等领域的应用。最后,探讨了神经网络的训练过程,包括前向传播和反向传播。
摘要由CSDN通过智能技术生成

神经网络理论学习(新国立)

人类大脑有数十亿个神经元。神经元是人脑中相互连接的神经细胞,他们包含化学信号和电信号的处理和传输。

其中Dendrite主要负责从其他神经元接收信号,the cell nucleus or Soma 处理来源于Dendrite的信息。axon(轴突)是神经元用来发送信息的电缆。synapse(突触)是轴突末端之间的连接,神经元向轴突发送信息,通过动作电位远离细胞体。它是以快速上升尖峰的形式出现的电压波动。如果神经元达到临界阈值,实际的尖峰会被触发。如图上的SPIKE所示。如果神经元没有达到这个临界值,这样就不会产生动作电位。当达到阈值时,会产生动作电位。(The temporal sequence of action potentials is called a spike train) 动作电位的时间序列称为脉冲序列,(the neuron encodes information in the spike train).神经元在脉冲序列中编码信息。1943年,受McCulloh和Pitts的启发,发明了人工神经元。稍后,当我们讨论神经的历史时,我们将讨论1943年的神经网络。Frank Rosenblatt 在1962年推出了感知器,如下图所示。

就像神经元是大脑的组成部分一样,它是一个人工神经元,是一个人工神经网络的组成部分。感知器输入x_1,x_2,x_3,一直到x_m,可以使实数。每一个输入乘以一个权重w_i,权重项反映了特定输入的重要性。注意,有一个固定输入权重B, 这就是所谓的偏差项 bias term.。偏差作为一个阈值将会在后面解释。然后将输入的产物按其各自的权重加起来。这就是加权和,更确切地说,是加权线性组合。最后加权和通过一个非线性激活函数,例如这里的step function。如果加权和大于阈值B,The step function 将会被触发,这将作为感知器输出。虽然图中没有说明,但是感知器可以有多个输出。最后,权重和偏差是可以调地参数,它们在感知器训练过程中被更新以确定行为。连接感知器的一种方法是通过体系结构来连接感知器,叫做Multilayer Perceptron 多层感知器。如下图:

多层感知器是一个人工神经网络,它有一个节点地输入层(接收输入)它有一个更上层的节点,负责处理并生成输出。它有称为隐藏层的中间节点层,主要负责在网络中处理信息。上图中包含四个输入四个输入,一个输出,以及有6个节点地隐藏层。每一条边都带有一个权重,W_ij。它指的是第一层中第i个神经元与下一层中第j个神经元之间地权重。除了输入层,网络中的每个节点都是一个输出为非线性的感知器。非线性函数称为激活函数Sigma。,因为拥有感知器,在训练过程中学习权重和偏差。文章后面将会介绍训练神经网络地相关内容。注意,多层感知器也被称为多层前馈网络。(从输入层到输出层信息只向一个方向流动)。换句话讲,没有反馈信息。感知机采取其输入的加权线性组合,并将其通过非线性激活函数Sigma生成其输出。 这种激活函数是神经网络能量的关键。下面简要地谈谈激活函数。神经网络中一个节点的激活函数通常是一个具有非线性输入输出关系的函数。激活函数的非线性是关键,并允许多层感知器解决非平凡的问题。为什么是非线性?让我们先来看看线性地激活函数。比如sigma(x)=x。因此,激活函数只是将输入传递给输出。我们看到输出是简单的加权线性组合的加权线性组合等等。这意味着最终的输出只是输入的加权线性组合。在这种情况下,多层感知器只能计算线性函数。如我们所看到的,当激活是非线性的,多层感知器可以计算复杂的非线性函数。最简单的激活函数是step function(受生物系统的启发)。例如,人类大脑中的神经元。其他的一些激活函数方法如下图所示。

sigmoid函数是step function的连续版本。我们可以看到step function在x=0处不连续,不可微。sigmoid函数在x取值任何时都是连续且可微的。双曲线切线,又叫做tanh类似于sigmoid函数,但是他的输出从-1到1不等。sigmoid与tanh都是压缩函数(squashing function),因为他们都限制输出为两个很小的有限值,无论输入的大小。ReLU是经过矫正的线性单元。它对X的正值是线性的,对于X的负值是零的。ReLU是一个高效的且首当其冲的激活函数。Leaky ReLU and ELU(Exponential linear unit)指数线性单元是ReLU的微调,去处理某些计算问题。Maxout激活通过学习所需的参数来概括ReLU和Leaky ReLU。

现在我们来谈谈如何训练神经网络。一个监督神经网络学习来源于标注的例子。这个过程叫做训练神经网络。标注的数据称为训练集。下图说明了标准的多层感知器。

它拥有输入输出层,和一个隐藏层,每条边拥有对应的权值,每个节点有关联的偏差和激活函数。训练集被输入到图中左侧的输入层,通过网络处理得到输出,我们得到predicted label。这就是前向传播的步骤。预测标签是权值和偏差参数的函数,在训练过程中需要更新的数量。我们知道预期的输出标签,并且可以将其与预测的输出标签进行比较。我门可以计算两者之间的误差。经过训练处理,神经网络可以像我们一样吸取错误经验,所以不会一次一次的再犯错。这些错误通过网络向后传播,然后更新权重,所以预测将会更准确。这是后向传播的步骤。对所有的训练数据重复这个过程,甚至可以分批处理。通常,训练数据是随机的,并通过网络多次反馈。每一轮训练都被称为一个epoch,神经网络经常训练很多个epoch。训练一直持续到我们的错误表现不再有改善为止。此处给出的描述相当笼统,并适用于所有受监督的神经网络。实际上,所使用的误差可以使均方误差,使用的误差度量可以是均方误差。可以使用称为梯度下降和反向传播的算法来更新权重以训练神经网络。

让我们回顾回归问题,神经网络需要学习预测一些未知函数的连续值, 神经网络几乎可以逼近任何函数。无论函数多么复杂。

图左是单变量f(x)的标量函数,我们可以用有限的节点建立一个神经网络拥有一个输入,一个输出,和一个隐藏层。它可以接受x的值并非常精确地生成f(x)。所需要的只是一组训练数据,(x,f(x)),去训练神经网络。之前的例子都是一个输入一个输出, 函数近似也可以用多个输入多个输出进行。举个例子。下图显示的是一个单隐藏层的多层感知器用来计算一个m=3的输入和n=2的输出的函数。

所以,神经网络可以近似哪些?他们有限制吗?有一个很好的理论叫做万能近似定理(the universal approximation theorem)如下所述。一个前馈网络例如一个多层感知器,拥有一个单一的隐藏层包含有限的神经元,可以近似任何连续函数,在激活函数的mild条件下的R ^ n的紧子集(n维欧几里德空间)上。这个是英文直译,我还没了解,了解过修改哈。值得注意的是,近似可能不是精确值,仅仅是接近而已,万能近似定理和其sigmoid函数如下所示。

它不适用于线性激活。注意这个理论说明一个隐藏层是足够的但是没有说明需要多少神经元。实际上, 隐藏层中的神经元数量可能相当大。更多信息请参考图中的链接。

让我们直观地了解一下神经网络函数的近似能力。在微积分中,有时我们使用一系列有限的矩形来表示或近似给定的函数。例如,这是在数值积分过程中完成的,使用黎曼和。该函数在某个点X处的值是矩形在X处的高度。

如图A所示,当矩形变窄时,近似会越来越精确。如B、C所示。关于函数逼近,这正是神经网络所做的。它们以同样的方式构造一系列矩形来逼近函数。现在让我们建立一些矩形,

假设,我们只有一个输入,一个输出,两个节点隐藏层的多层感知器。神经网络直观地在图左边所示。我们有输入X,两个隐藏单元在隐藏层,神经元1在上面,神经元2在下面以及输出点Y,每条边的权值如图所示。 这两个隐藏单元有偏差或阈值,如下所示。两个隐藏单元的输出在方程一和方程二中显示, 在方程1和方程2中注意是非线性激活函数。例如非线性激活可能是step function或Sigmoid function,网络的最终输出如方程3所示。请注意,方程3中没有非线性激活。假设我们使用的是step function激活,注意,这也适用于其他激活函数。输出y_1(神经元1)如下图A的上方。输出y_2(神经元2)如下图B。注意他们都是step function,都是在不同的点从0到1的转变,因为权重和阈值不同。最终输出Y如图C所示,通过考虑两步函数的差,我们得到如图C所示的矩形函数。

总的来说,我们使用了带有一个带有两个节点的隐藏层的多层感知器来构建一个具有任意宽度和任意位置的矩形。如前所述,我们可以使用它来构建函数逼近器。

上图左边是一个多层感知器有一个拥有十个节点的隐藏层,由于我们知道两个隐藏单元可以生成一个矩形,那么就可以使用更多的隐藏节点创造更多的矩形。然后我们就可以使用多个矩形逼近指定函数。如上右图。注意每条边和节点的权重和偏差在训练时从标注的数据集中学得。我们也可以通过更多的节点得到越来越棒的逼近效果。因此,这解释了如何将多层感知器用作函数逼近器,以逼近有监督学习回归问题的连续函数。

多层感知器的函数逼近能力也适用于布尔函数。布尔函数是接受二进制0/1输入并计算这些输入的二进制函数的函数。如下图所示。有三个布尔函数,与门,或门,异或门。 之所以称它们为“门”,是因为这些逻辑门是数字电路设计的基础,并且是所有电子数字计算机的基础。这三个布尔函数的输入输出关系显示在门下方的真值表中。有两个输入和一个 输出。那么问题是我们可以创建一个神经网络来执行这些方法吗?

对布尔类型进行图形化是有用的。如上图中的下方所示,例如看与门,有四点含有坐标的点,对应四种输入。点的颜色代表输出。黑色为0,白色为1。然我们看一下神经网络如何解决这种分类问题。

我们知道创建一个与门需要两个输入和一个输出。如上图顶端所示。真值表就是我们想要近似的内容,看右边的与门图,我们看到数据集是线性分离的,意味着我们可以画一条线分割黑白点,学习算法仅仅需要学习这条分割线。图左下方是一个single感知器,输出的他的加权线性组合。我们看到感知器可以完成线性回归。总的来说,感知器方法是一个线性分割对于分类来说。因为与门是一个线性分离,我们可以训练感知器去学习正确的权重和偏差,以至于完成与的方法。那么如何完成或门呢?异或门呢?异或门不是线性可分离的,因此一个感知无法学习XOR function,然而,结果表明,多层感知器可以实现XOR function,事实上,万能近似定理推广到布尔函数如下:具有一个隐藏层和有限数量节点的多层感知器足以表示任何布尔函数。特殊地,如果布尔函数有n个输入,那么隐藏层有2^n节点就足够了。让我们看另一个例子,他是变相的函数逼近。这是手写数字识别的图像分类。

图的左侧是MNIST数据集,有10类,从0到9。数据集有60000个训练样例和10,000测试样例(都被标注了)。神经网络学习算法的工作就是输出手写图像,然后然会图片所代表的数字。所以这是一个监督学习的分类问题。所以那么这里的函数是什么呢?

近似的函数是图像(即特征)与类标签(其为数字)之间的映射。这个分类问题可以通过多层感知器来解决。输入时图像的像素,所以我们有图像的大小,比如28px * 28px,那么就有784个输入。有10个输出节点,分别对应是个数字。最后,当然还有很多隐藏层与其大量的节点。因为这个问题包含图像,我们可以使用其他类型的神经网络,如卷积神经网络(CNN),这更适合这些类型的应用。所以,我们已经知道了神经网络可以在很宽泛的领域中做出很好的函数逼近。事实上,你可以认为所有的机器学习方法就像函数逼近。

神经网络的类型

· Feedforward versus recurrent networks

在前馈网络中,没有循环,信息流是一种方式,从输入到隐藏层再到输出。在递归网络中,有网络中的反馈信息,所以信息可以回流到输入。

· Continuous versus spiking

尖峰神经网络紧密模仿人脑中的自然神经网络,并在尖峰序列中编码信息。连续网络模型是平均尖峰速率或firing rate,其中尖峰随时间积分。这与大脑中神经编码的假设速率编码模型一致。

· Supervised versus unsupervised learning

监督学习网络就像一个知道答案的老师,每个输入的期望输出都由用户提供。无监督学习网络寻找隐藏的统计模式在输入中。算法包括clustering,PCA,dimensionality reduction。

神经网络的拓扑

神经网络的拓扑结构是神经元相互连接的方式。 神经网络有许多拓扑。我们已经见过了前馈网络。如下图左边所示。

给定层中的节点不相互连接,而仅连接到该层之前和之后的节点。在一个递归神经网络中,有反馈链接。如图中间所示。注意反馈从隐藏层到输入层,因为有反馈的关系,递归网络可以捕获时序信息,意味着过去的信息和决策可以用来影响当前的处理。我们还有完全连接的网络,其中只有一层,并且每个节点都与其他每个节点连接。如图中右侧所示,Hopfield网络是完全连接的神经网络的一个示例。最后,我们有深度学习,这并不是真的的拓扑。相反,深度学习意味着有许多隐藏层,每层有许多节点。举个例子,VGG-16网络,这是最先进的卷积神经网络,有41层。16层具有可学习的权重和约1.38亿个可学习的参数。我么看到有许多神经网络的拓展,我们再介绍一些其他的流行神经网络例子。

循环神经网络

对于循环神经网络,其反馈可能是积极的也可能是消极的,或者都有。值得注意的是,引入反馈并不一定是稳定的。然而,对称连接可以确保稳定性。为什么我们需要使用RNN?有很多原因。首先,RNN可以学习temporal patterns.。例如,时间序列或者观测序列。RNNs可以应用于时间序列数据的预测,例如股票市场预测。他们也可以被用于自动语言翻译。他们在生物学上是现实的。与人类大脑皮层神经元的大多数连接都是来自大脑局部或远处神经元的反馈连接。RNNs的例子包含Hopfield networks(associative memories)。玻尔兹曼机,带有输入和输出单元的类似Hopfield的网络。循环反向网络,对于小序列,你可以及时展开网络并使用反向传播学习。当然还有LSTM(长短期记忆神经网络)。

Hopfield networks

Hopfield 网络是约翰·霍普菲尔德(John Hopfield)在1982年普及的一种递归人工神经网络。它是具有完全连接的架构的神经网络,如图A所示。

Hopfield网络用作具有二进制阈值模型的内容可寻址(“关联”)存储系统。有一个能量函数的想法。能量表面具有局部最小值,这些最小值对应于可以存储模式的存储位置,如图B所示。当你恢复模式时,例如从噪声的版本恢复时,你输入了噪声的版本,网络将返回最接近的模式。如图C。所以Hopfield 网络是一种联想记忆。在Hopfield 网络中有异步更新输出,因此节点可以独立于其他节点触发和更改它。而且,Hebbian学习规则适用于Hopfield网络。在对称条件下,Hopfield网络保证会收敛到局部最小值,因此可能会收敛到错误的模式,错误的局部最小值,而不是所存储的模式(期望的局部最小值)。它也给一为人类理解记忆提供一个模型。可以从图中的链接学习更多的细节。

Convolutional Neural Networks(CNN)

另一个例子是来源于深度学习的图像分类,特别是一类神经网络结构叫做CNN。假设我们想要建立一个机器学习模型能够学习猫狗之间的差异,在下图的左侧,我们看到了训练集。

训练集包含猫狗的图片(被标注)。右边的图为CNN结构,由卷积层和池化层组成。这些层是用来提取特征的。如,也许是为了认识到猫有尖尖的耳朵,而狗却没有。这只是一个例子。实际上,我们不知道CNN提取了什么特征。这些特征将会被放到全连接层,一个多层感知器,然后做出分类决策。输出层输出是猫还是狗取决于所做的决策。实际上,CNN运作良好,当今已知的最佳算法是CNN型神经网络。CNN创造了诶什么深度学习这么流行的原因。关于深度神经网络需要注意的一件事是,它们在某种意义上是一个黑匣子,从某种意义上说,我们真的不了解内部正在发生什么。这被叫做可解释性This is known as explainability or interpretability.使用该术语,深度学习是无法解释的,研究人员正在努力将解释性纳入此类深度学习模型。 为了了解可解释性为何重要的原因,假设我们正在看的是医学患者CT扫描的图像,而不是猫和狗,而CNN二进制分类问题是确定患者是否患有癌症。 假设CNN预测某位患者罹患癌症的风险很高。 即使算法正确,就足够了吗? 您认为还需要什么?你不认为医生想知道为什么风险高吗?所有这些都属于可解释性的一般topic。

Transformer Networks

经常被用作自然语言处理。对于那些拥有智能手机的人,我确定您了解虚拟数字助理应用程序。Siri......这些虚拟助手使用语音查询和自然语言处理来回答问题。最近,NLP深度学习模式取得了长足的进步。下面将show一个model叫做BERT(which is an acronym for bi-directional encoder representations from transformers)。BERT由谷歌语言研究者提出,BERT是一种经过预先训练的上下文语言模型,可根据前后上下文表示单词。它使用了一种transformer,该transformer是一种学习单词之间上下文关系的注意力机制。现如今,注意力机制非常流行。首先只对一种语言(即一种语言,文本数据)进行模型训练,但是这样做可以学习该语言的一般趋势,然后将其用于下游任务。例如,在实践中,预训练的BERT模型已显示出可以显着改善许多NLP任务(例如问题回答,自然语言理解和机器翻译)的结果。

Generative Adversarial Network(GAN)

神经网络中最近一项非常有趣的创新也是我最喜欢的创新之一,即生成对抗网络或GAN。GAN允许您学习生成具有与给定真实数据训练集相同的统计信息的新伪造数据。此处显示的图说明了GAN架构。GAN由两个神经网络D和G组成,它们相互竞争,从而改善了这两个网络的学习。D is the discriminator and G is the generator.(D是鉴别符,G是生成器)。鉴别器网络D可以访问带有真实样本的训练数据集。生成器网络G希望生成看起来像真实样本的伪样本。培训过程中的信息流如下。 生成器G生成伪造的样本,并将其提供给鉴别对象或D,后者也可以访问真实样本。因此,D可以学习区分真实样本和假样本。这是一个标准的监督学习分类问题。然而,生成器还了解它是否能够欺骗鉴别器D。所以,生成器G可以学习生成越来越多的伪造数据以欺骗鉴别器D。此过程反复进行,鉴别器D和生成器G都在各自的任务上变得更好。特别地,鉴别器D擅长将假数据样本与真实数据样本区分开,生成器G擅长生成看起来真实的伪样本。生成器G已经了解了从未直接访问的真实样本数据集的统计信息。 生成器G和鉴别器D都是神经网络,它们在训练过程中迭代地更新其权重。如果给你一些背景信息,可能会更清楚一些。假设D是想要检测假币的警察。G是想要产生现实的假币的伪造者。 在GAN训练结束时,D擅长检测假钱,G擅长产生假钱。

用GAN创造出假图片是有趣的事情,看下面一张图。

这些看上去像真是存在的人吗?仔细看,你能看出问题吗?实际上,这些图片都是假的,是由GAN网络所产生的。可以从图中的链接里获取更多的细节信息。那么,你认为你能分辨出GAN生成的深假面孔和真实面孔之间的区别吗?我们来玩个游戏,下面这张图,有两组照片,每组中,一个真人和一个由GAN生成的图片,你知道哪个是真的吗?

其实,图的右侧是真人?你猜对了吗?你可以继续玩下去,通过图中给出的网站。

当然还能生成视频什么的。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值