逆向循环神经网络
今天简单介绍一下谷歌研究团队开源了一个可以对RNN进行逆向工程的包,名字叫RENN。
今天谷歌研究团队开源了一个可以对RNN进行逆向工程的包,名字叫RENN。
开源地址:
https://github.com/google-research/reverse-engineering-neural-networks
循环神经网络(RNNs)是一种广泛应用于序列数据建模的工具,但它们常常被当作难以捉摸的黑盒子。
给定一个训练有素的递归网络,我们希望对其进行逆向工程,获得关于它如何解决特定任务的定量的、可解释的描述。
即使是对于简单的任务,对递归网络如何工作的详细理解,或如何发展这种理解的处方,仍然是难以实现的。
在这项工作中,我们使用动态系统分析的工具,对训练好的循环网络进行逆向工程,以执行情感分类这一基础自然语言处理任务。
给定一个训练好的网络,我们找到循环动态的固定点,并围绕这些固定点对非线性系统进行线性化。
尽管它们的理论能力可以实现复杂的高维计算,但我们发现,训练后的网络可以收敛到高度可解释的低维表示。
特别是,固定点的拓扑结构和相应的线性化动态揭示了RNN内部的近似线吸引器,我们可以用它来定量地理解RNN如何解决情感分析任务。
最后,我们发现这种机制存在于多个数据集上训练的RNN架构(包括LSTMs、GRU和vanilla RNNs)中,这表明我们的发现并非特定架构或数据集所独有。
总的来说,这些结果表明,令人惊讶的普遍性和人类可解释的计算可以在一系列循环网络中出现。
官方提供了一个例子,我在colab上跑了出来,效果如下:
链接:
https://colab.research.google.com/drive/1dJpwDs0bvv4n80gtSbV68QouzGzokq9Z?usp=sharing
点击原文阅读直达
首先用IMDB数据,用RNN(GRU)生成一个模型,开始分析







参考资料:
- 论文:
How recurrent networks implement contextual processing in sentiment analysis
https://arxiv.org/abs/2004.08013
- 论文:
Reverse engineering recurrent networks for sentiment classification reveals line attractor dynamics
往期回顾:
