О вариативности результатов обучения нейронных сетей

В предыдущей статье было приведено наблюдение, что при повторных запусках обучения нейронной сети с одними и теми же количествами нейронов скрытого слоя и одними и теми же размерами батчей (FNN с одним скрытым слоем, распознавание MNIST10) точность может отличаться на несколько десятых процента.

5ac2d9fff6a1c8980a8ca2c1cd5a057e.png

В данной статье делаем по 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 нейронов

1c4328295f2c11653be111d6d5f133eb.png

test accuracy max = 98.23%
test accuracy min = 96.74%
max — min = 1.49%

256 нейронов

62410c5609ee0c6f7fc0efcf2de20047.png

test accuracy max = 98.40%
test accuracy min = 96.74%
max — min = 1.66%

512 нейронов

58f43ccc5b50fb3e30aa95dbc77df365.png

test accuracy max = 98.41%
test accuracy min = 97.74%
max — min = 0.67%

1024 нейрона

9b50285cf8f7d4be9b388f3ad1024162.png

test accuracy max = 98.60%
test accuracy min = 97.86%
max — min = 0.74%

Вариативность

Приведем график максимальной и минимальной вариативности.

1bf1646490711481ac88b591d571ad49.png

test accuracy dev (max) = 1.66%
test accuracy dev (min) = 0.67%

Даже на примере данного короткого эксперимента оказалось, что при 10 повторениях запусков обучения с одними и теми же парами (количество нейронов скрытого слоя, размер батча) максимальная вариативность достигает 1,66%, а минимальная составляет 0,67%. Это означает, что значение точности может варьироваться не просто на несколько десятых процента, а легко превышает и 1%. И вероятно, что представленные данные не окончательны, и с увеличением количества повторов «вилка» может только увеличиваться, но никак не уменьшаться.

Вывод по вариативности

Вывод состоит в том, что для понимания влияния изменения параметров недостаточно единичных запусков, так как результат может измениться на 1–2% и без изменения параметров, и будет неизвестно, насколько повлияло изменение параметров и повлияло ли вообще. Для понимания влияния изменения параметров необходимо делать именно серию запусков и отслеживать ход всего «облака», а не единичных запусков.

Примечания

Если замечены грубые ошибки, которые могут существенно изменить результаты и выводы эксперимента, то прошу указать в комментариях. И, наоборот, если в целом рассуждения и ход эксперимента видятся корректными, то также прошу указать в комментариях.

© Habrahabr.ru