Сравнение программного обеспечения гауссовского процесса - Comparison of Gaussian process software
Это сравнение программного обеспечения для статистического анализа, которое позволяет делать выводы с Гауссовские процессы часто используя приближения.
Эта статья написана с точки зрения Байесовская статистика, который может использовать терминологию, отличную от той, которая обычно используется в кригинг. В следующем разделе следует пояснить математическое / вычислительное значение информации, представленной в таблице, независимо от контекстной терминологии.
Описание колонн
В этом разделе подробно описаны значения столбцов в таблице ниже.
Решатели
Эти столбцы посвящены алгоритмам, используемым для решения линейная система определяется прежний ковариационная матрица, то есть матрица, построенная на основе вычисления ядра.
- Точный: ли общий реализованы точные алгоритмы. Эти алгоритмы обычно подходят только для нескольких тысяч точек данных.
- Специализированный: специализированный точный реализованы алгоритмы для конкретных классов задач. Поддерживаемые специализированные алгоритмы могут быть обозначены как:
- Кронекер: алгоритмы разделения ядер на данных сетки.[1]
- Теплиц: алгоритмы для стационарных ядер на равномерно распределенных данных.[2]
- Семисеп.: алгоритмы для полусепарабельных ковариационных матриц.[3]
- Разреженный: алгоритмы оптимизированы для редкий ковариационные матрицы.
- Блокировать: алгоритмы оптимизированы для диагональ блока ковариационные матрицы.
- Приблизительно: ли общий или специализированный реализованы приближенные алгоритмы. Поддерживаемые приблизительные алгоритмы могут быть обозначены как:
- Разреженный: алгоритмы, основанные на выборе набора «наводящих точек» во входном пространстве.[4]
- Иерархический: алгоритмы, приближающие ковариационную матрицу иерархическая матрица.[5]
Вход
Эти столбцы посвящены точкам, в которых оценивается гауссовский процесс, т.е. если процесс .
- ND: поддерживается ли многомерный ввод. Если это так, многомерный вывод всегда возможен путем добавления измерения к входу, даже без прямой поддержки.
- Ненастоящий: произвольно ли не-настоящий поддерживается ввод (например, текст или сложные числа ).
Выход
Эти столбцы содержат информацию о значениях, полученных в процессе, и о том, как они связаны с данными, используемыми при подборе.
- Вероятность: произвольно ли не-Гауссовский вероятность поддерживаются.
- Ошибки: поддерживаются ли произвольные неоднородные коррелированные ошибки на точках данных для гауссовского правдоподобия. Ошибки можно обрабатывать вручную, добавляя компонент ядра, этот столбец посвящен возможности управления ими по отдельности. Поддержка частичных ошибок может обозначаться как:
- iid: точки данных должны быть независимые и одинаково распределенные.
- Некоррелированный: точки данных должны быть независимыми, но могут иметь разные распределения.
- Стационарный: точки данных могут быть коррелированы, но ковариационная матрица должна быть Матрица Теплица, в частности, это означает, что отклонения должны быть однородными.
Гиперпараметры
Эти столбцы предназначены для поиска значений переменных, которые каким-то образом входят в определение конкретной проблемы, но которые не могут быть выведены с помощью гауссовского процесса, например, параметров в формуле ядра.
- Прежний: указывает ли произвольное гиперприоры на гиперпараметры поддерживается.
- Задний: поддерживается ли апостериорная оценка за пределами точечная оценка, возможно, в сочетании с другим программным обеспечением.
Если обе ячейки «Prior» и «Posterior» содержат «Manually», программное обеспечение предоставляет интерфейс для вычисления предельного правдоподобия и его градиента относительно гиперпараметров, которые могут быть введены в алгоритм оптимизации / выборки, например градиентный спуск или же Цепь Маркова Монте-Карло.
Линейные преобразования
Эти столбцы посвящены возможности одновременной подгонки точек данных к процессу и к его линейным преобразованиям.
- Deriv.: можно ли для любого дифференцируемого ядра взять произвольное количество производных до максимума, допускаемого гладкостью ядра. Пример частичных спецификаций может быть максимальной производной возможностью или реализацией только для некоторых ядер. Интегралы могут быть получены косвенно из производных.
- Конечный: конечны ли произвольные линейные преобразования разрешены в указанных точках данных.
- Сумма: можно ли суммировать различные ядра и получить доступ отдельно к процессам, соответствующим каждому слагаемому. Это частный случай конечного линейного преобразования, но он указан отдельно, потому что это общая черта.
Сравнительная таблица
Имя | Лицензия | Язык | Решатели | Вход | Выход | Гиперпараметры | Линейные преобразования | Имя | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Точный | Специализированный | Приблизительно | ND | Ненастоящий | Вероятность | Ошибки | Прежний | Задний | Deriv. | Конечный | Сумма | ||||
PyMC3 | Apache | Python | да | Кронекер | Разреженный | ND | Нет | Любой | Коррелированный | да | да | Нет | да | да | PyMC3 |
GPvecchia | GNU GPL | р | да | Нет | Разреженный, иерархический | Нет | Нет | Экспоненциальная семья | Коррелированный | Нет | Нет | Нет | да | да | GPvecchia |
GpGp | Массачусетский технологический институт | р | Нет | Нет | Разреженный | ND | Нет | Гауссовский | Коррелированный | да | да | Нет | да | да | GpGp |
GPy[6] | BSD | Python | да | Нет | Разреженный | ND | Нет | Много | Некоррелированный | да | да | Нет | Нет | Нет | GPy |
pyGPs[7] | BSD | Python | да | Нет | Разреженный | ND | Графики, вручную | Бернулли | iid | Вручную | Вручную | Нет | Нет | Нет | pyGPs |
Стэн | BSD, GPL | обычай | да | Нет | Нет | ND | Нет | Любой | Коррелированный | да | да | Нет | да | да | Стэн |
GPyTorch[8] | Массачусетский технологический институт | Python | да | Нет | Разреженный | ND | Нет | Бернулли | Нет | Первый RBF | GPyTorch | ||||
GPML[9][10] | BSD | MATLAB | да | Нет | Разреженный | ND | Нет | Много | iid | Вручную | Вручную | Нет | Нет | Нет | GPML |
fbm[10] | Свободный | C | да | Нет | Нет | ND | Нет | Бернулли, Пуассон | Некоррелированный, стационарный | Много | да | Нет | fbm | ||
gptk | BSD | р | да | Блокировать? | Разреженный | ND | Нет | Гауссовский | Нет | Вручную | Вручную | Нет | Нет | Нет | gptk |
SuperGauss | GNU GPL | р, C ++ | Нет | Теплиц[а] | Нет | 1D | Нет | Гауссовский | Нет | Вручную | Вручную | Нет | Нет | Нет | SuperGauss |
целерит[3] | Массачусетский технологический институт | Python, Юля, C ++ | Нет | Семисеп.[b] | Нет | 1D | Нет | Гауссовский | Некоррелированный | Вручную | Вручную | Нет | Нет | целерит | |
Джордж | Массачусетский технологический институт | Python, C ++ | да | Нет | Иерархический | ND | Нет | Гауссовский | Некоррелированный | Вручную | Вручную | Нет | Нет | Вручную | Джордж |
нейронные касательные[11][c] | Apache | Python | да | Блок, Кронекер | Нет | Нет | Гауссовский | Нет | Нет | Нет | Нет | Нет | Нет | нейронные касательные | |
СТК | GNU GPL | MATLAB | да | Нет | Нет | ND | Нет | Гауссовский | Некоррелированный | Вручную | Вручную | Нет | Нет | Вручную | СТК |
UQLab[12] | Проприетарный | MATLAB | UQLab | ||||||||||||
ooDACE[13] | Проприетарный | MATLAB | ND | Нет | ooDACE | ||||||||||
GPstuff[10] | GNU GPL | MATLAB, р | да | Нет | Разреженный | ND | Нет | Много | Много | да | Первый RBF | GPstuff | |||
GSTools | GNU LGPL | Python | да | Нет | Нет | ND | Нет | Гауссовский | Нет | Нет | Нет | Нет | Нет | Нет | GSTools |
Георадар | Apache | C ++ | да | Нет | Разреженный | ND | Нет | Гауссовский | iid | Некоторые, вручную | Вручную | Первый | Нет | Нет | Георадар |
scikit-learn | BSD | Python | да | Нет | Нет | 1D | Нет | Бернулли | scikit-learn | ||||||
PyKrige | BSD | Python | 2D, 3D | Нет | PyKrige | ||||||||||
GPflow[6] | Apache | Python | да | Нет | Разреженный | Много | да | да | GPflow | ||||||
Имя | Лицензия | Язык | Точный | Специализированный | Приблизительно | ND | Ненастоящий | Вероятность | Ошибки | Прежний | Задний | Deriv. | Конечный | Сумма | Имя |
Решатели | Вход | Выход | Гиперпараметры | Линейные преобразования |
Примечания
- ^ SuperGauss реализует сверхбыстрый Решатель Теплица с вычислительной сложностью .
- ^ Целерит реализует только определенную подалгебру ядер, которая может быть решена в .[3]
- ^ neural-tangents - это специализированный пакет для бесконечно широких нейронных сетей.
Рекомендации
- ^ П. Каннингем, Джон; Гильбоа, Элад; Саатчи, Юнус (февраль 2015 г.). "Масштабирование многомерного вывода для структурированных гауссовских процессов". IEEE Transactions по анализу шаблонов и машинному анализу. 37 (2): 424–436. Дои:10.1109 / TPAMI.2013.192. PMID 26353252. S2CID 6878550.
- ^ Leith, D. J .; Чжан, Юнонг; Лейтхед, У. Э. (2005). «Регрессия гауссовского процесса временных рядов на основе тёплицевых вычислений O (N2) операций и хранения O (N) -уровня». Труды 44-й конференции IEEE по решениям и контролю: 3711–3716. Дои:10.1109 / CDC.2005.1582739. S2CID 13627455.
- ^ а б c Форман-Макки, Дэниел; Ангус, Рут; Агол, Эрик; Амбикасаран, Шиварам (9 ноября 2017 г.). «Быстрое и масштабируемое моделирование гауссовских процессов с приложениями к астрономическим временным рядам». Астрономический журнал. 154 (6): 220. arXiv:1703.09710. Bibcode:2017AJ .... 154..220F. Дои:10.3847 / 1538-3881 / aa9332. S2CID 88521913.
- ^ Киньонеро-Кандела, Хоакин; Расмуссен, Карл Эдвард (5 декабря 2005 г.). «Единый взгляд на регрессию разреженного приближенного гауссовского процесса». Журнал исследований в области машинного обучения. 6: 1939–1959. Получено 23 мая 2020.
- ^ 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.
- ^ а б Мэтьюз, Александр Г. де Г .; ван дер Вилк, Марк; Никсон, Том; Фудзи, Кейсуке; Букувалас, Алексис; Леон-Виллагра, Пабло; Гахрамани, Зубин; Хенсман, Джеймс (апрель 2017 г.). «GPflow: библиотека процессов Гаусса с использованием TensorFlow». Журнал исследований в области машинного обучения. 18 (40): 1–6. arXiv:1610.08733. Получено 6 июля 2020.
- ^ Нойман, Марион; Хуанг, Шань; Э. Марталер, Дэниел; Керстинг, Кристиан (2015). «pyGPs - библиотека Python для гауссовской регрессии и классификации процессов». Журнал исследований в области машинного обучения. 16: 2611–2616.
- ^ Гарднер, Джейкоб Р.; Плейсс, Джефф; Биндель, Дэвид; Вайнбергер, Килиан Кью; Уилсон, Эндрю Гордон (2018). "GPyTorch: гауссовский вывод матрично-матричного черного ящика с ускорением графического процессора" (PDF). Достижения в системах обработки нейронной информации. 31: 7576–7586. arXiv:1809.11165. Получено 23 мая 2020.
- ^ Расмуссен, Карл Эдвард; Никиш, Ханнес (ноябрь 2010 г.). "Набор инструментов гауссовских процессов для машинного обучения (GPML)". Журнал исследований в области машинного обучения. 11 (2): 3011–3015. Дои:10.1016/0002-9610(74)90157-3. PMID 4204594.
- ^ а б c Ванхатало, Ярно; Риихимяки, Яакко; Хартикайнен, Йоуни; Юлянки, Паси; Толванен, Вилле; Вехтари, Аки (апрель 2013 г.). "GPstuff: байесовское моделирование с гауссовскими процессами". Журнал исследований в области машинного обучения. 14: 1175−1179. Получено 23 мая 2020.
- ^ Новак, Роман; Сяо, Лехао; Хрон, Иржи; Ли, Джэхун; Alemi, Александр А .; Золь-Дикштейн, Яша; Шёнхольц, Самуэль С. (2020). «Нейронные касательные: быстрые и простые бесконечные нейронные сети в Python». Международная конференция по обучающим представительствам. arXiv:1912.02803.
- ^ Марелли, Стефано; Судрет, Бруно (2014). «UQLab: структура для количественной оценки неопределенности в MATLAB» (PDF). Уязвимость, неопределенность и риск. Количественная оценка, смягчение последствий и управление: 2554–2563. Дои:10.3929 / ethz-a-010238238. Получено 28 мая 2020.
- ^ Couckuyt, Иво; Дхейн, Том; Демейстер, Пит (2014). «Набор инструментов ooDACE: гибкая объектно-ориентированная реализация кригинга» (PDF). Журнал исследований в области машинного обучения. 15: 3183–3186. Получено 8 июля 2020.