  We propose NeuralThink, a novel deep thinking architecture that can
efficiently and consistently extrapolate, i.e., learn algorithms from smaller
problems (in terms of observation size) and execute those algorithms in large
problems. Contrary to previous deep thinking architectures, NeuralThink can be
naturally applied in both same-size problems, where the input and output sizes
are the same, and in different-size problems, where the size of the input and
output differ. To allow for this versatility, we design NeuralThink with three
main components: a recurrent module, that iteratively processes input
information at different scales, a processing module, responsible for
aggregating the previously processed information, and a curriculum-based
training scheme, that improves the extrapolation performance of the method. To
evaluate our method we introduce a set of novel different-size tasks and we
show that NeuralThink consistently outperforms the prior state-of-the-art deep
thinking approaches in extrapolating to larger problems, considering smaller
training problems and requiring less parameters than other approaches.
