ml5js / ml5-library

Friendly machine learning for the web! 🤖
https://ml5js.org
Other
6.5k stars 900 forks source link

Updating data for training a model of nn #1016

Closed KonVas closed 4 years ago

KonVas commented 4 years ago

Dear ml5 community,

I have made a system using p5js to create some data as a minimal interface running as a node js app and available to users via express server functionality.

So the system is working alright providing some inputs and outs for the nn training and doing regression using the data to train my model. My question is, while I don’t see any issue of doing so, what is the best way to add more data for training and run the training process again? Is there anything wrong with doing so? Are there any reliability issues that are known when working/training a nn for regression purposes?

Thanks

K

joeyklee commented 4 years ago

Hi @KonVas - unless you're just interested in changing the weights associated with your models, it seems like re-training your models are the only way to go. As far as I know, large orgs like NYT -- https://open.nytimes.com/how-the-new-york-times-is-experimenting-with-recommendation-algorithms-562f78624d26 -- have written that they retrain their recommendation algorithms every 15m or so based on user behavior.

If you're looking to scale up your approach, you might consider either a federated learning approach (https://federated.withgoogle.com/) where data stays on users devices and they would train models locally on their devices and send up only the models to the server or move your training to the server to handle all this (in which case, you would not be able to use ml5 since it does not run on the server).

Hope this helps.

bomanimc commented 4 years ago

Thanks @joeyklee for adding a detailed answer here! @KonVas I'm going to close this issue for now, but please let us know if you have any additional questions!

KonVas commented 4 years ago

Thanks for the tips. Very well noted. I will have to study meticulously all these before I can say which one of the ways should be convenient for me. But let me ask this while I am getting my head around with "weights", as far as I am doing the training so far, I have a client which generates x and y data inside a canvas of a p5js sketch, then these data are sent via sockets in the Node app that runs my ml5 part. While I am sending these ml5 is collecting for a bit like say 3 seconds so basically I am getting a snapshot of the control signals. With this data at hand I train the model and when this is done ml5 is generating the predictions using regression.

Now, what I would like to know is if is okay to interrupt the prediction process and add more data would be somehow a counterproductive approach.

Weights, sound also nice, but I have not implemented something like this in my code, I will give a look and see if I could use it.

KonVas commented 3 years ago

Thanks again @joeyklee - Coming back to this:

unless you're just interested in changing the weights associated with your models

I have looked on modifying the weights in my NN but I can't find it as a parameter in the corresponding help page. Where can I look on how to do this.