О вариативности результатов обучения нейронных сетей
В предыдущей статье было приведено наблюдение, что при повторных запусках обучения нейронной сети с одними и теми же количествами нейронов скрытого слоя и одними и теми же размерами батчей (FNN с одним скрытым слоем, распознавание MNIST10) точность может отличаться на несколько десятых процента.
В данной статье делаем по 10 запусков обучения на каждой паре (количество нейронов скрытого слоя, размера батча) и сравниваем результаты.
Исходные параметры
Количества нейронов скрытого слоя: 128–512–1024–2048
Размеры батчей 16–32–64–128–256–512–1024–2048
Запуски обучения осуществляем обычным циклическим перебором.
Применяем tensorflow
Код стандартный, все параметры стандартные или по умолчанию.
в скрытом слое activation='relu', на выходном activation='softmax'
optimizer='adam'
loss='sparse_categorical_crossentropy'
metrics=['accuracy']
validation_split=0.2
Для данного эксперимента 40 эпох вполне достаточно, так как без dropout и уменьшения шага обучения дальше практически плато.
128 нейронов
test accuracy max = 98.23%
test accuracy min = 96.74%
max — min = 1.49%
256 нейронов
test accuracy max = 98.40%
test accuracy min = 96.74%
max — min = 1.66%
512 нейронов
test accuracy max = 98.41%
test accuracy min = 97.74%
max — min = 0.67%
1024 нейрона
test accuracy max = 98.60%
test accuracy min = 97.86%
max — min = 0.74%
Вариативность
Приведем график максимальной и минимальной вариативности.
test accuracy dev (max) = 1.66%
test accuracy dev (min) = 0.67%
Даже на примере данного короткого эксперимента оказалось, что при 10 повторениях запусков обучения с одними и теми же парами (количество нейронов скрытого слоя, размер батча) максимальная вариативность достигает 1,66%, а минимальная составляет 0,67%. Это означает, что значение точности может варьироваться не просто на несколько десятых процента, а легко превышает и 1%. И вероятно, что представленные данные не окончательны, и с увеличением количества повторов «вилка» может только увеличиваться, но никак не уменьшаться.
Вывод по вариативности
Вывод состоит в том, что для понимания влияния изменения параметров недостаточно единичных запусков, так как результат может измениться на 1–2% и без изменения параметров, и будет неизвестно, насколько повлияло изменение параметров и повлияло ли вообще. Для понимания влияния изменения параметров необходимо делать именно серию запусков и отслеживать ход всего «облака», а не единичных запусков.
Примечания
Если замечены грубые ошибки, которые могут существенно изменить результаты и выводы эксперимента, то прошу указать в комментариях. И, наоборот, если в целом рассуждения и ход эксперимента видятся корректными, то также прошу указать в комментариях.