Статистическое программирование в машинном обучении: контраст между Pyro и TFP

Опубликовано: 2021-01-29

В машинном обучении статистическое или вероятностное программирование выполняется с использованием двух языков программирования, как показано ниже. Краткое введение. Проще говоря, вероятностное программирование — это инструмент статистического моделирования. В основном это означает решение проблем с использованием языка, с помощью которого мы можем создавать и разрабатывать статистические модели в качестве решения.

Речь идет о применении концепций статистики с использованием языков компьютерного программирования. Используя вероятностные модели, можно сделать вывод, как наши представления о гиперпараметрах модели могут изменить результат.

Оглавление

Известный вероятностный язык программирования

1. Поджигатель

Pyro — это вероятностный язык программирования (PPL), написанный на Python и поддерживаемый Pytorch на серверной части. С Pyro у нас есть доступ к глубокому вероятностному моделированию, байесовскому моделированию и объединению лучших современных алгоритмов глубокого обучения. Его можно установить следующим образом:

pip3 Установить Pyro-ppl

или для установки из исходников используйте следующие команды:

git-клон https://github.com/pyro-ppl/pyro.git

компакт-диск пиро

pip установить .[дополнительно]

Импортируйте Pyro, используя простую строку кода:

импортный пиротехника

2. Вероятность тензорного потока (TFP)

TFP — это библиотека Python, построенная на TensorFlow, которая позволяет сочетать вероятностные модели и модели глубокого обучения на GPU и TPU. Его может использовать любой, кто хочет использовать знания предметной области, чтобы понять и сделать соответствующие прогнозы. Чтобы установить TFP, введите следующую команду в командной строке или в приглашении anaconda.

pip install –обновить вероятность тензорного потока

TFP можно использовать в коде с помощью следующей строки команды:

импортировать tensorflow_probability как tfp

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

Контраст между поджигателем и TFP

1. Документация

Документация по Pyro и TFP превосходна и многочисленна, в то время как пояснений по TFP с точки зрения нейронных сетей меньше. В pyro модуль pyro.nn представляет реализации модулей нейронных сетей, полезных в контексте глубокого вероятностного программирования. В TFP tfp.layers представляют слои нейронной сети с неопределенностью в отношении функций, которые они представляют, расширяя слои TensorFlow.

2. Язык

Пользователи TFP и Pyro пишут на python. Однако API, задействованный в случае TFP, чрезвычайно многословен. Под этим я подразумеваю, что иногда нам приходится писать больше строк кода, чтобы найти решение. Иногда это может быть хорошо, потому что у нас больше контроля над всей программой, и плохо, когда она доступна в более короткой форме в Pyro.

3. Время разгона

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

4. Развертывание

И TFP, и Pyro можно легко развернуть на небольшом сервере. Для мобильных и микрокомпьютерных или встроенных развертываний TensorFlow работает эффективно, в отличие от Pytorch. Для развертывания TensorFlow в Android и IOS требуется меньше усилий по сравнению с Pytorch.

5. Графики

Tensorflow имеет лучшую визуализацию вычислительных графов, которая является естественной по сравнению с другими библиотеками, такими как Torch и Theano. Edward построен на основе TensorFlow и поддерживает такие функции, как вычислительные графики, распределенное обучение, интеграция CPU/GPU, автоматическая дифференциация и визуализация с помощью TensorBoard. Однако Pyro не предоставляет каких-либо демонстрационных функций или функций визуализации.

Вмешательство Эдварда в TensorBoard, Источник: Эдвард

6. Цепь Маркова Монте-Карло

TFP реализует множество алгоритмов Монте-Карло (MCMC) цепи Маркова (таких как Metropolis, Gibbs, Hamiltonian), которые используют выборку распределения вероятностей и несколько алгоритмов итерации значений в TensorFlow. До 2018 года Пиро не выполнял цепь Маркова Монте-Карло. Он был обновлен и имеет полную поддержку MCMC, HMC и NUTS.

7. Оптимизаторы

Точно так же, как TFP реализует несколько оптимизаторов TensorFlow, включая Nelder-Mead, BFGS и L-BFGS (для решения задач неограниченной нелинейной оптимизации), Pyro реализует оптимизаторы, присутствующие в PyTorch. Модуль pyro.optim обеспечивает поддержку оптимизации в Pyro. . Можно сказать, что два PPL зависят от своих основных модулей (TensorFlow и PyTorch).

Источник

8. Биекторы

В TFP биекторы включают замену переменных для плотности вероятности. Когда мы отображаем из одного пространства в другое, мы также влияем на отображение плотностей вероятностей в исходном пространстве в плотности в целевом пространстве.

Но поскольку мы отображаем в другое пространство, нам нужно отслеживать эти отображения для них при вычислении плотности вероятности в последнем пространстве. Поэтому биекторы используются для гладкого отображения. В пиротехнике в документации ничего не говорится о бижекторах, поэтому я предполагаю, что у них их нет.

9. Временные ряды

Модуль pyro.contrib.timeseries предоставляет набор байесовских моделей временных рядов, полезных для приложений прогнозирования. Этого можно добиться, используя существующий объект Forecaster в Pyro. После того, как мы передаем входные данные модели, мы просто сообщаем модели, как сделать обоснованный прогноз.

Это так просто, просто данные и вероятностная структура. Однако TFP использует модели временных рядов Tensorflow, такие как CNN и RNN, а также его Framework для байесовских структурных моделей временных рядов (tfp.sts). Байесовские структурные временные ряды — это высокоуровневый интерфейс для подбора моделей временных рядов, который еще не выпущен.

Источник

10. Дистрибутивы

Это базовый класс для построения и организации свойств (например, среднего значения, дисперсии) случайных величин (например, бернуллиевских, гауссовых). Одним из примеров может быть нормальное распределение. Большинство дистрибутивов Pyro представляют собой тонкие оболочки вокруг дистрибутивов PyTorch. Для получения подробной информации об интерфейсе распространения PyTorch вы можете проверить torch.distributions.distribution.Distribution. Однако в TFP есть свой модуль tfp.distributions.

Источник

Источник

11. Обобщенные линейные модели (GLM)

В статистике обобщенная линейная модель представляет собой гибкое обобщение обычной линейной регрессии, которое позволяет использовать переменные отклика, которые имеют модели распределения ошибок, отличные от нормального распределения. В TFP модуль tfp.glm содержит высокоуровневый интерфейс для подбора регрессионных моделей со смешанными эффектами. Однако у Pyro нет такого модуля для GLM.

Источник

Заключение

Используя эти факторы, можно с уверенностью заключить, что Pyro не так уж сильно отличается от TFP. Оба они основаны на языке программирования Python. API-интерфейсы Python хорошо документированы. Однако Pytorch имеет хорошее время разгона и поэтому намного быстрее, чем TensorFlow. Выбор между этими двумя фреймворками будет зависеть от того, насколько доступным вы найдете метод обучения для каждого из них. Ваш выбор также будет зависеть от требований вашей организации.

Если вам интересно узнать больше о машинном обучении, ознакомьтесь с программой Executive PG IIIT-B и upGrad по машинному обучению и искусственному интеллекту , которая предназначена для работающих профессионалов и предлагает более 450 часов интенсивного обучения, более 30 тематических исследований и заданий, IIIT -B статус выпускника, 5+ практических практических проектов и помощь в трудоустройстве в ведущих фирмах.

использованная литература

Начало работы — документация Pyro

Модуль: тфп | Вероятность TensorFlow

Как машинное обучение связано со статистикой и наоборот?

Статистика используется для построения статистической модели, чтобы представить данные и сделать из них выводы или выводы. В то время как машинное обучение использует эту статистическую модель, чтобы получить представление о данных и сделать точные прогнозы. Таким образом, статистика используется при построении статистических моделей, чтобы помочь правильно и легко выполнять машинное обучение.

Могу ли я знать машинное обучение без знания статистики?

Статистика и машинное обучение взаимосвязаны. Если вы знаете статистику, вы можете представлять данные в виде статистической модели, а затем анализировать и делать прогнозы с помощью машинного обучения. Таким образом, знание статистики до машинного обучения будет весьма полезным. Так что, если вы просто знаете основы статистики, вы готовы к работе. Вам не нужно быть профессионалом в статистике, чтобы преуспеть в машинном обучении.

Легко ли новичку освоить TensorFlow?

TensorFlow — это платформа машинного обучения с открытым исходным кодом, работающая от начала до конца. TensorFlow упрощает создание моделей машинного обучения как для новичков, так и для профессионалов. Вам нужно будет потратить от шести до двенадцати месяцев на изучение и совершенствование своих способностей TensorFlow, если вы хотите работать в области машинного обучения. Однако, если вы знаете основы таких языков программирования, как R и Python, у вас не возникнет особых проблем.