• OPen Source Tools Für Künstliche Intelligenz & Maschinelles Lernen

  • Kategorisierung

    Welche Arten von Frameworks und Bibliotheken existieren?

    Machine Learning

    Machine Learning Frameworks stellen Implementierungen einer Vielzahl von Algorithmen bereit. Außerdem unterstützen sie in der Vorbereitung der Daten und der Modellauswahl.

    Deep Learning

    Im Gegensatz zu den umfassenderen Machine Learning Frameworks konzentrieren sich Deep Learning Bibliotheken auf das Trainieren der sogenannten Neuronalen Netze.

    Hilfsbibliotheken

    Diese Bibliotheken unterstützen den Entwicklungsprozess statistischer Modelle, z.B. durch Bereitstellung von Entwicklungsumgebungen oder die Visualisierung von Ergebnissen.

  • Bewertungskriterien

    Welche Merkmale sind ausschlaggebend?

    Funktionsumfang

    Welche Funktionalitäten werden bereitgestellt?

    Unter diesem Punkt werden folgende Merkmale betrachtet:

    • Abdeckung der einzelnen Phasen des ML-Prozesses (Vorbereitung der Daten, Modellentwicklung, Deployment des finalen Modells)
    • Anzahl implementierter Algorithmen
    • Visualisierung des Trainingsprozesses bzw. der Ergebnisse
    • Umgang mit großen Datensätzen, z.B. Möglichkeit des verteilten Trainings

    Benutzerfreundlichkeit

    Wie schnell können erste Ergebnisse erzielt werden?

    Folgende Gesichtspunkte werden in die Bewertung einbezogen:

    • Bereitgestellte Abstraktionen für effizientes Prototyping
    • Unterstütze Programmiersprachen
    • Portabilität der trainierten Modelle auf mobile Endgeräte und andere Frameworks
    • Open Source Lizenz (relevant hinsichtlich kommerzieller Nutzung)

    Community & Support

    Wie viel Unterstützung erfährt der Anwender?

    Relevante Merkmale hinsichtlich der Unterstützung des Anwenders:

    • Unterstützende Organisationen
    • Größe und Aktivität der Communities auf relevanten Plattformen, z.B. GitHub & Stack Overflow
    • Reifegrad und Stabilität der API
  • Zusammenfassung

    Welche Tools sind für Ihren Anwendungsfall am besten geeignet?

    Entwicklungsumgebung

    Python ist die gängigste Programmiersprache im Bereich der Künstlichen Intelligenz. Für die Umsetzung von KI-Projekten ist es somit fast unumgänglich, sich in die gängigsten Bibliotheken aus dem Bereich Data Science einzuarbeiten. Zu nennen sind hier NumPy für wissenschaftliche Berechnungen, Pandas für die Manipulation strukturierter Daten und Matplotlib zur Datenvisualisierung. Als Entwicklungsumgebung empfehlen wir Jupyter Notebooks, um Ihre Arbeit mittels multimedialer Dokumentation nachvollziehbar und replizierbar zu machen.

    Machine Learning

    Scikit-learn ist das umfassendste Framework im Bereich des Maschinellen Lernens. Es implementiert eine Vielzahl an Algorithmen und verwendet eine anwenderfreundliche API, was wiederum schnelles Prototyping ermöglicht. Sollten Sie auf einer bestehenden Hadoop- oder Java-Umgebung aufbauen, kann das Apache Spark Framework eine valide Alternative zu Sciki-learn darstellen.

    Deep Learning

    Der Aufschwung im Bereich Deep Learning hat eine Vielzahl von Frameworks hervorgebracht, die das Trainieren von neuronalen Netzen ermöglichen. Da diese Modelle zumeist auf unstrukturierten Daten wie Bildern oder Text arbeiten, sind die meisten Bibliotheken mit Funktionalität zum Preprocessing dieser Datentypen ausgestattet. Keras und PyTorch sind leichtgewichtige Frameworks, die mittels anwenderfreundlichen Abstraktionen schnelle Ergebnisse liefern können. Im Gegensatz dazu ist TensorFlow das umfassendste Framework und erleichtert den operativen Einsatz der trainierten Modelle. In Microsoft-Umgebungen (z.B. der Azure Cloud) hat sich CNTK als valide Alternative bewährt.

  • Machine Learning Tools

    Scikit-learn

    Funktionsumfang

    • Preprocessing und Feature Extraction für numerische Daten und Text
    • Bereitstellung einer Vielzahl an Algorithmen aus den Bereichen Klassifizierung (z.B. Support Vector Machine, Random Forest), Regression (z.B. Ridge Regression), Clustering (z.B. k-Means) und Dimensionality Reduction (z.B. PCA)
    • Unterstützung bei der Optimierung von Parametern und Modellauswahl, z.B. Grid Search oder Cross Validation
    • Effizienter Umgang mit Datensätzen unterschiedlicher Größe
    • Anbindung an Visualisierungsbibliotheken (z.B. Matplotlib) einfach möglich
    • Implementierung von Pipelines ermöglicht Vorbereitung des operativen Einsatzes

    Benutzerfreundlichkeit

    • Programmiersprache: Python
    • Abstraktionen erleichtern den Einstieg für Anfänger
    • BSD Lizenz ermöglicht kommerzielle Nutzung

    Community & Support

    • Sehr aktive Communities auf GitHub und Stack Overflow
    • Marktreife gegeben, initialer Release bereits im Jahr 2007

    Apache Spark MLlib

    Funktionsumfang

    • Teil der Apache Spark Plattform für analytische Applikationen und Verarbeitung großer Datensätze
    • Implementierung verbreiteter Preprocessing-Funktionalitäten, z.B. Normalisierung und Standardisierung
    • Bereitstellung einer Vielzahl an Algorithmen aus den Bereichen Klassifizierung (z.B. Logistische Regression, Random Forest), Regression (z.B. Generalized Linear Regression), Empfehlungssysteme und Clustering (z.B. k-Means)
    • Unterstützung bei der Optimierung von Parameters und Modellspeicherung
    • Konstruktion von Pipelines für operative Einsatzzwecke

    Benutzerfreundlichkeit

    • Programmiersprachen: Java, Scala, Python, R
    • Abstraktionen erleichtern den Einstieg für Anfänger
    • Apache Lizenz ermöglicht kommerzielle Nutzung

    Community & Support

    • Sehr aktive Communities auf Stack Overflow
    • Marktreife gegeben, initialer Release im Jahr 2014
    • Unterstützt durch die Apache Software Foundation
  • Deep Learning Tools

    Keras

    Funktionsumfang

    • Vorverarbeitung von Bild- und Textdaten
    • Implementierung aktueller Netzwerkarchitekturen, Regularisierungsmechanismen und Optimierungsverfahren
    • Bereitstellung vortrainierter State-of-the-Art Modelle, z.B. für Bilderkennung
    • Fungiert als High-Level-API für verschiedene Backends, u.a. TensorFlow und CNTK
    • Trainingsprozess kann mittels Callback-Funktionen kontrolliert werden, z.B. Visualisierung mittels TensorBoard
    • GPU-Unterstützung
    Benutzerfreundlichkeit
    • Programmiersprache: Python, R
    • Intuitive API ermöglicht effizientes Prototyping
    • Trainierte Modelle können durch TensorFlow-Integration für operativen Einsatz vorbereitet werden
    • Deployment auf vielen Plattformen möglich, z.B. iOS, Android, Java Virtual Machine, Browser
    • MIT Lizenz ermöglicht kommerzielle Nutzung
    Community & Support
    • Hoher Reifegrad, initialer Release 2015
    • Unterstützung seitens Google
    • Sehr aktive Communities auf GitHub und Stack Overflow

    Microsoft Cognitive Toolkit (CNTK)

    Funktionsumfang

    • Vorverarbeitung von Bild- und Textdaten
    • Implementierungen für Netzwerkarchitekturen wie CNNs oder RNNs
    • Gängige Regularisierungsmechanismen und Optimierungsalgorithmen
    • GPU-Unterstützung

    Benutzerfreundlichkeit

    • Programmiersprachen: Python, C++, C#
    • Optimiert für Deployment auf Microsoft Azure
    • Trainierte Modelle sind über ONNX-Standard in andere Frameworks übertragbar
    • MIT Lizenz ermöglicht kommerzielle Nutzung

    Community & Support

    • Hoher Reifegrad, initialer Release 2016
    • Entwickelt von Microsoft
    • Aktive Communities auf GitHub und Stack Overflow

    PyTorch

    Funktionsumfang

    • Paket torchvision ermöglicht Vorverarbeitung von Bilddaten
    • Bereitstellung von Implementierungen gängiger Netzwerkarchitekturen (CNN, RNN) und Optimierungsverfahren
    • Vortrainierte Modelle für Bilderkennung
    • GPU-Unterstützung
    Benutzerfreundlichkeit
    • Programmiersprache: Python
    • Einfache Bedienbarkeit mittels Abstraktionen für effizientes Prototyping
    • Imperative Programmierung vereinfacht Debugging
    • Trainierte Modelle sind über ONNX-Standard in andere Frameworks übertragbar
    • BSD Lizenz erlaubt kommerzielle Nutzung 
    Community & Support
    • Frühe Entwicklungsphase, initialer Release 2016
    • Unterstützung seitens Facebook
    • Sehr aktive Communities auf GitHub und Stack Overflow

    TensorFlow

    Funktionsumfang

    • Preprocessing von unstrukturierten Daten wie Bildern und Text mittels Datenpipelines
    • Unterstützung aller gängigen Architekturen von Neuronalen Netzen, z.B. CNNs und RNNs
    • Visualisierung des Trainingsprozesses mittels TensorBoard
    • TensorFlow ermöglicht verteiltes Training von Modellen sowie Inferenz
    • Bereitstellung einer API für das Deployment der gelernten Modelle
    • GPU- & TPU-Unterstützung

    Benutzerfreundlichkeit

    • Programmiersprachen: Python, C, C++, Go, JavaScript
    • Ursprünglich hohe Einstiegsbarrieren, Abstraktionen für Anfänger erst seit Kurzem enthalten (z.B. Integration von Keras) 
    • Browser-basierte Modellentwicklung möglich mittels JavaScript-Implementierung
    • Lite-Version für Inferenz auf mobilen Endgeräten
    • Apache Lizenz ermöglicht kommerzielle Nutzung

    Community & Support

    • Bereit für operativen Einsatz
    • Entwickelt von Google
    • Sehr aktive Communities auf GitHub und Stack Overflow
  • Hilfsbibliotheken

    Jupyter Notebook

    Das Jupyter Notebook ist eine Webanwendung, die das Erstellen und Teilen von Dokumenten ermöglicht, welche Programmcode, Formeln, Visualisierungen und erklärenden Text beinhalten können. Im Kontext von Künstlicher Intelligenz wird das Tool zumeist eingesetzt, um erzielte Resultate nachvollziehbar und replizierbar zu machen. Die Anwendung läuft auf allen gängigen Betriebssystemen, einzige Voraussetzung ist eine installierte Python-Umgebung. Notebooks existieren für viele verschiedene Programmiersprachen, z.B. Python, Julia, R und Scala. Die Entwicklungsumgebung kann durch eine Reihe von Plugins erweitert werden, z.B. um weitere Funktionalität in Form von Widgets einzubinden. Um die Anwendung von Notebooks schnell testen zu können, stellen Jupyter oder Google vorinstallierte Umgebungen bereit.

     

    Mögliche Alternativen:

    NumPy

    NumPy ist eine Python-Bibliothek für wissenschaftliche Berechnungen, die als Grundlage vieler Machine Learning- und Deep Learning-Frameworks dient. Sie bietet effiziente Implementierungen für den Umgang mit multidimensionalen Matrizen, sogenannten Tensoren, die im Kontext des Maschinellen Lernens von immenser Bedeutung sind. Anwender sollten mit den gängigsten Operationen vertraut sein, z.B. der Erstellung und Indexierung von Matrizen sowie den am häufigsten verwendeten Rechenoperationen. Dies hilft insbesondere dabei, Outputs der gängigen Frameworks zu interpretieren.

     

    Mögliche Alternativen:

    • In vielen Programmiersprachen (z.B. R, Scala) können Arrays per Definition mehr als zwei Dimensionen besitzen. Eine spezialisierte Bibliothek (z.B. tensorr) bietet sich an, wenn z.B. effizientere Speicherung ein Auswahlkriterium darstellt.

    Pandas

    Pandas wird im Kontext des Maschinellen Lernens zumeist in den Phasen der Datenvorbereitung benutzt. Die Bibliothek ermöglicht den einfachen Umgang mit strukturierten Daten, z.B. Datensätzen aus relationalen Datenbanken. Beispielhafte Anwendungsfälle sind das Einlesen von Daten aus CSV-Dateien, deskriptive Analyse einzelner Spalten oder die Generierung neuer Features für statistische Modelle. Auch die schnelle Erstellung von Diagrammen auf Basis der vorliegenden Daten ist ein Vorteil von Pandas. Bei der Weiterverarbeitung von Rohdaten können Zwischenergebnisse in einem optimierten Dateiformat abgespeichert werden.

     

    Mögliche Alternativen:

    Matplotlib

    Matplotlib hilft bei der Erstellung von Diagrammen zur Visualisierung von Datensätzen oder Ergebnissen. Die Bibliothek kann sowohl mit strukturierten (z.B. aus relationalen Datenbanken) als auch mit unstrukturierten Daten (z.B. Bildern) umgehen und bietet eine Vielzahl an möglichen Diagrammen. Bereitgestellt werden u.a. Scatterplots, Histogramme oder Spektren (siehe Beispiele). Die Darstellung von Details wie Markern oder Legenden ist konfigurierbar, wobei die Syntax an die Programmiersprache MATLAB angelehnt ist.

     

    Mögliche Alternativen: