@kevin
I actually like machine learning when applied to the right category of problem. The core requirement for machine learning to be useful is that a correct answer is very useful and the cost of an incorrect answer is low.
My go-to example of this is what I did in my PhD: data prefetching. If you prefetch the data you’re about to need, great, you don’t sit with the CPU idle when it could be doing useful work. If you prefetch the wrong thing (and have a sensible eviction policy) then it’s no worse than doing nothing. That’s pretty much the ideal shape for these things. The same applies to branch prediction: predict a branch correctly and you keep the pipeline busy, predict it incorrectly and you’ve wasted a bit of power. Branch prediction has always been some form of machine learning (with the exception of the static ‘forward branch not taken, backwards branch taken’ policies).
Beyond that, there are two other properties that make problems particularly good fits for machine learning. The first is that the problem changes rapidly but you have a bunch of examples. When I was at Microsoft, Project Silica was doing archival storage by using lasers to create tiny bubbles in glass. The exact shape of these varied depending on how they configured the lasers. It took a couple of weeks to write a new rules-based recogniser, whereas a machine-learning one could be trained with the samples from a test run. But, beyond that, they discovered that the shapes also changed slightly depending on the particular piece of glass that they used. After writing to a piece of glass, they knew what the written data was, so they could fine-tune the parameters of the model and etch the fine tuning information onto the side. You absolutely wouldn’t want to have to write a modified version of a reader program for every disk in your disk robot.
The property where machine learning is a good fit is where you don’t have the theory. People since Plato have been trying to describe how humans recognise objects. A few thousand years later, we still don’t have a set rules that you can apply to determine if an image contains a bicycle (bicycles are a really hard problem for computer vision because the rims of the wheels don’t look connected while it’s in motion and important parts of the shape are often occluded). But we do have a lot of pictures that contain bicycles and a lot more that don’t. The same applies to a bunch of other pattern-recognition tasks.
I think the last one is where you object but it’s not so much giving up on theory building, it’s admitting that theory building hasn’t worked yet. If you come up with a set of rules for defining the pattern that you’re looking for / wanting to generate (a lot of ML techniques are reversible, so these end up being the same problem) then you can often build a much more efficient rule-based system. But if decades trying have failed to build one, a ML system that works some of the time might be more useful than the idea of a rule-based system that would work better in the future.
My problem with the current ‘AI’ push is that very few of the problems that tools being marketed as ‘AI’ address fit into these categories. This is particularly true of LLMs. The overlap between problems where a bad answer has no consequences and the problems where the solution involves generating text is tiny.