Как работает AutoAugment?
На днях Google представил AutoAugment – инструмент для оптимизации алгоритмов аугментации наборов данных при помощи машинного обучения с подкреплением. Как AutoML, только не для архитектуры нейронной сети, а для алгоритмов аугментации. Хайп в соцсетях по этому поводу не утихает. Но давайте разберемся, что именно сделали в Google и как это позволило улучшить результат распознавания объектов в CIFAR-10 на 0.65%. В этом нам поможет публикация авторов AutoAugment.
Итак, в научной статье про AutoAugment [1] в разделе 3 авторы пишут:
We formulate the problem of finding the best augmentation policy as a discrete search problem. In our search space, a policy consists of 5 sub-policies, each sub-policy consisting of two image operations to be applied in sequence, each operation is also associated with two hyperparameters: 1) the probability of applying the operation, and 2) the magnitude of the operation.
Т.е. авторы рассматривают задачу нахождения лучших методов аугментации как задачу дискретного поиска в некотором пространстве возможных методов. Значит AutoAugment не может создать принципиально новый метод аугментации, а может лишь найти лучшую комбинацию из некоторого множества уже известных и определенных методов. Причем количество операций в комбинации тоже заранее определено. Метод аугментации делится на 5 подметодов, каждый из которых состоит из двух последовательных операций. Каждой операции соответствует два гиперпараметра: вероятностью применения и степень/величина применения.
Из каких операций авторы формируют методы аугментации?
For generality, we considered all functions in PIL that accept an image as input and output an image. We additionally used two other promising augmentation techniques: Cutout [25] and SamplePairing [50]. The operations we searched over are ShearX/Y, TranslateX/Y, Rotate, AutoContrast, Invert, Equalize, Solarize, Posterize, Contrast, Color, Brightness, Sharpness, Cutout [25], Sample Pairing [50]. In total, we have 16 operations in our search space
Из предыдущей цитаты нам известно, что используется 16 операций во всем пространстве поиска. Это не очень много. Например, библиотека imgaug поддерживает около 50 трансформаций.
Сам алгоритм AutoAugment похож на AutoML. Используется рекуррентная нейронная сеть, которая генерирует методы аугментации (5 подметодов по две операции с гиперпараметрами). В качестве обратной связи для обучения с подкреплением используется точность дочерней нейронной сети (которая обучается распознавать объекты при помощи аугментированного набора данных). Вот как описывают алгоритм сами авторы:
The search algorithm has two components: a controller, which is a recurrent neural network, and the training algorithm, which is the Proximal Policy Optimization algorithm [52]. At each step, the controller predicts a decision produced by a softmax; the prediction is then fed into the next step as an embedding. In total the controller has 30 softmax predictions in order to predict 5 sub-policies, each with 2 operations, and each operation requiring an operation type, magnitude and probability. The controller is trained with a reward signal, which is how good the policy is in improving the generalization of a “child model” (a neural network trained as part of the search process). In our experiments, we set aside a validation set to measure the generalization of a child model. A child model is trained with augmented data generated by applying the 5 sub-policies on the training set (that does not contain the validation set). For each example in the mini-batch, one of the 5 sub-policies is chosen randomly to augment the image. The child model is then evaluated on the validation set to measure the accuracy, which is used as the reward signal to train the recurrent network controller
Обратим внимание, что для измерения точности используется валидационный набор данных.
Интуитивно, такая схема может работать лучше, чем ручной выбор методов аугментации, т.к. может более точно подобрать гиперпараметры трансформаций. Также, обучение с подкреплением для этой задачи скорее всего работает эффективней, чем простой перебор. Хотя авторы публикации отмечают следующее:
It might be possible to use a different discrete search algorithm such as genetic programming [21] or even random search [24] to improve the results in this paper.
Интересное замечание.
Выводы
AutoAugment – неплохой метод тюнинга методов аугментации наборов данных. AutoAugment не создает принципиально новые методы аугментации, а ищет лучшую комбинацию из некоторого множества определенных трансформаций. Причем каждая такая комбинация состоит из 5 подкомбинаций по две трансформации. Такой способ может работать лучше, чем ручной выбор методов аугментации, т.к. может более точно подобрать гиперпараметры трансформаций. Однако, AutoAugment не отменяет вдумчивого применения методов аугментации для вашей задачи, а является лишь методом их тюнинга. А что вы думаете про AutoAugment?
Ссылки: