图神经网络版本的PyTorch来了,Facebook开源GTN框架,还可对图自动微分

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 近日,Facebook的AI研究院发表了一篇论文「DIFFERENTIABLE WEIGHTED FINITE-STATE TRANSDUCERS」,开源了用于图网络建模的GTN框架,操作类似于PyTorch这种传统的框架,也可以进行自动微分等操作,大大提高了对图模型建模的效率。

微信图片_20220109165314.png


图神经网络「GNN」是近年来最火爆的研究领域之一,常用于社交网络和知识图谱的构建,由于具有良好的可解释性,现在已经广泛使用在各个场景当中。

 

使用基于图的数据结构构建机器学习模型一直很困难,因为没有很多易于使用的框架。通过将图(或数据)从操作中分离出来,研究人员将有更多的自由和机会来尝试更多的结构化学习算法的设计。

 

微信图片_20220109165317.jpg


Facebook刚开源的工具,将帮助开发人员更快地开发图相关的算法。


图结构非常适合于编码有用的先验知识,通过在训练时使用这些图,整个系统仍然可以从数据中进行学习和改进。从长远来看,WFST与数据学习相结合有可能使机器学习模型更加精确、模块化和轻量化。

 

GTN框架:用WFSTs代替Tensor

 

Facebook近期开源了GTN(Graph Transformer Networks)框架,一个为了图的自动微分而设计的开源框架,支持功能强大、具有表达能力的图结构,称为加权有限状态转换器(WFSTs)

 

就像PyTorch 为张量的自动微分提供了一个框架一样,GTN 也为WFSTs提供了这样一个框架。AI研究人员和工程师可以使用 GTN 更有效地训练基于图的机器学习模型。


       微信图片_20220109165319.png


这个框架是用C++编写的,可以通过Python直接安装来使用。

 

WFST数据结构通常用于结合不同信息源的信息,如存在于语音识别、自然语言处理和手写识别等应用中的信息。

 

微信图片_20220109165322.png


一个标准的语音识别器可能包括一个声学模型和一个语言模型,前者可以预测一个语音片段中出现的字母,后者可以预测一个给定单词跟随另一个单词的可能性。

 

这些模型可以表示为一个 WFST ,通常会被单独训练并结合起来得到最佳的结果。我们新的 GTN 库使得不同类型的模型一起训练成为可能,从而提供更好的结果。

 

图比张量更具有结构性,这使得研究人员可以将关于任务的更有用的先验知识编码成一种学习算法。例如,在语音识别中,如果一个单词有几个可能的读音,则GTN 允许我们将该单词的读音编码成一个图,并将该图合并到学习算法中。

 

以前,在训练时使用单个图是不容易的,开发人员必须硬编码软件中的图结构。现在,使用这个框架,研究人员可以在训练时动态地使用 WFSTs,整个系统可以更有效地从数据中学习和改进。


       微信图片_20220109165324.png


上图显示使用Graph来构建ASG序列,在「p:r/w」标签中,p表示输入标签,r表示输出标签,w是权重。

 

GTN工作原理类似PyTorch,简单易上手

 

通过使用 GTN  ,研究人员可以轻松地构建WFST,并将其可视化,在其上执行操作。

 

通过简单调用「gtn.backward」,可以针对参与计算的任何图计算梯度。下面是一个例子:


       微信图片_20220109165326.png      


GTN 的编程风格与 PyTorch 这样的框架非常相似。命令式样式、 autograd API 和 autograd的实现都是基于类似的设计原则。

 

主要的区别是我们用 WFSTs 及其相应的操作来替换掉PyTorch中的Tensor。同时与很多框架一样,GTN 的目的是在不牺牲性能的情况下易于使用。

 

在论文中,作者给出了如何使用 GTN 实现算法的实例。

 

其中一个例子是使用 GTN 增加序列级的损失函数的能力,将短语分解变成word pieces。模型还可以自由选择如何将单词「The」分解为word pieces,例如,模型可以选择使用「th」和「 e」 ,或者「 t」、「 h」和「 e」。


       微信图片_20220109165329.png      


图:显示了一个简单的内置在 GTN中的WFST,它分解的「the」的word piece转换到单词本身

 

在机器翻译和语音识别中经常使用word pieces,但是这种分解是从任务无关的模型中选择的,而我们的新方法可以使得模型学习出给定任务的单词或短语的最佳分解方式。


微信图片_20220109165332.png


同时,GTN还使用了卷积WFST层,通过在IAM数据集上的实验,卷积核可以把字母转换成200个word piece。所有卷积核的宽度是5,步长为4,输入通道为80,输出通道是200。


微信图片_20220109165335.png


上图是WFST卷积层和传统卷积层的对比,可以看出,在参数量和时间复杂度都得到了大幅度降低的同时,性能得到了一定的提升。

 

如何使用GTN框架

 

环境要求:


      微信图片_20220109165338.png      


下面是使用GTN构建两个 WFSA的案例:


       微信图片_20220109165340.png


在图上构造简单的函数,进行前向计算和可视化,并反向求导计算它们的梯度:


       微信图片_20220109165342.png      


下图是使用GTN来计算ASG损失函数和梯度的例子,ASG函数的输入是所有的gtn.Graph对象。


       微信图片_20220109165345.png  


总体来说,这篇论文的贡献在于:

 

设计了一个框架通过使用WFSTs来对Graph自动求微分,同时支持C++和python。

 

GTN框架可以用来计算已有的序列级别的损失函数,同时设计了一个全新的序列级别损失函数。

 

提出了卷积WFST层可以把底层的表征映射到更高级别的表征。

 

通过实验阐述了使用WFSTs用于语音和手写识别的有效性。


参考链接:

https://ai.facebook.com/blog/a-new-open-source-framework-for-automatic-differentiation-with-graphs/

https://arxiv.org/pdf/2010.01003.pdf

相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
10月前
|
机器学习/深度学习 算法 PyTorch
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
267 1
|
9月前
|
机器学习/深度学习 PyTorch TensorFlow
66_框架选择:PyTorch vs TensorFlow
在2025年的大语言模型(LLM)开发领域,框架选择已成为项目成功的关键决定因素。随着模型规模的不断扩大和应用场景的日益复杂,选择一个既适合研究探索又能支持高效部署的框架变得尤为重要。PyTorch和TensorFlow作为目前市场上最主流的两大深度学习框架,各自拥有独特的优势和生态系统,也因此成为开发者面临的经典选择难题。
1618 0
|
10月前
|
机器学习/深度学习 算法 PyTorch
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
420 0
|
机器学习/深度学习 人工智能 PyTorch
|
人工智能 安全 PyTorch
SPDL:Meta AI 推出的开源高性能AI模型数据加载解决方案,兼容主流 AI 框架 PyTorch
SPDL是Meta AI推出的开源高性能AI模型数据加载解决方案,基于多线程技术和异步事件循环,提供高吞吐量、低资源占用的数据加载功能,支持分布式系统和主流AI框架PyTorch。
1052 10
SPDL:Meta AI 推出的开源高性能AI模型数据加载解决方案,兼容主流 AI 框架 PyTorch
|
机器学习/深度学习 PyTorch TensorFlow
深度学习工具和框架详细指南:PyTorch、TensorFlow、Keras
在深度学习的世界中,PyTorch、TensorFlow和Keras是最受欢迎的工具和框架,它们为研究者和开发者提供了强大且易于使用的接口。在本文中,我们将深入探索这三个框架,涵盖如何用它们实现经典深度学习模型,并通过代码实例详细讲解这些工具的使用方法。
1342 0
|
人工智能 PyTorch 算法框架/工具
【AI系统】动手实现 PyTorch 微分
本文介绍了使用操作符重载(OO)编程方式实现的自动微分,特别是采用反向模式(Reverse Mode)的实现方法。文中详细解释了操作符重载的基本概念及其在自动微分中的应用,以及反向模式的工作原理。通过 Python 示例代码,演示了如何手动实现类似 PyTorch 中自动微分的核心机制,包括定义 `Variable` 类、`Tape` 结构以及实现基本的数学运算符重载。最后,通过一个具体的数学函数示例展示了如何利用上述机制计算梯度,帮助读者理解反向模式自动微分的全过程。
525 1
【AI系统】动手实现 PyTorch 微分
|
机器学习/深度学习 并行计算 PyTorch
TorchOptimizer:基于贝叶斯优化的PyTorch Lightning超参数调优框架
TorchOptimizer 是一个基于贝叶斯优化方法的超参数优化框架,专为 PyTorch Lightning 模型设计。它通过高斯过程建模目标函数,实现智能化的超参数组合选择,并利用并行计算加速优化过程。该框架支持自定义约束条件、日志记录和检查点机制,显著提升模型性能,适用于各种规模的深度学习项目。相比传统方法,TorchOptimizer 能更高效地确定最优超参数配置。
796 7
|
机器学习/深度学习
NeurIPS 2024:标签噪声下图神经网络有了首个综合基准库,还开源
NoisyGL是首个针对标签噪声下图神经网络(GLN)的综合基准库,由浙江大学和阿里巴巴集团的研究人员开发。该基准库旨在解决现有GLN研究中因数据集选择、划分及预处理技术差异导致的缺乏统一标准问题,提供了一个公平、用户友好的平台,支持多维分析,有助于深入理解GLN方法在处理标签噪声时的表现。通过17种代表性方法在8个常用数据集上的广泛实验,NoisyGL揭示了多个关键发现,推动了GLN领域的进步。尽管如此,NoisyGL目前主要适用于同质图,对异质图的支持有限。
422 7
|
机器学习/深度学习 监控 PyTorch
深度学习工程实践:PyTorch Lightning与Ignite框架的技术特性对比分析
在深度学习框架的选择上,PyTorch Lightning和Ignite代表了两种不同的技术路线。本文将从技术实现的角度,深入分析这两个框架在实际应用中的差异,为开发者提供客观的技术参考。
573 7

热门文章

最新文章

推荐镜像

更多