① 网络的宽度如何影响深度学习模型的性能
网络的宽度如何影响深度学习模型的性能?
首先,更深的网络带来了逐层抽象的显著优势,不断精炼提取知识,但仅有一层网络时,学习的变换非常复杂,难以实现。宽度在另一个维度上起作用,让每一层学习到更加丰富的特征,如不同方向和频率的纹理特征。
以AlexNet模型的第一个卷积层为例,96个通道捕捉了各种模式,包括彩色和灰色图像,分别侧重于纹理和颜色信息的提取。卷积核与Gabor特征算子相似,用于识别图像中的频率分布。
若网络过窄,每一层能捕获的模式有限,增加深度也无法提取足够信息。经典网络的第一个卷积层宽度为96至24层,似乎已接近下限。网络必须具有足够的深度才能逼近某些函数,而宽度减少后,性能提升的深度呈多项式增长,这表明宽度不如深度重要。
网络宽度并非越大越好,研究显示宽度对性能影响显著。例如,Mobilenet通过调整乘因子控制每层宽度,发现性能随着宽度增加持续下降。在GHIM数据集和Place20上,实验结果也验证了这一观点。
在深度和宽度之间,深度对模型性能更为敏感,调整宽度更能提升性能。更窄的网络在某些情况下表现出更好的性能,这表明增加网络深度不如增加宽度更有利于性能提升。
如何更有效地利用宽度?首先,提高每一层通道的利用率,例如通过参数互补减少计算量,同时维持原有网络宽度和性能。其次,利用其他通道信息补偿,如DenseNet通过各层间concat实现高性能网络。
总之,网络宽度对深度学习模型性能至关重要,深度和宽度都是不可或缺的。宽度的利用需要优化,以提高性能并减少计算量。
② 神经网络,流形和拓扑
本文翻译自colah的博客中的文章《Neural Networks, Manifolds, and Topology》
链接:http://colah.github.io/posts/2014-03-NN-Manifolds-Topology/
发布于2014年4月6日
关键词:拓扑,神经网络,深度学习,流形假设(manifold hypothesis)
最近,深度神经网络给人们带来很大的振奋,引起了极大的兴趣,因为其在像计算机视觉等领域中取得的突破性成果。[1]
但是,人们对其仍存在一些担忧。一个是要真正理解一个神经网络在做什么是一件十分具有挑战的事情。如果一个人将其训练得很好,它可以取得高质量的结果,但是要理解其是如何做到这一点很难。如果网络出现故障,很难了解哪里出现了问题。
虽然,总体上来说要理解深度神经网络的行为具有挑战性,但事实证明,探索低维深度神经网络要容易得多,低维深度神经网络是指每层中只有少量神经元的网络。事实上,我们可以创建可视化来完全理解这种网络的行为和训练过程。这种观点将使我们能够更深入地了解神经网络的行为,并观察到神经网络和一个称为拓扑的数学领域之间的联系。
从中可以得到许多有趣的东西,包括能够对某些特定数据集进行分类的神经网络复杂度的基本下界。
让我们从一个非常简单的数据集开始,在平面上有两条曲线。网络将学习把点归类为属于一个或另一个。
对于这个问题,可视化神经网络行为的明显方法 - 或者任何分类算法 - 就是简单地看一下它如何对每个可能的数据点进行分类。
我们将从最简单的神经网络类别开始,只有一个输入层和一个输出层。这样的网络只是试图通过用直线划分它们来分离这两类数据。
那种网络不是很有趣。现代神经网络通常在其输入和输出之间具有多个层,称为“隐藏”层。至少有一个。
和前面一样,我们可以通过查看它对域中不同点的划分来可视化该网络的行为。它使用比直线更复杂的曲线将数据分离。
对于每一层,网络都会转换数据,创建一个新的表示。[2] 我们可以查看每个表示中的数据以及网络如何对它们进行分类。当我们到达最终表示时,网络将只绘制一条穿过数据的线(或者,在更高维度下,绘制一个超平面)。
在之前的可视化中,我们以“原始”表示形式查看了数据。当我们看输入层时,你可以想到这一点。现在我们将在第一层转换后查看它。你可以把它想象成我们在看隐藏层。
每个维度对应于层中神经元的发射。
在上一节中概述的方法中,我们通过查看与每个层对应的表示来学习理解网络。这给了我们一个离散的表示序列。
棘手的部分是理解我们如何从一个到另一个。值得庆幸的是,神经网络层具有很好的属性,使这很容易实现。
在神经网络中使用各种不同类型的层。我们将讨论tanh(双曲正切)层作为一个具体示例。 tanh层 tanh(Wx + b) 包括:
1. 经过“权重”矩阵 W 的线性变换
2. 经过矢量 b 的平移
3. 点式地应用tanh。
我们可以将其视为一个连续的转换,如下所示:
其他标准层的过程大致相同,包括仿射变换,然后逐点应用单调激活函数。
我们可以应用这种技术来理解更复杂的网络。例如,以下网络使用四个隐藏层对两个略微纠缠的螺旋进行分类。随着时间的推移,我们可以看到它从“原始”表示转变为它为了对数据进行分类而学到的更高级别的表示。虽然螺旋最初是缠绕的,但最终它们是线性可分的。
另一方面,以下网络也使用多个层,无法对两个更纠缠的螺旋进行分类。
值得明确指出的是,这些任务只是有些挑战,因为我们使用的是低维神经网络。如果我们使用更广泛的网络,所有这一切都会非常容易。
(Andrej Karpathy基于ConvnetJS做了一个很好的演示,它允许您通过这种对训练的可视化来交互式地探索网络!)
每一层都伸展并占据空间,但它永远不会削减,折断或折叠它。直觉上,我们可以看到它保留了拓扑属性。例如,如果一个集合之前是连通的那其之后也是连通的(反之亦然)。
像这样不会影响拓扑的变换,称为同胚。在形式上,它们是双向连续函数的双射。
定理 :如果权重矩阵W是非奇异的,则具有 N 个输入和 N 个输出的层是同胚。 (虽然需要注意域和范围。)
证明 :让我们一步一步考虑:
1. 假设W具有非零行列式。然后它是具有线性逆的双射线性函数。线性函数是连续的。因此,乘以 W 是同胚。
2. 平移是同胚的。
3. tanh(和sigmoid和softplus但不是ReLU)是具有连续逆的连续函数。如果我们对我们考虑的域和范围保持谨慎,它们就是双射的。逐点应用它们是同胚。
因此,如果 W 具有非零行列式,则我们的层是同胚。 ∎
如果我们将这些层中任意多个组合在一起,这个结果就会继续存在。
考虑一个二维数据集,有两个类A和B⊂R2:
A={x|d(x,0)<1/3}
B={x|2/3<d(x,0)<1}
声明 :如果没有具有3个或更多隐藏单位的层,神经网络就无法对此数据集进行分类,无论深度如何。
如前所述,使用S形单元或softmax层进行分类等同于尝试找到在最终表示中分离A和B的超平面(或在这种情况下为线)。由于只有两个隐藏单元,网络在拓扑上无法以这种方式分离数据,并且注定要在此数据集上失败。
在下面的可视化中,我们观察到网络训练时的隐藏表示以及分类线。正如我们所看到的那样,它正在努力学习如何做到这一点。
最终,它会被拉入一个相当低效的局部最小值。 虽然,它实际上能够达到~ 80% 的分类准确度。
这个例子只有一个隐藏层,但无论如何都会失败。
证明 :每一层都是同胚,或者层的权重矩阵具有行列式0.如果它是一个同胚,A仍然被B包围,并且一条线不能将它们分开。 但是假设它有一个行列式为0:那么数据集会在某个轴上折叠。 由于我们处理与原始数据集同胚的某些东西,A被B包围,并且在任何轴上折叠意味着我们将有一些A和B混合的点并且变得无法区分。∎
如果我们添加第三个隐藏单元,问题就变得微不足道了。 神经网络学习以下表示:
通过这种表示,我们可以使用超平面分离数据集。
为了更好地了解正在发生的事情,让我们考虑一个更简单的1维数据集:
A=[−1/3,1/3]
B=[−1,−2/3]∪[2/3,1]
如果不使用两个或更多隐藏单元的层,我们就无法对此数据集进行分类。 但是如果我们使用有两个单元的层,我们学会将数据表示为一条很好的曲线,允许我们用一条线来将不同的类分隔开来:
发生了什么? 一个隐藏单元在x > -1/2时学会开火,一个在x > 1/2时学会开火。当第一个开火但第二个没开火时,我们知道我们在A中。
这与现实世界的数据集,比如图像数据有关吗? 如果你真的认真对待流形假设,我认为值得考虑。
流形假设是自然数据在其嵌入空间中形成低维流形。 理论上[3]和实验上[4]都有理由认为这是真的。 如果你相信这一点,那么分类算法的任务就是从根本上分离出一堆纠结的流形。
在前面的例子中,一个类完全包围了另一个类。 然而,狗图像流形似乎不太可能被猫图像流形完全包围。 但是,正如我们将在下一节中看到的那样,还有其他更合理的拓扑情况可能仍然存在问题。
另一个值得考虑的有趣数据集是两个链接的圆环, A 和 B .
与我们考虑的先前数据集非常相似,如果不使用n+1维,即第4维,则无法分离此数据集。
链接是在结理论中研究的,这是一个拓扑领域。 有时当我们看到一个链接时,它是否是一个非链接(一堆东西纠结在一起,但可以通过连续变形分开)并不是很明显。
如果使用仅有3个单元的层的神经网络可以对其进行分类,那么它就是非链接。 (问题:理论上,所有非链接是否都可以被只有3个单元的网络进行分类?)
从这个结的角度来看,我们对神经网络产生的连续可视化的表示不仅仅是一个很好的动画,它还是一个解开链接的过程。在拓扑中,我们将其称为原始链接和分离链接之间的环境同位素(ambient isotopy)。
形式上,流形A和B之间的环境同位素是连续函数F:[0,1]×X→Y,使得每个Ft是从X到其范围的同胚,F0是恒等函数,F1将A映射到B。也就是说,Ft连续地从A向自身映射转换到A向B映射。
定理 :在输入和网络层表示之间存在环境同位素,如果:a) W 不是奇异的,b)我们愿意置换隐藏层中的神经元,并且c)存在多于1个隐藏单元。
证明 :同样,我们分别考虑网络的每个阶段:
1. 最难的部分是线性变换。 为了使这成为可能,我们需要 W 有一个正的行列式。 我们的前提是它不是零,如果它是负的,我们可以通过切换两个隐藏的神经元来翻转符号,那么我们可以保证行列式是正的。 正行列式矩阵的空间是路径连通的,因此存在 p :[ 0,1 ] → GLn (R)5,使得 p(0) = Id 且 p(1) = W 。 我们可以用函数 x → p(t)x 连续地从恒等函数转换到 W 变换,在每个时间点 t 将 x 乘以连续转换矩阵 p(t) 。
2. 我们可以用函数 x → x + tb 不断地从恒等函数转换到b转换。
3. 通过函数: x → (1- t)x +tσ(x) ,我们可以不断地从恒等函数过渡到σ的逐点使用。∎
我想可能有兴趣自动发现这种环境同位素并自动证明某些链接的等价性,或某些链接是可分离的。知道神经网络能否击败现有技术水平将会很有趣。
(显然确定结是否平凡是NP问题。这对神经网络来说不是好兆头。)
到目前为止我们谈到的那种链接似乎不太可能出现在现实世界的数据中,但是有更高的维度的拓展。在现实世界的数据中可能存在这样的事情似乎是合理的。
链接和结是一维流形,但我们需要4个维度才能解开所有这些。类似地,人们可能需要更高维度的空间以能够解开n维流形。所有n维流形都可以在 2n + 2 维中解开。[6]
(我对结理论知之甚少,真的需要更多地了解有关维度和链接的知识。如果我们知道流形可以嵌入到n维空间中,而不是流形的维数,我们有什么限制? )
一个神经网络要做的自然的事情,非常简单的路线,是试图将流形分开,并尽可能地拉伸缠绕的部分。 虽然这不会接近真正的解决方案,但它可以实现相对较高的分类准确度并且是诱人的局部最小值。
它会在它试图拉伸的区域中表现为 非常高的衍生物 (very high derivatives)和近乎不连续性。我们知道这些事情会发生.[7] 在数据点处惩罚层的衍生物的收缩惩罚是对抗这种情况的自然方式.[8]
由于这些局部极小值从试图解决拓扑问题的角度来看是绝对无用的,拓扑问题可能提供了探索解决这些问题的良好动机。
另一方面,如果我们只关心实现良好的分类结果,似乎我们可能不在乎。如果数据流形的一小部分被另一个流形钩住,对我们来说这是一个问题吗?尽管存在这个问题,似乎我们也应该能够获得主观上来看不错的分类结果。
(我的直觉是试图欺骗这个问题是一个坏主意:很难想象它不会是一个死胡同。特别是在一个优化问题中,局部最小值是一个大问题,选择一个架构,不能真正解决问题似乎是表现不佳的秘诀。)
我对标准神经网络层的思考越多 - 即是,通过仿射变换后跟一个逐点激活函数 - 我感觉更加失去理智。 很难想象这些对于操纵流形真的很有益。
或许有一种非常不同的层可以用来组成更传统的层?
我自然想到的是学习一个矢量场,这个矢量场带有我们想要改变流形的方向:
然后根据它来变形空间:
人们可以在固定点学习矢量场(只需从训练集中取一些固定点作为锚点)并以某种方式进行插值。 上面的矢量场的形式如下:
其中v0和v1是向量,f0(x)和f1(x)是n维高斯。 这受到径向基函数的启发。
我也开始思考线性可分性对于神经网络的需求可能是巨大的,虽然可能是不合理的。在某些方面,感觉自然要做的就是使用k近邻(k-NN)。然而,k-NN的成功在很大程度上取决于它对数据进行分类的表示,因此在k-NN能够很好地工作之前需要一个好的表示。
作为第一个实验,我训练了一些MNIST网络(两层卷积网,没有丢失),达到了约1%的测试误差。然后我丢弃了最终的softmax层并使用了k-NN算法。我能够始终如一地将测试误差降低0.1-0.2%。
尽管如此,还是觉得哪里有些问题。网络仍在尝试进行线性分类,但由于我们在测试时使用k-NN,因此能够从错误中恢复一点。
由于1/距离的加权,k-NN在它所作用的表示方面是可微的。因此,我们可以直接为k-NN分类训练一个网络。这可以被认为是一种“最近邻”层,可以作为softmax的替代品。
我们不希望为每个小批量提供整个训练集,因为这在计算上非常昂贵。我认为一个很好的方法是根据小批量的其他元素的类别对小批量的每个元素进行分类,给每个元素一个权重1 /(与分类目标的距离)。[9]
遗憾的是,即使使用复杂的架构,使用k-NN也只会降低5-4%的测试错误 - 使用更简单的架构会导致更糟糕的结果。但是,我花了很少的精力去调整超参数。
尽管如此,我在美学上仍然喜欢这种方法,因为看起来我们“要求”网络做的事情要合理得多。我们希望相同流形的点比其他点更接近,而流形可以通过超平面分离。这应该对应于扩张不同类别流形之间的空间并使各个流形收缩。感觉就像简化。
数据的拓扑属性(例如链接)可能使得无法使用低维网络线性分离类,无论深度如何。即使在技术上可行的情况下,例如螺旋,这样做也是非常具有挑战性的。
为了使用神经网络准确地对数据进行分类,有时需要宽层。此外,传统的神经网络层似乎不能很好地表示对流形的重要操作;即使我们巧妙地手工设置权重,紧凑地表示我们想要的变换也是一项挑战。新的层,特别是受机器学习的流形观点驱动的,可能是有用的补充。
(这是一个正在开发的研究项目。它是作为公开进行研究的实验而发布的。我很高兴收到你对这些想法的反馈:你可以内联或最后发表评论。对于拼写错误,技术错误或你想要的澄清看到添加,我们鼓励你在github上发出pull请求。)
感谢Yoshua Bengio, Michael Nielsen, Dario Amodei, Eliana Lorch, Jacob Steinhardt, and Tamsyn Waterhouse的评论和鼓励。
1. This seems to have really kicked off with Krizhevsky et al. , (2012) , who put together a lot of different pieces to achieve outstanding results. Since then there’s been a lot of other exciting work. ↩
2. These representations, hopefully, make the data “nicer” for the network to classify. There has been a lot of work exploring representations recently. Perhaps the most fascinating has been in Natural Language Processing: the representations we learn of words, called word embeddings, have interesting properties. See Mikolov et al. (2013) , Turian et al. (2010) , and, Richard Socher’s work . To give you a quick flavor, there is a very nice visualization associated with the Turian paper. ↩
3. A lot of the natural transformations you might want to perform on an image, like translating or scaling an object in it, or changing the lighting, would form continuous curves in image space if you performed them continuously. ↩
4. Carlsson et al. found that local patches of images form a klein bottle. ↩
5. GLn(R)is the set of invertible n×n matrices on the reals, formally called the general linear group of degree n. ↩
6. This result is mentioned in Wikipedia’s subsection on Isotopy versions . ↩
7. See Szegedy et al. , where they are able to modify data samples and find slight modifications that cause some of the best image classification neural networks to misclasify the data. It’s quite troubling. ↩
8. Contractive penalties were introced in contractive autoencoders. See Rifai et al. (2011) . ↩
9. I used a slightly less elegant, but roughly equivalent algorithm because it was more practical to implement in Theano: feedforward two different batches at the same time, and classify them based on each other. ↩
③ 【深度剖析】宽带、手机流量、随身WIFI,三者对比,到底该怎么选
在数字化时代,网络连接方式的多样化带来了便利,也带来了选择的难题。宽带、手机流量、随身WiFi,三者各有千秋,如何做出最合适的选择?本文将从技术、成本、使用场景等多个维度进行深度剖析,为您提供一份全面的决策指南。
一、宽带:稳定为王
宽带网络以其稳定性和高速度赢得了家庭和企业用户的青睐。根据《中国宽带发展联盟》发布的数据,截至2023年,中国固定宽带用户数已超过5亿户,普及率高达95%。
稳定性:宽带网络通常不受移动信号覆盖和天气影响,稳定性高。
速度:光纤宽带的普及使得家庭宽带速度可达百兆甚至千兆。
适用场景:家庭、办公室等固定场所。
中国信息通信研究院指出,随着"宽带中国"战略的实施,宽带网络质量持续提升,用户体验不断改善。
二、手机流量:移动互联的先锋
手机流量以其移动性和即时性成为现代生活的重要组成部分。随着4G、5G网络的普及,手机流量的速度和稳定性也得到了显著提升。
据GSMA报告,全球移动用户数量已超过53亿,其中4G用户占比超过一半。我国的5G移动用户约有8亿,普及率超过52.2%(统计截止2023年9月)。
5G网络的商用化,使得手机流量速度可达千兆级别。
国际电信联盟(ITU)认为,5G将为移动宽带带来革命性的改变。
三、随身WiFi:灵活的网络解决方案
随身WiFi作为一种新兴的网络接入方式,以其便携性和灵活性受到用户欢迎。
根据美国知名市场研究公司ABI的预测,到2025年,全球WiFi芯片出货量将超过45亿颗,年复合增长率达到7.3%,预示着一个高速增长的未来!
另一家权威公司Mordor Intelligence的研究揭示了无线路由器市场的强劲增长:预计到2029年增长至236.4亿美元,年复合增长率为9.20%!
而无线WiFi市场的增长更是令人瞩目,预计到2029年市场规模将飙升至313.8亿美元,年复合增长率预计可达14.19%,这个涨幅无疑将重塑我们的数字生活!
事实上,全球WiFi设备出货量自2018年的32亿台,预计将在2026年超过50亿台,这一增长轨迹清晰地表明了市场需求的强劲势头。
因此可以说,对于无线WiFi行业,全球专业机构都充满信心!从WiFi芯片,到无线路由器,再到整个无线WiFi市场,整体规模都在急剧扩大!
近年来,随着相关技术的突飞猛进,随身WiFi可以说是完美融合了宽带和手机流量的优势,好一点的产品已经可以做到“在家是宽带,在外是WiFi”,不仅是方便随身携带,还能在同时连接多台设备的情况下保持高速且稳定的网速!
四、综合评估:选择最合适的上网方式
宽带挺好,手机流量也行,随身WiFi也不错,那么问题来了:到底要怎么选呢?这个问题不能一概而论,需要综合考虑成本、速度、稳定性、便携性等多个因素。适合自己的,才是最好的。以下将从成本、网速与稳定性、便携性几个方面来剖析:
1、成本
宽带费用和手机话费套餐基本都是绑定的,一般至少每月都是大几十,甚至上百。(但一个尴尬的问题是,现在人基本不怎么打电话,话费基本上都算在流量上了。)
随身WiFi的费用参差不齐,有高得离谱的5G网,成本价就得快两千了,卖给消费者就更贵了。也有便宜得离谱的,九块九那种,但是不靠谱啊:①芯片可能是二手的,网速起不来;②套餐费可能充一次涨一次,让你越投入越多……
不过,靠谱的随身WiFi的价格也是相当靠谱的,一个月二十多是完全可能的,要是几个人拼着用,那就更划算了。
2、网速和稳定性
宽带是有线的,速度当然是最快、最稳定的,一般商务办公和家用比较普遍。但问题停电了就用不了了。
手机网络的速度跟手机和区域信号强度相关,一般是没问题的,除非是偏远山区、地下室、海上等,还有就是苹果机的信号会差一点。
随身WiFi的网速最神奇,它虽然和手机使用同样的信号基站,但由于其更“专业”的WiFi功能,有更富裕的空间把天线体积做大,所以在信号强度上要优于手机。另外使用随身WiFi作为手机的配件,可减少手机本身的损耗,这也是这个产品的一个重要价值。
3、便携性
宽带网络不具备便携性,只能固定在那里。
手机网络的便携性次之,因为要综合考虑流量成本、电量消耗、信号强度、对手机的损伤等因素。
随身WiFi的便携性最佳,它一般只有手掌大小,有的不用插电,充一次使用10小时都没问题,完美解决一整天的用网问题。
总之,宽带、手机流量、随身WiFi各有所长,选择时需根据个人的实际需求和使用场景来决定。
不过个人觉得,随身WiFi确实更有综合优势。小编身边不少人都停了家里的宽带、降低了手机套餐费,只因为买了随身WiFi。