Концептуальные вопросы обучения нейронной сети с оптимизацией роя частиц
У меня есть 4 входных и 3 выходных нейронных сети, обученных с помощью оптимизации роя частиц (PSO) со среднеквадратической ошибкой (MSE) в качестве функции пригодности с использованием базы данных IRIS, предоставленной MATLAB. Фитнес-функция оценивается 50 раз. Эксперимент заключается в классификации функций. У меня есть несколько сомнений
(1) Является ли PSO итераций / поколений = количество раз, когда фитнес-функция оценивается?
(2) Во многих статьях Я видел, как тренировочная кривая MSE против поколений строилась на графике. На рисунке график (а) слева представляет собой модель, аналогичную NN. Это 4 входных-0 скрытых когнитивных карт выходного слоя-3. И график (b) - это NN, обученный тем же PSO. Целью данной работы было показать эффективность новой модели в (а) над NN.
Но они упоминают, что эксперимент проводится, скажем, Cycles = 100 раз с Generations =300. В этом случае Кривая обучения для (a) и (b) должна была быть MSE против циклов, а не MSE против PSO поколений? Например, цикл 1: итерация PSO 1-50 -> результат (весовые коэффициенты_1, отклонение_1, MSE_1, коэффициент классификации_1). Цикл 2: итерация PSO 1-50 -> Результат (весовые коэффициенты_2, смещение_2, MSE_2, коэффициент классификации_2) и т. Д. Для 100 циклов. Почему оси X в (a), (b) отличаются и что они означают?
(3) И наконец, при каждом независимом запуске программы (запуск файла m несколько раз независимо через консоль) я никогда не получаю одинаковую скорость классификации (CR) или одинаковый набор весов. Конкретно, когда я впервые запускаю программу, я получаю значения W (веса) и CR =100%. Когда я снова запускаю программу с кодом Matlab, я могу получить CR = 50% и другой набор весов!! Как показано ниже для примера,
%Run1 (PSO generaions 1-50)
>>PSO_NN.m
Correlation =
0
Classification rate = 25
FinalWeightsBias =
-0.1156 0.2487 2.2868 0.4460 0.3013 2.5761
%Run2 (PSO generaions 1-50)
>>PSO_NN.m
Correlation =
1
Classification rate = 100
%Run3 (PSO generaions 1-50)
>>PSO_NN.m
Correlation =
-0.1260
Classification rate = 37.5
FinalWeightsBias =
-0.1726 0.3468 0.6298 -0.0373 0.2954 -0.3254
Какой должен быть правильный метод? Итак, какой набор веса мне, наконец, взять и как мне сказать, что сеть была обучена? Я знаю, что эволюционные алгоритмы из-за их случайности никогда не дадут одинакового ответа, но тогда как мне убедиться, что сеть обучена? Должен быть обязан для разъяснения.
1 ответ
- Как и в большинстве методов машинного обучения, число итераций в PSO - это количество обновлений решения. В случае PSO это количество раундов обновления для всех частиц. Функция стоимости здесь оценивается после обновления каждой частицы, так что это больше, чем количество итераций. Примерно, (# вызовы функций стоимости) = (# итераций) * (# частиц).
- Графики здесь сравнивают различные классификаторы, нечеткие когнитивные карты для графа (а) и нейронную сеть для графа (б). Таким образом, ось X отображает соответствующие меры обучения итераций для каждой.
- Каждый раз, когда вы запускаете свой NN, вы инициализируете его различными случайными значениями, поэтому результаты никогда не будут одинаковыми. Тот факт, что результаты сильно различаются от одного прогона к следующему, означает, что у вас есть проблема сходимости. Первое, что нужно сделать в этом случае, это попытаться запустить больше итераций. В целом конвергенция - довольно сложная проблема, и решения сильно различаются в зависимости от приложений (и внимательно прочитайте ответ и комментарии, которые Исаак дал вам по вашему другому вопросу). Если ваша проблема сохраняется после увеличения количества итераций, вы можете опубликовать ее как новый вопрос, предоставив образец ваших данных и фактический код, который вы используете для построения и обучения сети.