Задача
Во время процесса обучения моих последовательных данных наблюдений с использованием HMM со смесями GMM функция стоимости постепенно уменьшается и после некоторых итераций становится равной NaN.
Справочная информация о моих данных
У меня 2 list say St & Rt
.Длина моего списка л en(St) = 200 & len(Rt) = 100
Each element in list is numpy array of size 100*5
.Каждый список содержит данные о вождении транспортного средства, которые выполняют некоторые маневры, каждый.
Я приложил изображение ниже моего набора данных (т. Е. St [0] единственный элемент в списке St, который представляет собой пустой массив изразмер 100 * 5), а также изображение проблемы
Я попытался натренировать свой первый список, содержащий список непрерывных данных, чтобы получить параметры модели.
Я даю 5 hidden states & 3 gaussian mixture as an input into model
.
Я вычислял log likelihood for every sequence i.e St[0], St1,.....
и, наконец, я суммирую, чтобы получить окончательное значение стоимости
Когда я начинаю тренировку, она идет хорошо в течение 5 - 8 итераций, затемизменения в NaN.
Вопрос
1) Какова будет причина появления NaN?
2) Есть ли какая-либо предварительная обработка в моих данных?установить перед предоставлением входных данных для модели ??
Я новичок в изучении моделирования HMM-GMM.
Пожалуйста, пролите некоторый свет в этой области с любыми внешними источниками или ссылками.Изображения (данные о проблемах и обучении)
Дополнительные вопросы
Примечание: основано напредоставить дополнительную информацию людям в комментариях. Я сделал эту колонку «Дополнительные вопросы» и отредактировал свой вопрос.
Например, Список содержит нормализованные данные обучения.
Всего элементов в списке = 75
Каждый элемент в списке представляет собой массив np.
Данные в списке - это данные о движении транспортного средства, которые непрерывны.
'X_train = [[100*4], [100*4], [100*4], [100*4].........................[100*4]]'
len(X_train) = 75
X_Train[0] = [100*4]
X_Train.columns=['Veh.Speed','Strg Angle', 'Lat_Acceleration', 'Long_Acceleration']
Примечание:
Каждые [100*4]
данные, полученные от транспортного средства в определенные интервалы времени.Скажем X_train[0] is 15 to 30 seconds driving study data
.X_train[1] may be 15 to 30 seconds
данные по вождению и т. Д. .....
Требуется разъяснение, касающееся скрытой марковской модели с гауссовой смесью:
Сначала я объясню шаги, которым я следовал, иНачните мои разъяснения.
- Выбранные 3 скрытых состояния и 2 гауссовской смеси
- Инициализированы параметры:
initial state(pi), trans_matrix(A), respons_gaussian(R), Mean (mu), Covariance (sigma) as diag covariance.
- Определите излучение_проблемость (B) с помощью вышеуказанных инициализированных параметров.
- , используя алгоритм Forward, я выясняю вероятность всех элементов в X_train и сохраняю ее в массиве.
i.e arr = np.array([(P(X_train[0]|λ), (P(X_train[1]|λ), P(X_train[2]|λ),....... P(X_train[75]|λ))
- Теперь вычислим лог всех элементов внутри вышеуказанного массива и суммируем весь массив и определенную стоимость.
i.e cost = log(arr).sum
- Обновите параметры HMM & Mixture с помощью
forward/Backward algo & Gamma variable
- Повторите шаги
Теперь я начну свои точки смущения, пока я выполняюоперация обучения
Проблема, стоящая перед Когда я печатаю свою функцию стоимости, до 200–300 итераций моя функция стоимости постепенно уменьшается, и она становится равной NAN около значения 8950.
То, что я пытался избежать NAN
Я считаю, что проблема будет в скорости обучения, поэтому я умножаю свою скорость обучения на every 75 iterations with 0.1
, чтобы я обновил свой новый learning rate which is smaller
.Но после того, как он достигнет этого значения около 8900 to 9000
это becomes NAN
еще раз
Мои вопросы
Почему он становится NAN через несколькоитерации
Сойдет ли значение функции стоимости к локальному / глобальному оптимуму, подобному градиентному спуску?
Поскольку я хочу выполнить Forward Algorithm
после тренировки с использованием X_test Data
, могу ли я записать обновленные параметры (pi, trans_mat, Gaussianm_mix matrix, mean, Covariance
) before NAN occurs and test the probability
?
Даст ли это хорошие результаты или это неправильно?
Какие еще способы заставить мою функцию стоимости сходиться?
Каким образом я могу улучшить обучение, основываясь на истории моей работы? Если я что-то упустил, пожалуйста, дайте мне знать.