Different Ways to Learn
This is one of those posts that is mostly intuition on the main points, and since I already find myself laughing at some of my early intuitions concerning AI after my first AI course please take this with a grain of salt.
I’d like to put forth that there are two ways to learn: intuitively and formally. I’m sure it’s a continuum, but for the sake of argument, let’s use those two ends of the spectrum as buckets. To understand what I mean by this, by way of example, let me assert that we learn whatever language we speak both intuitively and formally. As a child we learn language intuitively. When my son was five years old, however limited his vocabulary and linguistic sophistication might have been, it’s not unreasonable to say he was fluent in basic English. He had learned to speak intuitively: while he had a solid command of the language, if you asked him to explain what a noun, a verb, a subject or an object is, and how they relate to one another, he wouldn’t have the slightest clue.
Now, however, he’s learning English formally, in that he’s learning grammar. He’s learning the system behind the thing he already understood intuitively. That formal, structural knowledge will ultimately enable him to actively refine and expand his intuitive knowledge and use it in ways that would not have been possible otherwise.
I mention all this because of the experience I’ve been having working with Keras in the Deep Learning Specialization that I’ve almost completed. The courses include no formal tutorial worthy of the name, and yet several of the final programming assignments require me to build the models we’ve been studying using Keras. For sure there are links to most of the relevant Keras documentation in the assignments themselves. The problem is, it seems there are multiple fundamentally different ways to assemble any given Keras model, and the method used in the documentation examples is almost always quite different from what will work in the framework they’ve set up for the programming assignments.
Thus, in order to be able to get these assignments done on time, I’ve had to find the syntactic patterns that conform to both the assignment framework and the particular model we’re building, and basically just use that pattern over and over, without finding direct support for it in the Keras documentation or (more importantly) really understanding, conceptually, how everything fits together. To the extent I understand Keras at all, it’s almost entirely intuitive at this point. For sure I can recognize some of the formal elements I’ve seen in other languages and frameworks, but that’s all inference at this point.
I think this method of learning plays a significant part of learning any programming language, especially outside of academic settings. But I’ve never had to rely on it nearly to the extent that I have had to for this specialization. I fully expect that over the next few months as I ratchet up my checkers project, I’ll be diving deeper into both Keras and TensorFlow which it’s built on, and using more formal tutorials to understand how everything fits together. I’m really interested to see how whatever intuitive knowledge I might have will influence that process.