Sequoia
Sequoia copied to clipboard
Add Support for Semi-Supervision
Need to add semi-supervision, probably as an "innate" property of all settings, unless specified otherwise.
What we want for sure is at least a way to control what fraction of the dataset should be labeled, or the number of labeled samples.
I have a vague idea of how this could be implemented: We could use some kind of wrapper around the Dataset, before or after the DataLoader is created, which would render it partially unlabeled. In the case of a gym environment, we could also add a Wrapper that gives back a given percentage of None rewards.
However, this wouldn't necessarily fit the "traditional semi-supervised setup" where (I think, but correct me if I'm wrong @oleksost ) you get distinct dataloaders for both the labeled data and the unlabeled data.
For what I have seen, two data loaders are practical a) for batch learning regimes to make sure that in each batch one has labeled and unlabeled samples and b) for epoch-based training, where you can 'cycle' over the smaller (labeled) loader during an epoch of the larger unlabeled loader. I don't think if in RL you need two data loaders, as it is more like online learning from a data stream (whether to use 2 distinct data loaders does not 'define' the semi-supervised setting as such).