过参数化主要是指在训练阶段,在数学上需要进行大量的微分求解,去捕抓数据中的微小变化信息,一旦完成迭代式的训练之后,网络模型推理的时候就不需要这么多参数。而剪枝算法正是基于过参数化的理论基础而提出的。
剪枝算法核心思想就是减少网络模型中参数量和计算量,同时尽量保证模型的性能不受影响。
那在AI框架中,实际上剪枝主要作用在右下角的端侧模型推理应用场景中,为的就是让端侧模型更小,无论是平板、手机、手表、耳机等小型IOT设备都可以轻松使用AI模型。而实际在训练过程更多体现在剪枝算法和框架提供的剪枝API上面。
实际上大部分刚接触剪枝算法的时候,都会从从宏观层面去划分剪枝技术,主要是分为Drop Out和Drop Connect两种经典的剪枝算法,如下图所示。
1)Drop Out:随机的将一些神经元的输出置零,称之为神经元剪枝。
2)Drop Connect:随机将部分神经元间的连接Connect置零,使得权重连接矩阵变得稀疏。
下面会把剪枝的更多种方式呈现出来,可能会稍微复杂哈。从剪枝的粒度来划分,可以分为结构化剪枝和非结构化剪枝,2个剪枝结构方法。下面来看看具体的剪枝方法有4种:
细粒度剪枝、向量剪枝、核剪枝在参数量与模型性能之间取得了一定的平衡,但是网络模型单层的神经元之间的组合结构发生了变化,需要专门的算法或者硬件结构来支持稀疏的运算,这种叫做 结构化剪枝(Unstructured Pruning) 。
其中,非结构化剪枝能够实现更高的压缩率,同时保持较高的模型性能,然而会带来网络模型稀疏化,其稀疏结构对于硬件加速计算并不友好,除非底层硬件和计算加速库对稀疏计算有比较好的支持,否则剪枝后很难获得实质的性能提升。
滤波器剪枝(Filter-level)主要改变网络中的滤波器组和特征通道数目,所获得的模型不需要专门的算法和硬件就能够运行,被称为 结构化剪枝(Structured Pruning) 。结构化剪枝又可进一步细分:可以是channel-wise,也可以是filter-wise,还可以是在shape-wise。
结构化剪枝与非结构化剪枝恰恰相反,可以方便改变网络模型的结构特征,从而达到压缩模型的效果,例如知识蒸馏中的student网络模型、NAS搜索或者如VGG19和VGG16这种裁剪模型,也可以看做变相的结构化剪枝行为。
虽然剪枝算法的分类看上去很多,但是核心思想还是对神经网络模型进行剪枝,目前剪枝算法的总体流程大同小异,可以归结为三种:标准剪枝、基于子模型采样的剪枝、以及基于搜索的剪枝,如下图所示。
标准剪枝是目前最流行的剪枝流程,在Tensorflow、Pytroch都有标准的接口。主要包含三个部分:训练、剪枝、以及微调。
1) 训练 :首先是对网络模型进行训练。在剪枝流程中,训练部分主要指预训练,训练的目的是为剪枝算法获得在特定基础SOTA任务上训练好的原始模型。
3) 微调 :微调是恢复被剪枝操作影响的模型表达能力的必要步骤。结构化模型剪枝会对原始模型结构进行调整,因此剪枝后的模型参数虽然保留了原始的模型参数,但是由于模型结构的改变,剪枝后模型的表达能力会受到一定程度的影响。实现上,微调网络模型,参数在计算的时候先乘以该Mask,Mask为1的参数值将继续训练通过BP调整梯度,而Mask为0的部分因为输出始终为0则不对后续部分产生影响。
4) 再剪枝 :再剪枝过程将微调之后的网络模型再送到剪枝模块中,再次进行模型结构评估和执行剪枝算法。目的是使得每次剪枝都在性能更优的模型上面进行,不断迭代式地进行优化剪枝模型,直到模型能够满足剪枝目标需求。
最后输出模型参数储存的时候,因为有大量的稀疏,所以可以重新定义储存的数据结构, 仅储存非零值以及其矩阵位置。重新读取模型参数的时候,就可以还原矩阵。
除标准剪枝之外,基于子模型采样的剪枝《EagleEye: Fast sub-net evaluation for efficient neural network pruning》最近也表现出比较好的剪枝效果。得到训练好的模型之后,进行子模型采样过程。一次子模型采样过程为:
1)对训练好的原模型中可修剪的网络结构,按照剪枝目标进行采样,采样过程可以是随机的,也可以按照网络结构的重要性或者通过KL散度计算进行概率采样。
2)对采样后的网络结构进行剪枝,得到采样子模型。子模型采样过程通常进行 次,得到 个子模型( ≥1), 之后对每一个子模型进行性能评估。子模型评估结束之后,选取最优的子模型进行微调以得倒最后的剪枝模型。
基于搜索的剪枝主要依靠强化学习等一系列无监督学习或者半监督学习算法,也可以是神经网络结构搜索相关理论。
给定剪枝目标之后,基于搜索的剪枝在网络结构中搜索较优的子结构,这个搜索过程往往伴随着网络参数的学习过程,因此一些基于搜索的剪枝算法在剪枝结束后不需要再进行微调。
这几年神经网络剪枝pruning作为模型压缩技术的四小龙之一,正在受到越来越多的关注。当然,各种更好的pruning参数选取方法一定还会层出不穷。另外,从趋势来看,以下几个方向值得关注:
打破固定假设 :挑战已有的固有的假设,例如ICLR2019会议的best paper彩票假说《The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks 》的出现。还有一开始提到的对于over-parameterization,与重用已有参数是否有有益的反思非常有意思。这样的工作会给剪枝算法非常大的启发,从而根本改变解决问题的思路。
自动化剪枝 :随着AutoML的大潮,越来越多的算法开始走向自动化。模型压缩能拉下吗?当然不能。经过前面的介绍我们知道,像ADC,RNP,N2N Learning这些工作都是试图将剪枝中部分工作自动化。如量化中的《HAQ: Hardware-Aware Automated Quantization》考虑网络中不同层信息的冗余程度不一样,所以自动化使用混合量化比特进行压缩。
与NAS融合 :如前面模型剪枝流程中提到,剪枝算法与神经网络搜索NAS的界限已经模糊了。NAS有针对结构化剪枝进行搜索方法,如One-Shot Architecture Search是先有一个大网络,然后做减法。NAS与模型压缩两个一开始看似关系不是那么大的分支,在近几年的发展过程中因为下游任务和部署场景的需求,最后似乎会走到一块去。这两个分支今天有了更多的交集,也必将擦出更多的火花。
与GAN融合 :这几年机器学习最火热的分支之一GAN,正在不断渗透到已有领域,在pruning中也开始有它的身影。如2019年《Towards Optimal Structured CNN Pruning via Generative Adversarial Learning》让generator生成裁剪后网络,discrimintor来判别是否属于原网络还是裁剪后网络,从而进行更有效的网络结构化裁剪。
硬件稀疏性支持 :剪枝会给神经网络模型带来稀疏性特征,参数稀疏性在计算中会有大量的索引,所以并不能加速。现在虽然有像cuSPARSE这样的计算库,但底层硬件AI芯片本身设计并不是专门为稀疏数据处理打造的。如果能将稀疏计算和处理能力做进芯片那必将极大提高计算效率。仅2021年中国就推出了10+款基于ASIC的AI加速芯片,相信针对稀疏性场景的支持在未来会有所突破。
模型压缩算法中针对已有的模型,有:张量分解,模型剪枝,模型量化。针对新构建的网络,有:知识蒸馏,紧凑网络设计等方法。
剪枝只是模型压缩方法中的一种,它与其它模型压缩方法并不冲突,因此会与量化、蒸馏、NAS、强化学习等方法慢慢融合,这些都是很值得研究的方向。另外在上面的发展来看,打破固有的假设定义,与NAS、GAN、AutoML、RL等技术进行相互的融合,可能到最后会模糊purning方式,出现新的范式或者压缩模式也是很吸引的。
‘贰’ 有谁知道,怎样压缩3D模型的大小
在3dsmax中,可以选择变化工具里的缩放工具缩放模型大小,快捷键R,也可以使用,工具面板下的隐藏工具,重缩放世界单位来缩放场景或者选定模型的大小,希望以上回答对你有用。
‘叁’ cnn和cnn与bilstm对于多分类哪个精度高
bilstm对于多分类精度高。
BiLSTM:Bi-directionalLongShort-TermMemory的缩写,是由前向LSTM与后向LSTM组合而成。
可以看出其很适合做上下有关系的序列标注任务,因此在NLP中常被用来建模上下文信息。
我们可以简单理解为双向LSTM是LSTM的改进版,LSTM是CNN的改进版。
这里简单说一下CNN,熟悉的可以直接跳过。CNN的意思是,为了预测最后的结果,我先用第一个词预测,当然,只用第一个预测的预测结果肯定不精确,我把这个结果作为特征,跟第二词一起,来预测结果;接着,我用这个新的预测结果结合第三词,来作新的预测;然后重复这个过程;直到最后一个词。这样,如果输入有n个词,那么我们事实上对结果作了n次预测,给出了n个预测序列。整个过程中,模型共享一组参数。因此,CNN降低了模型的参数数目,防止了过拟合,同时,它生来就是为处理序列问题而设计的,因此,特别适合处理序列问题。LSTM对CNN做了改进,使得其能够捕捉更长距离的信息。但是不管是LSTM还是CNN,都有一个问题,它是从左往右推进的,因此后面的词会比前面的词更重要。因此出现了双向LSTM,它从左到右做一次LSTM,然后从右到左做一次LSTM,然后把两次结果组合起来。
‘肆’ CNN模型的体系结构和参数对其分类能力的影响
卷积神经网络(CNN)是当今广泛使用的一种深度神经网络模型,它是在人工神经网络的基础上引入了卷积运算和采样操作,这种运算极大提高了提取信号特征的能力。
与传统神经网络相比,CNN大大减少了模型的参数,网络结构也更加简单。CNN可以看成是一个特殊的深度神经网络,最大的特点是在输入与输出层之间的隐藏层中,增加了卷积层和池化层。这样就减少了层与层之间神经元的相互连接,降低了计算参数数量级,使得CNN较传统神经网络更加适用于图像的分类任务。
‘伍’ 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 resial 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.
Recing the Dimensionality of Data with Neural Networks[J]. Science, 2006,
313(5786):504-507.
[3]
He K, Zhang X, Ren S, Sun J. Deep
Resial Learning for Image Recognition. arXiv:1512.03385, 2015.
[4]
Srivastava R K, Greff K,
Schmidhuber J. Highway networks. arXiv:1505.00387, 2015.
‘陆’ cnn训练准确率很高,测试准确率很低(loss有一直下降)是为什么
可能的原因:
有可能是层数较少,可以尝试增加卷积层;可能性不大。
之前我有出现过类似的情况,数据本身质量太低,就算训练层可以保证很高的准确率也没有什么意义,此时已经过拟合了。 这种情况是没有办法的,因为你的数据本身就有问题,无解。 你可以尝试用 机器学习的方法提取特征值 来验证, 如果此时准确率比CNN结果要好,那么就是你网络本身的问题,如果准确率也很差, 那就应该是你数据本身质量的问题。
‘柒’ CNN可解释性从入门到放弃
Kuo 是机器学习的前辈,看不惯几年来的调参浪潮,因此自己开疆拓土提出了一套不用反向传播(用传统方法 PCA)的 CNN。虽然我不敢苟同,但是一代人有一代人熟悉的方法,这个世界需要弄潮儿,也需要摆渡人。
尽管 CNN 已经取得了 state-of-the-art 的地位,但是仍然存在一些问题:over-parameters:大量的参数进行反向传播,数学上难以解释;numerous tricks:复杂的网络结构、Dropout 等让网络变得难以理解;sensitivitity:受到攻击时鲁棒性差。
针对这些问题 Kuo 搞了一个新的 CNN 模型 FF CNN,模型有三个 优点 :不需要反向传播,因此速度更快,资源占用少;每一个 layer 可解释,layer 也不多,没有深度学习的黑箱;是一个半监督(甚至可以是无监督)模型,不依赖于 label。
Kuo 正在改进的 缺点 有:准确率目前略低于带有 BP CNN,但是仍有提升空间;虽然没有明确说明,但是模型应该是 problem special 的,需要根据数据集特点手动调整。
此外,Kuo 设计了两个方面的实验对比 FF CNN 和 BP CNN:分类问题的准确率、受到攻击时的鲁棒性。
CNN 的含义
CNN 是一系列的特征映射。这些特征映射可以分为升维和降维两类。
大多数时候都是在降维,少数时候是在升维。其中,升维是在扫描整个图像,得到尽可能多的有效特征。降维则是从当前特征中选择最有效的特征。升维的方法有卷积。降维的方法有PCA、pooling。保持维度,增强特征的方法有激活函数、全连接(也可以用于降维)。
卷积的含义
对于卷积公式我们可以这样理解训练参数 [图片上传失败...(image-281cf0-1572431090839)]
:对于传统的 BP CNN,它是过滤器的权重(需要优化的参数),求过滤器的权重与输入数据的内积即为匹配过滤器的过程。我们还可以这样考虑,将它当作一组线性空间的基,求基与输入数据的积即为特征在低维空间的近似。
池化的含义
卷积帮助我们得到猫的模式,池化帮助我们选择猫的模式。池化会帮助我们选择众多模式中共有的部分。
比如,所有的 9 张猫都有相似的脸,池化就会抹掉其他信息,提取公共的猫脸。我们可以用统计分析模拟这个过程。
这里 Kuo 解释了为何 max pooling 比 average pooling 更有效。这是因为 max pooling 能够提取窗格内较远的信息,从而更好的表征位置不同而形状相同的信息。比如,图中的猫脸位置稍有不同,但是在 pooling 的作用下都回到了画面中心。
多层感知器的含义
多层感知器在 CNN 中充当的是分类器的角色,每一个隐藏层都是一次映射,将输入降维。我们可以这样理解,每一次映射是从 intra-class 到 class 的过程,多次映射后获得所需维度的 class。
比如,第一次映射区分了蟒蛇、眼镜蛇、加菲猫、波斯猫,第二次映射区分了蛇和猫。多次映射后得到了在我们所需维度上的分类。
我们可以使用 K-Means 模拟这一过程,对于一个 40 -> 20 -> 10 的多层感知器,我们可以使用 K-Means 聚 40 类、20 类、10 类,模拟每一个隐藏层的输入和输出。
有了每一层的输入和输出,我们可以使用最小平方回归(如上图),求解 intra-class 到 class 的映射过程。从而,将反向传递计算 [图片上传失败...(image-401532-1572431249509)]
变成了解方程计算 [图片上传失败...(image-f088c1-1572431249509)]
。
集成与叠加
我们都知道,多层的 PCA 效果较差,因此 FF CNN 无法像 BP CNN 一样通过叠加 layer 提高对特征的表征能力。但是 Kuo 认为,可以通过集成(ensemble)多种 FF CNN 来提高 FF CNN 的性能。FF CNN 就像一个简单的小机器人,BP CNN 则是一个复杂的大机器人。FF CNN 通过量取胜,BP CNN 通过复杂性取胜。
在上图中,Kuo 构建了 3 种 FF CNN,在受到攻击时,可以采用多数投票制进行集成。一个小机器人被打倒,其他的机器人仍能存活下来。此外,Kuo 还列举了根据 RGB 设计 FF CNN 集成的方法。
虽然 Kuo 没有阐述 FF CNN 在并行等领域的应用,这个模型效率高、能耗低,比 BP CNN 具有更大的并行可能,未来或许会在嵌入式等领域大放光彩。
FF CNN 与 BP CNN 的应用场景抽象
Kuo 最后的总结很正经,前辈客观地阐述了 FF 和 BP 的应用场景,批评了一些人(也就是我们这届差生 233)不分 data collection 青红皂白就上 BP 的做法。他说:
FF 是一种 data-independent 模型,因此它高效,适合解简单问题。BP 是一种 data-driven 模型,因此它耗时,适合解复杂问题。
我们拿到一个 dataset 的时候,没有人会跟你说这个 dataset 是简单还是复杂的,你的 dataset 可能不是 pure 的。
如果你用 data-driven 模型,复杂的 data 可能会覆盖简单的 data 造成过拟合。如果你用 data-independent 模型,可能会因为无法表征复杂的 data 而效果较差。
一切设计都要因 dataset 制宜。
Kuo 发表了一篇论文“ Interpretable Convolutional Neural Networks via Feedforward Design ”,表述严谨清晰,感兴趣可以了解一下。
我很佩服这位前辈,手动把消耗大量算力的训练参数自己 “解” 了出来。现在,我们不止能对结果求交叉熵,对比预测结果和实际 label 的差异,还能在每一步计算 FF CNN 求得的参数和 BP CNN 训练的参数的差异。
从上图我们可以看出,这个解和BP求得的解仍有一定距离。
https://zhuanlan.hu.com/p/51673309
‘捌’ 有哪些深度神经网络模型
目前经常使用的深度神经网络模型主要有卷积神经网络(CNN) 、递归神经网络(RNN)、深信度网络(DBN) 、深度自动编码器(AutoEncoder) 和生成对抗网络(GAN) 等。
递归神经网络实际.上包含了两种神经网络。一种是循环神经网络(Recurrent NeuralNetwork) ;另一种是结构递归神经网络(Recursive Neural Network),它使用相似的网络结构递归形成更加复杂的深度网络。RNN它们都可以处理有序列的问题,比如时间序列等且RNN有“记忆”能力,可以“模拟”数据间的依赖关系。卷积网络的精髓就是适合处理结构化数据。
关于深度神经网络模型的相关学习,推荐CDA数据师的相关课程,课程以项目调动学员数据挖掘实用能力的场景式教学为主,在讲师设计的业务场景下由讲师不断提出业务问题,再由学员循序渐进思考并操作解决问题的过程中,帮助学员掌握真正过硬的解决业务问题的数据挖掘能力。这种教学方式能够引发学员的独立思考及主观能动性,学员掌握的技能知识可以快速转化为自身能够灵活应用的技能,在面对不同场景时能够自由发挥。
‘玖’ 求问,三维模型文件太大怎么压缩
三维模型文件的大小是取决于面数的多少,要压缩就是进行减面处理,老子云平台就可以处理