Algorithms and AI Part 2
Updated: Jul 3
Artificial Intelligence, Algorithms, and Deep Athletics – Part Deux
In my last post, I talked a bit about the differences between artificial intelligence (AI) and algorithmic approaches and how each can be used to create fitness programming. If you missed it, I suggest reading that post first, which you can find here.
Toward the end of the article, I mentioned Deep uses an algorithmic approach. Here’s what that means:
I mentioned previously that Deep uses an algorithmic approach, and that “algorithms are best thought of as a sequence of steps – including both logical ‘if/then’ steps and mathematical equations – that their creator rigorously defines.” So is that what the Deep algorithm is? In a word, yes! But getting here? Well, that’s been quite the journey.
The idea seems simple enough. Whether they’re aware of it or not, every coach has their own internal algorithm they use to program for their athletes. Duplicating that algorithm in software is a matter of getting them to explain how their algorithm works (i.e., how they program) and then implementing the specifics in code. But as always, the devil is in the details.
The challenge lies in the requirement that all of the steps, logic, and equations be “rigorously defined.” This is the biggest hurdle in translating what an expert has in their head into actionable code. It would be easy to conclude that it’s an impossible task, as there are too many subtleties the expert takes into account.
When we first started working on Deep, I became “the Aaron Whisperer.” We would sit down to talk about how he programmed for his athletes, and after he would explain it, I usually responded with, “That’s great, but we can’t code it like that.”
This went on in a cyclical pattern for at least two years - we would start on a new aspect of the programming, Aaron would explain how he would do it, and I would figure out what part could actually be coded. Then I basically took on the role of a small child, asking “why?” to every part of his approach that couldn’t be coded as described.
It all came down to rigorously defining the algorithm. Most of the time, Aaron would go away for a few days to think about why he made certain programming decisions and then we would meet again, repeating the process – over and over again – until we arrived at a solution that Aaron was good with and that I could implement.
Over those few years, our thinking about the algorithm and fitness programming, in general, began to shift and mature. Aaron naturally began to question every programming decision he made, trying to understand exactly why he was making each choice.
I started to recognize patterns and understand more of the deeper fundamentals that were governing the decision-making, translating that into code in a faster, more seamless fashion than in the early stages. Over time we unconsciously developed our own language to communicate about the algorithm, to the point we could have a very detailed conversation about a specific portion, using terms only the two of us really understood.
As this process continued and we started to discuss what we were working on with some trusted resources - coaches Aaron has known, worked with, and learned under for years - we discovered a lot of those coaches had great difficulty explaining why they did or didn’t like aspects of the programming Deep was generating. They definitely had an opinion, but when pressed for why exercise X seemed inappropriate on day Y, they couldn’t really give a reason. In other words, their understanding of their own internal algorithm was limited.
Now, this is not to say they’re wrong and Deep is correct. Far from it! The true power of the Deep algorithm is our understanding of how every individual workout is built. Or, for that matter, consecutive days of workouts or a full training cycle. We can explain the “why” to the selection of every exercise, every rep scheme, and every weight.
If you’ve been using Deep for any period of time, you may be thinking, “Ok, that’s interesting, but some of these exercises and rep schemes seem a bit random. What’s going on there?” Well, you’re 100% correct. There is a degree of randomness within Deep, and that’s by design. Most of us don’t want to do the same exercises and rep schemes over and over again - that’s a good way to lose interest and start jumping to new programs or, worse, stopping altogether out of boredom.
Love it or hate it, one of the inspiring and addicting aspects of CrossFit is that you aren’t constantly doing the same thing over and over. Sure, there are some benchmark workouts that you might repeat every so often to gauge progress, but for the most part, every day is a new adventure. That keeps most people excited and hungry for the next day and the next week, which is a great recipe for maintaining your motivation.
The elements of randomness built into Deep means you won’t get the same workouts on repeat. But since those random variations are overlaid on and work within a very well-defined foundation, they are able to reinforce the program’s overall goals while adding a little of the fun and spice that randomness brings to the table.
All of this gives Deep a solid foundation that we continue to build on. Whether that’s adjusting the volume and frequency of movements within a given training goal, adding new goals, or adjusting an athlete’s program based on a lingering injury, we can make these changes in a very precise fashion because of the depth to which the Deep algorithm is defined.
With all of that as background, in a future post, I’ll talk a bit about the strength & conditioning principles that form the foundation for Deep. Until then, get out there and get after it!