欢迎光临散文网 会员登陆 & 注册

【花师小哲】当代炼金术(神经网络)前沿(42)——从代码-语言模型中恢复整个AST

2023-08-29 09:54 作者:花师小哲-中二  | 我要投稿

今天来讲下这篇论文:

本篇涉及到的术语可能比较难理解一些,特别是对于没有系统学过《数据结构》的朋友(这也是我不太喜欢讲代码-语言模型相关论文的原因)

1.黑盒模型与探针

众所周知,神经网络是一个黑盒,虽然我们能了解一个神经元的运行机理,但是大量神经元之间复杂的交互就不是人的大脑能方便理解的了。但黑盒不代表我们不能对其进行研究,至少你能通过看输入和输出总结出不少规律。除此之外,使用探针程序也是一个很好的方法。

举个不恰当的例子,假设一个黑盒模型是一滩黑水,我们不能直接潜入黑水中查看很多东西,但是我们可以通过钓鱼的方式分析水下一些生物的生存情况,探针程序就类似于这样的功能。

其实探针程序也是基于这样一个常识:虽然神经网络内部的运行原理是神秘的,但输出一般会变为人类可读的形式(也有些不是,例如输入一个神经网络权值,输出变换后的权值这样有些“邪道”的网络)。所以我们可以把语言模型的权值作为输入,输出一些我们感兴趣的东西。

在上篇论文中提到的“代码追踪”能力就可以通过探针程序发现:

【AI小杂谈】语言模型与推理

前不久一个很有意思(也很难)的论文也是用了探针,名字是《Evidence of Meaning in Language Models Trained on Programs》,因为真的有些不好理解的东西就没在b站发,感兴趣的可以自行知乎上搜。

2.AST

然后就要讲这个东西了,其实我觉得即使是学过《数据结构》的朋友也不一定还记得这是个什么东西了,也正常。我大四的时候学一门课,老师让我们画AST,我当时一脸懵,百度了一下才知道这玩意原来学过。

AST,英文是Abstract Syntax Tree(虽然英文中本身就带有“Tree”了,但是日常使用时一般还是习惯叫“AST树”,也许是为了强调这是一颗树吧,当然这个树是离散数学意义上的树),中文是抽象语法树,简而言之就是把我们平时写的代码转换成一种树的形式,这个树包含了代码的结构和语义信息,有利于代码分析等。实在难以理解的话就当做是关于代码的一种抽象信息吧。

这篇论文中给出的一个AST

比较意外的是,ChatGPT竟然可以处理AST,虽然经常出问题就是了:

当时真的鲸了

3.从代码-语言模型中恢复AST树

没错,这篇论文就是要从代码-语言模型中用探针探测出整个AST。

我们首先输入代码,然后就可以从代码-语言模型的隐藏向量中用探针程序恢复AST了。

做法不详细展开了,要做的事情还是很多的,包括把AST转换成“严格的”二叉树再扁平化等。总之,从结果来看,在当时(2022年)最强大的五个代码-语言模型中都成功恢复出了AST。

这个发现说明了比较强的代码-语言模型确实能够掌握一些足够抽象的表示了。

另一个重要发现是,实验的大部分模型都是把AST放在模型的中层的。这也符合之前一些研究发现的规律:低层做初级表示,中层形成知识,高层决定输出。

4.结语

其实对于这篇文章的研究我也是有些疑问的:

(1)说到底,先给输入然后直接探测的方法总感觉有些奇怪,虽然这方法其实很常见,例如之前写过的“从脑电波中恢复图像”:

【花师小哲】当代炼金术(神经网络)前沿(21)——离大谱,脑信号还原图像?

(2)本文是将AST转换后再扁平化处理的,感觉和原先的AST还是不同的

但不管怎么说吧,这确实是一个不错的研究。

【花师小哲】当代炼金术(神经网络)前沿(42)——从代码-语言模型中恢复整个AST的评论 (共 条)

分享到微博请遵守国家法律