Advertisement

Basic question on NN/ML - how to get started?

Started by June 10, 2021 04:35 PM
6 comments, last by LorenzoGatti 3 years, 1 month ago

I'm aware at a high level how things like NNs and so on operate but I've never used or built one, and I have a situation I reckon it might be applicable, or at least fun.

I don't really know where to start. The concept “you give it inputs and desired outputs on some training data then use it on real inputs to get real outputs" is all good, but that implies inputs are basically a lot of variables with values in. But let's say you're developing a self-driving car as a nice example, your main input is a constantly changing video stream and your goal is “get to mom's house without dying”. Neither seems like nice input/output!

I run into this every time I've considered these sort of technologies and always ended up doing something else, but these days AI is in everything and there must be way more around in terms of available libraries and online resources than 5-10 years ago. So, how and where can I get some actual real-world application on this stuff? Right now I feel like I've done a course on theoretical software engineering, and want to write a program without knowing anything about IDEs, programming languages, stack overflow, etc ?

Divide and conquer….

I'd say having that picture of the street and getting to mom's house is a little too abstract.

How about training the NN on recognizing edges of the road? Also consider the stuff like routing - this isn't necessarily an ML solution (yet, or in full), but just a regular route optimisation.

You need to find some suitable inputs first, sure, but don't solve a big, complex scenario all in one go. (of course that depends on the usage, but for self-driving cars, there's more to it for sure)

Advertisement

It's more how do I get from the nice academic overview to… well, anything practical. I found this which is quite a nice worked example: https://realpython.com/python-ai-neural-network/

But can I get all this out of the box and basically say, “I have A inputs and B outputs, here are my N training data points, go train yourself?”

double inputs[N][A]

double outputs[N][B]

I can see libraries exist but no idea what's well-regarded, most widely used, easy to just pick up and play with, etc. I happen to be working in .Net .

There is already a post in which I describe this with code. You need to write a backpropagation algorithm in cpp.

while not understanding:
  try();
  if works():
    understanding = True
  else:
    analyse_failure()

d000hg said:

But can I get all this out of the box and basically say, “I have A inputs and B outputs, here are my N training data points, go train yourself?”

No. If it were that easy, there wouldn't need to be millions of dollars of investment and thousands of people working in this area. Even when the inputs and outputs are very well understood, there are still various hyperparameters that typically need experimenting with in order to get the system to learn effectively, to avoid underfitting and overfitting, and so on.

Talking about self-driving cars and the like is hoping you can jump right in at the deep end, where there are complex computer vision problems long before you even get to the point of mapping input features to output features. Similarly getting from A to B in a self-driving car involves other AI aspects like state-space search (aka pathfinding or navigation, in this context), controlling the vehicle involves complex control systems, etc.

If you scale back your ambition a bit then maybe you could make a start with Unity's ML agents - https://unity.com/products/machine-learning-agents

That gives you a framework for experimentation in the context of a 3D world, and in C# which hopefully you're comfortable with.

Advertisement

You should start with a meaningful and reasonably easy problem: for example, instead of a street legal self-driving car with video input, a fun AI opponent for a 2D racing game with perfect information.
Only a genuine task will allow you to actually apply what you have studied, recognizing applicable models and techniques; when you have your general model structure, your features, your outputs, “go train yourself” is an iteration of your model development, not a vague general mechanism.

Omae Wa Mou Shindeiru

This topic is closed to new replies.

Advertisement