广义神经元

ML at Berkeley 新闻

摘要

本文探讨了深度学习中的通用近似定理,分析了使用 ReLU 激活函数时单个神经元和神经网络层的表示能力。

<p><em>作者:Max Smolin</em></p><p><em>通用近似定理(Universal Approximation Theorem)</em>是深度神经网络数学中的一个基本结论。它指出,使用任何连续激活函数(多项式除外),具有一定足够宽度(层大小)且至少包含一层的神经网络,可以任意精确地逼近任何给定的连续函数。</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fjjF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e348952-043f-47f2-8e67-5d1ebaac9976_539x259.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fjjF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e348952-043f-47f2-8e67-5d1ebaac9976_539x259.png 424w, https://substackcdn.com/image/fetch/$s_!fjjF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e348952-043f-47f2-8e67-5d1ebaac9976_539x259.png 848w, https://substackcdn.com/image/fetch/$s_!fjjF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e348952-043f-47f2-8e67-5d1ebaac9976_539x259.png 1272w, https://substackcdn.com/image/fetch/$s_!fjjF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e348952-043f-47f2-8e67-5d1ebaac9976_539x259.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fjjF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e348952-043f-47f2-8e67-5d1ebaac9976_539x259.png" width="539" height="259" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e348952-043f-47f2-8e67-5d1ebaac9976_539x259.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:259,&quot;width&quot;:539,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;通用近似定理的维基百科定义&quot;,&quot;title&quot;:&quot;通用近似定理 (维基百科)&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="通用近似定理的维基百科定义" title="通用近似定理 (维基百科)" srcset="https://substackcdn.com/image/fetch/$s_!fjjF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e348952-043f-47f2-8e67-5d1ebaac9976_539x259.png 424w, https://substackcdn.com/image/fetch/$s_!fjjF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e348952-043f-47f2-8e67-5d1ebaac9976_539x259.png 848w, https://substackcdn.com/image/fetch/$s_!fjjF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e348952-043f-47f2-8e67-5d1ebaac9976_539x259.png 1272w, https://substackcdn.com/image/fetch/$s_!fjjF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e348952-043f-47f2-8e67-5d1ebaac9976_539x259.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>这一定理之所以重要,是因为它将神经网络归入那些只要有足够的空间和时间就能“无所不能”的模型精英俱乐部。</p><p>当然,关键在于<strong>“足够”</strong>在物理上可能无法实现。</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lYNs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8b2d83-e1fc-4b36-b230-57c24edf6a31_600x410.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lYNs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8b2d83-e1fc-4b36-b230-57c24edf6a31_600x410.png 424w, https://substackcdn.com/image/fetch/$s_!lYNs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8b2d83-e1fc-4b36-b230-57c24edf6a31_600x410.png 848w, https://substackcdn.com/image/fetch/$s_!lYNs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8b2d83-e1fc-4b36-b230-57c24edf6a31_600x410.png 1272w, https://substackcdn.com/image/fetch/$s_!lYNs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8b2d83-e1fc-4b36-b230-57c24edf6a31_600x410.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lYNs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8b2d83-e1fc-4b36-b230-57c24edf6a31_600x410.png" width="600" height="410" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bf8b2d83-e1fc-4b36-b230-57c24edf6a31_600x410.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:410,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;理论比实践更简单&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="理论比实践更简单" title="理论比实践更简单" srcset="https://substackcdn.com/image/fetch/$s_!lYNs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8b2d83-e1fc-4b36-b230-57c24edf6a31_600x410.png 424w, https://substackcdn.c
查看原文 导出为 Word 导出为 PDF
查看缓存全文

缓存时间: 2026/05/08 08:50

# 广义神经元 来源: https://mlberkeley.substack.com/p/uat *作者:Max Smolin* *通用近似定理*(Universal Approximation Theorem)是深度神经网络数学中的一个基本结论。它指出,使用任何连续激活函数(多项式除外),具有足够宽度(层大小)且至少包含一层的神经网络,可以任意精确地逼近任何给定的连续函数。 维基百科关于通用近似定理的定义 (https://substackcdn.com/image/fetch/$s_!fjjF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e348952-043f-47f2-8e67-5d1ebaac9976_539x259.png) 这一定理之所以重要,是因为它将神经网络纳入了那些在拥有足够空间和时间的前提下能够“无所不能”的精英模型行列。 当然, caveat 在于,“足够”在物理上可能无法实现。 理论比实践简单 (https://substackcdn.com/image/fetch/$s_!lYNs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8b2d83-e1fc-4b36-b230-57c24edf6a31_600x410.png) 事实上,在实践中我们使用的神经网络宽度非常有限,计算能力也极其有限。此外,我们实际使用的许多激活函数并不连续(最重要的是 ReLU)。那么,通用近似定理(UAT)如何映射到现实世界呢? 归根结底,最简单的神经网络就是一个单一神经元。在构建层级和深层网络之前,让我们先考察一下神经元的表示能力。 回顾一下,传统的人工神经元只是一个结构,它首先对其输入进行线性组合,然后通过非线性激活函数。 `` def artificial_neuron(input): kx = weights * input # 逐元素乘积 linear_combination = kx # 为简化起见,无偏置项 return phi(linear_combination) `` 为简单起见,我们假设激活函数为 ReLU,因此 在此假设下,该神经元的范围(可能输出)受限于 ReLU,为 \[0,∞\)。 [ (https://substackcdn.com/image/fetch/$s_!hR2V!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe58aace3-ace9-4aed-9232-69a670ccc288_440x444.png) 我们可以注释神经元的代码,以查看可能的数据值如何变化: `` def artificial_neuron(input): # input ∈ (-∞, ∞) # weights ∈ (-∞, ∞) # bias ∈ (-∞, ∞) kx = weights * input # ∈ (-∞, ∞) linear_combination = kx # ∈ (-∞, ∞) return phi(linear_combination) # ∈ [0, ∞) `` 现在让我们看看堆叠两个神经元时会发生什么: `` def artificial_neuron_2(neuron_1_output): # neuron_1_output ∈ [0, ∞) # weights2 ∈ (-∞, ∞) # bias2 ∈ (-∞, ∞) kx = weights2 * neuron_1_output # ∈ (-∞, ∞) linear_combination = kx # ∈ (-∞, ∞) return phi(linear_combination) # ∈ [0, ∞) def network(input): x = input # ∈ (-∞, ∞) x = artificial_neuron(x) # ∈ [0, ∞) x = artificial_neuron_2(x) # ∈ [0, ∞) return x # ∈ [0, ∞) `` 我们可以看到,堆叠神经元不会改变它们的输出范围,因为堆栈始终以 ReLU 结尾。 这可能会引起担忧,因为神经网络能够学习负输出,但我们刚刚指定无论深度如何,其输出始终 ≥0! 实践中使用的解决方案是在网络末尾添加一个**没有激活函数的神经元**,将其范围转换回 \(-∞,∞\): `` def network(input): x = input # ∈ (-∞, ∞) x = artificial_neuron(x) # ∈ [0, ∞) x = artificial_neuron_2(x) # ∈ [0, ∞) x = weights_end * x return x # ∈ (-∞, ∞) `` 显然,我们的原始神经网络能够表达所有实数范围内的函数。但是,除了范围之外,它所能逼近的函数族是否还有其他限制?答案是显而易见的:**是的。** 例如,我们之前考虑过的狭窄网络(仅仅是 ReLU 神经元的堆栈)无法表示 *f(x)=x*: [ (https://substackcdn.com/image/fetch/$s_!FMyw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee617ef3-e0ae-4f37-8c85-18cfc0040fc0_563x564.png) 这是因为我们的网络输出要么全部 ≥0,要么全部 ≤0,即使有最后的非激活层也是如此!末尾的负权重将 \[0,∞\) 映射到 \(-∞,0\],而正权重则保持其不变: `` def network(input): x = input # ∈ (-∞, ∞) x = artificial_neuron(x) # ∈ [0, ∞) x = artificial_neuron_2(x) # ∈ [0, ∞) x = weights_end * x if weights_end < 0: return x # ∈ (-∞, 0] elif weights_end > 0: return x # ∈ [0, ∞) else return 0 `` 请注意,对于至少有两个神经元宽度的网络来说,这完全不是问题: \\\(\\begin\{gathered\}\\text\{neuron1\}\(x\) = \\text\{ReLU\}\(\-x\) \\\\ \\text\{neuron2\}\(x\) = \\text\{ReLU\}\(x\) \\\\ \\text\{net\}\(inp\) = \-\\text\{neuron1\}\(inp\) \+ \\text\{neuron2\}\(inp\) \\\\ \\end\{gathered\}\\\) 上述定义是一个产生所需函数的示例神经网络: [ (https://substackcdn.com/image/fetch/$s_!Ke_E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc384233a-0fe5-4496-b8c2-26ce4f9ed167_563x564.png) *旁注:*这就是为什么无限宽度是 UAT 的条件之一。 在离开恒等函数之前,看看这个不同的、**宽度为 1** 的神经网络的图表: [](https://substackcdn.com/image/fetch/$s_!JT98!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef04585c-384c-4297-95b2-1c88c68260e5_563x564.png) 根据图表,这个网络完美地表达了恒等函数。我们不是刚刚确定这是不可能的吗?即没有任何宽度为 1 的神经网络能够表达恒等函数?嗯,是的,这里是上面的图表,但稍微放大了一点: [](https://substackcdn.com/image/fetch/$s_!w23E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd48ce73-01d3-434d-86f5-8eb86df96b9e_665x569.png) 事实证明,这显然不是恒等函数。 **但是,**这里有一个*极其*重要的启示——神经网络可以在区间上逼近函数,而我们会完全相信这种逼近是通用的。 现代网络普遍包含归一化层这一事实使得这一点变得更加至关重要,这些层将网络操作的值约束在小区间内。 此外,*在实践中,将学习约束在区间内对于快速高效地训练深层神经网络是必要的。* 问题是——这种约束是否有任何意想不到的副作用? 我们在此停止对神经网络表达能力的一般分析,转而思考一个简单的例子。神经网络能学习 f(a,b)=a×b 吗? z = x*y 的 3D 图形 (https://substackcdn.com/image/fetch/$s_!tDKT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa507f16-5bbe-4b4c-bb16-8258978c57a0_1179x532.png) 答案是**是的:** [](https://substackcdn.com/image/fetch/$s_!RKQh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8d4c5d3-feb4-4e30-9da6-5916f95476f0_999x902.png) (注:在这些图表中,黄色表面是真实值,蓝色表面是学习到的解。水平平面轴是输入,垂直轴是输出。) 故事结束了吗?如果我们放大看看呢... [](https://substackcdn.com/image/fetch/$s_!bukb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb40829dc-6c27-4e6e-b29b-66a3cb7c2bc9_1000x857.png) 哦。好吧,事情并没有按计划进行。发生了什么? 记得我们刚才讨论过在区间上逼近与全局逼近的区别吗?该网络只看到了 \[-3,3\] 范围内的数字,因此它学习了在该区间上逼近乘法。当我们放大到 \[-12,12\] 时,网络在训练期间从未见过的值上进行了测试(第一张图也是如此),**而且这些值也超出了其训练区间**(即超出了训练*数据分布*)。 基本上,由于网络接受的训练数据仅位于较小的区间内,它没有理由在全球范围内学习该函数,因此它没有这样做。 归根结底,这个问题可以(并且在实践中确实)通过极其广泛/多样的训练数据集来解决,但它也揭示了一个非常有趣的理论问题。 我们现在已经看到网络**两次**在区间上学习而不是在全球范围内学习。我们有这两种情况的解决方案(针对第一种情况增加神经元,针对第二种情况增加数据集大小/多样性),但为什么会发生这种情况的问题仍然存在。 乘法器网络是因为实验缺陷、网络设计还是训练过程而未能泛化吗?神经网络不应该具有无限的灵活性吗?嗯,事实证明,*没有任何传统神经网络可以进行乘法运算。* 你仍然可以训练一个足够大的网络来预测 a×b 在实际上任何有限区间上的值,但总会有一个尺度,在此尺度下近似开始发散。 要理解原因,请考虑变量在网络内部组合的方式。归根结底,我们的目标是通过乘法组合 a 和 b。这必须*在*激活函数*之前*发生,因为它已经作用于单个值,因此不能独立使用两个输入: \\(f\(x\) = \\phi\(\\text\{linear combination\}\) ; \\text\{太晚了!\}\\) 这给我们留下了神经元的线性组合部分,无论神经元的权重如何,由于这些值是通过加法而不是乘法组合的,因此永远不会精确等于 a×b: \\(f\(x\) = \\phi\(w\_1 a \+ w\_2 b\) ; \\text\{相加,从未相乘!\}\\) 我们发现的是真实神经网络表达能力的非常基本的限制。它们通常无法表达乘法。 显然,神经网络在实践中仍然有效。也许它们根本不需要进行乘法运算。但是,仅仅在有限区间上学习函数就*足够*好吗?特别是如果这些区间的大小受到训练数据集多样性的限制?机器学习系统因为无法构建复杂的外推函数而错过了哪些边缘情况?神经网络还有哪些函数无法表示?如果其中一个不可表示的函数**很重要**,会发生什么? 我个人的直觉指向两个具体问题,我认为神经网络表达能力有限注定它们会失败。两者都基于经过验证的实际现象,展示了神经网络被破坏的惊人容易程度: 1. 网络普遍无法学习复杂函数,这可能是分布外示例导致**所有**视觉网络分类准确率降低 10% 的原因。(https://arxiv.org/abs/1902.10811) 2. 网络无法表达基本函数,这可能是对抗性示例如此容易钻空子的原因。(https://arxiv.org/abs/1705.07263,https://arxiv.org/abs/1608.04644) 如果上述理论中的任何一个为真,问题就变成了——我们如何使神经网络表示**更多的函数,更具通用性?** #### 关于此帖子的讨论 ### 准备好阅读更多内容了吗?

相似文章

神经 GPU 的扩展与局限性

OpenAI Blog

本文探讨了神经 GPU 模型的扩展与局限性,通过课程设计和规模扩展展示了改进方案,使其能够学习十进制数和长表达式的算术运算,同时识别出对称输入上的失败模式,这些模式类似于对抗样本。

平坦最小值是幻觉吗?

arXiv cs.LG

本文挑战了关于平坦最小值能导致神经网络更好泛化的普遍观点,认为‘弱性’——一种函数简单性的重参数化不变度量——才是真正的驱动力。在MNIST和Fashion-MNIST上的实验结果表明,弱性能够预测泛化,而尖锐性则与之负相关,且随着训练数据增加,大批次泛化优势消失。

人工神经网络中的多模态神经元

OpenAI Blog

OpenAI 在 CLIP 中发现了多模态神经元,它们在不同模态(视觉、符号、文本)中对同一概念做出响应,这与生物神经元的行为相似,解释了该模型在困难视觉任务上的鲁棒性。这项可解释性研究为我们理解视觉-语言模型如何组织和表示抽象概念提供了深刻见解。