Moku 3.3版更新在 Moku:Pro 平台新增了全新的仪器功能【神经网络】,使用户能够在Moku设备上部署实时机器学习算法,进行快速、灵活的信号分析、去噪、传感器调节校准、闭环反馈等应用。如果您不熟悉神经网络的基础知识,或者想了解神经网络如何优化加速实验研究,请继续阅读,探索基于深度学习的现代智能化实验的广阔应用前景。
什么是神经网络?
“人工神经网络”(ANN)又称“神经网络”,是一种模仿生物神经网络的计算模型。在这篇介绍中,我们将侧重介绍全连接神经网络,不涉及卷积、递归和变压器架构等复杂设置。
神经网络由各层节点组成。一个节点的值取决于上一层一个或多个节点的值。第一层(输入)的节点直接从外部输入获取其值,而最后一层(输出)的节点则给出网络的结果。输入层和输出层之间的层被称为隐藏层。
用数学术语来说,可以把输入层想象成一个 N ✕ 1 矩阵,其中 N 是输入层的节点数,矩阵中的每个元素都对应激活值,如图 1 所示。
图 1:典型神经网络架构,包含输入层、隐藏层和输出层。
接下来是隐藏层。隐藏层的数量及其节点数取决于模型的复杂性和可用的计算能力。隐藏层的每个节点会对输入层的激活值应用不同的权重和偏置,然后通过非线性激活函数处理。通过这种方式,神经网络不仅能执行简单的线性运算,还能解决复杂的非线性问题。
图 2:隐层的激活值是通过上一层激活值的组合计算得出的。
如果输入层是一个 N ✕ 1 矩阵(n1、n2......),那么下一个激活值就是将其与一个 M ✕ N 矩阵相乘得到的,其中 M 是隐藏层的节点数。矩阵中的每个元素都是一个权重,用 wmn 表示,这意味着每一层都需要 MN 个参数。结果是一个 M ✕ 1 矩阵,然后用偏置值(b1、b2......)抵消。计算出新的激活值后,将其传递给 “激活函数”。激活函数可以提供非线性行为,如剪切和归一化,能使网络比简单的矩阵乘法更强大。
数据经过几个隐藏层处理后,最终到达输出层。输出节点的激活值对应用于分类或预测相关参数。例如,从示波器收集的时间序列数据被输入到输入层,达到将信号分类为正弦波、方波、锯齿波或直流信号的神经网络目的。在输出层中,每个节点将对应其中一个选项,激活值最高的节点代表网络对信号形式的最佳猜测。如果一个激活值接近 1,而其他激活值接近 0,则表示网络猜测的可信度很高。如果激活值相近,则表示对预测结果的信心不足。
神经网络是如何工作的?
如果不调整隐藏层的权重和偏置,神经网络最终只能是一个复杂的随机数生成器。为了提高模型的准确性,用户必须提供训练数据,即使用已知答案的训练数据集优化模型。然后,模型可以根据训练集计算出自己的答案,并与真实值进行比较。计算出的差值被称为成本函数,是对模型性能的量化评估。
计算出给定数据集的成本函数后,就可以通过各种微积分运算来调整隐藏层的权重和偏置,从而达到最小化成本函数的目标。这与向量微积分中的梯度下降概念类似,可在文献[1]中进一步探讨。这一过程被称为反向传播(backpropagation),它允许通过成本函数获得的信息在各层中向后传递,从而使模型在无需人工输入的情况下进行学习或自我调整。
训练数据通常会在神经网络中运行多次。提供给模型的每个数据实例被称为一个历元。通常情况下,部分训练数据会被保留用于验证。在验证过程中,训练有素的网络将从保留的数据集中推断输出,并将其预测结果与已知的正确输出进行比较。这比单纯的成本函数值更能准确反映模型的性能,因为它表明了模型对新输入和新输入的泛化能力。
神经网络有哪些不同类型?
神经网络的运行原理虽然相似,但根据应用的不同可以有多种形式。常见的神经网络包括
前馈神经网络(FNN): 这是标准格式,如上述示例中讨论的格式。在前馈神经网络中,数据通过网络向前传递,不需要任何反馈,也不需要记忆之前的输入。典型的应用例子比如图像识别,每个像素都是神经网络的输入,而输出则是对该图像的分类。
卷积神经网络(CNN): 这是 FNN 的一种子类型,通常通过使用滤波器来检测图像中的特征。由于图像的尺寸通常很大,这些滤波器的作用是将输入图像的尺寸缩小到更小的权重数。这样,隐层中的每个神经元就可以在整个输入中扫描相同的特征,因此CNN 在处理图像识别任务具有很高鲁棒性。
递归神经网络(RNN): 与前馈网络不同,RNN 在隐藏层中使用反馈。反馈机制为系统提供了记忆,因此给定层的输出可以取决于先前的输入。这使得 RNN 成为时间序列、语音和音频数据等连续数据集的绝佳选择。
自动编码器: 自动编码器是一种特殊的神经网络,它能将给定数据编码到一个缩小的维度空间,然后从编码数据中重建或解码。从概念上讲,这与统计和生物信息学中常用的主成分分析 (PCA) 非常相似。
神经网络在信号处理中的应用
神经网络不仅在大型语言模型、图像解密和翻译等方面具有广泛应用,还能显著提升信号处理中的测量性能。利用机器学习改进测量设置的应用包括:
控制系统: 在某些复杂系统中,很难事先知道实现特定控制状态所需的输入,或者系统模型难以反向推导。在这种情况下,可使用波形发生器或函数发生器对系统进行探测,同时使用示波器监控系统的响应状态。然后,神经网络根据当前状态与目标控制之间的差异学习反向映射。与 PID 控制器结合使用,可实现 PID 参数的自适应调整 [2]。
传感器校准: 神经网络可以获取传感器数据并补偿系统误差,如电缆的相位失真或延迟,或光电探测器的光束偏差。这种方法可在数据进入下一阶段实验前进行实时修正,提高测量精度。
信号去噪: 这种技术利用神经网络作为自动编码器,提取信号的关键特征,然后根据这些特征重建信号。由于随机噪声不属于关键特征,重建后的信号本质上就是经过去噪的信号,即神经网络充当了高效的噪声滤波器。
信号分类: 神经网络可将时间序列等输入信号与已知模板或一系列模板进行比较。这样,用户就能快速对信号类别进行分类,识别数据集中的异常值或错误,检测随机事件,或根据 IQ 正交振幅量子态进行分类 [3]。
图 3:经过神经网络处理后的去噪重建信号。
基于 FPGA 的神经网络有哪些优势?
神经网络通常是在 CPU 和/或 GPU 的组合上构建和运行的。这在处理大型模型时非常有效,但同时也对资源和能耗要求较高。对于前面提到的信号处理应用类型来说往往也是过度的。
FPGA具有高速处理及并行能力,使得神经网络在处理实时数据时具备低延迟和高效的资源利用率。与传统的GPU/CPU相比,基于 FPGA 的神经网络非常适合实验情况,因为它们处理实时数据的速度快,无需与主机 PC 通信就能实现快速控制和决策。FPGA 还可以根据用户需求变化重新调整配置,灵活性强。最后,由于 FPGA 体积小巧,在FPGA 上实现的神经网络有助于减少资源和能源消耗 [4][5]。
Moku 神经网络是什么?
Moku基于FPGA开发了一些列灵活、可快速重新配置的测试和测量仪器套件外, Moku:Pro 现在还新增 Moku 神经网络 功能。得益于 FPGA 的可重构性性和快速处理速度,神经网络可与其他 Moku 仪器(如 波形发生器、 PID 控制器和 示波器)一起使用,优化信号分析、去噪、传感器调节和闭环反馈等应用场景解决方案。
用户可以使用 Python 开发和训练自己的神经网络,并在多仪器并行模式下将训练好的神经网络上传到 Moku:Pro 。这样就可以实现多达四个输入通道或一个通道的时间序列数据分析,以及多达四个输出用于实时实验数据处理,所有这些都可以在一台 Moku:Pro 上完成。Moku 神经网络具有多达五个全连接层,每个层包含多达 100 个神经元,并根据您的应用提供五种不同的激活函数选项,以适应不同应用需求。
全部0条评论
快来发表一下你的评论吧 !