导航:首页 > 编程大全 > 神经网络关联分析

神经网络关联分析

发布时间:2023-02-07 06:05:59

A. 如何用神经网络的方法分析两者之间的关系

数模大赛吧 自己完成

B. 最小二乘法、回归分析法、灰色预测法、决策论、神经网络等5个算法的使用范围及优缺点是什么

最小二乘法:通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。优点:实现简单,计算简单。缺点:不能拟合非线性数据.
回归分析法:指的是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。在大数据分析中,回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。优点:在分析多因素模型时,更加简单和方便,不仅可以预测并求出函数,还可以自己对结果进行残差的检验,检验模型的精度。缺点:回归方程式只是一种推测,这影响了因子的多样性和某些因子的不可测性,使得回归分析在某些情况下受到限制。
灰色预测法:
色预测法是一种对含有不确定因素的系统进行预测的方法 。它通过鉴别系统因素之间发展趋势的相异程度,即进行关联分析,并对原始数据进行生成处理来寻找系统变动的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物未来发展趋势的状况。它用等时间距离观测到的反应预测对象特征的一系列数量值构造灰色预测模型,预测未来某一时刻的特征量,或者达到某一特征量的时间。优点:对于不确定因素的复杂系统预测效果较好,且所需样本数据较小。缺点:基于指数率的预测没有考虑系统的随机性,中长期预测精度较差。
决策树:在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。优点:能够处理不相关的特征;在相对短的时间内能够对大型数据源做出可行且效果良好的分析;计算简单,易于理解,可解释性强;比较适合处理有缺失属性的样本。缺点:忽略了数据之间的相关性;容易发生过拟合(随机森林可以很大程度上减少过拟合);在决策树当中,对于各类别样本数量不一致的数据,信息增益的结果偏向于那些具有更多数值的特征。
神经网络:优点:分类的准确度高;并行分布处理能力强,分布存储及学习能力强,对噪声神经有较强的鲁棒性和容错能力,能充分逼近复杂的非线性关系;具备联想记忆的功能。缺点:神经网络需要大量的参数,如网络拓扑结构、权值和阈值的初始值;不能观察之间的学习过程,输出结果难以解释,会影响到结果的可信度和可接受程度;学习时间过长,甚至可能达不到学习的目的。

C. 神经网络相关名词解释

很多人认为深度学习很枯燥,大部分情况是因为对深度学习的学术词语,特别是专有名词很困惑,即便对相关从业者,亦很难深入浅出地解释这些词语的含义。 

相信读过此文的圈友,会对深度学习有个全新的认识,机器人圈希望可以为圈友的深度学习之路起到一些辅助作用。

人工智能,深度学习,机器学习—无论你在做什么,如果你对它不是很了解的话—去学习它。否则的话不用三年你就跟不上时代的潮流了。——马克.库班

马克.库班的这个观点可能听起来很极端——但是它所传达的信息是完全正确的! 我们正处于一场革命的旋涡之中——一场由大数据和计算能力引起的革命。

只需要一分钟,我们来想象一下,在20世纪初,如果一个人不了解电力,他/她会觉得如何?你会习惯于以某种特定的方式来做事情,日复一日,年复一年,而你周围的一切事情都在发生变化,一件需要很多人才能完成的事情仅依靠一个人和电力就可以轻松搞定,而我们今天正以机器学习和深度学习的方式在经历一场相似的旅程。

所以,如果你还没有探索或理解深度学习的神奇力量——那你应该从今天就开始进入这一领域。

与主题相关的术语

为了帮助你了解各种术语,我已经将它们分成3组。如果你正在寻找特定术语,你可以跳到该部分。如果你是这个领域的新手,那我建议你按照我写的顺序来通读它们。

1.神经网络基础(Basics of Neural Networks) ——常用激活函数(Common Activation Functions) 

2.卷积神经网络(Convolutional Neural Networks) 

3.循环神经网络(Recurrent Neural Networks)

神经网络基础

1)神经元(Neuron) ——就像形成我们大脑基本元素的神经元一样,神经元形成神经网络的基本结构。想象一下,当我们得到新信息时我们该怎么做。当我们获取信息时,我们一般会处理它,然后生成一个输出。类似地,在神经网络的情况下,神经元接收输入,处理它并产生输出,而这个输出被发送到其他神经元用于进一步处理,或者作为最终输出进行输出。 

2)权重(Weights) ——当输入进入神经元时,它会乘以一个权重。例如,如果一个神经元有两个输入,则每个输入将具有分配给它的一个关联权重。我们随机初始化权重,并在模型训练过程中更新这些权重。训练后的神经网络对其输入赋予较高的权重,这是它认为与不那么重要的输入相比更为重要的输入。为零的权重则表示特定的特征是微不足道的。

让我们假设输入为a,并且与其相关联的权重为W1,那么在通过节点之后,输入变为a * W1 

3)偏差(Bias) ——除了权重之外,另一个被应用于输入的线性分量被称为偏差。它被加到权重与输入相乘的结果中。基本上添加偏差的目的是来改变权重与输入相乘所得结果的范围的。添加偏差后,结果将看起来像a* W1 +偏差。这是输入变换的最终线性分量。

4)激活函数(Activation Function) ——一旦将线性分量应用于输入,将会需要应用一个非线性函数。这通过将激活函数应用于线性组合来完成。激活函数将输入信号转换为输出信号。应用激活函数后的输出看起来像f(a * W1 + b),其中f()就是激活函数。

在下图中,我们将“n”个输入给定为X1到Xn而与其相应的权重为Wk1到Wkn。我们有一个给定值为bk的偏差。权重首先乘以与其对应的输入,然后与偏差加在一起。而这个值叫做u。

U =ΣW* X+ b

激活函数被应用于u,即 f(u),并且我们会从神经元接收最终输出,如yk = f(u)。

常用的激活函数  

最常用的激活函数就是Sigmoid,ReLU和softmax

a)Sigmoid ——最常用的激活函数之一是Sigmoid,它被定义为: 

Sigmoid变换产生一个值为0到1之间更平滑的范围。我们可能需要观察在输入值略有变化时输出值中发生的变化。光滑的曲线使我们能够做到这一点,因此优于阶跃函数。

b)ReLU(整流线性单位) ——与Sigmoid函数不同的是,最近的网络更喜欢使用ReLu激活函数来处理隐藏层。该函数定义为: 

当X>0时,函数的输出值为X;当X<=0时,输出值为0。函数图如下图所示: 

使用ReLU函数的最主要的好处是对于大于0的所有输入来说,它都有一个不变的导数值。常数导数值有助于网络训练进行得更快。

c) Softmax ——Softmax激活函数通常用于输出层,用于分类问题。它与sigmoid函数是很类似的,唯一的区别就是输出被归一化为总和为1。Sigmoid函数将发挥作用以防我们有一个二进制输出,但是如果我们有一个多类分类问题,softmax函数使为每个类分配值这种操作变得相当简单,而这可以将其解释为概率。

以这种方式来操作的话,我们很容易看到——假设你正在尝试识别一个可能看起来像8的6。该函数将为每个数字分配值如下。我们可以很容易地看出,最高概率被分配给6,而下一个最高概率分配给8,依此类推……

5)神经网络(Neural Network) ——神经网络构成了深度学习的支柱。神经网络的目标是找到一个未知函数的近似值。它由相互联系的神经元形成。这些神经元具有权重和在网络训练期间根据错误来进行更新的偏差。激活函数将非线性变换置于线性组合,而这个线性组合稍后会生成输出。激活的神经元的组合会给出输出值。

一个很好的神经网络定义——

“神经网络由许多相互关联的概念化的人造神经元组成,它们之间传递相互数据,并且具有根据网络”经验“调整的相关权重。神经元具有激活阈值,如果通过其相关权重的组合和传递给他们的数据满足这个阈值的话,其将被解雇;发射神经元的组合导致“学习”。

6)输入/输出/隐藏层(Input / Output / Hidden Layer) ——正如它们名字所代表的那样,输入层是接收输入那一层,本质上是网络的第一层。而输出层是生成输出的那一层,也可以说是网络的最终层。处理层是网络中的隐藏层。这些隐藏层是对传入数据执行特定任务并将其生成的输出传递到下一层的那些层。输入和输出层是我们可见的,而中间层则是隐藏的。

7)MLP(多层感知器) ——单个神经元将无法执行高度复杂的任务。因此,我们使用堆栈的神经元来生成我们所需要的输出。在最简单的网络中,我们将有一个输入层、一个隐藏层和一个输出层。每个层都有多个神经元,并且每个层中的所有神经元都连接到下一层的所有神经元。这些网络也可以被称为完全连接的网络。 

8)正向传播(Forward Propagation) ——正向传播是指输入通过隐藏层到输出层的运动。在正向传播中,信息沿着一个单一方向前进。输入层将输入提供给隐藏层,然后生成输出。这过程中是没有反向运动的。

9)成本函数(Cost Function) ——当我们建立一个网络时,网络试图将输出预测得尽可能靠近实际值。我们使用成本/损失函数来衡量网络的准确性。而成本或损失函数会在发生错误时尝试惩罚网络。

我们在运行网络时的目标是提高我们的预测精度并减少误差,从而最大限度地降低成本。最优化的输出是那些成本或损失函数值最小的输出。

如果我将成本函数定义为均方误差,则可以写为:

C= 1/m ∑(y–a)^2,

其中m是训练输入的数量,a是预测值,y是该特定示例的实际值。

学习过程围绕最小化成本来进行。

10)梯度下降(Gradient Descent) ——梯度下降是一种最小化成本的优化算法。要直观地想一想,在爬山的时候,你应该会采取小步骤,一步一步走下来,而不是一下子跳下来。因此,我们所做的就是,如果我们从一个点x开始,我们向下移动一点,即Δh,并将我们的位置更新为x-Δh,并且我们继续保持一致,直到达到底部。考虑最低成本点。

在数学上,为了找到函数的局部最小值,我们通常采取与函数梯度的负数成比例的步长。

11)学习率(Learning Rate) ——学习率被定义为每次迭代中成本函数中最小化的量。简单来说,我们下降到成本函数的最小值的速率是学习率。我们应该非常仔细地选择学习率,因为它不应该是非常大的,以至于最佳解决方案被错过,也不应该非常低,以至于网络需要融合。

12)反向传播(Backpropagation) ——当我们定义神经网络时,我们为我们的节点分配随机权重和偏差值。一旦我们收到单次迭代的输出,我们就可以计算出网络的错误。然后将该错误与成本函数的梯度一起反馈给网络以更新网络的权重。 最后更新这些权重,以便减少后续迭代中的错误。使用成本函数的梯度的权重的更新被称为反向传播。

在反向传播中,网络的运动是向后的,错误随着梯度从外层通过隐藏层流回,权重被更新。

13)批次(Batches) ——在训练神经网络的同时,不用一次发送整个输入,我们将输入分成几个随机大小相等的块。与整个数据集一次性馈送到网络时建立的模型相比,批量训练数据使得模型更加广义化。

14)周期(Epochs) ——周期被定义为向前和向后传播中所有批次的单次训练迭代。这意味着1个周期是整个输入数据的单次向前和向后传递。

你可以选择你用来训练网络的周期数量,更多的周期将显示出更高的网络准确性,然而,网络融合也需要更长的时间。另外,你必须注意,如果周期数太高,网络可能会过度拟合。

15)丢弃(Dropout) ——Dropout是一种正则化技术,可防止网络过度拟合套。顾名思义,在训练期间,隐藏层中的一定数量的神经元被随机地丢弃。这意味着训练发生在神经网络的不同组合的神经网络的几个架构上。你可以将Dropout视为一种综合技术,然后将多个网络的输出用于产生最终输出。

16)批量归一化(Batch Normalization) ——作为一个概念,批量归一化可以被认为是我们在河流中设定为特定检查点的水坝。这样做是为了确保数据的分发与希望获得的下一层相同。当我们训练神经网络时,权重在梯度下降的每个步骤之后都会改变,这会改变数据的形状如何发送到下一层。

但是下一层预期分布类似于之前所看到的分布。 所以我们在将数据发送到下一层之前明确规范化数据。

17)滤波器(Filters) ——CNN中的滤波器与加权矩阵一样,它与输入图像的一部分相乘以产生一个回旋输出。我们假设有一个大小为28 * 28的图像,我们随机分配一个大小为3 * 3的滤波器,然后与图像不同的3 * 3部分相乘,形成所谓的卷积输出。滤波器尺寸通常小于原始图像尺寸。在成本最小化的反向传播期间,滤波器值被更新为重量值。

参考一下下图,这里filter是一个3 * 3矩阵:

与图像的每个3 * 3部分相乘以形成卷积特征。

18)卷积神经网络(CNN) ——卷积神经网络基本上应用于图像数据。假设我们有一个输入的大小(28 * 28 * 3),如果我们使用正常的神经网络,将有2352(28 * 28 * 3)参数。并且随着图像的大小增加参数的数量变得非常大。我们“卷积”图像以减少参数数量(如上面滤波器定义所示)。当我们将滤波器滑动到输入体积的宽度和高度时,将产生一个二维激活图,给出该滤波器在每个位置的输出。我们将沿深度尺寸堆叠这些激活图,并产生输出量。

你可以看到下面的图,以获得更清晰的印象。

19)池化(Pooling) ——通常在卷积层之间定期引入池层。这基本上是为了减少一些参数,并防止过度拟合。最常见的池化类型是使用MAX操作的滤波器尺寸(2,2)的池层。它会做的是,它将占用原始图像的每个4 * 4矩阵的最大值。

你还可以使用其他操作(如平均池)进行池化,但是最大池数量在实践中表现更好。

20)填充(Padding) ——填充是指在图像之间添加额外的零层,以使输出图像的大小与输入相同。这被称为相同的填充。

在应用滤波器之后,在相同填充的情况下,卷积层具有等于实际图像的大小。

有效填充是指将图像保持为具有实际或“有效”的图像的所有像素。在这种情况下,在应用滤波器之后,输出的长度和宽度的大小在每个卷积层处不断减小。

21)数据增强(Data Augmentation) ——数据增强是指从给定数据导出的新数据的添加,这可能被证明对预测有益。例如,如果你使光线变亮,可能更容易在较暗的图像中看到猫,或者例如,数字识别中的9可能会稍微倾斜或旋转。在这种情况下,旋转将解决问题并提高我们的模型的准确性。通过旋转或增亮,我们正在提高数据的质量。这被称为数据增强。

循环神经网络

22)循环神经元(Recurrent Neuron) ——循环神经元是在T时间内将神经元的输出发送回给它。如果你看图,输出将返回输入t次。展开的神经元看起来像连接在一起的t个不同的神经元。这个神经元的基本优点是它给出了更广义的输出。

23)循环神经网络(RNN) ——循环神经网络特别用于顺序数据,其中先前的输出用于预测下一个输出。在这种情况下,网络中有循环。隐藏神经元内的循环使他们能够存储有关前一个单词的信息一段时间,以便能够预测输出。隐藏层的输出在t时间戳内再次发送到隐藏层。展开的神经元看起来像上图。只有在完成所有的时间戳后,循环神经元的输出才能进入下一层。发送的输出更广泛,以前的信息保留的时间也较长。

然后根据展开的网络将错误反向传播以更新权重。这被称为通过时间的反向传播(BPTT)。

24)消失梯度问题(Vanishing Gradient Problem) ——激活函数的梯度非常小的情况下会出现消失梯度问题。在权重乘以这些低梯度时的反向传播过程中,它们往往变得非常小,并且随着网络进一步深入而“消失”。这使得神经网络忘记了长距离依赖。这对循环神经网络来说是一个问题,长期依赖对于网络来说是非常重要的。

这可以通过使用不具有小梯度的激活函数ReLu来解决。

25)激增梯度问题(Exploding Gradient Problem) ——这与消失的梯度问题完全相反,激活函数的梯度过大。在反向传播期间,它使特定节点的权重相对于其他节点的权重非常高,这使得它们不重要。这可以通过剪切梯度来轻松解决,使其不超过一定值。

D. 全转录组关联分析TWAS的原理与方法

对GWAS(genome-wide association study, 全基因组关联分析)大家应该比较熟悉,是分析遗传变异(genotype, 如SNP)与表型(phenotype)之间的关联。如果某个SNP总是和某种疾病同时出现,那么可以推测这个SNP极有可能与此疾病有关,也就是这个SNP和这个phenotype协同变化,有相关性。但基于GWAS的结果,仅能给出候选的染色体区域,无法确切定位致病的候选基因。为了进一步缩小候选基因的范围,研究者提出了很多方法,全转录组关联分析TWAS (transcriptome-wide association)是其中一种。 TWAS是把转录调控(expression)作为遗传变异(genotype)和表型(phenotype)之间的中介,将单个遗传变异与表型的关联转换成基因/转录本与表型的关联。

第一步,基于reference panel来建模,构建SNP和基因表达量之间的关系。reference panel中的样本同时拥有基因分型和表达量的结果,根据距离确定基因对应的SNP位点,比如选择基因上下游500kb或者1Mb范围内的SNP位点,拟合这些SNP位点和基因表达量之间的关系。
第二步,用第一步建模的结果来预测另外一个队列的基因表达量,这个队列中的样本量只有GWAS结果,称之为gwas cohort, 这一步可以看做是对gwas cohort中的基因表达量进行填充。
第三步,用填充之后的基因表达量来分析基因和性状之间的关联。

2015年,Eric R Gamazon等人为了建立起受遗传调控的基因表达与性状之间的关系,提出了一种方法PrediXcan。

2020年10月,Eric R Gamazon课题组提出MR-JTI(Mendelian randomization & joint-tissue imputation) 方法,对TWAS分析做了两个优化:
第一,JTI方法可以提高表达量预测模型的精度,从而增加关联分析的检验效能;
第二,MR方法可以解决基因多效性 (horizontal pleiotropy) 及潜在混杂因素带来的假阳性问题。
方法的流程图如下:

首先来看第一步优化,JTI方法。
之前的TWAS分析方法,在预测表达量模型的训练中,未充分利用GTEx数据组织间广泛存在的生物学相似性。这里,研究者通过整合多个相似的组织 (Joint-tissue imputation, JTI) 来提升模型的预测精度。研究者同样使用弹性神经网络方法进行训练,不同的是在损失函数中引用了相似性权重值:

此方法弥补了TWAS的一大缺陷,且对于工具变量异质性的假设较MR-Egger等经典方法更为灵活。将MR-JTI方法应用于LDL-C疾病相关的GWAS数据,与仅用JTI方法的结果进行比较,发现加入了孟德尔随机化过程后,可以过滤掉大多数基因,保留下的基因中有7个已得到实验验证。

本文主要对TWAS分析的原理和方法进行了简介。TWAS的优势在于可以找到显著性的基因而不是SNP,因此更具有生物学意义。

目前,TWAS已经成功应用于精神分裂症、乳腺癌、前列腺癌等疾病中,相关的数据分析软件除了上文介绍的PrediXcan和MR-JTI外,还有S-prediXcan,、Fusion、 UTMOST等。从文献的分析比较来看,MR-JTI的分析效果最佳。

下次将具体介绍软件使用,并且对比不同软件的分析效果,不容错过哦~

[1] GTEx Consortium, Gamazon, E.R., Wheeler, H.E., Shah, K.P., Mozaffari, S.V., Aquino-Michaels, K., Carroll, R.J., Eyler, A.E., Denny, J.C., Nicolae, D.L., et al. (2015). A gene-based association method for mapping traits using reference transcriptome data. Nat Genet 47, 1091–1098.
[2] Wainberg, M., Sinnott-Armstrong, N., Mancuso, N., Barbeira, A.N., Knowles, D.A., Golan, D., Ermel, R., Ruusalepp, A., Quertermous, T., Hao, K., et al. (2019). Opportunities and challenges for transcriptome-wide association studies. Nature Genetics 51, 592–599.
[3] Zhou, D., Jiang, Y., Zhong, X., Cox, N.J., Liu, C., and Gamazon, E.R. (2020). A unified framework for joint-tissue transcriptome-wide association and Mendelian randomization analysis. Nat Genet 52, 1239–1246.

E. Nature 论文:探索深度神经网络之间的个体差异

深度神经网络(DNNs)是 AI 领域的重要成果,但它的 “存在感” 已经不仅仅限于该领域。

一些前沿生物医学研究,也正被这一特别的概念所吸引。特别是计算神经科学家。

在以前所未有的任务性能彻底改变计算机视觉之后,相应的 DNNs 网络很快就被用以试着解释大脑信息处理的能力,并日益被用作灵长类动物大脑神经计算的建模框架。经过任务优化的深度神经网络,已经成为预测灵长类动物视觉皮层多个区域活动的最佳模型类型之一。

用神经网络模拟大脑或者试图让神经网络更像大脑正成为主流方向的当下,有研究小组却选择用神经生物学的方法重新审视计算机学界发明的DNNs。

而他们发现,诸如改变初始权重等情况就能改变网络的最终训练结果。这对使用单个网络来窥得生物神经信息处理机制的普遍做法提出了新的要求:如果没有将具有相同功能的深度神经网络具有的差异性纳入考虑的话,借助这类网络进行生物大脑运行机制建模将有可能出现一些随机的影响。要想尽量避免这种现象,从事 DNNs 研究的计算神经科学家,可能需要将他们的推论建立在多个网络实例组的基础上,即尝试去研究多个相同功能的神经网络的质心,以此克服随机影响。

而对于 AI 领域的研究者,团队也希望这种表征一致性的概念能帮助机器学习研究人员了解在不同任务性能水平下运行的深度神经网络之间的差异。

人工神经网络由被称为 “感知器”、相互连接的单元所建立,感知器则是生物神经元的简化数字模型。人工神经网络至少有两层感知器,一层用于输入层,另一层用于输出层。在输入和输出之间夹上一个或多个 “隐藏” 层,就得到了一个 “深层” 神经网络,这些层越多,网络越深。

深度神经网络可以通过训练来识别数据中的特征,就比如代表猫或狗图像的特征。训练包括使用一种算法来迭代地调整感知器之间的连接强度(权重系数),以便网络学会将给定的输入(图像的像素)与正确的标签(猫或狗)相关联。理想状况是,一旦经过训练,深度神经网络应该能够对它以前没有见过的同类型输入进行分类。

但在总体结构和功能上,深度神经网络还不能说是严格地模仿人类大脑,其中对神经元之间连接强度的调整反映了学习过程中的关联。

一些神经科学家常常指出深度神经网络与人脑相比存在的局限性:单个神经元处理信息的范围可能比 “失效” 的感知器更广,例如,深度神经网络经常依赖感知器之间被称为反向传播的通信方式,而这种通信方式似乎并不存在于人脑神经系统。

然而,计算神经科学家会持不同想法。有的时候,深度神经网络似乎是建模大脑的最佳选择。

例如,现有的计算机视觉系统已经受到我们所知的灵长类视觉系统的影响,尤其是在负责识别人、位置和事物的路径上,借鉴了一种被称为腹侧视觉流的机制。

对人类来说,腹侧神经通路从眼睛开始,然后进入丘脑的外侧膝状体,这是一种感觉信息的中继站。外侧膝状体连接到初级视觉皮层中称为 V1 的区域,在 V1 和 V4 的下游是区域 V2 和 V4,它们最终通向下颞叶皮层。非人类灵长类动物的大脑也有类似的结构(与之相应的背部视觉流是一条很大程度上独立的通道,用于处理看到运动和物体位置的信息)。

这里所体现的神经科学见解是,视觉信息处理的分层、分阶段推进的:早期阶段先处理视野中的低级特征(如边缘、轮廓、颜色和形状),而复杂的表征,如整个对象和面孔,将在之后由颞叶皮层接管。

如同人的大脑,每个 DNN 都有独特的连通性和表征特征,既然人的大脑会因为内部构造上的差异而导致有的人可能记忆力或者数学能力更强,那训练前初始设定不同的神经网络是否也会在训练过程中展现出性能上的不同呢?

换句话说,功能相同,但起始条件不同的神经网络间究竟有没有差异呢?

这个问题之所以关键,是因为它决定着科学家们应该在研究中怎样使用深度神经网络。

在之前 Nature 通讯发布的一篇论文中,由英国剑桥大学 MRC 认知及脑科学研究组、美国哥伦比亚大学 Zuckerman Institute 和荷兰拉德堡大学的 Donders 脑科学及认知与行为学研究中心的科学家组成的一支科研团队,正试图回答这个问题。论文题目为《Indivial differences among deep neural network models》。

根据这篇论文,初始条件不同的深度神经网络,确实会随着训练进行而在表征上表现出越来越大的个体差异。

此前的研究主要是采用线性典范相关性分析(CCA,linear canonical correlation analysis)和 centered-kernel alignment(CKA)来比较神经网络间的内部网络表征差异。

这一次,该团队的研究采用的也是领域内常见的分析手法 —— 表征相似性分析(RSA,representational similarity analysis)。

该分析法源于神经科学的多变量分析方法,常被用于将计算模型生产的数据与真实的大脑数据进行比较,在原理上基于通过用 “双(或‘对’)” 反馈差异表示系统的内部刺激表征(Inner stimulus representation)的表征差异矩阵(RDMs,representational dissimilarity matrices),而所有双反馈组所组成的几何则能被用于表示高维刺激空间的几何排布。

两个系统如果在刺激表征上的特点相同(即表征差异矩阵的相似度高达一定数值),就被认为是拥有相似的系统表征。

表征差异矩阵的相似度计算在有不同维度和来源的源空间(source spaces)中进行,以避开定义 “系统间的映射网络”。本研究的在这方面上的一个特色就是,使用神经科学研究中常用的网络实例比较分析方法对网络间的表征相似度进行比较,这使得研究结果可被直接用于神经科学研究常用的模型。

最终,对比的结果显示,仅在起始随机种子上存在不同的神经网络间存在明显个体差异。

该结果在采用不同网络架构,不同训练集和距离测量的情况下都成立。团队分析认为,这种差异的程度与 “用不同输入训练神经网络” 所产生的差异相当。

如上图所示,研究团队通过计算对应 RDM 之间的所有成对距离,比较 all-CNN-C 在所有网络实例和层、上的表示几何。

再通过 MDS 将 a 中的数据点(每个点对应一个层和实例)投影到二维。各个网络实例的层通过灰色线连接。虽然早期的代表性几何图形高度相似,但随着网络深度的增加,个体差异逐渐显现。

在证明了深度神经网络存在的显著个体差异之后,团队继续探索了这些差异存在的解释。

随后,研究者再通过在训练和测试阶段使用 Bernoulli dropout 方法调查了网络正则化(network regularization)对结果能造成的影响,但发现正则化虽然能在一定程度上提升 “采用不同起始随机种子的网络之表征” 的一致性,但并不能修正这些网络间的个体差异。

最后,通过分析网络的训练轨迹与个体差异出现的过程并将这一过程可视化,团队在论文中表示,神经网络的性能与表征一致性间存在强负相关性,即网络间的个体差异会在训练过程中被加剧。

总而言之,这项研究主要调查了多个神经网络在最少的实验干预条件下是否存在个体差异,即在训练开始前为网络设置不同权重的随机种子,但保持其他条件一致,并以此拓展了此前与 “神经网络间相关性” 有关的研究。

除了这篇 这篇 研究以外,“深度学习三巨头” 之一、著名 AI 学者 Hinton 也有过与之相关的研究,论文名为《Similarity of Neural Network Representations Revisited》,文章探讨了测量深度神经网络表示相似性的问题,感兴趣的读者可以一并进行阅读。

Refrence:

[1]https://www.nature.com/articles/s41467-020-19632-w#citeas

[2]https://www.quantamagazine.org/deep-neural-networks-help-to-explain-living-brains-20201028/

F. 大数据分析方法分哪些类

CDA大数据课程设计比较全面,业务逻辑和大数据技术都有,出来就是复合型人才.
第一部分 大数据平台:
大数据平台包含了采集层、存储层、计算层和应用层,是一个复杂的IT系统,需要学会Hadoop等分布式系统的开发技能。
1.1采集层:Sqoop可用来采集导入传统关系型数据库的数据、Flume对于日志型数据采集,另外使用Python一类的语言开发网络爬虫获取网络数据;
1.2储存层:分布式文件系统HDFS最为常用;
1.3计算层:有不同的计算框架可以选择,常见的如MapRece、Spark等,一般来讲,如果能使用计算框架的“原生语言”,运算效率会最高(MapRece的原生支持Java,而Spark原生支持Scala);
1.4应用层:包括结果数据的可视化、交互界面开发以及应用管理工具的开发等,更多的用到Java、Python等通用IT开发前端、后端的能力;
第二部分 大数据分析:
大数据挖掘指的是利用算法和模型提高数据处理效率、挖掘数据价值、实现从数据到知识的转换
2.1数据分析方法论:统计基础 微积分(求导)代数(矩阵运算)等
2.2统计模型:方差分析、线性回归、逻辑回归、列联分析、聚类分析、面板模型等
2.3数据挖掘模型:决策树 关联分析、SVM、神经网络 贝叶斯网络等

G. 神经网络分析法的神经网络分析法在风险评估的运用

神经网络分析方法应用于信用风险评估的优点在于其无严格的假设限制,且具有处理非线性问题的能力。它能有效解决非正态分布、非线性的信用评估问题,其结果介于0与1之间,在信用风险的衡量下,即为违约概率。神经网络法的最大缺点是其工作的随机性较强。因此使该模型的应用受到了限制。Altman、marco和varetto(1994)在对意大利公司财务危机预测中应用了神经网络分析法;coats及fant(1993)trippi采用神经网络分析法分别对美国公司和银行财务危机进行预测,取得较好效果。然而,要得到一个较好的神经网络结构,需要人为随机调试,需要耗费大量人力和时间,加之该方法结论没有统计理论基础,解释性不强,所以应用受到很大限制。

H. 一文看懂四种基本的神经网络架构

原文链接:
http://blackblog.tech/2018/02/23/Eight-Neural-Network/

更多干货就在我的个人博客 http://blackblog.tech 欢迎关注

刚刚入门神经网络,往往会对众多的神经网络架构感到困惑,神经网络看起来复杂多样,但是这么多架构无非也就是三类,前馈神经网络,循环网络,对称连接网络,本文将介绍四种常见的神经网络,分别是CNN,RNN,DBN,GAN。通过这四种基本的神经网络架构,我们来对神经网络进行一定的了解。

神经网络是机器学习中的一种模型,是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
一般来说,神经网络的架构可以分为三类:

前馈神经网络:
这是实际应用中最常见的神经网络类型。第一层是输入,最后一层是输出。如果有多个隐藏层,我们称之为“深度”神经网络。他们计算出一系列改变样本相似性的变换。各层神经元的活动是前一层活动的非线性函数。

循环网络:
循环网络在他们的连接图中定向了循环,这意味着你可以按照箭头回到你开始的地方。他们可以有复杂的动态,使其很难训练。他们更具有生物真实性。
循环网络的目的使用来处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如,你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。
循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。

对称连接网络:
对称连接网络有点像循环网络,但是单元之间的连接是对称的(它们在两个方向上权重相同)。比起循环网络,对称连接网络更容易分析。这个网络中有更多的限制,因为它们遵守能量函数定律。没有隐藏单元的对称连接网络被称为“Hopfield 网络”。有隐藏单元的对称连接的网络被称为玻尔兹曼机。

其实之前的帖子讲过一些关于感知机的内容,这里再复述一下。
首先还是这张图
这是一个M-P神经元

一个神经元有n个输入,每一个输入对应一个权值w,神经元内会对输入与权重做乘法后求和,求和的结果与偏置做差,最终将结果放入激活函数中,由激活函数给出最后的输出,输出往往是二进制的,0 状态代表抑制,1 状态代表激活。

可以把感知机看作是 n 维实例空间中的超平面决策面,对于超平面一侧的样本,感知器输出 1,对于另一侧的实例输出 0,这个决策超平面方程是 w⋅x=0。 那些可以被某一个超平面分割的正反样例集合称为线性可分(linearly separable)样例集合,它们就可以使用图中的感知机表示。
与、或、非问题都是线性可分的问题,使用一个有两输入的感知机能容易地表示,而异或并不是一个线性可分的问题,所以使用单层感知机是不行的,这时候就要使用多层感知机来解决疑惑问题了。

如果我们要训练一个感知机,应该怎么办呢?
我们会从随机的权值开始,反复地应用这个感知机到每个训练样例,只要它误分类样例就修改感知机的权值。重复这个过程,直到感知机正确分类所有的样例。每一步根据感知机训练法则来修改权值,也就是修改与输入 xi 对应的权 wi,法则如下:

这里 t 是当前训练样例的目标输出,o 是感知机的输出,η 是一个正的常数称为学习速率。学习速率的作用是缓和每一步调整权的程度,它通常被设为一个小的数值(例如 0.1),而且有时会使其随着权调整次数的增加而衰减。

多层感知机,或者说是多层神经网络无非就是在输入层与输出层之间加了多个隐藏层而已,后续的CNN,DBN等神经网络只不过是将重新设计了每一层的类型。感知机可以说是神经网络的基础,后续更为复杂的神经网络都离不开最简单的感知机的模型,

谈到机器学习,我们往往还会跟上一个词语,叫做模式识别,但是真实环境中的模式识别往往会出现各种问题。比如:
图像分割:真实场景中总是掺杂着其它物体。很难判断哪些部分属于同一个对象。对象的某些部分可以隐藏在其他对象的后面。
物体光照:像素的强度被光照强烈影响。
图像变形:物体可以以各种非仿射方式变形。例如,手写也可以有一个大的圆圈或只是一个尖头。
情景支持:物体所属类别通常由它们的使用方式来定义。例如,椅子是为了让人们坐在上面而设计的,因此它们具有各种各样的物理形状。
卷积神经网络与普通神经网络的区别在于,卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。在卷积神经网络的卷积层中,一个神经元只与部分邻层神经元连接。在CNN的一个卷积层中,通常包含若干个特征平面(featureMap),每个特征平面由一些矩形排列的的神经元组成,同一特征平面的神经元共享权值,这里共享的权值就是卷积核。卷积核一般以随机小数矩阵的形式初始化,在网络的训练过程中卷积核将学习得到合理的权值。共享权值(卷积核)带来的直接好处是减少网络各层之间的连接,同时又降低了过拟合的风险。子采样也叫做池化(pooling),通常有均值子采样(mean pooling)和最大值子采样(max pooling)两种形式。子采样可以看作一种特殊的卷积过程。卷积和子采样大大简化了模型复杂度,减少了模型的参数。
卷积神经网络由三部分构成。第一部分是输入层。第二部分由n个卷积层和池化层的组合组成。第三部分由一个全连结的多层感知机分类器构成。
这里举AlexNet为例:

·输入:224×224大小的图片,3通道
·第一层卷积:11×11大小的卷积核96个,每个GPU上48个。
·第一层max-pooling:2×2的核。
·第二层卷积:5×5卷积核256个,每个GPU上128个。
·第二层max-pooling:2×2的核。
·第三层卷积:与上一层是全连接,3*3的卷积核384个。分到两个GPU上个192个。
·第四层卷积:3×3的卷积核384个,两个GPU各192个。该层与上一层连接没有经过pooling层。
·第五层卷积:3×3的卷积核256个,两个GPU上个128个。
·第五层max-pooling:2×2的核。
·第一层全连接:4096维,将第五层max-pooling的输出连接成为一个一维向量,作为该层的输入。
·第二层全连接:4096维
·Softmax层:输出为1000,输出的每一维都是图片属于该类别的概率。

卷积神经网络在模式识别领域有着重要应用,当然这里只是对卷积神经网络做了最简单的讲解,卷积神经网络中仍然有很多知识,比如局部感受野,权值共享,多卷积核等内容,后续有机会再进行讲解。

传统的神经网络对于很多问题难以处理,比如你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。RNN之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。理论上,RNN能够对任何长度的序列数据进行处理。
这是一个简单的RNN的结构,可以看到隐藏层自己是可以跟自己进行连接的。

那么RNN为什么隐藏层能够看到上一刻的隐藏层的输出呢,其实我们把这个网络展开来开就很清晰了。

从上面的公式我们可以看出,循环层和全连接层的区别就是循环层多了一个权重矩阵 W。
如果反复把式2带入到式1,我们将得到:

在讲DBN之前,我们需要对DBN的基本组成单位有一定的了解,那就是RBM,受限玻尔兹曼机。
首先什么是玻尔兹曼机?
[图片上传失败...(image-d36b31-1519636788074)]
如图所示为一个玻尔兹曼机,其蓝色节点为隐层,白色节点为输入层。
玻尔兹曼机和递归神经网络相比,区别体现在以下几点:
1、递归神经网络本质是学习一个函数,因此有输入和输出层的概念,而玻尔兹曼机的用处在于学习一组数据的“内在表示”,因此其没有输出层的概念。
2、递归神经网络各节点链接为有向环,而玻尔兹曼机各节点连接成无向完全图。

而受限玻尔兹曼机是什么呢?
最简单的来说就是加入了限制,这个限制就是将完全图变成了二分图。即由一个显层和一个隐层构成,显层与隐层的神经元之间为双向全连接。

h表示隐藏层,v表示显层
在RBM中,任意两个相连的神经元之间有一个权值w表示其连接强度,每个神经元自身有一个偏置系数b(对显层神经元)和c(对隐层神经元)来表示其自身权重。
具体的公式推导在这里就不展示了

DBN是一个概率生成模型,与传统的判别模型的神经网络相对,生成模型是建立一个观察数据和标签之间的联合分布,对P(Observation|Label)和 P(Label|Observation)都做了评估,而判别模型仅仅而已评估了后者,也就是P(Label|Observation)。
DBN由多个限制玻尔兹曼机(Restricted Boltzmann Machines)层组成,一个典型的神经网络类型如图所示。这些网络被“限制”为一个可视层和一个隐层,层间存在连接,但层内的单元间不存在连接。隐层单元被训练去捕捉在可视层表现出来的高阶数据的相关性。

生成对抗网络其实在之前的帖子中做过讲解,这里在说明一下。
生成对抗网络的目标在于生成,我们传统的网络结构往往都是判别模型,即判断一个样本的真实性。而生成模型能够根据所提供的样本生成类似的新样本,注意这些样本是由计算机学习而来的。
GAN一般由两个网络组成,生成模型网络,判别模型网络。
生成模型 G 捕捉样本数据的分布,用服从某一分布(均匀分布,高斯分布等)的噪声 z 生成一个类似真实训练数据的样本,追求效果是越像真实样本越好;判别模型 D 是一个二分类器,估计一个样本来自于训练数据(而非生成数据)的概率,如果样本来自于真实的训练数据,D 输出大概率,否则,D 输出小概率。
举个例子:生成网络 G 好比假币制造团伙,专门制造假币,判别网络 D 好比警察,专门检测使用的货币是真币还是假币,G 的目标是想方设法生成和真币一样的货币,使得 D 判别不出来,D 的目标是想方设法检测出来 G 生成的假币。
传统的判别网络:

生成对抗网络:

下面展示一个cDCGAN的例子(前面帖子中写过的)
生成网络

判别网络

最终结果,使用MNIST作为初始样本,通过学习后生成的数字,可以看到学习的效果还是不错的。

本文非常简单的介绍了四种神经网络的架构,CNN,RNN,DBN,GAN。当然也仅仅是简单的介绍,并没有深层次讲解其内涵。这四种神经网络的架构十分常见,应用也十分广泛。当然关于神经网络的知识,不可能几篇帖子就讲解完,这里知识讲解一些基础知识,帮助大家快速入(zhuang)门(bi)。后面的帖子将对深度自动编码器,Hopfield 网络长短期记忆网络(LSTM)进行讲解。

I. 神经网络简述

机器学习中谈论的神经网络是指“神经网络学习”,或者说,是机器学习和神经网络这两个学科领域的交叉部分[1]。

在这里,神经网络更多的是指计算机科学家模拟人类大脑结构和智能行为,发明的一类算法的统称。

神经网络是众多优秀仿生算法中的一种,读书时曾接触过蚁群优化算法,曾惊讶于其强大之处,但神经网络的强大,显然蚁群优化还不能望其项背。

A、起源与第一次高潮。有人认为,神经网络的最早讨论,源于现代计算机科学的先驱——阿兰.图灵在1948年的论文中描述的“B型组织机器”[2]。二十世纪50年代出现了以感知机、Adaling为代表的一系列成功,这是神经网络发展的第一个高潮[1]。

B、第一次低谷。1969年,马文.明斯基出版《感知机》一书,书中论断直接将神经网络打入冷宫,导致神经网络十多年的“冰河期”。值得一提的是,在这期间的1974年,哈佛大学Paul Webos发明BP算法,但当时未受到应有的重视[1]。

C、第二次高潮。1983年,加州理工学院的物理学家John Hopfield利用神经网络,在旅行商问题上获得当时最好结果,引起轰动;Rumelhart等人重新发明了BP算法,BP算法迅速走红,掀起神经网络第二次高潮[1]。

D、第二次低谷。二十世纪90年代中期,统计学习理论和支持向量机兴起,较之于这些算法,神经网络的理论基础不清晰等缺点更加凸显,神经网络研究进入第二次低谷[1]。

E、深度学习的崛起。2010年前后,随着计算能力的提升和大数据的涌现,以神经网络为基础的“深度学习”崛起,科技巨头公司谷歌、Facebook、网络投入巨资研发,神经网络迎来第三次高潮[1]。2016年3月9日至15日,Google人工智能程序AlphaGo对阵韩国围棋世界冠军李世乭,以4:1大比分获胜,比众多专家预言早了十年。这次比赛,迅速在全世界经济、科研、计算机产业各领域掀起人工智能和深度学习的热烈讨论。

F、展望。从几个方面讨论一下。

1)、近期在Google AlphaGo掀起的热潮中,民众的热情与期待最大,甚至有少许恐慌情绪;计算机产业和互联网产业热情也非常巨大,对未来充满期待,各大巨头公司对其投入大量资源;学术界的反应倒是比较冷静的。学术界的冷静,是因为神经网络和深度神经网络的理论基础还没有出现长足的进步,其缺点还没有根本改善。这也从另一个角度说明了深度神经网络理论进步的空间很大。

2)、"当代神经网络是基于我们上世纪六十年代掌握的脑知识。"关于人类大脑的科学与知识正在爆炸式增长。[3]世界上很多学术团队正在基于大脑机制新的认知建立新的模型[3]。我个人对此报乐观态度,从以往的仿生算法来看,经过亿万年进化的自然界对科技发展的促进从来没有停止过。

3)、还说AlphaGo,它并不是理论和算法的突破,而是基于已有算法的工程精品。AlhphaGo的工作,为深度学习的应用提供了非常广阔的想象空间。分布式技术提供了巨大而廉价的计算能力,巨量数据的积累提供了丰富的训练样本,深度学习开始腾飞,这才刚刚开始。

一直沿用至今的,是McChlloch和Pitts在1943年依据脑神经信号传输结构抽象出的简单模型,所以也被称作”M-P神经元模型“。

其中,

f函数像一般形如下图的函数,既考虑阶跃性,又考虑光滑可导性。

实际常用如下公式,因形如S,故被称作sigmoid函数。

把很多个这样的神经元按一定层次连接起来,就得到了神经网络。

两层神经元组成,输入层接收外界输入信号,输出层是M-P神经元(只有输出层是)。

感知机的数学模型和单个M-P神经元的数学模型是一样的,如因为输入层只需接收输入信号,不是M-P神经元。

感知机只有输出层神经元是B-P神经元,学习能力非常有限。对于现行可分问题,可以证明学习过程一定会收敛。而对于非线性问题,感知机是无能为力的。

BP神经网络全称叫作误差逆传播(Error Propagation)神经网络,一般是指基于误差逆传播算法的多层前馈神经网络。这里为了不占篇幅,BP神经网络将起篇另述。

BP算法是迄今最为成功的神经网络学习算法,也是最有代表性的神经网络学习算法。BP算法不仅用于多层前馈神经网络,还用于其他类型神经网络的训练。

RBF网络全程径向基函数(Radial Basis Function)网络,是一种单隐层前馈神经网络,其与BP网络最大的不同是采用径向基函数作为隐层神经元激活函数。

卷积神经网络(Convolutional neural networks,简称CNNs)是一种深度学习的前馈神经网络,在大型图片处理中取得巨大成功。卷积神经网络将起篇另述。

循环神经网络(Recurrent Neural Networks,RNNs)与传统的FNNs不同,RNNs引入定向循环,能够处理那些输入之间前后关联的问题。RNNs已经在众多自然语言处理(Natural Language Processing, NLP)中取得了巨大成功以及广泛应用[5]。RNNs将起篇另述。[5]

[1]、《机器学习》,周志华著

[2]、《模式识别(第二版)》,Richard O.Duda等著,李宏东等译

[3]、《揭秘IARPA项目:解码大脑算法或将彻底改变机器学习》,Emily Singerz著,机器之心编译出品

[4]、图片来源于互联网

[5]、 循环神经网络(RNN, Recurrent Neural Networks)介绍

J. 一文读懂神经网络

要说近几年最引人注目的技术,无疑的,非人工智能莫属。无论你是否身处科技互联网行业,随处可见人工智能的身影:从 AlphaGo 击败世界围棋冠军,到无人驾驶概念的兴起,再到科技巨头 All in AI,以及各大高校向社会输送海量的人工智能专业的毕业生。以至于人们开始萌生一个想法:新的革命就要来了,我们的世界将再次发生一次巨变;而后开始焦虑:我的工作是否会被机器取代?我该如何才能抓住这次革命?

人工智能背后的核心技术是深度神经网络(Deep Neural Network),大概是一年前这个时候,我正在回老家的高铁上学习 3Blue1Brown 的 Neural Network 系列视频课程,短短 4 集 60 多分钟的时间,就把神经网络从 High Level 到推导细节说得清清楚楚,当时的我除了获得新知的兴奋之外,还有一点新的认知,算是给头脑中的革命性的技术泼了盆冷水:神经网络可以解决一些复杂的、以前很难通过写程序来完成的任务——例如图像、语音识别等,但它的实现机制告诉我,神经网络依然没有达到生物级别的智能,短期内期待它来取代人也是不可能的。

一年后的今天,依然在这个春运的时间点,将我对神经网络的理解写下来,算是对这部分知识的一个学习笔记,运气好的话,还可以让不了解神经网络的同学了解起来。

维基网络这样解释 神经网络 :

这个定义比较宽泛,你甚至还可以用它来定义其它的机器学习算法,例如之前我们一起学习的逻辑回归和 GBDT 决策树。下面我们具体一点,下图是一个逻辑回归的示意图:

其中 x1 和 x2 表示输入,w1 和 w2 是模型的参数,z 是一个线性函数:

接着我们对 z 做一个 sigmod 变换(图中蓝色圆),得到输出 y:

其实,上面的逻辑回归就可以看成是一个只有 1 层 输入层 , 1 层 输出层 的神经网络,图中容纳数字的圈儿被称作 神经元 ;其中,层与层之间的连接 w1、w2 以及 b,是这个 神经网络的参数 ,层之间如果每个神经元之间都保持着连接,这样的层被称为 全连接层 (Full Connection Layer),或 稠密层 (Dense Layer);此外,sigmoid 函数又被称作 激活函数 (Activation Function),除了 sigmoid 外,常用的激活函数还有 ReLU、tanh 函数等,这些函数都起到将线性函数进行非线性变换的作用。我们还剩下一个重要的概念: 隐藏层 ,它需要把 2 个以上的逻辑回归叠加起来加以说明:

如上图所示,除输入层和输出层以外,其他的层都叫做 隐藏层 。如果我们多叠加几层,这个神经网络又可以被称作 深度神经网络 (Deep Neural Network),有同学可能会问多少层才算“深”呢?这个没有绝对的定论,个人认为 3 层以上就算吧:)

以上,便是神经网络,以及神经网络中包含的概念,可见,神经网络并不特别,广义上讲,它就是

可见,神经网络和人脑神经也没有任何关联,如果我们说起它的另一个名字—— 多层感知机(Mutilayer Perceptron) ,就更不会觉得有多么玄乎了,多层感知机创造于 80 年代,可为什么直到 30 年后的今天才爆发呢?你想得没错,因为改了个名字……开个玩笑;实际上深度学习这项技术也经历过很长一段时间的黑暗低谷期,直到人们开始利用 GPU 来极大的提升训练模型的速度,以及几个标志性的事件:如 AlphaGo战胜李世石、Google 开源 TensorFlow 框架等等,感兴趣的同学可以翻一下这里的历史。

就拿上图中的 3 个逻辑回归组成的神经网络作为例子,它和普通的逻辑回归比起来,有什么优势呢?我们先来看下单逻辑回归有什么劣势,对于某些情况来说,逻辑回归可能永远无法使其分类,如下面数据:

这 4 个样本画在坐标系中如下图所示

因为逻辑回归的决策边界(Decision Boundary)是一条直线,所以上图中的两个分类,无论你怎么做,都无法找到一条直线将它们分开,但如果借助神经网络,就可以做到这一点。

由 3 个逻辑回归组成的网络(这里先忽略 bias)如下:

观察整个网络的计算过程,在进入输出层之前,该网络所做的计算实际上是:

即把输入先做了一次线性变换(Linear Transformation),得到 [z1, z2] ,再把 [z1, z2] 做了一个非线性变换(sigmoid),得到 [x1', x2'] ,(线性变换的概念可以参考 这个视频 )。从这里开始,后面的操作就和一个普通的逻辑回归没有任何差别了,所以它们的差异在于: 我们的数据在输入到模型之前,先做了一层特征变换处理(Feature Transformation,有时又叫做特征抽取 Feature Extraction),使之前不可能被分类的数据变得可以分类了

我们继续来看下特征变换的效果,假设 为 ,带入上述公式,算出 4 个样本对应的 [x1', x2'] 如下:

再将变换后的 4 个点绘制在坐标系中:

显然,在做了特征变换之后,这两个分类就可以很容易的被一条决策边界分开了。

所以, 神经网络的优势在于,它可以帮助我们自动的完成特征变换或特征提取 ,尤其对于声音、图像等复杂问题,因为在面对这些问题时,人们很难清晰明确的告诉你,哪些特征是有用的。

在解决特征变换的同时,神经网络也引入了新的问题,就是我们需要设计各式各样的网络结构来针对性的应对不同的场景,例如使用卷积神经网络(CNN)来处理图像、使用长短期记忆网络(LSTM)来处理序列问题、使用生成式对抗网络(GAN)来写诗和作图等,就连去年自然语言处理(NLP)中取得突破性进展的 Transformer/Bert 也是一种特定的网络结构。所以, 学好神经网络,对理解其他更高级的网络结构也是有帮助的

上面说了,神经网络可以看作一个非线性函数,该函数的参数是连接神经元的所有的 Weights 和 Biases,该函数可以简写为 f(W, B) ,以手写数字识别的任务作为例子:识别 MNIST 数据集 中的数字,数据集(MNIST 数据集是深度学习中的 HelloWorld)包含上万张不同的人写的数字图片,共有 0-9 十种数字,每张图片为 28*28=784 个像素,我们设计一个这样的网络来完成该任务:

把该网络函数所具备的属性补齐:

接下来的问题是,这个函数是如何产生的?这个问题本质上问的是这些参数的值是怎么确定的。

在机器学习中,有另一个函数 c 来衡量 f 的好坏,c 的参数是一堆数据集,你输入给 c 一批 Weights 和 Biases,c 输出 Bad 或 Good,当结果是 Bad 时,你需要继续调整 f 的 Weights 和 Biases,再次输入给 c,如此往复,直到 c 给出 Good 为止,这个 c 就是损失函数 Cost Function(或 Loss Function)。在手写数字识别的列子中,c 可以描述如下:

可见,要完成手写数字识别任务,只需要调整这 12730 个参数,让损失函数输出一个足够小的值即可,推而广之,绝大部分神经网络、机器学习的问题,都可以看成是定义损失函数、以及参数调优的问题。

在手写识别任务中,我们既可以使用交叉熵(Cross Entropy)损失函数,也可以使用 MSE(Mean Squared Error)作为损失函数,接下来,就剩下如何调优参数了。

神经网络的参数调优也没有使用特别的技术,依然是大家刚接触机器学习,就学到的梯度下降算法,梯度下降解决了上面迭代过程中的遗留问题——当损失函数给出 Bad 结果时,如何调整参数,能让 Loss 减少得最快。

梯度可以理解为:

把 Loss 对应到 H,12730 个参数对应到 (x,y),则 Loss 对所有参数的梯度可以表示为下面向量,该向量的长度为 12730:
$$
abla L(w,b) = left[

frac{partial L}{partial w_1},
frac{partial L}{partial w_2},...,
frac{partial L}{partial b_{26}}

ight] ^ op
$$
所以,每次迭代过程可以概括为

用梯度来调整参数的式子如下(为了简化,这里省略了 bias):

上式中, 是学习率,意为每次朝下降最快的方向前进一小步,避免优化过头(Overshoot)。

由于神经网络参数繁多,所以需要更高效的计算梯度的算法,于是,反向传播算法(Backpropagation)呼之欲出。

在学习反向传播算法之前,我们先复习一下微积分中的链式法则(Chain Rule):设 g = u(h) , h = f(x) 是两个可导函数,x 的一个很小的变化 △x 会使 h 产生一个很小的变化 △h,从而 g 也产生一个较小的变化 △g,现要求 △g/△x,可以使用链式法则:

有了以上基础,理解反向传播算法就简单了。

假设我们的演示网络只有 2 层,输入输出都只有 2 个神经元,如下图所示:

其中 是输入, 是输出, 是样本的目标值,这里使用的损失函数 L 为 MSE;图中的上标 (1) 或 (2) 分别表示参数属于第 (1) 层或第 (2) 层,下标 1 或 2 分别表示该层的第 1 或 第 2 个神经元。

现在我们来计算 和 ,掌握了这 2 个参数的偏导数计算之后,整个梯度的计算就掌握了。

所谓反向传播算法,指的是从右向左来计算每个参数的偏导数,先计算 ,根据链式法则

对左边项用链式法则展开

又 是输出值, 可以直接通过 MSE 的导数算出:

而 ,则 就是 sigmoid 函数的导数在 处的值,即

于是 就算出来了:

再来看 这一项,因为

所以

注意:上面式子对于所有的 和 都成立,且结果非常直观,即 对 的偏导为左边的输入 的大小;同时,这里还隐含着另一层意思:需要调整哪个 来影响 ,才能使 Loss 下降得最快,从该式子可以看出,当然是先调整较大的 值所对应的 ,效果才最显著 。

于是,最后一层参数 的偏导数就算出来了

我们再来算上一层的 ,根据链式法则 :

继续展开左边这一项

你发现没有,这几乎和计算最后一层一摸一样,但需要注意的是,这里的 对 Loss 造成的影响有多条路径,于是对于只有 2 个输出的本例来说:

上式中, 都已经在最后一层算出,下面我们来看下 ,因为

于是

同理

注意:这里也引申出梯度下降的调参直觉:即要使 Loss 下降得最快,优先调整 weight 值比较大的 weight。

至此, 也算出来了

观察上式, 所谓每个参数的偏导数,通过反向传播算法,都可以转换成线性加权(Weighted Sum)计算 ,归纳如下:

式子中 n 代表分类数,(l) 表示第 l 层,i 表示第 l 层的第 i 个神经元。 既然反向传播就是一个线性加权,那整个神经网络就可以借助于 GPU 的矩阵并行计算了

最后,当你明白了神经网络的原理,是不是越发的认为,它就是在做一堆的微积分运算,当然,作为能证明一个人是否学过微积分,神经网络还是值得学一下的。Just kidding ..

本文我们通过

这四点,全面的学习了神经网络这个知识点,希望本文能给你带来帮助。

参考:

阅读全文

与神经网络关联分析相关的资料

热点内容
孩子学吉码少儿编程有什么好处 浏览:806
w7没有自带截图工具 浏览:928
vba新建excel文件 浏览:172
少儿编程合作招生需要准备什么 浏览:334
word目录编辑域 浏览:660
linux查找特殊字符 浏览:451
linux安装solr 浏览:28
iphone系统文件越用越大 浏览:64
微信修改的文件在哪里设置密码 浏览:48
老版支付宝安卓下载手机版本 浏览:688
动画文件格式为 浏览:180
微信怎么改单 浏览:368
笔记本韩国网站怎么访问 浏览:574
sai透视教程 浏览:346
苹果6s64g的停产了吗 浏览:507
猫眼实时票房榜排名 浏览:339
java大数据云计算方向企业级开发 浏览:718
为什么集搜客没有ms数据台 浏览:672
国内免费在线观看网址 浏览:935
qq原来头像 浏览:805

友情链接