Open vshokorov opened 2 years ago
пунктирные линии - без взвешивания ансамбля
Картинка для худших объектов:
margin_aug_boost: марджин считается по всем аугментациям изображения margin_boost: 'train.py-CIFAR10_ResNet9_BN_logits/ResNet9_BN_margin_boost_scale_by_logit_CIFAR10_noDA', 'train.py-CIFAR10_ResNet9_BN_logits/ResNet9_BN_no_mean_margin_boost_CIFAR10_noDA', 'train.py-CIFAR10_ResNet9_BN_logits/ResNet9_BN_reverse_margin_boost_CIFAR10_noDA', 'train.py-CIFAR10_ResNet9_BN_logits/ResNet9_BN_reverse_no_mean_margin_boost_CIFAR10_noDA',
1) base ens - бейзлайн, стандратный ансамбль 2) margin_boost - следующий марджин считается по предыдущей модели 3) mean_cumgap - следующий марджин усредняется по всем предыдущим моделям 4) cumgap - то же что и mean_cumgap, но без усреднения.
Также прикрепляю графики для всего ансамбля (для k моделей в ансамбле).
Итог:
идея там такая, у тебя есть множество точек (каждая точка это объект какой-то) х - марджин на первой модели, у - марджин на второй. и на графиках плотность этих точек
идейно: сеть вместо того, чтобы что-то понимать более умное она может просто увеличить логиты в несколько раз тем самым увеличить марджин в n раз. Т.е. сеть может учить не лучший способ разделения объектов а просто в какое-то число раз увеличивать логиты объектов в соответствии с их гэпом.
Обучалось 5 ансамблей каждого типа, в каждом ансамбле 15 моделей.
out = logits - logits[np.arange(logits.shape[0]), target].reshape(-1, 1)
out[np.arange(out.shape[0]), target] -= mean_margin
return out.mean(1, keepdims=True) - out
Общие графики:
Click this to collapse/fold.
Графики для последнего ансамбля:
Click this to collapse/fold.
Общие графики:
Click this to collapse/fold.
Графики для последнего ансамбля:
Click this to collapse/fold.
Общие графики:
Click this to collapse/fold.
Графики для последнего ансамбля:
Click this to collapse/fold.
Общие графики:
Click this to collapse/fold.
Графики для последнего ансамбля:
Click this to collapse/fold.
Общие графики:
Click this to collapse/fold.
Графики для последнего ансамбля:
Click this to collapse/fold.
Итог: Точность на трейне повышается на 2% (97->99), но это не приводит к улучшению точности на тесте. Наша гипотеза заключалась в том, что у итогового марджина матожидание не уменьшится, дисперсия не увеличится. Но матожидание и дисперсия уменьшились.
Вторая модель занизила марджин на "уверенных" объектах, а "неуверенные" не трогала. Тем самым сделала более узкой гистограмму.
Пусть $g^k_i$ - значение гэпа при обучении $k$-ой модели ансамбля у $i$-го объекта выборки. $m_i$ - значение марджина в логитах $k$-ой модели y $i$-го объекта выборки.
ГРАФИКИ С АУГМ Сделал 2 типа ансамбля: