It’s formalized statistics translated to code by community.
Regex and grep are just as “black box magic” to those who read a blog post on how to scan some text files.
ML is statistics on arrays, whereas Unix tools are stats for a Unix system.
It’s the same abstraction at its core, new implementation.
if (personInFrontOfCar) { halt(); }
The reason, of course, is the self-driving algorithms are all done with machine learning. The model is trained with a corpus of information and the result is a "black box." The programmer could not insert the above `if` statement if they wanted to, they could not modify the source code of the model as if it was normal business logic. Instead, they would have to re-train the model on new data.This is what people mean when they say it is a "black box." There is no source code to edit, only training data that outputs an as-is model. It's similar to getting binary blobs, for eg Linux drivers.
In contrast, I could fork regex if I wanted and add an `if` statement in the middle of it, and re-compile it. It is pure source code. Same with grep.
`if personInFrontOfCar:`
(using object detection, masking, 3D pose estimation, et/or cetera)
And actually defined policies on how to handle certain situations given that inference are possible, in the case specifically of self driving vehicles.
My assumptions come from when I'd asked someone at NeurIPS in 2019 about what reinforcement learning methods they use as they said "I don't think any self driving companies are using reinforcement learning, it is too risky". I don't mean to imply this is hard to find information either, reading a few papers would be all it takes to clear up the degree to which most self driving policies are "controllable" in the way you describe, or at least to what degree.
My main point is that I think it is the inferring of the environment (current state) rather than the chosen policy at each time step which is more of an error prone black box.
> Trying to solve the lack of progress in unifying computer architectures needs to be the next step in computer science. I just don't understand how or why it needs to be polluted by the unnecessary added hidden complexity of GCC. You're just shifting your assembly language generation into a black box and its magic output.
(I don't actually know how to write assembly, so pardon any technical faux pas. But the comparison seemed apt. ML as an intent->code compiler just seems like an inevitable step forward.)