I remember reading an article back in the 80s on an early application of machine learning.
There was concern that some tube station platforms were becoming over-crowded and passengers could be accidentally pushed onto the line. There was research into an automated method of limiting access to the platform when it was 'too full'.
Photographs of platforms in various states from 'empty' to 'full' to 'too full' were shown to a 'learning' program and each photograph given a corresponding status and which status would trigger limiting access to the platform.
The programming was in the 'learning' and nothing to do with station platforms. The photos could have been of anything.
Machine Learning: To the extent that this is a discussion of AI, Mosaix and Wayne are getting at the root of that issue. "Pattern matching" is the problem. "Machine learning" or "Artificial Intelligence" is one general method of solving the problem, the other being algorithmic solution.
If I as a programmer solve a problem algorithmically, I am writing a fixed set of programming statements--if/then decisions which drive fixed operations based on specific parameters--to determine what the program will do. IF it walks like a duck AND IF it quacks like a duck AND IF it swims like a duck, THEN it is a duck. You will see that algorithm represented right there in the computer code, and it never changes. Maybe my algorithm is very sophisticated in the way it assesses whether or not the thing walks like a duck. Maybe I determine whether it produces seismic impacts that fall within a particular range of frequency, intensity, and wave pattern, and I have programmed functions to measure each of these. Maybe I include a function to assess the thermal outline of a duck in profile, thereby identifying its feet, and then measure the pattern of vertical and horizontal cycling of its feet, comparing that to programmed norms, measuring standard deviations from the norms. I also have a separate function to measure the shape of its gait if I happen to catch it in a frontal or quartering aspect on camera. I have a formula in my code to calculate Duck or Not Duck based on each of these assessment functions, but the process, what parameters are measured, how they are used, what calculations are applied, is right there in the code for anyone to see, and I as the programmer control it.
If I'm going to solve the problem with ML--for instance, using a simple perceptron neural network--I'm going to write code that has nothing to do with ducks at all. There will be nothing in my program about duck gait frequencies, nothing in my program about quack timber or even color. What I'm going to write is a program which does something like this: for each picture given to the program, take the color code of each pixel and multiply that color code by a random value. Add all the resulting products together to produce a sum. Then do the same thing again, but this time, use a different set of random values. Again, add all the products to make a sum. Do this fifteen-hundred times, each with a different set of random weights, so that I have fifteen-hundred sums. Now, take each of those fifteen hundred sums, multiply each by a random weight, and add all the resulting products together to get a sum. Then do it again, with a different set of random weights. Do this two thousand times, to produce two thousand sums, which are randomly generated from the original fifteen hundred sums, which were randomly generated from the color codes of the pixels in the original photograph. Keep doing this for several more rounds. Finally, take each of the sums from my most recent round, multiply each by a random weight, and add them all together into a single sum. No ducks anywhere in here, obviously, or any measurement of duck-related parameters, nor any programming at all specific to ducks. Now, declare: if this final sum is 1, the picture was a picture of a duck. If the final sum was 0, the picture was not a picture of a duck. Feed it a picture of a duck. If the final answer is not 1, do some calculus to figure out how to adjust the weights to the final answer comes out to 1. Feed it another picture, not of a duck. If the final answer is not 0, do some calculus to get adjustments for all the weights so that it will be a 0. Feed it more known pictures, a couple million, adjusting the weights each time.
Keep adjusting the weights, little by little, with each training input, and eventually your process of multiplying pixels by weights, taking sums, multiplying those by weights, taking sums, etc. etc., will start to produce a 1 if the picture was a duck, 0 if it was not. I'm leaving out some steps, some regularization functions and optimizations, but this is basically what's happening in a neural net program. It's just a massive pile of weighted sums, a massive pile of dot products (which, incidentally, is why the hardware that can "calculate" a neural net program is very similar to the hardware in your graphics card), that eventually gets tweaked until it produces the right answer most of the time. You can't say why it produces the right answer. You can't tell what it's looking for or what it's seeing. All of that is mysteriously emergent from that particular set of millions upon millions of originally random but repeatedly tweaked weights. You don't know how any given change is going to affect it. You can't go in and tweak one or more of the weights manually and produce a predictable result. All you can do is experiment with it, and keep retraining it, until it works well enough for your application.
The application of this to targeting is that a well-trained ML process will be much better at recognizing targets reliably than an algorithmic solution. For an algorithm, you would have to program a contingency for every different way the potential target could be facing, every different color it might have, how close to or far from the camera it might be, how it might be moving. Oh, enemy guy might be wearing a red hat? Gotta have a branch of the logic that accounts for red hats which otherwise disrupt the shape of a human body. It's impossible, which is why there are no good algorithmic solutions to recognizing objects in imagery. There is nothing consistent even about the shape of a human body, or a duck, or a sailboat, when seen from various angles, much less anything consistent about its color or its movements. But with ML... camouflage? Just start feeding it training data of camouflaged people and tweaking the big-picture aspects of your neural net (its dimensions, its activation functions) until you start to see good results. You don't need a program specialized in image recognition, nor programmers to write it. You just need a generic perceptron well trained. Heck, you can get one online, open source. The downside of ML is that if it doesn't work quite right, fixing it is not a logical process. It can be difficult to figure out how to tweak it to make it work better, because there's no inherent relationship between the program itself and the problem it's trying to solve. Not a big problem if you're a terrorist just looking for a cheap way to kill anyone you can kill within camera range.
You can run it aboard the weapon itself, if it's big enough for a decent graphics card and power supply and whatnot, but much easier is to network the munition to the computer. As long as you're not worried about hardening it against comms jamming, your COTS LTE signal or even a 2.4 GHz signal will be sufficient to carry the data traffic back and forth, and you can run the software on a gaming laptop at your launch position. And that's the whole point I was making before: machine learning software and consumer drone tech make something that was previously very technical (CBU-105) now very easy, especially, again, for an essentially terrorist combatant who doesn't care about preventing civilian casualties or hardening his gear for a great powers competition. If all you're looking to do is get a drone into the combat area to kill anyone--man, woman, or child--you can find, then a simple payload-bearing drone with a camera linked to an AI program and a grenade on its belly will do. Extremely cheap and easy to replicate.
A dangerous world: I have faith that the square of the length of the hypotenuse is equal to the sum of the squares of the lengths of the two remaining sides of a right triangle. It was proved, and though I haven't done the work to reprove it lately, I feel I can depend on it to remain true as I go about, say, designing a bookshelf. If I have religious faith, it is of the same definition. I have assessed something to be true or likely, and just because I'm not assessing it
right now, not redoing that work, doesn't mean it has gotten less likely. Based on the fact that the, shall we say, distribution of violence in human life hasn't changed in thousands of years, nor has human capacity for evil (nor human capacity for good), I have every faith that these will continue unchanged for the foreseeable future. In that case, what was true a thousand years ago and is true today will be true tomorrow: that might doesn't make right, but might makes reality. The physically strong people will determine how dangerous your world is. If the people who value freedom and peace are the most deadly and dangerous, the strongest in physical contest, then your world will be a world of freedom and peace. If the fearful, power-hungry, and other abusive sorts of the human species are most powerful physically, then they will rule, and the world will be one of obedience and death.