Сравнение программного обеспечения гауссовского процесса - Comparison of Gaussian process software

Это сравнение программного обеспечения для статистического анализа, которое позволяет делать выводы с Гауссовские процессы часто используя приближения.

Эта статья написана с точки зрения Байесовская статистика, который может использовать терминологию, отличную от той, которая обычно используется в кригинг. В следующем разделе следует пояснить математическое / вычислительное значение информации, представленной в таблице, независимо от контекстной терминологии.

Описание колонн

В этом разделе подробно описаны значения столбцов в таблице ниже.

Решатели

Эти столбцы посвящены алгоритмам, используемым для решения линейная система определяется прежний ковариационная матрица, то есть матрица, построенная на основе вычисления ядра.

  • Точный: ли общий реализованы точные алгоритмы. Эти алгоритмы обычно подходят только для нескольких тысяч точек данных.
  • Специализированный: специализированный точный реализованы алгоритмы для конкретных классов задач. Поддерживаемые специализированные алгоритмы могут быть обозначены как:
    • Кронекер: алгоритмы разделения ядер на данных сетки.[1]
    • Теплиц: алгоритмы для стационарных ядер на равномерно распределенных данных.[2]
    • Семисеп.: алгоритмы для полусепарабельных ковариационных матриц.[3]
    • Разреженный: алгоритмы оптимизированы для редкий ковариационные матрицы.
    • Блокировать: алгоритмы оптимизированы для диагональ блока ковариационные матрицы.
  • Приблизительно: ли общий или специализированный реализованы приближенные алгоритмы. Поддерживаемые приблизительные алгоритмы могут быть обозначены как:
    • Разреженный: алгоритмы, основанные на выборе набора «наводящих точек» во входном пространстве.[4]
    • Иерархический: алгоритмы, приближающие ковариационную матрицу иерархическая матрица.[5]

Вход

Эти столбцы посвящены точкам, в которых оценивается гауссовский процесс, т.е. если процесс .

  • ND: поддерживается ли многомерный ввод. Если это так, многомерный вывод всегда возможен путем добавления измерения к входу, даже без прямой поддержки.
  • Ненастоящий: произвольно ли не-настоящий поддерживается ввод (например, текст или сложные числа ).

Выход

Эти столбцы содержат информацию о значениях, полученных в процессе, и о том, как они связаны с данными, используемыми при подборе.

  • Вероятность: произвольно ли не-Гауссовский вероятность поддерживаются.
  • Ошибки: поддерживаются ли произвольные неоднородные коррелированные ошибки на точках данных для гауссовского правдоподобия. Ошибки можно обрабатывать вручную, добавляя компонент ядра, этот столбец посвящен возможности управления ими по отдельности. Поддержка частичных ошибок может обозначаться как:
    • iid: точки данных должны быть независимые и одинаково распределенные.
    • Некоррелированный: точки данных должны быть независимыми, но могут иметь разные распределения.
    • Стационарный: точки данных могут быть коррелированы, но ковариационная матрица должна быть Матрица Теплица, в частности, это означает, что отклонения должны быть однородными.

Гиперпараметры

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

  • Прежний: указывает ли произвольное гиперприоры на гиперпараметры поддерживается.
  • Задний: поддерживается ли апостериорная оценка за пределами точечная оценка, возможно, в сочетании с другим программным обеспечением.

Если обе ячейки «Prior» и «Posterior» содержат «Manually», программное обеспечение предоставляет интерфейс для вычисления предельного правдоподобия и его градиента относительно гиперпараметров, которые могут быть введены в алгоритм оптимизации / выборки, например градиентный спуск или же Цепь Маркова Монте-Карло.

Линейные преобразования

Эти столбцы посвящены возможности одновременной подгонки точек данных к процессу и к его линейным преобразованиям.

  • Deriv.: можно ли для любого дифференцируемого ядра взять произвольное количество производных до максимума, допускаемого гладкостью ядра. Пример частичных спецификаций может быть максимальной производной возможностью или реализацией только для некоторых ядер. Интегралы могут быть получены косвенно из производных.
  • Конечный: конечны ли произвольные линейные преобразования разрешены в указанных точках данных.
  • Сумма: можно ли суммировать различные ядра и получить доступ отдельно к процессам, соответствующим каждому слагаемому. Это частный случай конечного линейного преобразования, но он указан отдельно, потому что это общая черта.

Сравнительная таблица

ИмяЛицензияЯзыкРешателиВходВыходГиперпараметрыЛинейные преобразованияИмя
ТочныйСпециализированныйПриблизительноNDНенастоящийВероятностьОшибкиПрежнийЗаднийDeriv.КонечныйСумма
PyMC3ApachePythonдаКронекерРазреженныйNDНетЛюбойКоррелированныйдадаНетдадаPyMC3
GPvecchiaGNU GPLрдаНетРазреженный, иерархическийНетНетЭкспоненциальная семьяКоррелированныйНетНетНетдадаGPvecchia
GpGpМассачусетский технологический институтрНетНетРазреженныйNDНетГауссовскийКоррелированныйдадаНетдадаGpGp
GPy[6]BSDPythonдаНетРазреженныйNDНетМногоНекоррелированныйдадаНетНетНетGPy
pyGPs[7]BSDPythonдаНетРазреженныйNDГрафики, вручнуюБернуллиiidВручнуюВручнуюНетНетНетpyGPs
СтэнBSD, GPLобычайдаНетНетNDНетЛюбойКоррелированныйдадаНетдадаСтэн
GPyTorch[8]Массачусетский технологический институтPythonдаНетРазреженныйNDНетБернуллиНетПервый RBFGPyTorch
GPML[9][10]BSDMATLABдаНетРазреженныйNDНетМногоiidВручнуюВручнуюНетНетНетGPML
fbm[10]СвободныйCдаНетНетNDНетБернулли, ПуассонНекоррелированный, стационарныйМногодаНетfbm
gptkBSDрдаБлокировать?РазреженныйNDНетГауссовскийНетВручнуюВручнуюНетНетНетgptk
SuperGaussGNU GPLр, C ++НетТеплиц[а]Нет1DНетГауссовскийНетВручнуюВручнуюНетНетНетSuperGauss
целерит[3]Массачусетский технологический институтPython, Юля, C ++НетСемисеп.[b]Нет1DНетГауссовскийНекоррелированныйВручнуюВручнуюНетНетцелерит
ДжорджМассачусетский технологический институтPython, C ++даНетИерархическийNDНетГауссовскийНекоррелированныйВручнуюВручнуюНетНетВручнуюДжордж
нейронные касательные[11][c]ApachePythonдаБлок, КронекерНетНетГауссовскийНетНетНетНетНетНетнейронные касательные
СТКGNU GPLMATLABдаНетНетNDНетГауссовскийНекоррелированныйВручнуюВручнуюНетНетВручнуюСТК
UQLab[12]ПроприетарныйMATLABUQLab
ooDACE[13]ПроприетарныйMATLABNDНетooDACE
GPstuff[10]GNU GPLMATLAB, рдаНетРазреженныйNDНетМногоМногодаПервый RBFGPstuff
GSToolsGNU LGPLPythonдаНетНетNDНетГауссовскийНетНетНетНетНетНетGSTools
ГеорадарApacheC ++даНетРазреженныйNDНетГауссовскийiidНекоторые, вручнуюВручнуюПервыйНетНетГеорадар
scikit-learnBSDPythonдаНетНет1DНетБернуллиscikit-learn
PyKrigeBSDPython2D, 3DНетPyKrige
GPflow[6]ApachePythonдаНетРазреженныйМногодадаGPflow
ИмяЛицензияЯзыкТочныйСпециализированныйПриблизительноNDНенастоящийВероятностьОшибкиПрежнийЗаднийDeriv.КонечныйСуммаИмя
РешателиВходВыходГиперпараметрыЛинейные преобразования

Примечания

  1. ^ SuperGauss реализует сверхбыстрый Решатель Теплица с вычислительной сложностью .
  2. ^ Целерит реализует только определенную подалгебру ядер, которая может быть решена в .[3]
  3. ^ neural-tangents - это специализированный пакет для бесконечно широких нейронных сетей.

Рекомендации

  1. ^ П. Каннингем, Джон; Гильбоа, Элад; Саатчи, Юнус (февраль 2015 г.). "Масштабирование многомерного вывода для структурированных гауссовских процессов". IEEE Transactions по анализу шаблонов и машинному анализу. 37 (2): 424–436. Дои:10.1109 / TPAMI.2013.192. PMID  26353252. S2CID  6878550.
  2. ^ Leith, D. J .; Чжан, Юнонг; Лейтхед, У. Э. (2005). «Регрессия гауссовского процесса временных рядов на основе тёплицевых вычислений O (N2) операций и хранения O (N) -уровня». Труды 44-й конференции IEEE по решениям и контролю: 3711–3716. Дои:10.1109 / CDC.2005.1582739. S2CID  13627455.
  3. ^ а б c Форман-Макки, Дэниел; Ангус, Рут; Агол, Эрик; Амбикасаран, Шиварам (9 ноября 2017 г.). «Быстрое и масштабируемое моделирование гауссовских процессов с приложениями к астрономическим временным рядам». Астрономический журнал. 154 (6): 220. arXiv:1703.09710. Bibcode:2017AJ .... 154..220F. Дои:10.3847 / 1538-3881 / aa9332. S2CID  88521913.
  4. ^ Киньонеро-Кандела, Хоакин; Расмуссен, Карл Эдвард (5 декабря 2005 г.). «Единый взгляд на регрессию разреженного приближенного гауссовского процесса». Журнал исследований в области машинного обучения. 6: 1939–1959. Получено 23 мая 2020.
  5. ^ Ambikasaran, S .; Форман-Макки, Д .; Greengard, L .; Hogg, D. W .; О’Нил, М. (1 февраля 2016 г.). «Быстрые прямые методы для гауссовских процессов». IEEE Transactions по анализу шаблонов и машинному анализу. 38 (2): 252–265. arXiv:1403.6015. Дои:10.1109 / TPAMI.2015.2448083. PMID  26761732. S2CID  15206293.
  6. ^ а б Мэтьюз, Александр Г. де Г .; ван дер Вилк, Марк; Никсон, Том; Фудзи, Кейсуке; Букувалас, Алексис; Леон-Виллагра, Пабло; Гахрамани, Зубин; Хенсман, Джеймс (апрель 2017 г.). «GPflow: библиотека процессов Гаусса с использованием TensorFlow». Журнал исследований в области машинного обучения. 18 (40): 1–6. arXiv:1610.08733. Получено 6 июля 2020.
  7. ^ Нойман, Марион; Хуанг, Шань; Э. Марталер, Дэниел; Керстинг, Кристиан (2015). «pyGPs - библиотека Python для гауссовской регрессии и классификации процессов». Журнал исследований в области машинного обучения. 16: 2611–2616.
  8. ^ Гарднер, Джейкоб Р.; Плейсс, Джефф; Биндель, Дэвид; Вайнбергер, Килиан Кью; Уилсон, Эндрю Гордон (2018). "GPyTorch: гауссовский вывод матрично-матричного черного ящика с ускорением графического процессора" (PDF). Достижения в системах обработки нейронной информации. 31: 7576–7586. arXiv:1809.11165. Получено 23 мая 2020.
  9. ^ Расмуссен, Карл Эдвард; Никиш, Ханнес (ноябрь 2010 г.). "Набор инструментов гауссовских процессов для машинного обучения (GPML)". Журнал исследований в области машинного обучения. 11 (2): 3011–3015. Дои:10.1016/0002-9610(74)90157-3. PMID  4204594.
  10. ^ а б c Ванхатало, Ярно; Риихимяки, Яакко; Хартикайнен, Йоуни; Юлянки, Паси; Толванен, Вилле; Вехтари, Аки (апрель 2013 г.). "GPstuff: байесовское моделирование с гауссовскими процессами". Журнал исследований в области машинного обучения. 14: 1175−1179. Получено 23 мая 2020.
  11. ^ Новак, Роман; Сяо, Лехао; Хрон, Иржи; Ли, Джэхун; Alemi, Александр А .; Золь-Дикштейн, Яша; Шёнхольц, Самуэль С. (2020). «Нейронные касательные: быстрые и простые бесконечные нейронные сети в Python». Международная конференция по обучающим представительствам. arXiv:1912.02803.
  12. ^ Марелли, Стефано; Судрет, Бруно (2014). «UQLab: структура для количественной оценки неопределенности в MATLAB» (PDF). Уязвимость, неопределенность и риск. Количественная оценка, смягчение последствий и управление: 2554–2563. Дои:10.3929 / ethz-a-010238238. Получено 28 мая 2020.
  13. ^ Couckuyt, Иво; Дхейн, Том; Демейстер, Пит (2014). «Набор инструментов ooDACE: гибкая объектно-ориентированная реализация кригинга» (PDF). Журнал исследований в области машинного обучения. 15: 3183–3186. Получено 8 июля 2020.