Гауссовские процессы: как использовать GPML для многомерного вывода

13

Есть ли способ выполнить Гауссовскую регрессию процесса на многомерном выходе (возможно, коррелированном) с использованием GPML ?

В демонстрационном скрипте я мог найти только 1D пример.

Аналогичный вопрос о том , что CV тали случай многомерного ввода.


Я просмотрел их книгу, чтобы узнать, смогу ли я найти что-нибудь. В 9-й главе этой книги (раздел 9.1) они упомянули этот случай нескольких выходов. Они упомянули пару способов справиться с этим, один - использование коррелированного шумового процесса и два - кокринг (предварительно связанный).

Я до сих пор не знаю, как я могу внедрить любую из этих идей в структуру GPML.


Кроме того, есть ли другие библиотеки / платформы GP, которые поддерживают многомерный вывод?

steadyfish
источник
«Прогнозирование структурированных данных» говорит об использовании SVM в случае одного класса (оценка плотности ядра) в объединенных ядрах между входом и выходом. Учитывая, что они оба являются машинами ядра, этот подход должен работать. Я нашел одну статью, в которой упоминалось нечто подобное. datamin.ubbcluj.ro/tr/2011/sogp.pdf мои попытки подбора алгоритмов структурированного обучения были довольно плачевными, поэтому я не уверен, как это складывается.
Джессика Коллинз

Ответы:

7

Я полагаю, что процессы с двумя гауссовскими характеристиками - именно то, что вы ищете. Я не могу описать модель лучше, чем реферат самой статьи, поэтому я просто скопирую и вставлю ее:

Опишем двойные гауссовские процессы (TGP) 1универсальный метод структурированного прогнозирования, который использует априорные значения Гауссова процесса (GP) [2] как для ковариат, так и для ответов, как многомерных, так и оценивает выходные данные, сводя к минимуму расхождение Кульбака-Лейблера между двумя GP, моделируемое как нормальные распределения по наборам конечных индексов обучения и примеры тестирования, подчеркивающие цель, чтобы схожие исходные данные давали схожие восприятия, и это должно в среднем сохраняться между их предельными распределениями. TGP фиксирует не только взаимозависимости между ковариатами, как в типичном GP, но также и между ответами, поэтому учитываются корреляции между входами и выходами. TGP является примером, с многообещающими результатами, для реконструкции трехмерных поз человека из монокулярных и многокамерных видеопоследовательностей в недавно представленном тесте HumanEva, где мы достигаем погрешность в 5 см в среднем на 3d маркер для моделей, обученных совместно, используя данные от нескольких человек и нескольких действий. Этот метод быстрый и автоматический: он не требует ручной обработки исходной позы, параметров калибровки камеры или наличия трехмерной модели тела, связанной с людьми, используемой для обучения или тестирования.

Авторы щедро предоставили код и образцы данных для начала работы.

Яншуай Цао
источник
Добро пожаловать на сайт, @caoy. Не могли бы вы предоставить немного информации о том, что по этой ссылке? Таким образом, читатели могут знать, стоит ли их преследовать, и это будет означать, что здесь есть что-то ценное в случае будущего linkrot.
gung - Восстановить Монику
@ Gung, спасибо, надеюсь, что аннотация делает свою работу.
Яншуай Цао
@caoy ... Не могли бы вы рассказать подробнее о прогнозируемом среднем значении распределения и дисперсии выходных данных в процессах с двумя гауссовскими процессами?
Сандипан Кармакар
3

Короткий ответ Регрессия для многомерного вывода немного сложна, и в моем текущем уровне знаний, непосредственно не включенном в панель инструментов GPML.

Длинный ответ Вы можете разбить вашу проблему многомерной выходной регрессии на 3 части.

  1. Выходы не связаны друг с другом - просто регрессируйте результаты по отдельности, как демонстрационный скрипт для 1d случая.
  2. Выходы связаны между собой, но не знают отношения между ними. Вы бы хотели узнать о внутренних отношениях между выходами. Как упоминается в книге, coKriging - хороший способ начать. Существуют программы, отличные от GPML, которые могут позволить вам выполнять кокринг, например. ooDace
  3. Выходы взаимосвязаны, и вы знаете связь между ними - выполните регулярное кокригирование, но вы можете применить жесткие ограничения между выходами, либо применив ограничения в оптимизаторе (при этом вы минимизируете предельную вероятность журнала), как сказано в Hall & Huang 2001 или применять отношения в предыдущей функции, как сказано в Constantinescu & Anitescu 2013 .

Я надеюсь, что это помогает :)

Анкит Чиплункар
источник
2

Это модуль от scikit-learn, который работал для меня на удивление хорошо:

http://scikit-learn.org/stable/auto_examples/gaussian_process/plot_gp_regression.html

# Instanciate a Gaussian Process model
gp = GaussianProcess(corr='cubic', theta0=1e-2, thetaL=1e-4, thetaU=1e-1,
                     random_start=100)

# Fit to data using Maximum Likelihood Estimation of the parameters
gp.fit(X, y)

# Make the prediction on the meshed x-axis (ask for MSE as well)
y_pred, MSE = gp.predict(x, eval_MSE=True)
sigma = np.sqrt(MSE)
denfromufa
источник
1

Я искал многопотоковые гауссовские процессы и нашел много способов, как с ними работать, например, метод свертки, метод моделирования смешанных эффектов и последний из них - процессы с двумя гауссовыми процессами.

У меня есть сомнения в концепции двойных гауссовских процессов (TGP). Кто-нибудь может мне помочь с этим?

y^p(y|y)(μ,σ2)σ2yy^y

Сандипан Кармакар
источник