Statistische Programmierung im maschinellen Lernen: Kontrast zwischen Pyro und TFP

Veröffentlicht: 2021-01-29

Beim maschinellen Lernen erfolgt die statistische oder probabilistische Programmierung mit 2 Programmiersprachen, wie unten gezeigt. Um eine kurze Einführung zu geben: In einfachen Worten ist die probabilistische Programmierung ein Werkzeug für die statistische Modellierung. Es bedeutet im Grunde, Probleme mit einer Sprache zu lösen, mit der wir statistische Modelle als Lösung erstellen und entwerfen können.

Es geht darum, die Konzepte der Statistik mithilfe von Computerprogrammiersprachen anzuwenden. Unter Verwendung von probabilistischen Modellen kann man ableiten, wie unsere Annahmen über die Hyperparameter des Modells die Ausgabe verändern können.

Inhaltsverzeichnis

Berühmte probabilistische Programmiersprachen

1. Pyro

Pyro ist eine probabilistische Programmiersprache (PPL), die in Python geschrieben ist und von Pytorch im Backend unterstützt wird. Mit Pyro haben wir Zugriff auf tiefe probabilistische Modellierung, Bayes'sche Modellierung und kombinieren die besten modernen Deep-Learning-Algorithmen. Es kann wie folgt installiert werden:

pip3 Installieren Sie Pyro-ppl

oder um es von der Quelle zu installieren, verwenden Sie die folgenden Befehle:

Git-Klon https://github.com/pyro-ppl/pyro.git

CD-Pyro

Pip installieren .[Extras]

Importieren Sie Pyro mit einer einfachen Codezeile:

Pyro importieren

2. Tensor-Flow-Wahrscheinlichkeit (TFP)

TFP ist eine auf TensorFlow basierende Python-Bibliothek, die die Kombination von probabilistischen Modellen und Deep-Learning-Modellen auf GPU und TPU ermöglicht. Es kann von jedem verwendet werden, der Domänenwissen einbeziehen möchte, um relevante Vorhersagen zu verstehen und zu treffen. Um TFP zu installieren, geben Sie den folgenden Befehl in Ihre Befehls- oder Anakonda-Eingabeaufforderung ein.

pip install – Upgrade der Tensorflow-Wahrscheinlichkeit

TFP kann im Code mit der folgenden Befehlszeile verwendet werden:

importiere tensorflow_probability als tfp

Nehmen Sie online an den Kursen für künstliche Intelligenz von den besten Universitäten der Welt teil – Master, Executive Post Graduate Programs und Advanced Certificate Program in ML & AI, um Ihre Karriere zu beschleunigen.

Der Kontrast zwischen Pyro und TFP

1. Dokumentation

Die Dokumentation für Pyro und TFP ist ausgezeichnet und reichlich vorhanden, während es weniger um die Erklärung für TFP aus der Perspektive neuronaler Netze geht. In pyro präsentiert das Modul pyro.nn Implementierungen von neuronalen Netzwerkmodulen, die im Kontext der tiefen probabilistischen Programmierung nützlich sind. In TFP stellen tfp.layers neuronale Netzwerkschichten mit Unsicherheit über die Funktionen dar, die sie darstellen, und erweitern TensorFlow-Schichten.

2. Sprache

Die Benutzer von TFP und Pyro schreiben in Python. Die im Fall von TFP beteiligte API ist jedoch äußerst ausführlich. Damit meine ich, dass wir manchmal mehr Codezeilen schreiben müssen, um zu einer Lösung zu kommen. Das kann manchmal gut sein, weil wir mehr Kontrolle über das gesamte Programm haben, und schlecht, wenn es in Pyro in kürzerer Form verfügbar ist.

3. Hochlaufzeit

Mit Pyro wird der Code schneller und effizienter ausgeführt, und Sie müssen keine neuen Konzepte erlernen. TFP hingegen erfordert Konzepte wie Platzhalter, variable Scoping sowie Sitzungen, wodurch mehr Zeit für die Ausführung benötigt wird.

4. Bereitstellung

Sowohl TFP als auch Pyro können problemlos auf einer kleinen Serverseite bereitgestellt werden. Für mobile und Mikrocomputer- oder eingebettete Bereitstellungen arbeitet TensorFlow im Gegensatz zu Pytorch effizient. Für die Bereitstellung von TensorFlow in Android und IOS ist im Vergleich zu Pytorch ein geringerer Aufwand erforderlich.

5. Grafiken

Tensorflow verfügt über bessere rechnerische Graphvisualisierungen, die im Vergleich zu anderen Bibliotheken wie Torch und Theano heimisch sind. Edward basiert auf TensorFlow und ermöglicht Funktionen wie Rechendiagramme, verteiltes Training, CPU/GPU-Integration, automatische Differenzierung und Visualisierung mit TensorBoard. Pyro bietet jedoch keine Demonstrations- oder Visualisierungsfunktionen.

Edward stört TensorBoard, Quelle: Edward

6. Markov-Kette Monte Carlo

TFP implementiert eine Menge Markov Chain Monte Carlo (MCMC)-Algorithmen (wie Metropolis, Gibbs, Hamiltonian), deren Verwendung darin besteht, eine Wahrscheinlichkeitsverteilung und einige Value Iteration-Algorithmen in TensorFlow abzutasten. Bis 2018 hat Pyro die Markov-Kette Monte Carlo nicht aufgeführt. Es wurde aktualisiert und bietet volle MCMC-, HMC- und NUTS-Unterstützung.

7. Optimierer

So wie TFP mehrere Optimierer von TensorFlow implementiert, darunter Nelder-Mead, BFGS und L-BFGS (zur Bestimmung von nichtlinearen Optimierungsproblemen ohne Einschränkungen), implementiert Pyro die in PyTorch vorhandenen Optimierer. Das Modul pyro.optim bietet Unterstützung für die Optimierung in Pyro . Man kann sagen, dass die beiden PPLs von ihren Grundmodulen (TensorFlow und PyTorch) abhängig sind.

Quelle

8. Bijektoren

In TFP beinhalten Bijektoren die Änderung von Variablen für eine Wahrscheinlichkeitsdichte. Wenn wir von einem Raum in einen anderen abbilden, beeinflussen wir auch eine Abbildung von Wahrscheinlichkeitsdichten im Ausgangsraum zu Dichten im Zielraum.

Da wir jedoch auf einen anderen Raum abbilden, müssen wir diese Zuordnungskonten für sie bei der Berechnung der Wahrscheinlichkeitsdichte im letzteren Raum verfolgen. Bijektoren werden daher zur glatten Abbildung verwendet. In Pyro erwähnt die Dokumentation nichts über die Bijektoren, also gehe ich davon aus, dass sie sie nicht haben.

9. Zeitreihe

Das pyro.contrib.timeseries-Modul bietet eine Sammlung von Bayes'schen Zeitreihenmodellen, die für Prognoseanwendungen nützlich sind. Dies kann erreicht werden, indem das vorhandene Forecaster- Objekt in Pyro verwendet wird. Nachdem wir dem Modell Eingabedaten gegeben haben, sagen wir dem Modell einfach, wie es eine fundierte Vorhersage treffen soll.

So einfach ist das, nur Daten und ein probabilistisches Framework. TFP nutzt jedoch die Zeitreihenmodelle von Tensorflow wie CNN und RNN zusammen mit seinem Framework für Bayes'sche strukturelle Zeitreihenmodelle (tfp.sts). Bayessche strukturelle Zeitreihen sind eine High-Level-Schnittstelle zum Anpassen von Zeitreihenmodellen, die noch veröffentlicht werden muss.

Quelle

10. Ausschüttungen

Es ist eine Basisklasse zum Konstruieren und Organisieren von Eigenschaften (z. B. Mittelwert, Varianz) von Zufallsvariablen (z. B. Bernoulli, Gauß). Ein Beispiel kann eine Normalverteilung sein. Die meisten Distributionen in Pyro sind dünne Hüllen um PyTorch-Distributionen. Einzelheiten zur PyTorch-Verteilungsschnittstelle finden Sie unter „torch.distributions.distribution.Distribution“. TFP hat jedoch sein Modul tfp.distributions.

Quelle

Quelle

11. Verallgemeinerte lineare Modelle (GLM)

In der Statistik ist das verallgemeinerte lineare Modell eine flexible Verallgemeinerung der gewöhnlichen linearen Regression, die Antwortvariablen zulässt, die andere Fehlerverteilungsmodelle als eine Normalverteilung haben. In TFP enthält das Modul tfp.glm eine High-Level-Schnittstelle zum Anpassen von Regressionsmodellen mit gemischten Effekten. Pyro hat jedoch kein solches Modul für GLM.

Quelle

Fazit

Anhand dieser Faktoren kann man sicher schlussfolgern, dass sich Pyro nicht so sehr von TFP unterscheidet. Beide basieren auf der Programmiersprache Python. Python-APIs sind gut dokumentiert. Pytorch hat jedoch eine gute Hochlaufzeit und ist daher viel schneller als TensorFlow. Die Entscheidung zwischen diesen beiden Frameworks hängt davon ab, wie zugänglich Sie die Lernmethode für jeden von ihnen finden. Ihre Auswahl hängt auch von den Anforderungen Ihrer Organisation ab.

Wenn Sie mehr über maschinelles Lernen erfahren möchten, sehen Sie sich das Executive PG-Programm von IIIT-B & upGrad für maschinelles Lernen und KI an, das für Berufstätige konzipiert ist und mehr als 450 Stunden strenge Schulungen, mehr als 30 Fallstudien und Aufgaben, IIIT, bietet -B Alumni-Status, mehr als 5 praktische Schlusssteinprojekte und Arbeitsunterstützung bei Top-Unternehmen.

Verweise

Erste Schritte – Pyro-Dokumentation

Modul: tfp | TensorFlow-Wahrscheinlichkeit

Wie hängt maschinelles Lernen mit Statistik zusammen und umgekehrt?

Statistik wird verwendet, um ein statistisches Modell zu erstellen, um die Daten darzustellen und daraus Schlussfolgerungen oder Schlussfolgerungen zu ziehen. Während maschinelles Lernen dieses statistische Modell nutzt, um ein Verständnis der Daten zu erhalten und genaue Vorhersagen zu treffen. Daher werden Statistiken beim Erstellen statistischer Modelle verwendet, um das maschinelle Lernen richtig und einfach durchzuführen.

Kann ich maschinelles Lernen ohne Kenntnisse der Statistik kennen?

Statistik und maschinelles Lernen sind miteinander verbunden. Wer sich mit Statistik auskennt, kann Daten in Form eines statistischen Modells darstellen und diese dann mit maschinellem Lernen analysieren und Vorhersagen treffen. Daher ist es sehr hilfreich, Statistiken vor dem maschinellen Lernen zu kennen. Wenn Sie also nur die Grundlagen der Statistik kennen, können Sie loslegen. Sie müssen kein Profi in Statistik sein, um beim maschinellen Lernen erfolgreich zu sein.

Ist TensorFlow für einen Anfänger leicht zu erlernen?

TensorFlow ist eine Open-Source-Plattform für maschinelles Lernen, die von Anfang bis Ende ausgeführt wird. TensorFlow macht das Erstellen von Modellen für maschinelles Lernen sowohl für Anfänger als auch für Profis einfach. Sie müssen zwischen sechs und zwölf Monaten damit verbringen, Ihre TensorFlow-Fähigkeiten zu studieren und zu perfektionieren, wenn Sie im maschinellen Lernen arbeiten möchten. Wenn Sie jedoch die Grundlagen von Programmiersprachen wie R und Python kennen, werden Sie keine allzu großen Probleme haben.