迈向神经网络引导的程序合成与验证
在机器学习技术飞速发展的当下,将其应用于程序合成与验证领域的研究日益增多。本文将介绍一种新颖的神经网络引导的程序和不变式合成框架,探讨其原理、实现步骤以及潜在应用。
1. 神经网络引导合成概述
传统上,从神经网络(NN)中提取简单、可解释的经典程序表达式颇具挑战,尤其是对于深度神经网络,实现“可解释的人工智能”一直是机器学习领域的重大难题。然而,如果针对程序或不变式合成对神经网络进行合理设计,并将合成问题的范围限制在有相对简单程序表达式解的情况,那么通过检查训练后神经网络的权重来提取程序表达式(或逻辑公式)是可行的。
以一个三层神经网络为例,该网络作为二维数据的二元分类器,输入为一对数字 $(x_1, x_2)$,输出为一个接近 1 或 0 的数字 $z$。网络有八个隐藏节点,隐藏层和输出层均使用 sigmoid 函数作为激活函数。通过观察训练数据和训练后网络的权重、偏置,可以发现某些隐藏节点的权重比例呈现一定规律,从而推测出与分类相关的线性不等式约束,进而通过经典的布尔函数合成方法找到正确的分类器。
2. 从正负示例进行谓词合成
2.1 问题定义
谓词合成问题(PN 合成问题)是指给定正示例集 $P$ 和负示例集 $N$($P, N \subseteq Z^k$ 且 $P \cap N = \varnothing$),找到一个逻辑公式 $\phi(x_1, \ldots, x_k)$,使得对于任意 $(v_1, \ldots, v_k) \in P$ 有 $\models \phi(v_1, \ldots, v_k)$ 成立,对于任意 $(v_1, \ldots, v_k) \
超级会员免费看
订阅专栏 解锁全文
1163

被折叠的 条评论
为什么被折叠?



