dnn深度神经网络是谁开发的(开发深度神经网络DNN)

http://www.itjxue.com  2023-01-29 12:56  来源:未知  点击次数: 

CNN、RNN、DNN的一般解释

CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?

转自知乎 科言君 ?的回答

神经网络技术起源于上世纪五、六十年代,当时叫 感知机 (perceptron),拥有输入层、输出层和一个隐含层。输入的特征向量通过隐含层变换达到输出层,在输出层得到分类结果。早期感知机的推动者是Rosenblatt。 (扯一个不相关的:由于计算技术的落后,当时感知器传输函数是用线拉动变阻器改变电阻的方法机械实现的,脑补一下科学家们扯着密密麻麻的导线的样子…)

但是,Rosenblatt的单层感知机有一个严重得不能再严重的问题,即它对稍复杂一些的函数都无能为力(比如最为典型的“异或”操作)。连异或都不能拟合,你还能指望这货有什么实际用途么o(╯□╰)o

随着数学的发展,这个缺点直到上世纪八十年代才被Rumelhart、Williams、Hinton、LeCun等人(反正就是一票大牛)发明的 多层感知机 (multilayerperceptron)克服。多层感知机,顾名思义,就是有多个隐含层的感知机(废话……)。好好,我们看一下多层感知机的结构:

图1 上下层神经元全部相连的神经网络——多层感知机

多层感知机可以摆脱早期离散传输函数的束缚,使用sigmoid或tanh等连续函数模拟神经元对激励的响应,在训练算法上则使用Werbos发明的反向传播BP算法。对,这货就是我们现在所说的 神经网络 NN ——神经网络听起来不知道比感知机高端到哪里去了!这再次告诉我们起一个好听的名字对于研(zhuang)究(bi)很重要!

多层感知机解决了之前无法模拟异或逻辑的缺陷,同时更多的层数也让网络更能够刻画现实世界中的复杂情形。相信年轻如Hinton当时一定是春风得意。

多层感知机给我们带来的启示是, 神经网络的层数直接决定了它对现实的刻画能力 ——利用每层更少的神经元拟合更加复杂的函数[1]。

(Bengio如是说:functions that can be compactly

represented by a depth k architecture might require an exponential number of

computational elements to be represented by a depth k ? 1 architecture.)

即便大牛们早就预料到神经网络需要变得更深,但是有一个梦魇总是萦绕左右。随着神经网络层数的加深, 优化函数越来越容易陷入局部最优解 ,并且这个“陷阱”越来越偏离真正的全局最优。利用有限数据训练的深层网络,性能还不如较浅层网络。同时,另一个不可忽略的问题是随着网络层数增加, “梯度消失”现象更加严重 。具体来说,我们常常使用sigmoid作为神经元的输入输出函数。对于幅度为1的信号,在BP反向传播梯度时,每传递一层,梯度衰减为原来的0.25。层数一多,梯度指数衰减后低层基本上接受不到有效的训练信号。

2006年,Hinton利用预训练方法缓解了局部最优解问题,将隐含层推动到了7层[2],神经网络真正意义上有了“深度”,由此揭开了深度学习的热潮。这里的“深度”并没有固定的定义——在语音识别中4层网络就能够被认为是“较深的”,而在图像识别中20层以上的网络屡见不鲜。为了克服梯度消失,ReLU、maxout等传输函数代替了sigmoid,形成了如今DNN的基本形式。单从结构上来说, 全连接的 DNN 和图 1 的多层感知机是没有任何区别的 。

值得一提的是,今年出现的高速公路网络(highway network)和深度残差学习(deep residual learning)进一步避免了梯度消失,网络层数达到了前所未有的一百多层(深度残差学习:152层)[3,4]!具体结构题主可自行搜索了解。如果你之前在怀疑是不是有很多方法打上了“深度学习”的噱头,这个结果真是深得让人心服口服。

图2 缩减版的深度残差学习网络,仅有34 层,终极版有152 层,自行感受一下

如图1所示,我们看到 全连接 DNN 的结构里下层神经元和所有上层神经元都能够形成连接 ,带来的潜在问题是 参数数量的膨胀 。假设输入的是一幅像素为1K*1K的图像,隐含层有1M个节点,光这一层就有10^12个权重需要训练,这不仅容易过拟合,而且极容易陷入局部最优。另外,图像中有固有的局部模式(比如轮廓、边界,人的眼睛、鼻子、嘴等)可以利用,显然应该将图像处理中的概念和神经网络技术相结合。此时我们可以祭出题主所说的卷积神经网络CNN。对于CNN来说,并不是所有上下层神经元都能直接相连,而是 通过“卷积核”作为中介。同一个卷积核在所有图像内是共享的,图像通过卷积操作后仍然保留原先的位置关系。 两层之间的卷积传输的示意图如下:

图3 卷积神经网络隐含层(摘自Theano 教程)

通过一个例子简单说明卷积神经网络的结构。假设图3中m-1=1是输入层,我们需要识别一幅彩色图像,这幅图像具有四个通道ARGB(透明度和红绿蓝,对应了四幅相同大小的图像),假设卷积核大小为100*100,共使用100个卷积核w1到w100(从直觉来看,每个卷积核应该学习到不同的结构特征)。用w1在ARGB图像上进行卷积操作,可以得到隐含层的第一幅图像;这幅隐含层图像左上角第一个像素是四幅输入图像左上角100*100区域内像素的加权求和,以此类推。同理,算上其他卷积核,隐含层对应100幅“图像”。每幅图像对是对原始图像中不同特征的响应。按照这样的结构继续传递下去。CNN中还有max-pooling等操作进一步提高鲁棒性。

图4 一个典型的卷积神经网络结构,注意到最后一层实际上是一个全连接层(摘自Theano 教程)

在这个例子里,我们注意到 输入层到隐含层的参数瞬间降低到了 100*100*100=10^6 个 !这使得我们能够用已有的训练数据得到良好的模型。题主所说的适用于图像识别,正是由于 CNN 模型限制参数了个数并挖掘了局部结构的这个特点 。顺着同样的思路,利用语音语谱结构中的局部信息,CNN照样能应用在语音识别中。

全连接的DNN还存在着另一个问题——无法对时间序列上的变化进行建模。然而, 样本出现的时间顺序对于自然语言处理、语音识别、手写体识别等应用非常重要 。对了适应这种需求,就出现了题主所说的另一种神经网络结构——循环神经网络RNN。

在普通的全连接网络或CNN中,每层神经元的信号只能向上一层传播,样本的处理在各个时刻独立,因此又被成为前向神经网络(Feed-forward Neural Networks)。而在 RNN 中,神经元的输出可以在下一个时间戳直接作用到自身 ,即第i层神经元在m时刻的输入,除了(i-1)层神经元在该时刻的输出外,还包括其自身在(m-1)时刻的输出!表示成图就是这样的:

图5 RNN 网络结构

我们可以看到在隐含层节点之间增加了互连。为了分析方便,我们常将RNN在时间上进行展开,得到如图6所示的结构:

图6 RNN 在时间上进行展开

Cool, ( t+1 )时刻网络的最终结果O(t+1) 是该时刻输入和所有历史共同作用的结果 !这就达到了对时间序列建模的目的。

不知题主是否发现,RNN可以看成一个在时间上传递的神经网络,它的深度是时间的长度!正如我们上面所说, “梯度消失”现象又要出现了,只不过这次发生在时间轴上 。对于t时刻来说,它产生的梯度在时间轴上向历史传播几层之后就消失了,根本就无法影响太遥远的过去。因此,之前说“所有历史”共同作用只是理想的情况,在实际中,这种影响也就只能维持若干个时间戳。

为了解决时间上的梯度消失,机器学习领域发展出了 长短时记忆单元 LSTM ,通过门的开关实现时间上记忆功能,并防止梯度消失 ,一个LSTM单元长这个样子:

图7 LSTM 的模样

除了题主疑惑的三种网络,和我之前提到的深度残差学习、LSTM外,深度学习还有许多其他的结构。举个例子,RNN既然能继承历史信息,是不是也能吸收点未来的信息呢?因为在序列信号分析中,如果我能预知未来,对识别一定也是有所帮助的。因此就有了 双向 RNN 、双向 LSTM ,同时利用历史和未来的信息。

图8 双向RNN

事实上, 不论是那种网络,他们在实际应用中常常都混合着使用,比如 CNN 和RNN 在上层输出之前往往会接上全连接层,很难说某个网络到底属于哪个类别。 不难想象随着深度学习热度的延续,更灵活的组合方式、更多的网络结构将被发展出来。尽管看起来千变万化,但研究者们的出发点肯定都是为了解决特定的问题。题主如果想进行这方面的研究,不妨仔细分析一下这些结构各自的特点以及它们达成目标的手段。入门的话可以参考:

Ng写的Ufldl: UFLDL教程 - Ufldl

也可以看Theano内自带的教程,例子非常具体: Deep Learning Tutorials

欢迎大家继续推荐补充。

当然啦,如果题主只是想凑个热闹时髦一把,或者大概了解一下方便以后把妹使,这样看看也就罢了吧。

参考文献:

[1]

Bengio Y. Learning Deep

Architectures for AI[J]. Foundations Trends? in Machine Learning, 2009,

2(1):1-127.

[2]

Hinton G E, Salakhutdinov R R.

Reducing the Dimensionality of Data with Neural Networks[J]. Science, 2006,

313(5786):504-507.

[3]

He K, Zhang X, Ren S, Sun J. Deep

Residual Learning for Image Recognition. arXiv:1512.03385, 2015.

[4]

Srivastava R K, Greff K,

Schmidhuber J. Highway networks. arXiv:1505.00387, 2015.

信息论--相关论文阅读

We propose a new learning paradigm, Local to Global Learning (LGL), for Deep Neural Networks (DNNs) to improve the performance of classification problems. The core of LGL is to learn a DNN model from fewer categories (local) to more categories (global) gradually within the entire training set. LGL is most related to the Self-Paced Learning (SPL) algorithm but its formulation is different from SPL.SPL trains its data from simple to complex, while LGL from local to global. In this paper, we incorporate the idea of LGL into the learning objective of DNNs and explain why LGL works better from an information-theoretic perspective. Experiments on the toy data, CIFAR-10, CIFAR-100,and ImageNet dataset show that LGL outperforms the baseline and SPL-based algorithms.

我们为深度神经网络(DNN)提出了一种新的学习范式,即从局部到全局学习(LGL),以提高分类问题的性能。LGL的核心是在整个培训集中逐步从更少的类别(本地)学习更多的类别(全局)DNN模型。LGL与自定进度学习(SPL)算法最相关,但其形式与SPL不同。SPL将数据从简单训练到复杂,而将LGL从本地训练到全局。在本文中,我们将LGL的思想纳入了DNN的学习目标,并从信息论的角度解释了LGL为什么表现更好。对玩具数据,CIFAR-10,CIFAR-100和ImageNet数据集的实验表明,LGL优于基线和基于SPL的算法。

Researchers have spent decades to develop the theory and techniques of Deep Neural Networks (DNNs). Now DNNs are very popular in many areas including speech recognition [9], computer vision [16, 20], natural language processing [30] etc. Some techniques have been proved to be effective, such as data augmentation [32, 29] and identity mapping between layers [10, 11]. Recently, some researchers have focused on how to improve the performance of DNNs by selecting training data in a certain order, such as curriculum learning [3] and self-paced learning [17].

Curriculum learning (CL) was first introduced in 2009 by Bengio et al [3]. CL is inspired by human and animal learning which suggests that a model should learn samples gradually from a simple level to a complex level. However, the curriculum often involves prior man-made knowledge that is independent of the subsequent learning process. To alleviate the issues of CL, Self-Paced Learning (SPL) [17] was proposed to automatically generate the curriculum during the training process. SPL assigns a binary weight to each training sample. Whether or not to choose a sample is decided based on the sample’s loss at each iteration of training. Since [17], many modifications of the basic SPL algorithm have emerged. Moreover, [13] introduces a new regularization term incorporating both easiness and diversity in learning. [12] designs soft weighting (instead of binary weight) methods such as linear soft weighting and logarithmic soft weighting. [14] proposes a framework called self-paced curriculum learning (SPCL) which can exploit both prior knowledge before the training and information extracted dynamically during the training.

研究人员花费了数十年的时间来开发深度神经网络(DNN)的理论和技术。现在,DNN在很多领域都非常流行,包括语音识别[9],计算机视觉[16、20],自然语言处理[30]等。一些技术已被证明是有效的,例如数据增强[32、29]和层之间的身份映射[10,11]。近来,一些研究人员致力于通过按特定顺序选择训练数据来提高DNN的性能,例如课程学习[3]和自定进度学习[17]。课程学习(CL)由Bengio等人于2009年首次提出[3]。CL受人类和动物学习的启发,这表明模型应该从简单的层次逐步学习到复杂的层次。但是,课程通常涉及先前的人造知识,而这些知识与后续的学习过程无关,为了缓解CL的问题,提出了自定进度学习(SPL)[17]在培训过程中自动生成课程表。SPL将二进制权重分配给每个训练样本。是否选择样本取决于每次训练迭代时样本的损失。自[17]以来,已经出现了对基本SPL算法的许多修改。此外,[13]引入了一个新的正规化术语,在学习中兼顾了易用性和多样性。[12]设计了软加权(而不是二进制加权)方法,例如线性软加权和对数软加权。[14]提出了一种称为自定进度课程学习(SPCL)的框架,该框架可以利用训练之前的先验知识和训练期间动态提取的信息。

However, some SPL-based challenges still remain: 1) It is hard to define simple and complex levels. CL defines these levels according to prior knowledge, which needs to be annotated by human. This process is extremely complicated and time consuming, especially when the number of categories is large. Another solution is to choose simple samples according to the loss like SPL. However, the samples’ losses are related to the choice of different models and hyper-parameters, since it is likely that the loss of a sample is large for one model but small for another; 2) SPL4748 based algorithms always bring additional hyper-parameters. One must tune hyper-parameters very carefully to generate a good curriculum, which increases the difficulty of training the model.

但是,仍然存在一些基于SPL的挑战:1)很难定义简单和复杂的级别。CL根据需要由人类注释的先验知识定义这些级别。此过程极其复杂且耗时,尤其是类别数量很大时。另一种解决方案是根据损耗(如SPL)选择简单样本。但是,样本损失与选择不同的模型和超参数有关,因为一个模型的样本损失可能很大,而另一模型的损失却很小。2)基于SPL4748的算法总是带来附加的超参数。必须非常仔细地调整超参数以生成好的课程表,这增加了训练模型的难度。

To address the above two problems, we propose a new

learning paradigm called Local to Global Learning (LGL).

LGL learns the neural network model from fewer categories

(local) to more categories (global) gradually within the entire training set, which brings only one hyper-parameter (

inverse proportional to how many classes to add at each

time) to DNN. This new hyper-parameter is also easy to be

tuned. Generally, we can improve the performance of DNN

by increasing the value of the new hyper-parameter.

The intuition behind LGL is that the network is usually

better to memorize fewer categories1

and then gradually

learns from more categories, which is consistent with the

way people learn. The formulation of LGL can be better

understood by comparing it with transfer learning shown in

Figure 1. In transfer learning, the initial weights of DNNs

are transferred from another dataset. But in LGL, the initial weights of DNNs are transferred from the self-domain

without knowledge of other datasets. The traditional methods randomly initialize the weights, which do not consider

the distributions of the training data and may end up with

a bad local minimum; whereas LGL initializes the weights

which capture the distributions of the trained data. So LGL

can be also seen as an initialization strategy of DNNs. In

this paper, we explain the methodology of LGL from the

mathematical formulation in detail. Instead of concentrating on sample loss (as in SPL), we pay attention to training

DNN effectively by continually adding a new class to DNN.

There are three main contributions from this paper:

为了解决上述两个问题,我们提出了一种新的学习范式,称为本地到全球学习(LGL)。LGL在整个训练集中逐渐从较少的类别(局部)到更多的类别(全局)学习神经网络模型,这仅给DNN带来一个超参数(与每次添加多少个类成反比)。这个新的超参数也很容易调整。通常,我们可以通过增加新的超参数的值来提高DNN的性能。LGL的直觉是,网络通常可以更好地记住较少的类别1,然后逐渐从更多的类别中学习,这与人们的学习方式是一致的。通过将LGL的公式与图1所示的转移学习进行比较,可以更好地理解LGL的公式。在转移学习中,DNN的初始权重是从另一个数据集中转移的。但是在LGL中,DNN的初始权重是在不了解其他数据集的情况下从自域传递的。传统方法是随机初始化权重,这些权重不考虑训练数据的分布,最终可能会导致不良的局部最小值。而LGL会初始化权重,以捕获训练数据的分布。因此,LGL也可以视为DNN的初始化策略。在本文中,我们将从数学公式详细解释LGL的方法。我们不专注于样本丢失(如SPL),而是通过不断向DNN添加新类来关注有效地训练DNN。本文主要有三点贡献:

We propose a new learning paradigm called Local to

Global Learning (LGL) and incorporate the idea of

LGL into the learning objective of DNN. Unlike SPL,

LGL guides DNN to learn from fewer categories (local) to more categories (global) gradually within the

entire training set.

? From an information-theoretic perspective (conditional entropy), we confirm that LGL can make DNN

more stable to train from the beginning.

? We perform the LGL algorithm on the toy data,

CIFAR-10, CIFAR-100, and ImageNet dataset. The

experiments on toy data show that the loss curve of

LGL is more stable and the algorithm converges faster

than the SPL algorithm when the model or data distributions vary. The experiments on CIFAR-10, CIFAR100 and ImageNet show that the classification accuracy of LGL outperforms the baseline and SPL-based

algorithms.

我们提出了一种新的学习范式,称为本地到全球学习(LGL),并将LGL的思想纳入DNN的学习目标。与SPL不同,LGL指导DNN在整个培训集中逐步从较少的类别(本地)学习到更多的类别(全局)。?从信息理论的角度(条件熵),我们确认LGL可以使DNN从一开始就更稳定地进行训练。?我们对玩具数据,CIFAR-10,CIFAR-100和ImageNet数据集执行LGL算法。对玩具数据的实验表明,当模型或数据分布变化时,LGL的损失曲线更稳定,并且收敛速度比SPL算法快。在CIFAR-10,CIFAR100和ImageNet上进行的实验表明,LGL的分类精度优于基线和基于SPL的算法。

SPL has been applied to many research fields. [24] uses SPL for long-term tracking problems to automatically select right frames for the model to learn. [28] integrates the SPL method into multiple instances learning framework for selecting efficient training samples. [27] proposes multi-view SPL for clustering which overcomes the drawback of stuck in bad local minima during the optimization. [31] introduces a new matrix factorization framework by incorporating SPL methodology with traditional factorization methods. [8] proposes a framework named self-paced sparse coding by incorporating self-paced learning methodology with sparse coding as well as manifold regularization. The proposed method can effectively relieve the effect of nonconvexity. [21] designs a new co-training algorithm called self-paced co-training. The proposed algorithm differs from the standard co-training algorithm that does not remove false labelled instances from training. [18] brings the ideaof SPL into multi-task learning and proposes a frameworkthat learns the tasks by simultaneously taking into consideration the complexity of both tasks and instances per task.

Recently, some researchers have combined SPL withmodern DNNs. [19] proposes self-paced convolutional network (SPCN) which improves CNNs with SPL for enhancing the learning robustness. In SPCN, each sample is assigned a weight to reflect the easiness of the sample. A dynamic self-paced function is incorporated into the learning objective of CNNs to jointly learn the parameters ofCNNs and latent weight variable. However, SPCN seemsto only work well on simple dataset like MNIST. [2] showsthat CNNs with the SPL strategy do not show actual improvement on the CIFAR dataset. [15] shows that whenthere are fewer layers in the CNN, an SPL-based algorithmmay work better on CIFAR. But when the number of layers increases, like for VGG [23], the SPL algorithm performs almost equal to that of traditional CNN training. [25]proposes a variant form of self-paced learning to improvethe performance of neural networks. However, the methodis complicated and can not be applied to large dataset likeImageNet. Based on the above analysis of SPL’s limitations, we develop a new data selection method for CNNscalled Local to Global Learning (LGL). LGL brings onlyone hyper-parameter (easy to be tuned) to the CNN and performs better than the SPL-based algorithms.

SPL已应用于许多研究领域。[24]使用SPL解决长期跟踪问题,以自动选择合适的框架供模型学习。[28]将SPL方法集成到多个实例学习框架中,以选择有效的训练样本。[27]提出了一种用于聚类的多视图SPL,它克服了优化过程中卡在不良局部极小值中的缺点。[31]通过将SPL方法与传统因式分解方法相结合,引入了新的矩阵因式分解框架。文献[8]提出了一种框架,该框架通过将自定进度的学习方法与稀疏编码以及流形正则化相结合,提出了自定进度的稀疏编码。所提出的方法可以有效地缓解不凸性的影响。[21]设计了一种新的协同训练算法,称为自定步距协同训练。提出的算法与标准的协同训练算法不同,后者不会从训练中删除错误标记的实例。[18]将SPL的思想带入了多任务学习,并提出了一个通过同时考虑任务和每个任务实例的复杂性来学习任务的框架。

最近,一些研究人员将SPL与现代DNN相结合。文献[19]提出了一种自定速度的卷积网络(SPCN),它利用SPL改进了CNN,从而增强了学习的鲁棒性。在SPCN中,为每个样本分配了权重以反映样本的难易程度。动态自定步函数被纳入CNN的学习目标,以共同学习CNN的参数和潜在权重变量。但是,SPCN似乎只能在像MNIST这样的简单数据集上很好地工作。[2]显示,采用SPL策略的CNN在CIFAR数据集上并未显示出实际的改进。[15]表明,当CNN中的层数较少时,基于SPL的算法在CIFAR上可能会更好地工作。但是,当层数增加时,例如对于VGG [23],SPL算法的性能几乎与传统CNN训练的性能相同。[25]提出了一种自定进度学习的变体形式,以提高神经网络的性能。但是,该方法很复杂,不能应用于像ImageNet这样的大型数据集。基于以上对SPL局限性的分析,我们为CNN开发了一种新的数据选择方法,称为本地到全球学习(LGL)。LGL仅给CNN带来一个超参数(易于调整),并且比基于SPL的算法性能更好。

There are still two learning regimes similar to our workcalled Active Learning [6] and Co-training [4] which also select the data according to some strategies. But in active learning, the labels of all the samples are not known when the samples are chosen. Co-training deals with semisupervised learning in which some labels are missing. Thus,these two learning regimes differ in our setting where the labels of all the training data are known.

仍然有两种与我们的工作类似的学习方式称为主动学习[6]和联合训练[4],它们也根据某些策略选择数据。但是在主动学习中,选择样本时不知道所有样本的标签。联合培训涉及缺少某些标签的半监督学习。因此,这两种学习方式在我们设置所有训练数据的标签的环境中是不同的。

3.self-Paces Learning

Let us first briefly review SPL before introducing LGL.

Let L(yi, g(xi, w)) denote the loss of the ground truth label yi and estimated label g(xi, w), where w represents theparameters of the model. The goal of SPL is to jointlylearn the model parameters w and latent variable v =[vi, . . . , vn]T by minimizing:

在介绍LGL之前,让我们首先简要回顾一下SPL。令L(yi,g(xi,w))表示地面真值标签yi和估计标签g(xi,w)的损失,其中w表示模型的参数。SPL的目标是共同学习模型参数w和潜在变量v = [vi,...,vn] T通过最小化:

In the above, v denotes the weight variables reflecting the samples’ importance; λ is a parameter for controlling the learning pace; f is called the self-paced function which controls the learning scheme. SPL-based algorithms are about to modify f to automatically generate a good curriculum during the learning process.In the original SPL algorithm [17], v ∈ {0, 1}^n, and fis chosen as:

Another popular algorithm is called SPLD (self-paced

learning with diversity) [13] which considers both ||v||1 and

the sum of group-wise ||v||2. In SPLD, f is chosen as:

In general, iterative methods like Alternate Convex Search (ACS) are used to solve (1), where w and v are optimized alternately. When v is fixed, we can use existing supervised learning methods to minimize the first term in (1) to obtain the optimal w?. Then when w is fixed,and suppose f is adopted from (2), the global optimum v?= [vi?, . . . , vn*]T can be explicitly calculated as:

通常,使用迭代方法(如交替凸搜索(ACS))求解(1),其中w和v交替优化。当v固定时,我们可以使用现有的有监督学习方法来最小化(1)中的第一项,以获得最佳w ?。然后,当w固定时,假设从(2)中采用f,则全局最优v ? = [v ? i,。。。,v ? n] T可以明确地计算为:

From (4), λ is a parameter that determines the difficulty of sampling the training data: When λ is small, ‘easy’ samples with small losses are sent into the model to train; When we gradually increase λ, the ‘complex’ samples will be provided to the model until the entire training set is processed.From the above analysis, the key step in an SPL algorithm is to adjust the hyper-parameter λ at each iteration of training. In reality, however, we do not know the loss of each sample before training. Therefore sometimes one needs to run a baseline (a training algorithm without SPL)

first to observe the average loss at each iteration and then set an empirical value for λ to increase. For more complex algorithms like SPLD from (3), researchers must control two parameters λ and γ, which makes the training difficult. To avoid the difficulty of tuning parameters in the SPL-based algorithms, we introduce our easy-to-train LGL algorithm.

从(4)中,λ是一个参数,它确定对训练数据进行采样的难度:当λ较小时,将损失较小的“简单”样本发送到模型中进行训练;当我们逐渐增加λ时,将向模型提供“复杂”样本,直到处理完整个训练集为止。根据以上分析,SPL算法中的关键步骤是在每次训练迭代时调整超参数λ。但是,实际上,我们不知道训练前每个样本的损失。因此,有时需要先运行基线(无SPL的训练算法)以观察每次迭代的平均损耗,然后为λ设置一个经验值以增加。对于(3)中的SPLD等更复杂的算法,研究人员必须控制两个参数λ和γ,这使训练变得困难。为了避免在基于SPL的算法中调整参数的困难,我们引入了易于训练的LGL算法。

gpu的cu是什么

GPU、CUDA和cuDNN分别是什么,之间又有什么关系?

1. GPU

GPU,图形处理单元(Graphics processing unit),为数据的并行处理而设计,可以更好的进行图形和视频渲染,应用广泛。

GPU的发展是对CPU的补充,CPU被设计用来处理通用任务,具有更为复杂的控制单元。虽然CPU通过架构创新、更快的时钟速度和核心的增可以进行性能提升,但是GPU是专门为加快图像工作负载而设计的,主要用来处理逻辑性不强的大规模数据计算任务,在这方面有着远胜于CPU的优势。

GPU和显卡通常被用来表达同一概念,但是两者之间存在一定的区别。GPU之于显卡,就像CPU之于主板,显卡指的是集成GPU的扩展板,板子上还包括大量的其它部件,既能让GPU运行,又能连接到系统的其它部分。GPU有集成和独立两种类型,集成的GPU是嵌入在CPU旁边,而独立的GPU是单独的芯片,安装在自己的电路板上。

GPU最初被设计用来加速图形的渲染,但是随着时间的推移,GPU变得更加灵活和可编程,可以用其创造出更有趣的视觉效果和逼真的场景。开发人员也开始利用GPU强大的能力来大幅度加速深度学习等领域的计算工作。

2. CUDA

CUDA是NVIDIA专门为GPU上通用计算开发的并行计算平台和编程模型。借助CUDA,开发者可以利用GPU的强大性能显著加速计算应用。在经 GPU 加速的应用中,工作负载的串行部分在 CPU 上运行,且 CPU 已针对单线程性能进行优化,而应用的计算密集型部分则以并行方式在数千个 GPU 核心上运行。

也就是说,CUDA是一个并行计算平台,利用这个平台接口,可以高效、灵活的利用GPU的并行计算能力,完成大规模数据计算任务。

3. cuDNN

cuDNN是NVIDIA开发的深度神经网络库,一个 GPU 加速的深度神经网络基元库,能够以高度优化的方式实现标准例程(如前向和反向卷积、池化层、归一化和激活层)。

借助cuDNN可以实现高性能 GPU 加速,研究人员和开发者可以专注于训练神经网络及开发软件应用,而不必花时间进行低层级的 GPU 性能调整,也避免了每个使用者都需要自己实现底层的CUDA编程。如果用GPU训练模型,cuDNN也并不是必须的,但是一般会采用这个加速库。cuDNN 可加速广泛应用的深度学习框架,包括 Caffe2、Keras、PaddlePaddle、PyTorch 、TensorFlow等

在明白GPU、CUDA和cuDNN分别是什么之后,三者之间的关系就明晰了

在GPU上进行深度学习开发的过程中,我们利用Pytorch等深度学习框架编写代码,然后深度学习框架依赖cuDNN深度神经网络库,利用CUDA并行计算平台,实现深度学习代码在高性能GPU上的加速运行。可以看作是深度学习框架依赖于cuDNN - cuDNN依赖于CUDA - CUDA依赖于GPU。

请问卷积神经网络的概念谁最早在学术界提出的?

福岛邦彦。

2021年4月29日,福岛邦彦(Kunihiko Fukushima)获得 2021 年鲍尔科学成就奖。他为深度学习做出了杰出贡献,其最有影响力的工作当属「Neocognitron」卷积神经网络架构。

其实,熟悉这位Jürgen Schmidhuber人都知道,他此前一直对自己在深度学习领域的早期原创性成果未能得到业界广泛承认而耿耿于怀。

1979年,福岛博士在STRL开发了一种用于模式识别的神经网络模型:Neocognitron。

很陌生对吧?但这个Neocognitron用今天的话来说,叫卷积神经网络(CNN),是深度神经网络基本结构的最伟大发明之一,也是当前人工智能的核心技术。

什么?卷积神经网络不是一个叫Yann LeCun的大佬发明的吗?怎么又换成了福岛邦彦(Kunihiko Fukushima)了?

严格意义上讲,LeCun是第一个使用误差反向传播训练卷积神经网络(CNN)架构的人,但他并不是第一个发明这个结构的人。而福岛博士引入的Neocognitron,是第一个使用卷积和下采样的神经网络,也是卷积神经网络的雏形。

福岛邦彦(Kunihiko Fukushima)设计的具有学习能力的人工多层神经网络,可以模仿大脑的视觉网络,这种「洞察力」成为现代人工智能技术的基础。福岛博士的工作带来了一系列实际应用,从自动驾驶汽车到面部识别,从癌症检测到洪水预测,还会有越来越多的应用。

(责任编辑:IT教学网)

更多