  Large language models have been shown to struggle with multi-step reasoning,
and do not retain previous reasoning steps for future use. We propose a simple
method for solving both of these problems by allowing the model to take
Self-Notes. Unlike recent chain-of-thought or scratchpad approaches, the model
can deviate from the input context at any time to explicitly think and write
down its thoughts. This allows the model to perform reasoning on the fly as it
reads the context and even integrate previous reasoning steps, thus enhancing
its memory with useful information and enabling multi-step reasoning.
Experiments across a wide variety of tasks demonstrate that our method can
outperform chain-of-thought and scratchpad methods by taking Self-Notes that
interleave the input text.
