I understand and sympathize with your thoughts; I'm not an ML or deep learning expert, but I do agree somewhat with Mark Cuban's assertion that software developers need to get familiar with the technology.

I'm currently enrolled in the Udacity Self-Driving Car Engineer Nanodegree, and while that program is focused on applying ML techniques to a specific problem domain, I can see where and how to apply what we've learned so far to other problem domains. Furthermore, I have in the past taken other MOOC courses (Ng's ML Class in 2011, and Udacity's CS373 in 2012) which taught more generalized approaches (more of the "standard" ML concepts in Ng's course, less so in the CS373 course - but I should note that even in the course I am taking currently, one or two of the lessons did discuss and talk about GD and other simple mathematical models for ML for classification, etc).

I recently completed (late) the "behavioral cloning" project, where we had to implement a CNN to drive a simulated car around a track. At first, it seemed like it would be a simple challenge - slap the NVIDIA model on the thing, gather a bunch of data for training/validation, and it should all "just work".

If only.

I struggled immensely with that one; when trying to explain the problem to "outsiders", I kept running into the issue (which I knew about) of how to describe the fact that this system wasn't something I could easily explain. I can't tell someone "oh change that rule and tweak that test and it does this" - because it doesn't. Its not that simple. I know this, but conveying it to someone else isn't easy. I've found that these systems, for their simplicity compared to, say, a mouse's brain - share the same kind of "black box" issues - I can't tell you why my car likes to veer at a certain point, then recover. I never drove like that with my training data, but for some reason, somehow - that's what it learned.

From a business perspective - this is where things will fall down. We (that is, those people in the deep learning ML domain space) can't explain how these models work. In some ways, they don't seem to be deterministic. In theory, post training, they should be - but in reality, short of perfect data being fed in - the data they get in their inputs is never exactly the same - their ability to generalize and fit this imperfect data, with a result that correct, within a level of error - is a strength, not a weakness. But try to convey this to someone where money or exact results are on the line...

Researchers can't even explain how the C.Elegans connectome works, and it is vastly simpler and completely mapped (interestingly, embodying the connectome as an ANN in a robot produces a machine that acts and can be trained like a C.Elegans - we don't how or why, though).

We humans expect determinism from our machines, because for so long that is how machines have operated; the same input produces the same output. Our machines now, though, can produce different outputs for the (seemingly) same input, and that worries us (perhaps rightfully so, especially in the case of a self-driving anything carrying passengers!). Interestingly, we give a "pass" to human beings doing these same tasks; that is, we don't expect perfect results from these non-deterministic neural networks we hire or employ. We don't worry (much - though we try with imperfect models) about how one person decides to do something one way or another, even if they can't explain themselves.

But we create machines that do that same - and it worries us. I sometimes wonder if that says more about us than about the machines...