Programação estatística em aprendizado de máquina: contraste entre Pyro e TFP

Publicados: 2021-01-29

No aprendizado de máquina, a programação estatística ou probabilística é feita usando 2 linguagens de programação, conforme mostrado abaixo. Dando uma breve introdução, Em palavras simples, a programação probabilística é uma ferramenta para modelagem estatística. Basicamente significa resolver problemas usando uma linguagem pela qual podemos fazer e projetar modelos estatísticos como solução.

Trata-se de aplicar os conceitos de estatística usando linguagens de programação de computadores. Usando modelos probabilísticos, pode-se inferir como nossas crenças sobre os hiperparâmetros do modelo podem alterar a saída.

Índice

Linguagens de programação probabilística famosas

1. Piro

Pyro é uma linguagem de programação probabilística (PPL) escrita em Python e suportada pelo Pytorch no backend. Com o Pyro, temos acesso a modelagem probabilística profunda, modelagem bayesiana e combinamos o melhor dos algoritmos modernos de aprendizado profundo. Pode ser instalado da seguinte forma:

pip3 Instalar Pyro-ppl

ou para instalá-lo a partir da fonte use os seguintes comandos:

git clone https://github.com/pyro-ppl/pyro.git

CD Pyro

pip instalar .[extras]

Importe o Pyro usando uma simples linha de código:

importação pirotécnica

2. Probabilidade de Fluxo Tensor (TFP)

TFP é uma biblioteca Python construída no TensorFlow que possibilita a combinação de modelos probabilísticos e modelos de aprendizado profundo em GPU e TPU. Ele pode ser usado por qualquer pessoa que deseje incorporar o conhecimento do domínio para entender e fazer previsões relevantes. Para instalar o TFP, digite o seguinte comando em seu comando ou prompt do anaconda.

pip install –atualizar tensorflow-probabilidade

O TFP pode ser usado no código usando a seguinte linha de comando:

importar tensorflow_probability como tfp

Participe do curso de inteligência artificial on-line das principais universidades do mundo - mestrados, programas de pós-graduação executiva e programa de certificação avançada em ML e IA para acelerar sua carreira.

O contraste entre Pyro e TFP

1. Documentação

A documentação para Pyro e TFP é excelente e abundante, embora seja menos explicativa para TFP a partir da perspectiva de redes neurais. No pyro, o módulo pyro.nn apresenta implementações de módulos de rede neural que são úteis no contexto de programação probabilística profunda. No TFP, tfp.layers representam camadas de rede neural com incerteza sobre as funções que representam, estendendo as camadas do TensorFlow.

2. Idioma

Os usuários do TFP e do Pyro escrevem em python. No entanto, a API envolvida no caso do TFP é extremamente detalhada. Com isso, quero dizer, às vezes temos que escrever mais linhas de código para chegar a uma solução. Isso pode ser bom às vezes porque temos mais controle sobre todo o programa e ruim quando ele está disponível em uma forma mais curta no Pyro.

3. Tempo de Aceleração

Com o Pyro, a execução do código é mais rápida e eficiente, e você não precisará de novos conceitos para aprender. A TFP, por outro lado, requer conceitos como espaços reservados, escopo variável e sessões, levando mais tempo para executar.

4. Implantação

Tanto o TFP quanto o Pyro podem ser facilmente implantados em um servidor de pequena escala. Para implantações móveis e de microcomputadores ou incorporadas, o TensorFlow funciona de forma eficiente, ao contrário do Pytorch. Um esforço menor é necessário para a implantação do TensorFlow no Android e no IOS, em comparação com o Pytorch.

5. Gráficos

O Tensorflow tem melhores visualizações de gráficos computacionais, que são nativas quando comparadas a outras bibliotecas como Torch e Theano. O Edward foi desenvolvido no TensorFlow e permite recursos como gráficos computacionais, treinamento distribuído, integração CPU/GPU, diferenciação automática e visualização com o TensorBoard. O Pyro, no entanto, não fornece nenhuma funcionalidade demonstrativa ou de visualização.

Interferência de Edward no TensorBoard, Fonte: Edward

6. Cadeia de Markov Monte Carlo

O TFP implementa uma tonelada de algoritmos Monte Carlo (MCMC) de cadeia de Markov (como Metropolis, Gibbs, Hamiltonian) cujo uso é amostrar uma distribuição de probabilidade e alguns algoritmos de iteração de valor no TensorFlow. Até 2018, o Pyro não apresentava a cadeia Markov Monte Carlo. Ele foi atualizado e possui suporte completo para MCMC, HMC e NUTS.

7. Otimizadores

Assim como o TFP implementa vários otimizadores do TensorFlow, incluindo Nelder-Mead, BFGS e L-BFGS (para determinar problemas de otimização não linear irrestritos), o Pyro implementa os otimizadores presentes no PyTorch. O módulo pyro.optim fornece suporte para otimização no Pyro . Pode-se dizer que os dois PPL's ​​são dependentes de seus módulos básicos (TensorFlow e PyTorch).

Fonte

8. Bijetores

Na TFP, bijetores inclui a mudança de variáveis ​​para uma densidade de probabilidade. Quando mapeamos de um espaço para outro, também influenciamos um mapa de densidades de probabilidade no espaço inicial para densidades no espaço alvo.

Mas como estamos mapeando para um espaço diferente, precisamos rastrear essas contas de mapeamento para eles no cálculo da densidade de probabilidade no último espaço. Bijetores são, portanto, usados ​​para mapeamento suave. No pyro, a documentação não menciona nada sobre os bijetores, então presumo que eles não os tenham.

9. Séries Temporais

O módulo pyro.contrib.timeseries fornece uma coleção de modelos de séries temporais Bayesianas úteis para aplicações de previsão. Isso pode ser feito usando o objeto Forecaster existente no Pyro. Depois de fornecermos dados de entrada ao modelo, apenas informamos ao modelo como fazer uma previsão informada.

É muito fácil, apenas dados e uma estrutura probabilística. A TFP, no entanto, faz uso dos modelos de séries temporais do Tensorflow, como CNNs e RNNs, juntamente com seu Framework para modelos de séries temporais estruturais Bayesianas (tfp.sts). A série temporal estrutural bayesiana é uma interface de alto nível para ajustar modelos de séries temporais que ainda não foram lançadas.

Fonte

10. Distribuições

É uma classe base para construir e organizar propriedades (por exemplo, média, variância) de variáveis ​​aleatórias (por exemplo, Bernoulli, Gaussian). Um exemplo pode ser uma distribuição normal. A maioria das distribuições no Pyro são wrappers finos em torno das distribuições do PyTorch. Para obter detalhes sobre a interface de distribuição do PyTorch, você pode conferir torch.distributions.distribution.Distribution. O TFP, no entanto, tem seu módulo tfp.distributions.

Fonte

Fonte

11. Modelos Lineares Generalizados (GLM)

Em estatística, o modelo linear generalizado é uma generalização flexível da regressão linear ordinária que permite variáveis ​​de resposta que possuem modelos de distribuição de erros diferentes da distribuição normal. No TFP, o módulo tfp.glm contém uma interface de alto nível para ajustar modelos de regressão de efeitos mistos. O Pyro, no entanto, não possui esse módulo para GLM.

Fonte

Conclusão

Usando esses fatores, é seguro concluir que o Pyro não difere tanto do TFP. Ambos são baseados na linguagem de programação Python. As APIs do Python são bem documentadas. O Pytorch, no entanto, tem um bom tempo de aceleração e, portanto, é muito mais rápido que o TensorFlow. A decisão entre essas duas estruturas dependerá de quão acessível você achará o método de aprendizado para cada uma delas. Sua seleção também dependerá dos requisitos de sua organização.

Se você estiver interessado em aprender mais sobre aprendizado de máquina, confira o Programa PG Executivo do IIIT-B e do upGrad em Machine Learning e IA , projetado para profissionais que trabalham e oferece mais de 450 horas de treinamento rigoroso, mais de 30 estudos de caso e atribuições, IIIT -B Alumni status, mais de 5 projetos práticos práticos e assistência de trabalho com as principais empresas.

Referências

Introdução – Documentação do Pyro

Módulo: tfp | Probabilidade do TensorFlow

Como o aprendizado de máquina está conectado com estatísticas e vice-versa?

A estatística é usada para construir um modelo estatístico para representar os dados e tirar conclusões ou inferências a partir deles. Enquanto o aprendizado de máquina faz uso desse modelo estatístico para obter uma compreensão dos dados e fazer previsões precisas. Assim, as estatísticas são usadas na construção de modelos estatísticos para ajudar a realizar o aprendizado de máquina de maneira adequada e fácil.

Posso conhecer o aprendizado de máquina sem o conhecimento de estatística?

Estatísticas e aprendizado de máquina estão interconectados. Se você conhece estatísticas, pode representar dados na forma de um modelo estatístico e, em seguida, analisar e fazer previsões com aprendizado de máquina. Assim, conhecer as estatísticas antes do aprendizado de máquina será bastante útil. Então, se você conhece apenas o básico das estatísticas, você está pronto para ir. Você não precisa ser um profissional em estatística para se sair bem em aprendizado de máquina.

O TensorFlow é fácil de aprender para um iniciante?

O TensorFlow é uma plataforma de aprendizado de máquina de código aberto que funciona do início ao fim. O TensorFlow simplifica a criação de modelos de aprendizado de máquina para iniciantes e profissionais. Você precisará gastar entre seis e doze meses estudando e aperfeiçoando suas habilidades do TensorFlow se quiser trabalhar com aprendizado de máquina. No entanto, se você conhece os fundamentos de linguagens de programação como R e Python, não terá muitos problemas.