Улучшение классификации MNIST с использованием обученной PSO нейронной сети - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь сравнить оптимизацию нейронной сети с помощью обратного распространения и оптимизации Particle Swarm (PSO). Я хочу использовать относительно большие наборы данных, поэтому я использую полностью подключенную сеть для классификации набора данных MNIST.

Я использую https://stats.stackexchange.com/questions/376312/mnist-digit-recognition-what-is-the-best-we-can-get-with-a-fully-connected-nn-o для реализации обратного распространения.

Моя реализация PSO является адаптацией https://github.com/kuhess/pso-ann.

Используя обратное распространение, я достиг 90% точности благодаря структурированной сети [784, 15, 10], т.е. одному скрытому слою с 15 узлами. На данный момент лучшее, что я сделал с PSO, оптимизировав эту архитектуру, - это точность около 30%.

Мой вопрос: Как я могу приблизить производительность Backpropagation с помощью PSO?

Что я пробовал:

  • Инициализация: Truncnorm, He et al. метод (опять же, как уже упоминалось https://stats.stackexchange.com/questions/376312/mnist-digit-recognition-what-is-the-best-we-can-get-with-a-fully-connected-nn-o)
  • Активация: сигмовидная, функции ReLU
  • Инерция: настройка в диапазоне от 0,4 ~ до 1,5 ~
  • Потеря: MSE и функции кросс-энтропийной потери
  • Personal_best weight (c1): настройка между 1 ~ и 3 ~ (c1 + c2 ≈ 4)
  • Global_best weight (c2): настройка между 1 ~ и 3 ~ (опять же, c1 + c2 ≈ 4)
  • Итерации: я пробежал максимум 300 итераций, это занимает около получаса на моем процессоре и должно хватить, я думаю,

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

Видеть как Реализация обратного распространения может легко получить точность 85 +%, используя эту простую структуру сети, мы знаем, что можно получить гораздо более высокую точность, но сейчас я застрял в настройке этих параметров.

Итак,

  • Пробую ли я правильные вещи?
  • Нужно ли добавлять дополнительные параметры для постепенного изменения инерции во время тренировки?
  • Как настроить параметры PSO для приблизительной производительности Backpropagation?
...