The continual collection of user data by Internet-of-Things devices to train machine learning models in the cloud raises concerns about user privacy. Shifting the training phase from the cloud to IoT end- nodes could eliminate these concerns and allow model updates even in the presence of wireless communication constraints.
However, training requires storing data samples in non-volatile memory and retrieving them to compute a model update. Meeting this requirement is challenging because of the restricted sizes of volatile and non-volatile memories of IoT end-nodes, which typically lie in the range of hundreds of KBs and a few MBs respectively.
In addition, conventional training methods work with mini-batches drawn from datasets whose data are assumed to be independent and identically distributed (i.i.d.) and come from a fixed and known number of classes. For an on-device learning scenario, mini-batches are formed from data samples that belong to the same class and have some dependence on each other (i.e. frames extracted from a short video of an object), thus violating the i.i.d. assumption. The total number of data classes is also unknown.
The aim of this project is to investigate methods for using non-i.i.d. data not only for inference but also for training on memory-restricted edge devices.