How might we train an ANN to explain its reasoning? One approach would be to learn programs: have the ANN write programs which classify images. Then we have a classifier (run the program) and an explanation of how it works (read the program). We don't have an explanation of how the ANN chose the program, but again, we didn't train it to tell us. In principle, we could keep adding meta-layers; in practice, the search space and evaluation time would explode :)