Neuro-Symbolic Procedural Planning with Commonsense Prompting
Yujie Lu, Weixi Feng, Wanrong Zhu, Wenda Xu, Xin Eric Wang, Miguel Eckstein, William Yang Wang
ICLR 2023  (Spotlight) Paper    Code    BibTex

Procedural Planning

Two independant procedural planning task examples from RobotHow and WikiHow. PLAN construct commonsense-infused prompt from external knowledge (e.g., ConceptNet) to elicit procedural planning ability of the Large Language Models (LLMs) without training or exemplars.

The Overview of Procedural Planning

Our five-stage pipeline includes: 1) semantically parsing the task T into concept set TE to retrieve subgraph Gs from the external knowledge base G. 2) formalize procedural prompt PG and then translate into the admissible one PˆG. 3) aggregate task, previous steps and PG as final commonsense-infused prompt P. (Section 3.1) 4) and 5) generating and translating time-extended procedural plan until triggering the termination condition. (Section 3.2)

Structural Causal Model (SCM) for Procedural Planning.

(a) The full temporal causal graph. T denotes the task query, and Si is the sub-goal step at timestep i. D is the unobservable confounding variable introduced by the LLMs. Pi denotes the mediating variables we construct to mitigate the spurious correlation. (b) The SCM at timestep i. Without causal intervention, the model produces a sub-goal step “find television” due to the spurious correlation between “television” and “living room” caused by the confounding variable D. With our causal intervention, the constructed mediating variable Pi (Section 3.1) can block the backdoor paths for T → Si and Si−1 → Si (opened by D) and generate the causal sub-goal “find book” precisely (Section 3.2).

@misc{lu2023neurosymbolic,

      title={Neuro-Symbolic Procedural Planning with Commonsense Prompting}, 

      author={Yujie Lu and Weixi Feng and Wanrong Zhu and Wenda Xu and Xin Eric Wang and Miguel Eckstein and William Yang Wang},

      year={2023},

      eprint={2206.02928},

      archivePrefix={arXiv},

      primaryClass={cs.CL}

}