rOpenSci Unkonferenz 2018 und eine Einführung in TensorFlow Probability & das „greta“-Paket

Keine Kommentare

Am 21. und 22. Mai hatte ich die Ehre, an der rOpenSci Unkonferenz in Seattle teilnehmen zu dürfen. Es war ein großartiges Event, bei dem ich viele tolle Menschen kennenlernen konnte. Hier berichte ich über das Event und das Projekt, an dem ich dort gearbeitet habe: TensorFlow Probability in R & das „greta“-Paket.

rOpenSci

rOpenSci ist eine gemeinnützige Organisation, die eine Reihe von R-Paketen verwaltet und sehr aktiv den Gemeinschaftsgeist rund um die R-Welt fördert. Ihre zentralen Werte sind offene und reproduzierbare Forschung, Daten offen zugänglich zu machen, einfach zu bedienende Tools für Datenanalysen zu schaffen und all dies einer großen Anzahl an Menschen zugänglich zu machen.

Seattle, WA

rOpenSci Unkonferenz

Die jährliche Unkonferenz trägt dazu bei, eine welt- und diversitätsoffene Infrastruktur für die Community zu schaffen. Bei der Konferenz treffen etwa 60 eingeladene Gäste aus der ganzen Welt zusammen, um an kleinen Projekten zu arbeiten, die derzeit für die R-Community relevant sind. Ideen für Projekte werden in den Wochen vor der Unkonferenz auf GitHub gesammelt und diskutiert, aber die endgültige Entscheidung, an welchen Projekten gearbeitet wird, wird von den Teilnehmern am ersten Morgen der Unkonferenz getroffen.

Die diesjährige rOpenSci Unkonferenz fand im Microsoft-Reactor in Seattle statt.

Microsoft Reactor

Das gesamte Organisationsteam – allen voran Stefanie Butland – hat diese Veranstaltung hervorragend organisiert. Die gesamte Gruppe trug dazu bei, dass der Spirit der Unkonferenz für alle von Anfang an sehr offen und inklusiv war, von den Alteingesessenen bis hin zu Neulingen.

Wir waren eine ziemlich heterogene Gruppe von Sozialwissenschaftlern, Bioinformatikern, Ökologen, Historikern, Data Scientisten, Entwicklern, Mitarbeitern von Google, Microsoft und RStudio sowie R-Enthusiasten aus vielen anderen Bereichen. Einige Leute kannten sich bereits, viele kannten sich von Twitter, den R-Ladies oder anderen Online-Communities, aber die meisten von uns (einschließlich mir) hatten sich noch nie persönlich getroffen. Deshalb wurde der offizielle Teil der Unkonferenz am Montagmorgen mit einigen „Eisbrechern“ begonnen: Stefanie stellte eine Frage oder machte eine Aussage und wir positionierten uns entsprechend unserer Antwort im Raum und diskutierten mit den umstehenden Menschen. Beginnend mit „Seid ihr ein Hunde- oder Katzenmensch?“ und abschließend mit „Ich kenne meinen Platz in der R-Community“, hatten wir alle schnell viel zu diskutieren – eine großartige Möglichkeit, viele der Leute kennenzulernen, mit denen wir die nächsten zwei Tage verbringen würden!

Es war toll, mit so vielen talentierten und motivierten Menschen zusammenzuarbeiten, die meine Leidenschaft für die Sprache R teilen – besonders weil sich die Mehrheit der aktiven R-Community im pazifischen Nordwesten und in Kalifornien befindet. Es war eine ganz neue Erfahrung, mit anderen Leuten an einem R-Projekt zusammenzuarbeiten und ich war mehr als begeistert!

rOpenSci Unkonferenz Projektarbeit

Unser TensorFlow Probability / greta-Projekt

Während der 2-tägigen Unkonferenz wurde an vielen interessanten, nützlichen und coolen Projekten gearbeitet: hier ist die komplette Liste mit Links zu den einzelnen Projekten auf GitHub.)

Die Gruppe, der ich beigetreten bin, wollte ursprünglich TensorFlow Probability in R integrieren.

TensorFlow Probability is a library for probabilistic reasoning and statistical analysis in TensorFlow. As part of the TensorFlow ecosystem, TensorFlow Probability provides integration of probabilistic methods with deep networks, gradient-based inference via automatic differentiation, and scalability to large datasets and models via hardware acceleration (e.g., GPUs) and distributed computation.
https://github.com/tensorflow/probability

Letztendlich haben wir – das waren Michael Quinn, David Smith, Tiphaine Martin, Matt Mulvahill und ich – mit dem R-Paket greta gearbeitet, das ähnliche Funktionalitäten wie TensorFlow Probability bietet. Wir haben einige der Beispiele aus den Tutorials der TensorFlow Probability Bibliothek in greta erstellt und einige zusätzliche Beispiele entwickelt, die zeigen, wie man greta verwenden kann.

rOpenSci Unkonferenz Projektvorstellung

rOpenSci Unkonferenz Projektarbeit

Was ist greta?

greta ist ein R-Paket, das von Nick Golding für die Implementierung von Markov-Chain-Monte-Carlo-(MCMC-)Modellen, z. B. Hamiltonian Monte Carlo (HMC), entwickelt wurde. Es bietet eine Reihe von Funktionen, die das Definieren dieser Modelle erleichtern, insbesondere für Bayesian-Statistiken (ähnlich wie Stan).

greta lets us build statistical models interactively in R, and then sample from them by MCMC.
https://greta-dev.github.io/greta/get_started.html#how_greta_works

Googles TensorFlow wird als Backend zur Berechnung der definierten Modelle verwendet. Da TensorFlow für große Modelle optimiert wurde und auch Multi-Core- und GPU-Berechnungen unterstützt, ist greta besonders effizient und nützlich für die Arbeit mit komplexen Modellen. Da TensorFlow ursprünglich kein R-Paket ist, verwendet greta die reticulate und tensorflow Pakete von RStudio, um eine Verbindung mit dem TensorFlow-Backend herzustellen. Auf diese Weise können wir mit allen TensorFlow-Funktionen direkt von R aus arbeiten.

Wie funktioniert greta?

Dies ist das minimale Arbeitsbeispiel des linear gemischten Modells, das wir mit greta entwickelt haben und auf einem Beispiel eines TensorFlow Probability Jupyter Notebooks basiert. Das vollständige Beispiel mit Erklärungen ist hier zu finden.


library(greta)

# data
N <- letters[1:8]
treatment_effects <- c(28.39, 7.94, -2.75 , 6.82, -0.64, 0.63, 18.01, 12.16)
treatment_stddevs <- c(14.9, 10.2, 16.3, 11.0, 9.4, 11.4, 10.4, 17.6)

# variables and priors
avg_effect <- normal(mean = 0, sd = 10)
avg_stddev <- normal(5, 1)
school_effects_standard <- normal(0, 1, dim = length(N))
school_effects <- avg_effect + exp(avg_stddev) * school_effects_standard

# likelihood
distribution(treatment_effects) <- normal(school_effects, treatment_stddevs)

# defining the hierarchical model
m <- model(avg_effect, avg_stddev, school_effects_standard)

## greta model
plot(m)

Der Haupttyp von Objekten, mit denen in greta gearbeitet wird, ist der greta Array. Man kann greta Arrays neu erstellen oder andere R-Objekte, wie Data Frames, in greta Arrays konvertieren. greta Arrays sind im Grunde eine Liste mit einem Element: ein R6-Klassen-Objekt mit einem Knoten + Daten, Operationen oder Variablen. Auf diese Weise nutzt greta die graphenbasierte Organisation der Modellierung. Jeder Knoten in unserem Modellgraphen stammt von einem greta Array und verbindet somit Knoten, Variablen, Daten und Operationen, um einen gerichteten azyklischen Graphen (DAG) zu erzeugen, der das Modell definiert, wenn die model() Funktion aufgerufen wird.

TensorFlow Probability

TensorFlow Probability ist kein Teil des TensorFlow-Kernpakets, weshalb wir das tensorflow-R-Paket nicht nutzen konnten. Stattdessen haben wir jedoch das reticulate-Paket genutzt, um Python-Module (alias Bibliotheken) in R zu importieren und dort zu benutzen. Auf diese Weise konnten wir die ursprünglichen Funktionen aus der tensorflow_probability Python-Bibliothek in R verwenden.
Zum Beispiel konnten wir so mit den Edward2-Funktionalitäten von TensorFlow Probability arbeiten.

Edward is a Python library for probabilistic modeling, inference, and criticism. It is a testbed for fast experimentation and research with probabilistic models, ranging from classical hierarchical models on small data sets to complex deep probabilistic models on large data sets. Edward fuses three fields: Bayesian statistics and machine learning, deep learning, and probabilistic programming. […] Edward is built on TensorFlow. It enables features such as computational graphs, distributed training, CPU/GPU integration, automatic differentiation, and visualization with TensorBoard. http://edwardlib.org/

Dankesworte am Schluss

Ein großes Dankeschön geht an mein tolles greta-Team und an rOpenSci – insbesondere an Stefanie Butland – für die Organisation eines so wunderbaren Events!
Ebenfalls geht ein großes Danke an alle Sponsoren, die es mir ermöglicht haben, in den pazifischen Nordwesten zu fliegen und an der Unkonferenz teilzunehmen!

Dieser Artikel ist im Original auf meinem privaten Blog erschienen.

Shirin Glander

Shirin hat in der Bioinformatik promoviert. Sie wendet Analyse- & Visualisierungsmethoden verschiedenster Bereiche an – z.B. Machine Learning, klassische Statistik, Textanalyse, etc. – um Informationen aus Daten zugänglich und nutzbar zu machen.

Artikel von Shirin Glander

Allgemein

Simple Deep Learning mit Amazon SageMaker

Künstliche Intelligenz

Vergleich von Text-to-Speech-Systemen

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.