Обучение скрытой марковской модели с помощью GMM, nan появляется после нескольких итераций в python - PullRequest
3 голосов
/ 31 мая 2019

Задача

Во время процесса обучения моих последовательных данных наблюдений с использованием 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.

Пожалуйста, пролите некоторый свет в этой области с любыми внешними источниками или ссылками.Изображения (данные о проблемах и обучении)

in Python enter image description here

Дополнительные вопросы

Примечание: основано напредоставить дополнительную информацию людям в комментариях. Я сделал эту колонку «Дополнительные вопросы» и отредактировал свой вопрос.

Например, Список содержит нормализованные данные обучения.

Всего элементов в списке = 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 данные по вождению и т. Д. .....

Требуется разъяснение, касающееся скрытой марковской модели с гауссовой смесью:

Сначала я объясню шаги, которым я следовал, иНачните мои разъяснения.

  1. Выбранные 3 скрытых состояния и 2 гауссовской смеси
  2. Инициализированы параметры: initial state(pi), trans_matrix(A), respons_gaussian(R), Mean (mu), Covariance (sigma) as diag covariance.
  3. Определите излучение_проблемость (B) с помощью вышеуказанных инициализированных параметров.
  4. , используя алгоритм Forward, я выясняю вероятность всех элементов в X_train и сохраняю ее в массиве.i.e arr = np.array([(P(X_train[0]|λ), (P(X_train[1]|λ), P(X_train[2]|λ),....... P(X_train[75]|λ))
  5. Теперь вычислим лог всех элементов внутри вышеуказанного массива и суммируем весь массив и определенную стоимость.i.e cost = log(arr).sum
  6. Обновите параметры HMM & Mixture с помощью forward/Backward algo & Gamma variable
  7. Повторите шаги

Теперь я начну свои точки смущения, пока я выполняюоперация обучения

Проблема, стоящая перед Когда я печатаю свою функцию стоимости, до 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?

  • Даст ли это хорошие результаты или это неправильно?

  • Какие еще способы заставить мою функцию стоимости сходиться?

  • Каким образом я могу улучшить обучение, основываясь на истории моей работы? Если я что-то упустил, пожалуйста, дайте мне знать.

...