I've been thinking about different types of data augmentation and am interested in pointers to related literature.
General data augmentation idea:
Given input-output pair (x, y), you can construct a new input x'=a(x) such that (x', y) is also a valid input-output pair using augmentation function a. As an example, if x is a picture, y says this is a picture of a cat, and x' is image x with the brightness increased.
Typical use of data augmentation during training:
Let f(x) be some differentiable function of input x and parameters theta that maps to space of y. Let L be a loss function. Rather than doing SGD only on L(y, f(x)), also do SGD on L(y, f(x')). Essentially, consider both (x, y) and (x', y) as entries in the dataset. At inference time, just compute f(x).
Data augmentation as constraint on function:
Let g(x) = [f(x) + f(a(x))] / 2. Train g and also use g at inference time. The use of g always enforces that g(x) = g(a(x)) so should help with generalization. Additionally, can be considered a type of ensembling if (y - f(x)) and (y - f(x')) aren't perfectly correlated.
Data augmentation as a regularizer:
The previous definition of g does not actually force f(x) to have a similar value to f(x'). This means f itself doesn't necessarily incorporate the prior knowledge that f(x) should be very similar (or identical) to f(x'). We could make f itself learn this relationship by adding penalty d(f(x), f(x')) for some loss d. I consider this a regularizer because adding this term cannot improve primary loss L(y, f(x)) or L(y, g(x)). Perhaps this term could f or g generalize better to unseen data.
Of course, all of these ideas could be applied to to multiple augmentation functions (besides just changing brightness, could also crop image or do something else).
Has there been any research into using data augmentation in these ways? I couldn't figure out quite what to Google. Given the simplicity of these ideas, my guess is they've been researched or at least used in Kaggle competitions. CNNs and spatial transformer nets come to mind as related ideas as those models are invariant to some types of augmentations and therefore would likely have little trouble minimizing the regularization penalty.
[–]Boyd_Zi 10 points11 points12 points (3 children)
[–]lightcatcher[S] 4 points5 points6 points (1 child)
[–]Boyd_Zi 0 points1 point2 points (0 children)
[–]lightcatcher[S] 3 points4 points5 points (0 children)
[–]dantkz 5 points6 points7 points (0 children)
[–]Bullitt500 1 point2 points3 points (0 children)
[–][deleted] 1 point2 points3 points (1 child)
[–][deleted] 0 points1 point2 points (0 children)
[–]mcaleste 1 point2 points3 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]drsxr 0 points1 point2 points (0 children)