神经投影网络 ProjectionNet
ProjectionNet: Learning Efficient On-Device Deep Networks Using Neural Projections
ProjectionNet 是一种联合框架,旨在训练轻量的设备端模型,这些模型可以直接在设备上进行推理,并且计算成本较低。该框架尤其适用于深度学习网络,这些网络通常很大,包括涉及许多层的参数,并经过大量数据训练,以学习可用于在推理时预测输出的有用表示形式。
ProjectionNet 的核心思想是使用复杂的前馈/循环架构(如 LSTM)作为训练模型,并结合一个简单的投影(projection)架构。这个投影架构包含动态投影操作以及一些窄带全连接层。通过这种方式,ProjectionNet 能够在保持性能的同时,显著降低模型的复杂度和内存占用。
在训练过程中,ProjectionNet 使用反向传播在 TensorFlow 上进行端到端训练。训练完成后,就可以直接使用紧凑的 ProjectionNet 模型进行推理。
ProjectionNet 的优势在于其能够在设备上高效运行深度学习模型,而无需依赖云端计算资源。这使得 ProjectionNet 在移动计算、物联网设备等领域具有广泛的应用前景。例如,在智能投影技术中,基于神经网络的 ProjectionNet 可以实现自动聚焦、三维投影、语音控制和智能识别等功能,提升用户体验和设备的智能化程度。
介绍
随着深度学习技术的快速发展,我们见证了神经网络模型在多个领域取得了显著的性能提升。然而,这些模型通常具有庞大的参数数量和计算复杂度,这要求大量的计算资源和内存来支持其训练和推理过程。在云端服务器上运行这些模型是可行的,因为它们拥有强大的计算能力和存储资源。然而,随着移动设备、物联网设备和其他边缘设备的普及,我们迫切需要将深度学习模型部署到这些资源受限的设备上。
将深度学习模型部署到资源受限的设备上带来了诸多挑战。首先,这些设备通常在低功耗模式下运行,其计算能力和内存资源远不及云端服务器。其次,由于连接性问题或隐私原因,某些应用场景可能不允许将数据发送到云端进行处理。因此,我们需要一种能够在设备上直接运行深度学习模型的方法,同时保持较低的计算成本和内存占用。
为了解决这些问题,研究者们提出了多种模型压缩和优化技术,如权重剪枝、低秩分解、量化等。这些方法可以在一定程度上减小模型的尺寸和计算复杂度,但往往会导致性能下降,难以满足特定应用场景的精度要求。因此,我们需要一种更加高效的方法,能够在保持模型性能的同时,显著降低其计算和内存需求。
在这种背景下,论文《ProjectionNet: Learning Efficient On-Device Deep Networks Using Neural Projections》介绍了一种名为ProjectionNet的联合框架。该框架旨在训练轻量级的设备端模型,这些模型可以直接在资源受限的设备上进行推理,并且具有较低的计算成本和内存占用。
ProjectionNet的核心思想是将复杂的前馈/循环架构(如LSTM)作为训练模型,并结合一个简单的投影架构。这个投影架构包含动态投影操作以及一些窄带全连接层,用于将训练模型学到的有用表示形式投影到一个低维空间中。通过这种方式,ProjectionNet能够在保持模型性能的同时,显著降低其参数数量和计算复杂度。
在训练过程中,ProjectionNet使用反向传播算法在TensorFlow等深度学习框架上进行端到端训练。训练完成后,我们可以直接使用紧凑的ProjectionNet模型进行推理。实验表明,ProjectionNet能够在多个视觉和语言分类任务中达到与常规模型相当的性能水平,同时显著降低了模型的尺寸和计算复杂度。
ProjectionNet为在资源受限的设备上部署深度学习模型提供了一种高效的方法。通过结合复杂的前馈/循环架构和简单的投影架构,ProjectionNet能够在保持模型性能的同时,显著降低其计算和内存需求,为深度学习在移动设备、物联网设备和其他边缘设备上的应用开辟了新的可能性。
众所周知,深度学习网络通常很大,包括涉及许多层的参数,并经过大量数据训练,以学习可用于在推理时预测输出的有用表示形式,所以为了达到高效率,我们使用分布式计算达到目标,这将需要多个CPU内核或图形处理单元(GPU)。随着移动端设备的普及,我们自然而然的想将这些模型应用到移动端设备上,但是,与在云上运行的高性能群集不同,这些设备在低功耗模式下运行,并且存在显着的内存限制,所以如果还是使用老方法,完全是行不通的。
即使将模型部署在云端,通过网络连接的方式进行使用,也会涉及到连接性问题(数据无法发送到服务器)或隐私原因(某些数据类型和处理需要限制在某些范围内),而且在许多实际场景中,将计算密集型操作从设备委派给云并不可行。还有就是模型压缩,降低浮点精度等等手段去缩减模型体积,其实在某些情况下,达不到应用场景的精度需要。所以需要有一个学习高效,具有低内存占用量的设备上机器学习模型的能力,这些模型可以直接在设备上运行以进行推理,并且计算成本较低
论文中介绍了一种叫ProjectionNet的联合框架,可以为不同机器学习模型架构训练轻量的设备端模型。其使用复杂的前馈/循环架构(就像 LSTM)作为训练模型,联合一个简单的投影(projection)架构——其中包含动态投影操作以及一些窄带全连接层。整个架构使用反向传播在 TensorFlow 上进行端到端训练,在训练完成后,我们就可以直接使用紧凑的 ProjectionNet 进行推理了。通过这种方法,我们可以训练尺寸很小的 ProjectionNet 模型,兼顾小尺寸(比常规模型小几个数量级)与高性能,在一些视觉和语言分类任务中达到满意的效果。
相关工作
许多相关工作通过在有限的大小或内存限制下学习有效的模型,比如简单的字典查找、特征修剪或散列的神经网络压缩的技术,以及降低的数字精度、矢量量化、网络的二值化策略、权重共享来实现神经网络的紧凑表示。这些方法大多数旨在通过使用低秩分解或哈希技巧对连接进行分组来利用网络权重中的冗余。
相反,本论文中建议学习一个简单的基于投影(projection)的网络,该网络可以有效地编码中间网络表示形式(即隐藏单元)和所涉及的操作,而不是权重。同时还为设备模型引入了新的训练范例,其中简单网络经过耦合和联合训练可以模仿现有的深度网络,而且该深度网络非常灵活,可以根据不同的体系结构或任务进行自定义。
神经投影网络(Neural Projection Networks)
ProjectionNets
神经网络是一类非线性模型,用于学习从输入 x ⃗ i \vec{x}_i xi 到输出 y i y_i yi 的映射,其中 x ⃗ i \vec{x}_i xi 表示输入特征向量或序列(在递归神经网络的情况下),而 y i y_i yi 是分类任务的输出类别或预测的序列。通常,这些网络由多层隐藏的单元或神经元组成,并在一对层之间建立连接。例如,在完全连接的前馈神经网络中,经过训练的加权连接或网络参数的数量为 O ( n 2 ) O(n^2) O(n2),其中 n n n 是每层隐藏单元的数量。而论文提出的联合优化框架,该架构结合了projection网络和trainer网络进行联合训练。如下图:
上图说明了神经投影网络架构,使用前馈NN作为trainer网络,这个耦合网络进行联合训练以优化组合损耗函数(公式1):
L ( θ , p ) = λ 1 ⋅ L θ ( . ) + λ 2 ⋅ L p ( . ) + λ 3 ⋅ L p ^ ( . ) L(\theta,p)=\lambda_1\cdot L_\theta(.)+\lambda_2 \cdot L^p(.)+\lambda_3 \cdot \hat{L^p}(.) L(θ,p)=λ1⋅Lθ(.)+λ2⋅Lp(.)+λ3⋅Lp^(.)
其中 L θ ( . ) L_\theta(.) Lθ(.), L p ( . ) L^p(.) Lp(.)和 L p ^ ( . ) \hat{L^p}(.) Lp^(.),对应于以下定义的两个网络的损失函数(公式2):
L θ ( . ) = ∑ i ∈ N D ( h θ ( x ⃗ i ) , y i ^ ) L_\theta(.)=\sum_{i\in N}D(h_\theta(\vec{x}_i), \hat{y_i}) Lθ(.)=i∈N∑D(hθ(xi),yi^) L p ( . ) = ∑ i ∈ N D ( h p ( x ⃗ i ) , h θ ( x ⃗ i ) ) L^p(.)=\sum_{i\in N}D(h^p(\vec{x}_i),h_\theta(\vec{x}_i)) Lp(.)=i∈N∑D(hp(xi),hθ(xi)) L p ^ ( . ) = ∑ i ∈ N D ( h p ( x ⃗ i ) , y i ^ ) \hat{L^p}(.)=\sum_{i\in N}D(h^p(\vec{x}_i), \hat{y_i}) Lp^(.)=i∈N∑D(hp(x