Kiano – visuelle Exploration mit Deep Learning

Kiano – eine iOS-App zur visuellen Exploration und Suche der eigenen Fotos.

Menschen haben kein Problem, komplexe Bilder zu verstehen, es fällt ihnen aber schwer, gezielt Bilder in großen Bildersammlungen (wieder) zu finden. Da die Anzahl von Bildern, insbesondere auch auf Smartphones zusehends zunimmt – mehrere tausend Bilder pro Gerät sind keine Seltenheit, wird die Suche nach bestimmten Bildern immer schwieriger. Ist bei einem gesuchten Foto dessen Aufnahmedatum unbekannt, so kann es sehr lange dauern, bis es gefunden ist. Werden dem Nutzer zu viele Bilder auf einmal präsentiert, so geht der Überblick schnell verloren. Aus diesem Grund besteht eine typische Bildsuche heutzutage meist im endlosen Scrollen über viele Bildschirmseiten mit langen Bilderlisten.

Dieser Artikel stellt das Prinzip und die Funktionsweise der neuen iOS-App “Kiano” vor, die es Nutzern ermöglicht, alle ihre Bilder explorativ mittels visuellem Browsen zu erkunden. Der Name “Kiano” steht hierbei für “Keep Images Arranged & Neatly Organized”. Mit der App ist es außerdem möglich, zu einem Beispielbild gezielt nach ähnlichen Fotos auf dem Gerät zu suchen.

Um Bilder visuell durchsuch- und sortierbar zu machen, werden sogenannte Merkmalsvektoren bzw. Featurevektoren verwendet, die Aussehen und Inhalt von Bildern kompakt repräsentieren können. Zu einem Bild lassen sich ähnliche Bilder finden, indem die Bilder bestimmt werden, deren Featurevektoren eine geringe Distanz zum Featurevektor des Suchbildes haben.

Werden Bilder zweidimensional so angeordnet, dass die Featurevektoren benachbarter Bilder sehr ähnlich sind, so erhält man eine visuell sortierte Bilderlandkarte. Bei einer visuell sortierten Anordnung der Bilder fällt es Menschen deutlich leichter, mehr Bilder gleichzeitig zu erfassen, als dies im unsortierten Fall möglich wäre. Durch die graduelle Veränderung der Bildinhalte wird es möglich, über diese Karte visuell zu navigieren.

Generierung von Featurevektoren zur Bildbeschreibung

Convolutional Neural Networks (CNNs) sind nicht nur in der Lage, Bilder mit hoher Genauigkeit zu klassifizieren, d.h. zu erkennen, welches Objekt – entsprechend einer Menge von gelernten Objektkategorien auf einem Bild zu sehen ist, die Aktivierungen der Netzwerkschichten lassen sich auch als universelle Featurevektoren zur Bildbeschreibung nutzen. Während die vorderen Netzwerkschichten von CNNs einfache visuelle Bildmerkmale wie Farben und einfache Muster detektieren, repräsentieren die Ausgangsschichten des Netzwerks die semantischen Informationen bezüglich der gelernten Objektkategorien. Die Zwischenschichten des Netzwerks sind weniger von den Objektkategorien abhängig und können somit als generelle abstrakte Repräsentationen des Inhalts der Bilder angesehen werden. Hierbei ist es möglich, bereits fertig trainierte Klassifikationsnetzwerke für die Featureextraktion wiederzuverwenden. In der Visual Computing Gruppe der HTW Berlin wurden umfangreiche Evaluierungen durchgeführt, um zu bestimmen, welche Netzwerkschichten von welchen CNNs mit welchen zusätzlichen Transformationen zu verwenden sind, um aus Netzwerkaktivierungen Feature-Vektoren zu erzeugen, die sehr gut für die Suche nach beliebigen Bildern geeignet sind.

Beste Ergebnisse hinsichtlich der Suchgenauigkeit (der Mean Average Precision) wurden mit einem Deep Residual Learning Network (ResNet-200) erzielt. Die 2048 Aktivierungen vor dem vollvernetzten letzten Layer werden als initiale Featurevektoren verwendet, wobei sich die Suchgenauigkeit durch eine L1-Normierung, gefolgt von einer PCA-Transformation (Principal Component Analysis) sogar noch verbessern lässt. Hierdurch ist es möglich, die Featurevektoren auf eine Größe von nur 64 Bytes zu reduzieren. Leider ist die rechnerische Komplexität der Bestimmung dieser hochwertigen Featurevektoren zu groß, um sie auf mobilen Geräten verwenden zu können. Eine gute Alternative stellen die Mobilenets dar, die sich durch eine erheblich reduzierte Komplexität auszeichnen. Als Kompromiss zwischen Klassifikationsgenauigkeit und Komplexität wurde für die Kiano-App das Mobilenet_v2_0.5_128 verwendet. Die mit diesem Netzwerk bestimmten Featurevektoren wurden ebenfalls auf eine Größe von 64 Bytes reduziert.

Die aus CNNs erzeugten Featurevektoren sind gut für die Suche nach Bildern mit ähnlichem Inhalt geeignet. Für die Suche nach Bilder, mit ähnlichen visuellen Eigenschaften (z.B. die auftretenden Farben oder deren örtlichen Verteilung) sind diese Featurevektoren nur bedingt geeignet. Hierfür eignen sich klassische sogenannte “Low-Level”-Featurevektoren besser. Da für eine ansprechende und leicht erfassbare Bildsortierung auch eine Übereinstimmung dieser visuellen Bildattribute wichtig ist, kommt bei Kiano ein weiterer Featurevektor zum Einsatz, mit dem sich diese “primitiven” visuellen Bildattribute beschreiben lassen. Dieser Featurevektor hat eine Größe von 50 Bytes. Bei Kiano kann der Nutzer in den Einstellungen wählen, ob bei der visuellen Sortierung und Bildsuche größerer Wert auf den Bildinhalt oder die visuelle Erscheinung eines Bildes gelegt werden soll.

Visuelle Bildsortierung

Werden Bilder entsprechend ihrer Ähnlichkeiten sortiert angeordnet, so können mehrere hundert Bilder gleichzeitig wahrgenommen bzw. erfasst werden. Dies hilft, Regionen interessanter Bildern leichter zu erkennen und gesuchte Bilder schneller zu entdecken. Die Möglichkeit, viele Bilder gleichzeitig präsentieren zu können, ist neben Bildverwaltungssystemen besonders auch für E-Commerce-Anwendungen interessant.

Herkömmliche Dimensionsreduktionsverfahren, die hochdimensionale Featurevektoren auf zwei Dimensionen projizieren, sind für die Bildsortierung ungeeignet, da sie die Bilder so anordnen, dass Lücken und Bildüberlappungen entstehen. Sollen Bilder sortiert auf einem dichten regelmäßigen 2D-Raster angeordnet werden, kommen als Verfahren nur selbstorganisierende Karten oder selbstsortierende Karten in Frage.

Eine selbstorganisierende Karte (Self Organizing Map / SOM) ist ein künstliches neuronales Netzwerk, das durch unbeaufsichtigtes Lernen trainiert wird, um eine niedrigdimensionale, diskrete Darstellung der Daten des Eingangsraums als sogenannte Karte (Map) zu erzeugen. Im Gegensatz zu anderen künstlichen neuronalen Netzen, werden SOMs nicht durch Fehlerkorrektur, sondern durch ein Wettbewerbsverfahren trainiert, wobei eine Nachbarschaftsfunktion verwendet wird, um die lokalen Ähnlichkeiten der Eingangsdaten zu bewahren.

Eine selbstorganisierende Karte besteht aus Knoten, denen einerseits ein Gewichtsvektor der gleichen Dimensionalität wie die Eingangsdaten und anderseits eine Position auf der 2D-Karte zugeordnet sind. Die SOM-Knoten sind als zweidimensionales Rechteckgitter angeordnet. Das vom der SOM erzeugte Mapping ist diskret, da jeder Eingangsvektor einem bestimmten Knoten zugeordnet wird. Zu Beginn werden die Gewichtsvektoren aller Knoten mit Zufallswerten initialisiert. Wird ein hochdimensionaler Eingangsvektor in das Netz eingespeist, so wird dessen euklidischer Abstand zu allen Gewichtsvektoren berechnet. Der Knoten, dessen Gewichtsvektor dem Eingangsvektor am ähnlichsten ist, wird als Best Matching Unit (BMU) bezeichnet. Die Gewichte des BMU und seiner auf der Karte örtlich benachbarten Knoten werden an den Eingangsvektor angepasst. Dieser Vorgang wird iterativ wiederholt. Das Ausmaß dieser Anpassung nimmt im Laufe der Iterationen und der örtlichen Entfernung zum BMU-Knoten ab.

Um SOMs an die Bildsortierung anzupassen, sind zwei Modifikationen notwendig. Jeder Knoten darf nicht von mehr als einem Featurevektor (der ein Bild repräsentiert) ausgewählt werden. Eine Mehrfachauswahl würde zu einer Überlappung der Bilder führen. Aus diesem Grund muss die Anzahl der SOM-Knoten mindestens so groß wie die Anzahl der Bilder sein. Eine sinnvolle Erweiterung einer SOM verwendet ein Gitter, bei dem gegenüberliegende Kanten verbunden sind. Werden diese Torus-förmigen Karten für große SOMs verwendet, kann der Eindruck einer endlosen Karte erzeugt werden, wie es in Kiano umgesetzt ist. Ein Problem der SOMs ist ihre hohe rechnerische Komplexität, die quadratisch mit der Anzahl der zu sortierenden Bilder wächst, wodurch die maximale Anzahl an zu sortierenden Bildern beschränkt wird. Eine Lösung stellt eine selbstsortierende Karte (Self Sorting Map / SSM) dar, deren Komplexität nur n log(n) beträgt.

Selbstsortierende Karten beginnen mit einer zufälligen Positionierung der Bilder auf der Karte. Diese Karte wird dann in 4×4-Blöcke aufgeteilt und für jeden Block wird der Mittelwert der zugehörigen Featurevektoren bestimmt. Als nächstes werden aus 2×2 benachbarten Blöcken jeweils vier korrespondierende Bild-Featurevektoren untersucht und ihre zugehörigen Bilder gegebenenfalls getauscht. Aus den 4! = 24 Anordnungsmöglichkeiten wird diejenige gewählt, die die Summe der quadrierten Differenzen zwischen den jeweiligen Featurevektoren und den Featuremittelwerten der Blöcke minimiert. Nach mehreren Iterationen wird jeder Block in vier kleinere Blöcke halber Breite und Höhe aufgeteilt und wiederum in der beschriebenen Weise überprüft, wie die Bildpositionen dieser kleineren Blöcke getauscht werden sollten. Dieser Vorgang wird solange wiederholt, bis die Blockgröße auf 1×1 Bild reduziert ist.

In der Visual-Computing Gruppe der HTW Berlin wurde untersucht, wie die Sortierqualität des SSM-Algorithmus verbessert werden kann. Anstatt die Mittelwerte der Featurevektoren als konstanten Durchschnittsvektor für den gesamten Block zu berechnen, verwenden wir gleitende Tiefpassfilter, die sich effizient mittels Integralbildern berechnen lassen. Hierdurch entstehen weichere Übergänge auf der sortierten Bilderkarte. Weiterhin wird die Blockgröße nicht für mehrere Iterationen konstant gehalten, sondern kontinuierlich zusammen mit dem Radius des Filterkernels reduziert. Durch die Verwendung von optimierten Algorithmen von “Linear Assignment” Algorithmen wird es weiterhin möglich, den optimalen Positionstausch nicht nur für jeweils vier Featurevektoren bzw. Bildern sondern für eine deutlich größere Anzahl zu überprüfen. All diese Maßnahmen führen zu einer deutlich verbesserten Sortierungsqualität bei gleicher Komplexität.

Effiziente Umsetzung für iOS

Wie so oft, liegen die softwaretechnischen Herausforderungen an ganz anderen Stellen, als man zunächst vermutet. Für eine effiziente Implementierung der zuvor beschriebenen Algorithmen, insbesondere der SSM, stellte es sich heraus, dass die Programmiersprache Swift, in der iOS Apps normaler Weise entwickelt werden, erheblich mehr Rechenzeit benötigt, als eine Umsetzung in der Sprache C. Im Zuge der stetigen Weiterentwicklung von Swift und dessen Compiler mag sich die Lücke zu C zwar immer weiter schließen, zum Zeitpunkt der Umsetzung war die Implementierung in C aber um einen Faktor vier schneller als in Swift. Hierbei liegt die Vermutung nahe, dass der Zugriff auf und das Umsortieren von Featurevektoren als native C-Arrays deutlich effektiver passiert, als bei der Verwendung von Swift-Arrays. Da Swift-Arrays Value-Type sind, kommt es in Swift vermutlich zu unnötigen Kopieroperationen der Fließkommazahlen in den einzelnen Featurevektoren.

Die Berechnung des Mobilenet-Anteils der Featurevektoren konnte sehr komfortabel mit Apples CoreML Machine Learning Framework umgesetzt werden. Hierbei ist zu beachten, dass es sich wie oben beschrieben, nicht um eine Klassifikation handelt, sondern um das Abgreifen der Aktivierungen einer tieferen Schicht. Für Klassifikationen findet man praktisch sofort nutzbare Beispiele, für den Zugriff auf die Aktivierungen waren jedoch Anpassungen notwendig, die bei der Portierung eines vortrainierten Mobilenet nach CoreML vorgenommen wurden. Das stellte sich als erheblich einfacher heraus, als der Versuch, auf die tieferen Schichten eines Klassifizierungsnetzes in CoreML zuzugreifen.

Für die Verwaltung der Bilder, ihrer Featurevektoren und ihrer Position in der sortieren Karte wird in Kiano eine eigene Datenstruktur verwendet, die es zu persistieren gilt. Es ist dem Nutzer ja nicht zuzumuten, bei jedem Start der App auf die Berechnung aller Featurevektoren zu warten. Die Strategie ist es hierbei, bereits bekannte Bilder zu identifizieren und deren Features nur dann neu zu berechnen, falls sich das Bild verändert hat. Die über Appels Photos Framework zur Verfügung gestellten local Identifier identifizieren dabei die Bilder. Veränderungen werden über das Modifikationsdatum eines Bildes detektiert. Die größte Herausforderung ist hierbei das Zeichnen der Karte. Die Benutzerinteraktion soll schnell und flüssig erscheinen, auf Animationen wie das Nachlaufen der Karte beim Verschieben möchte man nicht verzichten. Die Umsetzung geschieht hierbei nicht in OpenGL ES, welches ab iOS 12 ohnehin als deprecated bezeichnet wird. Auf der anderen Seite wird aber auch nicht der „Standardweg“ des Überschreibens der draw-Methode einer Ableitung von UIView gewählt. Letztes führt bekanntlich zu Performanceeinbußen. Insbesondere deshalb, weil das System sehr oft Backing-Images der Ansichten erstellt. Um die Kontrolle über das Neuzeichnen zu behalten, wird in Kiano ein eigenes Backing-Image implementiert, das auf Ebene des Core Animation Frameworks dem View als Layer zugweisen wird. Diesem Layer kann dann sehr komfortabel eine 3D-Transformation zugewiesen werden und man profitiert von der GPU-Beschleunigung, ohne OpenGL ES direkt verwenden zu müssen.

 

Trotz der Verwendung eines Core Animation Layers ist das Zeichnen der Karte immer noch sehr zeitaufwendig. Das liegt an der Tatsache, dass je nach Zoomstufe tausende von Bildern darzustellen sind, die alle über das Photos Framework angefordert werden müssen. Das Nadelöhr ist dann weniger das Zeichnen, als die Zeit, die vergeht, bis einem das Bild zur Verfügung gestellt wird. Diese Vorgänge sind praktisch alle nebenläufig. Zur Erinnerung: Ein Foto kann in der iCloud liegen und zum Zeitpunkt der Anfrage noch gar nicht (oder noch nicht in geeigneter Auflösung) heruntergeladen sein. Netzwerkbedingt gibt es keine Vorhersage, wann oder ob überhaupt das Bild zur Verfügung gestellt wird. In Kiano werden zum einen Bilder in sehr kleiner Auflösung gecached, zum anderen wird beim Navigieren auf der Karte im Hintergrund ein neues Kartenteil als Backing-Image vorbereitet, das dem Nutzer nach Fertigstellung angezeigt wird. Die vorberechneten Kartenteile sind dabei drei Mal so breit und drei Mal so hoch wie das Display, so dass man diese „Hintergrundaktivität“ beim Verschieben der Karte in der Regel nicht bemerkt. Nur wenn die Bewegung zu schnell wird oder die Bilder zu langsam „geliefert“ werden, erkennt man schwarze Flächen, die sich dann verzögert mit Bildern füllen.

Vergleichbares passiert beim Hineinzoomen in die Karte. Der Nutzer sieht zunächst eine vergrößerte und damit unscharfe Version des aktuellen Kartenteils, während im Hintergrund ein Kartenteil in höherer Auflösung und mit weniger Bildern vorbereitet wird. In der Summe geht Kiano hier einen Kompromiss ein. Die Pixeldichte der Geräte würde eine schärfere Darstellung der Bilder auf der Karte erlauben. Allerdings müssten dann die Bilder in so höher Auflösung angefordert werden, dass eine flüssige Kartennavigation nicht mehr möglich wäre. So sieht der Nutzer in der Regel eine Karte mit Bildern in halber Auflösung gemessen an den physikalischen Pixeln seines Displays.

Ein anfangs unterschätzter Arbeitsaufwand bei der Umsetzung von Kiano liegt darin begründet, dass sich die Photo Library des Nutzers jederzeit während der Benutzung der App verändern kann. Bilder können durch Synchronisationen mit der iCloud oder mit iTunes verschwinden, sich in andere Alben bewegen, oder neue können auftauchen. Der Nutzer kann Bildschirmfotos machen. Das Photos Framework stellt komfortable Benachrichtigungen für solche Events zur Verfügung. Der Implementierung obliegt es dabei aber herauszubekommen, ob die Karte neu zu sortieren ist oder nicht, ob das gerade anzeigte Bild überhaupt noch existiert und was zu tun ist, wenn es verschwunden ist.

Zusammenfassend kann man feststellen, dass natürlich die Umsetzung der Algorithmen und die Darstellung dessen auf einer Karte zu den spannendsten Teilen der Arbeiten an Kiano zählen, dass aber der Umgang mit einer sich dynamisch ändernden Datenbasis nicht unterschätzt werden sollte.

Autoren

Prof. Dr. Klaus JungProf. Dr. Klaus Jung studierte Physik an der TU Berlin, wo er im Bereich der Mathematischen Physik promovierte. Bis 2008 arbeitete er als Leiter F&E bei der Firma LuraTech im Bereich der Dokumentenverarbeitung und Langzeitarchivierung. In der JPEG-Gruppe leitete er die deutsche Delegation bei der Standardisierung von JPEG2000. Seit 2008 ist er Professor für Medieninformatik an der HTW Berlin mit dem Schwerpunkt „Visual Computing“.

Prof. Dr. Kai Uwe Barthel

Prof. Dr. Kai Uwe Barthel studierte Elektrotechnik an der TU Berlin, bevor er Assistent am Institut für Nachrichtentechnik wurde und im Bereich Bildkompression promovierte. Seit 2001 ist er Professor der HTW Berlin. Hauptforschungsbereiche sind visuelle Bildsuche und automatisches Bildverstehen. 2009 gründete er die pixolution GmbH www.pixolution.de, ein Unternehmen, das Technologien für die visuelle Bildsuche anbietet.

Data Leader Days 2018

Daten bilden das Fundament der digitalen Transformation. Die richtige Nutzung von Daten entwickelt sich daher zu einer Kernkompetenz und macht im Wettbewerb den Unterschied. Dies gilt sowohl für ganz Unternehmen als auch für einzelne Mitarbeiter, die mit Datennutzung ihre Karriere vorantreiben können.

Erfahrungen von Pionieren und führenden Anwenderunternehmen sind dafür unverzichtbar. Mit den Data Leader Days am 14. und 15. November 2018 in der Digital-Hauptstadt Berlin haben Sie die Chance, direkt von Spitzenkräften aus der Wirtschaft zu lernen und wichtige Impulse für Ihre digitale Weiterentwicklung zu erhalten.

Die Data Leader Days sind das Entscheider-Event für die Datenwirtschaft, das den Schwerpunkt auf die tatsächlichen Nutzer und Anwender-Unternehmen legt. Die Fachkonferenz hat sich seit Gründung im Jahr 2016 als eines der exklusivsten Events rund um die Themen Big Data und künstliche Intelligenz etabliert. In diesem Jahr werden die Data Leader Days erstmalig auf zwei Tage mit unterschiedlichen Schwerpunkten erweitert:

14. November 2018: Commercial & Finance Data

15. November 2018: Industrial & Automotive Data

Agenda

Die Agenda ist stets aktuell direkt auf www.dataleaderdays.com zu finden.

Sponsoren

Speaker der Data Leader Days 2018

 

 

Anmeldung

Die Data Leader Days finden dieses Jahr zum dritten Mal statt und haben sich zur Pflichtveranstaltung für Geschäftsführer, Führungskräfte und Professionals aus den Bereichen IT, Business Intelligence und Data Analytics etabliert und empfehlen sich ebenfalls für Leiter der Funktionsbereiche Einkauf, Produktion, Marketing und Finance, die das hier brachliegende Potenzial ausschöpfen wollen.

Zum Event anmelden können sich Teilnehmer direkt auf www.dataleaderdays.com oder via Xing.com (Klick).

Einstieg in Natural Language Processing – Teil 1: Natürliche vs. Formale Sprachen

Dies ist Artikel 1 von 4 der Artikelserie Einstieg in Natural Language Processing – Artikelserie.

Versuche und erste Ansätze, Maschinen beizubringen menschliche Sprache zu verstehen, gibt es bereits seit den 50er Jahren. Trotz der jahrzehntelangen Forschung und Entwicklung gelingt dies bis heute nicht umfassend. Woran liegt dies?

Um diese Frage zu beantworten, hilft es, sich die Unterschiede zwischen „natürlichen“, also sich selbstständig entwickelnden, typischerweise von Menschen gesprochenen Sprachen und den von Computern interpretieren formalen Sprachen klar zu machen. Formale Sprachen, wie zum Beispiel Python zum Ausführen der Codebeispiele in dieser Artikelserie, HTML (Hyper Text Markup Language) zur Darstellung von Webseiten und andere typische Programmier- und Skriptsprachen, sind üblicherweise sehr streng strukturiert.

Alle diese Sprachen weisen eine Reihe von Gemeinsamkeiten auf, welche es Computern einfach machen, sie korrekt zu interpretieren (also den Informationsinhalt zu “verstehen”). Das vermutlich auffälligste Merkmal formaler Sprachen ist eine relativ strikte Syntax, welche (wenn überhaupt) nur geringe Abweichungen von einem Standard erlaubt. Wie penibel die jeweilige Syntax oft einzuhalten ist, wird am ehesten deutlich, wenn diese verletzt wird:

Solche so genannten “Syntax Error”  gehören daher zu den häufigsten Fehlern beim Schreiben von Quellcode.

Ganz anders dagegen sieht es in der Kommunikation mit natürlichen Sprachen aus. Zwar fördert falsche Komma-Setzung in der Regel nicht die Leserlichkeit eines Textes, jedoch bleibt dieser in der Regel trotzdem verständlich. Auch macht es keinen Unterschied ob ich sage „Es ist heiß heute.“ oder „Heute ist es heiß.“. Genau wie in der deutschen Sprache funktioniert dieses Beispiel auch im Englischen sowie in anderen natürlichen Sprachen. Insbesondere Spanisch ist ein Beispiel für eine Sprache mit extrem variabler Satzstellung. Jedoch kann in anderen Fällen eine andere Reihenfolge der selben Worte deren Bedeutung auch verändern. So ist „Ist es heute heiß?“ ganz klar eine Frage, obwohl exakt die selben Worte wie in den Beispielsätzen oben vorkommen.

Ein weiterer wichtiger, hiermit verwandter Unterschied ist, dass es bei formalen Sprachen in der Regel einen Ausdruck gibt, welcher eine spezifische Bedeutung besitzt, während es in natürlichen Sprachen oft viele Synonyme gibt, die ein und dieselbe Sache (oder zumindest etwas sehr ähnliches) ausdrücken. Ein wahrer boolscher Wert wird in Python als

geschrieben. Es gibt keine andere Möglichkeit, diesen Wert auszudrücken (zumindest nicht ohne irgend eine Art von Operatoren wie das Doppelgleichheitszeichen zu benutzen und damit z. B. “0 == 0” zu schreiben).  Anders hingegen zum Beispiel in der Deutschen Sprache: Wahr, richtig, korrekt, stimmt, ja,

Um einen Vorstellung davon zu bekommen, wie verbreitet Synonyme in natürlichen Sprachen sind, lässt sich die Internetseite https://www.openthesaurus.de verwenden. Beispielshalber findet man dutzende Synonyme für das Wort „schnell“ hier: https://www.openthesaurus.de/synonyme/schnell

Eine weitere große Schwierigkeit, welche in den meisten natürlichen Sprachen und nahezu allen Arten von Texten zu finden ist, stellen verschiedene grammatikalische Formen eines Wortes dar. So sind die Worte bin, wäre, sind, waren, wirst, werden… alles Konjugationen desselben Verbs, nämlich sein. Eine durchaus beeindruckende Übersicht über die verwirrende Vielfalt von Konjugationen dieses kleinen Wörtchens, findet sich unter: https://www.verbformen.de/konjugation/sein.htm.

Dieses Problem wird um so schwerwiegender, da viele Verben, insbesondere die am häufigsten genutzten, sehr unregelmäßige Konjugationsformen besitzen und damit keiner generellen Regel folgen. Daher ist computerintern oft ein Mapping für jede mögliche Konjugationsform bei vielen Verben die einzige Möglichkeit, an die Grundform zu kommen (mehr dazu in Teil 3 dieser Artikelserie).

Die Liste der sprachlichen Schwierigkeiten beim computergestützten Auswerten natürlicher Sprache ließe sich an diesem Punkt noch beliebig weiter fortsetzen:

  • Rechtschreibfehler
  • falsche Grammatik
  • Smileys
  • der „Substantivverkettungswahn“ im Deutschen
  • mehrdeutige Worte und Abkürzungen
  • abwegige Redewendungen (z. B. “ins Gras beißen”)
  • Ironie
  • und, und, und …

Ob und welche Rolle jede dieser Schwierigkeiten im einzelnen spielt, hängt natürlich sehr stark von den jeweiligen Texten ab und kann nicht pauschalisiert werden – ein typischer Chatverlauf wird ganz andere Probleme bereithalten als ein Wikipedia-Artikel. Wie man einige dieser Probleme in der Praxis vereinfachen oder sogar lösen kann und welche Ansätze und Methoden zur Verfügung stehen und regelmäßig zur Anwendung kommen wird im nächsten Teil dieser Artikelserie an praktischen Codebeispielen genauer unter die Lupe genommen.

NLTK vs. Spacy – Eine kurze Übersicht

Möchte man einen (oder auch einige) Text(e) mit den Methoden des natural language processings untersuchen um die darin verwendete Sprache auswerten oder nach bestimmten Informationen suchen, so sind insbesondere die Pakete NLTK und spaCy zu empfehlen (bei sehr vielen Texten sieht das schon wieder anders aus und wird am Ende der Artikelserie mit dem Paket gensim vorgestellt); beide bieten eine unglaubliche Vielzahl von Analysemöglichkeiten, vorgefertigten Wortsets, vortrainierte Stemmer und Lemmatiser, POS Tagger und, und, und…

Ist man vor allem an den Ergebnissen der Analyse selbst interessiert, so bietet sich spaCy an, da hier bereits mit wenigen Zeilen Code viele interessante Informationen generiert werden können.

Wer dagegen gerne selber bastelt oder wissen möchte wie die einzelnen Tools und Teilschritte genau funktionieren oder sich seine eigenen Stemmer, Tagger ect. trainieren will, ist vermutlich mit NLTK besser beraten. Zwar ist hier oft mehr Quellcode für das gleiche Ergebnis notwendig, allerdings kann das Preprocessing der Texte hierbei relativ einfach exakt den eigenen Vorstellungen angepasst werden. Zudem bietet NLTK eine Vielzahl von Beispieltexten und bereits fertig getagte Daten, mit welchen eigene Tagger trainiert und getestet werden können.

Weiterbildungsmodul: Machine Learning mit Python

Anzeige

Lernen ist ein zentraler Faktor von Intelligenz. Die Realisierung intelligenter Systeme durch Computer, die nicht programmiert sondern angelernt werden, ist das Ziel von Künstlicher Intelligenz. Maschinelles Lernen befasst sich mit den dazu notwendigen Methoden und Algorithmen. Diese formulieren unterschiedliche Lernziele, adressieren diverse Anwendungsgebiete und stellen verschiedene Anforderungen an die vorhandenen Daten.

Jeder der beruflich größere Datenmengen intelligent nutzen will, um aus ihnen einen Mehrwert zu erzeugen, braucht daher zum einen ein Überblickswissen über Maschinelles Lernen. Zum anderen wird ein tieferes algorithmisches Verständnis benötigt, um Aufwände abzuschätzen und durch Anpassungen Erfolgsraten zu erhöhen. Ziele des Angebots ist es daher, Teilnehmerinnen und Teilnehmer in diesem Sinne für Maschinelles Lernen (theoretisch und praktisch) fit zu machen. Wir werden mit Python und zugehörigen Bibliotheken arbeiten, die Open Source und State-of-the-Art Implementierungen anbieten. Auch Aspekte des Maschinellen Lernens in der Cloud werden mit konkreten Beispielen behandelt.

Maschinelles Lernen ist der algorithmische Kern vieler aktueller Technologien und Entwicklungen bei denen es darum geht, aus Daten zu lernen und dann optimale Entscheidungen zu treffen. Die Algorithmen können aber auch künstlerisch tätig werden und sogar träumen. Ein paar Prognosen sagen sogar voraus, dass der Computer intelligenter als der Mensch werden wird.

Weiterbildungsangebot der AWW und der TH Brandenburg: Machine Learning mit Python

Die Besonderheit des Weiterbildungsangebotes „Machine Learning mit Python“ ist, dass nicht nur einzelne Algorithmen theoretisch abgehandelt werden. Die praktische Anwendung und das Lösen einer echten Aufgabe stehen im Vordergrund. In einer sogenannten “Data Challenge” können sich die Kursteilnehmer dabei mit den Studierenden der Vorlesung “Data Mining” im Masterstudiengang Informatik der Technischen Hochschule Brandenburg messen.

Beim Maschinellen Lernen verderben viele Köche nicht etwa den Brei, sondern machen ihn besser. Dies geschieht mittels sogenannter Ensemble-Methoden, die mehrere Modelle geeignet kombinieren. Welche zwei Standard-Ansätze es dazu gibt und wie diese funktionieren werden die Teilnehmer ebenfalls im Kurs lernen. Natürlich wird auch „Deep Learning“ als das zurzeit heißeste Gebiet von Maschinellem Lernen ein Thema sein. Damit dies alles gelingt wird als technologische Grundlage Python genutzt.

Mit der Programmiersprache Python ist es möglich sofort interaktiv zu beginnen, so dass man sich ganz auf seine Aufgabe, die Daten und ihre Analyse konzentrieren kann. Auch ohne Informatiker zu sein, kann man so schnell Algorithmen des Maschinellen Lernens anwenden und erste Resultate erzielen. Das geht oft bereits mit 20 bis30 Zeilen Code, so behält man leicht den Überblick.

Mit Python kann man bei seinem vertrauten Betriebssystem bleiben. Python ist plattformunabhängig, so dass man seinen Code überallhin mitnehmen kann. Im Bereich von Machine Learning ist Python mit entsprechenden Bibliotheken sehr gut aufgestellt, oft sind die verfügbaren Algorithmen state-of-the-art. Die Frameworks beim sogenannten Deep Learning, das spektakuläre Resultate in Serie erzeugt, setzen nahezu ausschließlich auf Python. Python ist sehr breit einsetzbar, so dass es auch auf sehr spezifische Themen und Fragestellungen angewendet werden kann. Es wird in vielen unterschiedlichen Gebieten angewendet und weiterentwickelt. Deswegen kennen viele, die ihren Hintergrund nicht in der Informatik haben, Python vielleicht bereits.

Ansprechperson:
Dr. Annette Strauß
T +49 3381 355 750
M annette.strauss@aww-brandenburg.de

Interview – Künstliche Intelligenz im Unternehmen & der Mangel an IT-Fachkräften

Interview mit Sebastian van der Meer über den Einsatz von künstlicher Intelligenz im Unternehmen und dem Mangel an IT-Fachkräften

Sebastian van der Meer

Sebastian van der Meer ist Managing Partner der lexoro Gruppe, einem Technologie- und Beratungsunternehmen in den Zukunftsmärkten: Data-Science, Machine-Learning, Big-Data, Robotics und DevOps. Das Leistungsspektrum ist vielschichtig. Sie vermitteln Top-Experten an Unternehmen (Perm & IT-Contracting), arbeiten mit eigenen Teams für innovative Unternehmen an spannenden IT-Projekten und entwickeln zugleich eigene Produkte und Start-Ups in Zukunftsmärkten. Dabei immer im Mittelpunkt: Menschen und deren Verbindung mit exzellenter Technologiekompetenz.

Data Science Blog: Herr van der Meer, wenn man Google News mit den richtigen Stichwörtern abruft, scheinen die Themen Künstliche Intelligenz, Data Science und Machine Learning bei vielen Unternehmen bereits angekommen zu sein – Ist das so?

Das ist eine sehr gute Frage! Weltweit, vor allem in der USA und China, sind diese bereits „angekommen“, wenn man es so formulieren kann. Allerdings sind wir in Europa leider weit hinterher. Dazu gibt es ja bereits viele Studien und Umfragen, die dies beweisen. Vereinzelt gibt es große mittelständische- und Konzernunternehmen in Deutschland, die bereits eigene Einheiten und Teams in diesen Bereich und auch neue Geschäftsbereiche dadurch ermöglicht haben. Hier gibt es bereits tolle Beispiele, was mit K.I. erreichbar ist. Vor allem die Branchen Versicherungs- und Finanzdienstleistungen, Pharma/Life Science und Automotive sind den anderen in Deutschland etwas voraus.

Data Science Blog: Wird das Thema Data Science oder Machine Learning früher oder später für jedes Unternehmen relevant sein? Muss jedes Unternehmen sich mit K.I. befassen?

Data Science, Machine Learning, künstliche Intelligenz – das sind mehr als bloße Hype-Begriffe und entfernte Zukunftsmusik! Wir stecken mitten in massiven strukturellen Veränderungen. Die Digitalisierungswelle der vergangenen Jahre war nur der Anfang. Jede Branche ist betroffen. Schnell kann ein Gefühl von Bedrohung und Angst vor dem Unbekannten aufkommen. Tatsächlich liegen aber nie zuvor dagewesene Chancen und Potentiale vor unseren Füßen. Die Herausforderung ist es diese zu erkennen und dann die notwendigen Veränderungen umzusetzen. Daher sind wir der Meinung, dass jedes Unternehmen sich damit befassen muss und soll, wenn es in der Zukunft noch existieren will.

Wir unterstützen Unternehmen dabei ihre individuellen Herausforderungen, Hürden und Möglichkeiten zu identifizieren, die der große Hype „künstliche Intelligenz“ mit sich bringt. Hier geht es darum genau zu definieren, welche KI-Optionen überhaupt für das Unternehmen existieren. Mit Use-Cases zeigen wir, welchen Mehrwert sie dem Unternehmen bieten. Wenn die K.I. Strategie festgelegt ist, unterstützen wir bei der technischen Implementierung und definieren und rekrutieren bei Bedarf die relevanten Mitarbeiter.

Data Science Blog: Die Politik strebt stets nach Vollbeschäftigung. Die K.I. scheint diesem Leitziel entgegen gerichtet zu sein. Glauben Sie hier werden vor allem Ängste geschürt oder sind die Auswirkungen auf den Arbeitsmarkt durch das Vordringen von K.I. wirklich so gravierend?

Zu diesem Thema gibt es bereits viele Meinungen und Studien, die veröffentlicht worden sind. Eine interessante Studie hat vorhergesagt, dass in den nächsten 5 Jahren, weltweit 1.3 Millionen Stellen/Berufe durch K.I. wegfallen werden. Dafür aber in den gleichen Zeitnahmen 1.7 Millionen neue Stellen und Berufe entstehen werden. Hier gehen die Meinungen aber ganz klar auseinander. Die Einen sehen die Chancen, die Möglichkeiten und die Anderen sehen die Angst oder das Ungewisse. Eins steht fest, der Arbeitsmarkt wird sich in den nächsten 5 bis 10 Jahren komplett verändern und anpassen. Viele Berufe werden wegfallen, dafür werden aber viele neue Berufe hinzukommen. Vor einigen Jahren gab es noch keinen „Data Scientist“ Beruf und jetzt ist es einer der best bezahltesten IT Stellen in Unternehmen. Allein das zeigt doch auch, welche Chancen es in der Zukunft geben wird.

Data Science Blog: Wie sieht der Arbeitsmarkt in den Bereichen Data Science, Machine Learning und Künstliche Intelligenz aus?

Der Markt ist sehr intransparent. Jeder definiert einen Data Scientist anders. Zudem wird sich der Beruf und seine Anforderungen aufgrund des technischen Fortschritts stetig verändern. Der heutige Data Scientist wird sicher nicht der gleiche Data Scientist in 5 oder 10 Jahren sein. Die Anforderungen sind enorm hoch und die Konkurrenz, der sogenannte „War of Talents“ ist auch in Deutschland angekommen. Der Anspruch an Veränderungsbereitschaft und technisch stets up to date und versiert zu sein, ist extrem hoch. Das gleiche gilt auch für die anderen K.I. Berufe von heute, wie z.B. den Computer Vision Engineer, der Robotics Spezialist oder den DevOps Engineer.

Data Science Blog: Worauf sollten Unternehmen vor, während und nach der Einstellung von Data Scientists achten?

Das Allerwichtigste ist der Anfang. Es sollte ganz klar definiert sein, warum die Person gesucht wird, was die Aufgaben sind und welche Ergebnisse sich das Unternehmen mit der Einstellung erwartet bzw. erhofft. Oftmals hören wir von Unternehmen, dass sie Spezialisten in dem Bereich Data Science / Machine Learning suchen und große Anforderungen haben, aber diese gar nicht umgesetzt werden können, weil z.B. die Datengrundlage im Unternehmen fehlt. Nur 5% der Data Scientists in unserem Netzwerk sind der Ansicht, dass vorhandene Daten in ihrem Unternehmen bereits optimal verwertet werden. Der Data Scientist sollte schnell ins Unternehmen integriert werde um schnellstmöglich Ergebnisse erzielen zu können. Um die wirklich guten Leute für sich zu gewinnen, muss ein Unternehmen aber auch bereit sein finanziell tiefer in die Tasche zu greifen. Außerdem müssen die Unternehmen den top Experten ein technisch attraktives Umfeld bieten, daher sollte auch die Unternehmen stets up-to-date sein mit der heutigen Technologie.

Data Science Blog: Was macht einen guten Data Scientist eigentlich aus?

Ein guter Data Scientist sollte in folgenden Bereichen sehr gut aufgestellt sein: Präsentations- und Kommunikationsfähigkeiten, Machine Learning Kenntnisse, Programmiersprachen und ein allgemeines Business-Verständnis. Er sollte sich stets weiterentwickeln und von den Trends up to date sein. Auf relevanten Blogs, wie dieser Data Science Blog, aktiv sein und sich auf Messen/Meetups etc bekannt machen.

Außerdem sollte er sich mit uns in Verbindung setzen. Denn ein weiterer, wie wir finden, sehr wichtiger Punkt, ist es sich gut verkaufen zu können. Hierzu haben wir uns in dem letzten Jahr sehr viel Gedanken gemacht und auch Studien durchgeführt. Wir wollen es jedem K.I. -Experten ermöglichen einen eigenen Fingerabdruck zu haben. Bei uns ist dies als der SkillPrint bekannt. Hierfür haben wir eine holistische Darstellung entwickelt, die jeden Kandidaten einen individuellen Fingerabdruck seiner Kompetenzen abbildet. Hierfür durchlaufen die Kandidaten einen Online-Test, der von uns mit top K.I. Experten entwickelt wurde. Dieser bildet folgendes ab: Methoden Expertise, Applied Data Science Erfahrung, Branchen know-how, Technology & Tools und Business knowledge. Und die immer im Detail in 3 Ebenen.

Der darauf entstehende SkillPrint/Fingerprint ist ein Qualitätssigel für den Experten und damit auch für das Unternehmen, das den Experten einstellt.

Interesse an einem Austausch zu verschiedenen Karriereperspektiven im Bereich Data Science/ Machine Learning? Dann registrieren Sie sich direkt auf dem lexoro Talent Check-In und ein lexoro-Berater wird sich bei Ihnen melden.

Einstieg in Natural Language Processing – Artikelserie

Unter Natural Language Processing (NLP) versteht man ein Teilgebiet der Informatik bzw. der Datenwissenschaft, welches sich mit der Analyse und Auswertung , aber auch der Synthese natürlicher Sprache befasst. Mit natürlichen Sprachen werden Sprachen wie zum Beispiel Deutsch, Englisch oder Spanisch bezeichnet, welche nicht geplant entworfen wurden, sondern sich über lange Zeit allein durch ihre Benutzung entwickelt haben. Anders ausgedrückt geht es um die Schnittstelle zwischen unserer im Alltag verwendeten und für uns Menschen verständlichen Sprache auf der einen, und um deren computergestützte Auswertung auf der anderen Seite.

Diese Artikelserie soll eine Einführung in die Thematik des Natural Language Processing sein, dessen Methoden, Möglichkeiten, aber auch der Grenzen . Im einzelnen werden folgende Themen näher behandelt:

1. Artikel – Natürliche vs. Formale Sprachen
2. Artikel – Preprocessing von Rohtext mit Python
3. Artikel – Möglichkeiten/Methoden der Textanalyse an Beispielen (erscheint demnächst…)
4. Artikel – NLP, was kann es? Und was nicht? (erscheint demnächst…)

Zur Verdeutlichung der beschriebenen Zusammenhänge und Methoden und um Interessierten einige Ideen für mögliche Startpunkte aufzuzeigen, werden im Verlauf der Artikelserie an verschiedenen Stellen Codebeispiele in der Programmiersprache Python vorgestellt.
Von den vielen im Internet zur Verfügung stehenden Python-Paketen zum Thema NLP, werden in diesem Artikel insbesondere die drei Pakete NLTK, Gensim und Spacy verwendet.

tarent solutions GmbH @ DMEXCO 2018

Anzeige

IoT- und KI-Technologien der Zukunft: Wie profitieren wir von der großen Datenmenge?

Die Technologieagentur tarent solutions GmbH präsentiert auf der DMEXCO 2018 neue Wege im Bereich Künstliche Intelligenz. Die Besucher lernen IoT-Projekte wie den interaktiven Funkstreifenwagen und die Mobile Self-Checkout-Lösung “snabble” kennen.

Am 12. und 13. September 2018 findet in Köln die DMEXCO statt, die Digital Marketing Exposition & Conference. Die Technologieagentur tarent solutions GmbH bietet an ihrem Stand (Halle 7, Stand A-031) einen Einblick in konkrete Verfahren und Technologien in den Bereichen “Internet of Things” (IoT) und “Künstliche Intelligenz” (KI).

Predictive Maintenance: Mehr Potenzial nutzen

Für Hersteller und Händler ergeben sich zahlreiche Vorteile, wenn sie die Möglichkeiten von KI und IoT richtig verstehen und effizient einsetzen. Es geht darum, Ausfälle zu minimieren, Störungen rechtzeitig vorherzusehen und sich nicht mehr um Nachbestellungen und Wartungssysteme kümmern zu müssen. Genauso relevant ist es, durch die Analyse des Produktlebenszyklusses nachhaltiger zu agieren und das Kundenverhalten besser zu verstehen und zu nutzen.

Um von diesen Vorteilen zu profitieren, müssen Unternehmen die Daten und Logfiles, die sie bereits haben oder aktuell sammeln, mit den richtigen Verfahren von KI und Machine Learning nutzbar machen – für ihr Produktmanagement, ihr Pricing und ihr Marketing. Wie das funktioniert erläutert die tarent auf der DMEXCO.

Sicher, schnell, erfolgreich: IoT in der Praxis

Ein Beispiel für moderne IoT-Projekte ist der sogenannte “Multi-PC”, der den “interaktiven Funkstreifenwagen” ermöglicht. Dabei handelt es sich um ein multifunktionales System für Sicherheit, Vernetzung und Kommunikation. Bei der Polizei in Brandenburg und Sachsen-Anhalt sind seit vielen Jahren mehrere hundert Geräte im Einsatz. Vorteile sind u. a. schnellere Abläufe durch Echtzeitübertragung, eine flächendeckendere Präsenz, eine höhere Eigen- und Fremdsicherung sowie eine optimierte Ressourcennutzung und Koordination. Neben dem Multi-PC stellt die tarent ihre Mobile Self-Checkout-Lösung “snabble” sowie ihreDigital Signage-Technologie “roomio” für Meeting- und Konferenzraumplanungen vor.

Über die tarent solutions GmbH

Als Technologieagentur mit Sitz in Bonn, Köln, Berlin und Bukarest entwickeln wir seit mehr als 20 Jahren innovative Softwarelösungen für Unternehmen und integrieren diese in komplexe ITLandschaften. Besondere Expertise bieten wir in den Bereichen Wettbewerbsanalyse, Preismanagement und Mobile Self-Checkout sowie in der Erstellung hochskalierbarer Microservice-Plattformen und komplexer Integrationsprojekte.

Mehr auf www.tarent.de.

Broschüren / weiterführende Informationen zu den Angeboten auf  der DMEXCO:

IoT- und KI-Technologien der Zukunft_tarent auf der DMEXCO_Presseinfo

Broschüren / weiterführende Informationen zum Workshop-Angebot von Tarent zu KI for Business:

DMEXCO 2018_tarent solutions GmbH

Ansprechpartner

Philip Braches
Teamleiter Vertrieb
tarent solutions GmbH
E-Mail: p.braches@tarent.de

I. Einführung in TensorFlow: Einleitung und Inhalt

 

 

 

1. Einleitung und Inhalt

Früher oder später wird jede Person, welche sich mit den Themen Daten, KI, Machine Learning und Deep Learning auseinander setzt, mit TensorFlow in Kontakt geraten. Für diejenigen wird der Zeitpunkt kommen, an dem sie sich damit befassen möchten/müssen/wollen.

Und genau für euch ist diese Artikelserie ausgelegt. Gemeinsam wollen wir die ersten Schritte in die Welt von Deep Learning und neuronalen Netzen mit TensorFlow wagen und unsere eigenen Beispiele realisieren. Dabei möchten wir uns auf das Wesentlichste konzentrieren und die Thematik Schritt für Schritt in 4 Artikeln angehen, welche wie folgt aufgebaut sind:

  1. In diesem und damit ersten Artikel wollen wir uns erst einmal darauf konzentrieren, was TensorFlow ist und wofür es genutzt wird.
  2. Im zweiten Artikel befassen wir uns mit der grundlegenden Handhabung von TensorFlow und gehen den theoretischen Ablauf durch.
  3. Im dritten Artikel wollen wir dann näher auf die Praxis eingehen und ein Perzeptron – ein einfaches künstliches Neuron – entwickeln. Dabei werden wir die Grundlagen anwenden, die wir im zweiten Artikel erschlossen haben.
  4. Im vierten Artikel werden wir dann endlich unser erstes neuronales Netz aufbauen. Auch hier bilden die vorherigen Artikel ein gutes Fundament der Verständlichkeit um die kommende Aufgabe zu meistern.

Wenn ihr die Praxisbeispiele in den Artikeln 3 & 4 aktiv mit bestreiten wollt, dann ist es vorteilhaft, wenn ihr bereits mit Python gearbeitet habt und die Grundlagen dieser Programmiersprache beherrscht. Jedoch werden alle Handlungen und alle Zeilen sehr genau kommentiert, so dass es leicht verständlich bleibt.

Neben den Programmierfähigkeiten ist es hilfreich, wenn ihr euch mit der Funktionsweise von neuronalen Netzen auskennt, da wir im späteren Verlauf diese modellieren wollen. Jedoch gehen wir vor der Programmierung  kurz auf die Theorie ein und werden das Wichtigste nochmal erwähnen.

Zu guter Letzt benötigen wir für unseren Theorie-Teil ein Mindestmaß an Mathematik um die Grundlagen der neuronalen Netze zu verstehen. Aber auch hier sind die Anforderungen nicht hoch und wir sind vollkommen gut  damit bedient, wenn wir unser Wissen aus dem Abitur noch nicht ganz vergessen haben.

2. Ziele dieser Artikelserie

Diese Artikelserie ist speziell an Personen gerichtet, welche einen ersten Schritt in die große und interessante Welt von Deep Learning wagen möchten, die am Anfang nicht mit zu vielen Details überschüttet werden wollen und lieber an kleine und verdaulichen Häppchen testen wollen, ob dies das Richtige für sie ist. Unser Ziel wird sein, dass wir ein Grundverständnis für TensorFlow entwickeln und die Grundlagen zur Nutzung beherrschen, um mit diesen erste Modelle zu erstellen.

3. Was ist TensorFlow?

Viele von euch haben bestimmt von TensorFlow in Verbindung mit Deep Learning bzw. neuronalen Netzen gehört. Allgemein betrachtet ist TensorFlow ein Software-Framework zur numerischen Berechnung von Datenflussgraphen mit dem Fokus maschinelle Lernalgorithmen zu beschreiben. Kurz gesagt: Es ist ein Tool um Deep Learning Modelle zu realisieren.

Zusatz: Python ist eine Programmiersprache in der wir viele Paradigmen (objektorientiert, funktional, etc.) verwenden können. Viele Tutorials im Bereich Data Science nutzen das imperative Paradigma; wir befehlen Python also Was gemacht und Wie es ausgeführt werden soll. TensorFlow ist dahingehend anders, da es eine datenstrom-orientierte Programmierung nutzt. In dieser Form der Programmierung wird ein Datenfluss-Berechnungsgraph (kurz: Datenflussgraph) erzeugt, welcher durch die Zusammensetzung von Kanten und Knoten charakterisiert wird. Die Kanten enthalten Daten und können diese an Knoten weiterleiten. In den Knoten werden Operationen wie z. B. Addition, Multiplikation oder auch verschiedenste Variationen von Funktionen ausgeführt. Bekannte Programme mit datenstrom-orientierten Paradigmen sind Simulink, LabView oder Knime.

Für das Verständnis von TensorFlow verrät uns der Name bereits erste Informationen über die Funktionsweise. In neuronalen Netzen bzw. in Deep-Learning-Netzen können Eingangssignale, Gewichte oder Bias verschiedene Erscheinungsformen haben; von Skalaren, zweidimensionalen Tabellen bis hin zu mehrdimensionalen Matrizen kann alles dabei sein. Diese Erscheinungsformen werden in Deep-Learning-Anwendungen allgemein als Tensoren bezeichnet, welche durch ein Datenflussgraph ‘fließen’. [1]

Abb.1 Namensbedeutung von TensorFlow: Links ein Tensor in Form einer zweidimensionalen Matrix; Rechts ein Beispiel für einen Datenflussgraph

 

4. Warum TensorFlow?

Wer in die Welt der KI einsteigen und Deep Learning lernen will, hat heutzutage die Qual der Wahl. Neben TensorFlow gibt es eine Vielzahl von Alternativen wie Keras, Theano, Pytorch, Torch, Caffe, Caffe2, Mxnet und vielen anderen. Warum also TensorFlow?

Das wohl wichtigste Argument besteht darin, dass TensorFlow eine der besten Dokumentationen hat. Google – Herausgeber von TensorFlow – hat TensorFlow stets mit neuen Updates beliefert. Sicherlich aus genau diesen Gründen ist es das meistgenutzte Framework. Zumindest erscheint es so, wenn wir die Stars&Forks auf Github betrachten. [3] Das hat zur Folge, dass neben der offiziellen Dokumentation auch viele Tutorials und Bücher existieren, was die Doku nur noch besser macht.

Natürlich haben alle Frameworks ihre Vor- und Nachteile. Gerade Pytorch von Facebook erfreut sich derzeit großer Beliebtheit, da die Berechnungsgraphen dynamischer Natur sind und damit einige Vorteile gegenüber TensorFlow aufweisen.[2] Auch Keras wäre für den Einstieg eine gute Alternative, da diese Bibliothek großen Wert auf eine einsteiger- und nutzerfreundliche Handhabung legt. Keras kann man sich als eine Art Bedienoberfläche über unsere Frameworks vorstellen, welche vorgefertigte neuronale Netze bereitstellt und uns einen Großteil der Arbeit abnimmt.

Möchte man jedoch ein detailreiches und individuelles Modell bauen und die Theorie dahinter nachvollziehen können, dann ist TensorFlow der beste Einstieg in Deep Learning! Es wird einige Schwierigkeiten bei der Gestaltung unserer Modelle geben, aber durch die gute Dokumentation, der großen Community und der Vielzahl an Beispielen, werden wir gewiss eine Lösung für aufkommende Problemstellungen finden.

 

Abb.2 Beliebtheit von DL-Frameworks basierend auf Github Stars & Forks (10.06.2018)

 

5. Zusammenfassung und Ausblick

Fassen wir das Ganze nochmal zusammen: TensorFlow ist ein Framework, welches auf der datenstrom-orientierten Programmierung basiert und speziell für die Implementierung von Machine/Deep Learning-Anwendungen ausgelegt ist. Dabei fließen unsere Daten durch eine mehr oder weniger komplexe Anordnung von Berechnungen, welche uns am Ende ein Ergebnis liefert.

Die wichtigsten Argumente zur Wahl von TensorFlow als Einstieg in die Welt des Deep Learnings bestehen darin, dass TensorFlow ausgezeichnet dokumentiert ist, eine große Community besitzt und relativ einfach zu lesen ist. Außerdem hat es eine Schnittstelle zu Python, welches durch die meisten Anwender im Bereich der Datenanalyse bereits genutzt wird.

Wenn ihr es bis hier hin geschafft habt und immer noch motiviert seid den Einstieg mit TensorFlow zu wagen, dann seid gespannt auf den nächsten Artikel. In diesem werden wir dann auf die Funktionsweise von TensorFlow eingehen und einfache Berechnungsgraphen aufbauen, um ein Grundverständnis von TensorFlow zu bekommen. Bleibt also gespannt!

Quellen

[1] Hope, Tom (2018): Einführung in TensorFlow: DEEP-LEARNING-SYSTEME PROGRAMMIEREN, TRAINIEREN, SKALIEREN UND DEPLOYEN, 1. Auflage

[2] https://www.marutitech.com/top-8-deep-learning-frameworks/

[3] https://github.com/mbadry1/Top-Deep-Learning

[4] https://www.bigdata-insider.de/was-ist-keras-a-726546/

Interview – Von der Utopie zur Realität der KI: Möglichkeiten und Grenzen

Interview mit Prof. Dr. Sven Buchholz über die Evolution von der Utopie zur Realität der KI – Möglichkeiten und Grenzen

Prof. Sven Buchholz hat eine Professur für die Fachgebiete Data Management und Data Mining am Fachbereich Informatik und Medien an der TH Brandenburg inne. Er ist wissenschaftlicher Leiter des an der Agentur für wissenschaftliche Weiterbildung und Wissenstransfer – AWW e. V. angesiedelten Projektes „Datenkompetenz 4.0 für eine digitale Arbeitswelt“ und Dozent des Vertiefungskurses „Machine Learning mit Python“, der seit 2018 von der AWW e. V. in Kooperation mit der TH Brandenburg angeboten wird.

Data Science Blog: Herr Prof. Buchholz, künstliche Intelligenz ist selbst für viele datenaffine Fachkräfte als Begriff noch zu abstrakt und wird mit Filmen wir A.I. von Steven Spielberg oder Terminator assoziiert. Gibt es möglicherweise unterscheidbare Stufen bzw. Reifegrade einer KI?

Für den Reifegrad einer KI könnte man, groß gedacht, ihre kognitiven Leistungen bewerten. Was Kognition angeht, dürfte Hollywood zurzeit aber noch meilenweit führen.  Man kann natürlich KIs im selben Einsatzgebiet vergleichen. Wenn von zwei Robotern einer lernt irgendwann problemlos durch die Tür zu fahren und der andere nicht, dann gibt es da schon einen Sieger. Wesentlich ist hier das Lernen, und da geht es dann auch weiter. Kommt er auch durch andere Türen, auch wenn ein Sensor
ausfällt?

Data Science Blog: Künstliche Intelligenz, Machine Learning und Deep Learning sind sicherlich die Trendbegriffe dieser Jahre. Wie stehen sie zueinander?

Deep Learning ist ein Teilgebiet von Machine Learning und das ist wiederum ein Teil von KI. Deep Learning meint eigentlich nur tiefe neuronale Netze (NN). Das sind Netze, die einfach viele Schichten von Neuronen haben und folglich als tief bezeichnet werden. Viele Architekturen, insbesondere auch die oft synonym mit Deep Learning assoziierten sogenannten Convolutional NNs gibt es seit Ewigkeiten. Solche Netze heute einsetzen zu können verdanken wir der Möglichkeit auf Grafikkarten rechnen zu können. Ohne Daten würde das uns aber auch nichts nützen. Netze lernen aus Daten (Beispielen) und es braucht für erfolgreiches Deep Learning sehr viele davon. Was wir oft gerade sehen ist also, was man mit genug vorhandenen Daten „erschlagen“ kann. Machine Learning sind alle Algorithmen, die ein Modell als Ouput liefern. Die Performanz von Modellen ist messbar, womit ich quasi auch noch eine Antwort zur ersten Frage nachreichen will.

Data Science Blog: Sie befassen sich beruflich seit Jahren mit künstlicher Intelligenz. Derzeitige Showcases handeln meistens über die Bild- oder Spracherkennung. Zweifelsohne wichtige Anwendungen, doch für Wirtschaftsunternehmen meistens zu abstrakt und zu weit weg vom Kerngeschäft. Was kann KI für Unternehmen noch leisten?

Scherzhaft oder vielleicht boshaft könnte man sagen, alles was Digitalisierung ihnen versprochen hat.
Wenn sie einen Chat-Bot einsetzen, sollte der durch KI besser werden. Offensichtlich ist das jetzt kein Anwendungsfall, der jedes Unternehmen betrifft. Mit anderen Worten, es hängt vom Kerngeschäft ab. Das klingt jetzt etwas ausweichend, meint aber auch ganz konkret die Ist-Situation.
Welche Prozesse sind jetzt schon datengetrieben, welche Infrastruktur ist vorhanden. Wo ist schon wie optimiert worden? Im Einkauf, im Kundenmanagement und so weiter.

Data Science Blog: Es scheint sich also zu lohnen, in das Thema fachlich einzusteigen. Was braucht man dazu? Welches Wissen sollte als Grundlage vorhanden sein? Und: Braucht man dazu einen Mindest-IQ?

Gewisse mathematische und informatorische Grundlagen braucht man sicher relativ schnell. Zum Beispiel: Wie kann man Daten statistisch beschreiben, was darf man daraus folgern? Wann ist etwas signifikant? Einfache Algorithmen für Standardprobleme sollte man formal hinschreiben können und implementieren können. Welche Komplexität hat der Algorithmus, wo genau versteckt sie sich? Im Prinzip geht es aber erst einmal darum, dass man mit keinem Aspekt von Data Science Bauchschmerzen hat. Einen Mindest-IQ braucht es also nur insofern, um diese Frage für sich selbst beantworten zu können.

Data Science Blog: Gibt es aus Ihrer Sicht eine spezielle Programmiersprache, die sich für das Programmieren einer KI besonders eignet?

Das dürfte für viele Informatiker fast eine Glaubensfrage sein, auch weil es natürlich davon abhängt,
was für eine KI das sein soll. Für Machine Learning und Deep Learning lautet meine Antwort aber ganz klar Python. Ein Blick auf die bestimmenden Frameworks und Programmierschnittstellen ist da
ziemlich eindeutig.

Data Science Blog: Welche Trends im Bereich Machine Learning bzw. Deep Learning werden Ihrer Meinung nach im kommenden Jahr 2019 von Bedeutung werden?

Bei den Deep Learning Anwendungen interessiert mich, wie es mit Sprache weitergeht. Im Bereich Machine Learning denke ich, dass Reinforcement Learning weiter an Bedeutung gewinnt. KI-Chips halte ich für einen der kommenden Trends.

Data Science Blog: Es heißt, dass Data Scientist gerade an ihrer eigenen Arbeitslosigkeit arbeiten, da zukünftige Verfahren des maschinellen Lernens Data Mining selbstständig durchführen können. Werden Tools Data Scientists bald ersetzen?

Die Prognosen für das jährliche Datenwachstum liegen ja momentan so bei 30%. Wichtiger als diese Zahl alleine ist aber, dass dieses Wachstum von Daten kommt, die von Unternehmen generiert werden. Dieser Anteil wird über die nächsten Jahre ständig und rasant weiter wachsen. Nach den einfachen Problemen kommen also erst einmal mehr einfache Probleme und/oder mehr anspruchsvollere Probleme statt Arbeitslosigkeit. Richtig ist aber natürlich, dass Data Scientists zukünftig methodisch mehr oder speziellere Kompetenzen abdecken müssen. Deswegen haben die AWW e. V. und die TH Brandenburg ihr Weiterbildungsangebot um das Modul ‚Machine Learning mit Python‘ ergänzt.

Data Science Blog: Für alle Studenten, die demnächst ihren Bachelor, beispielsweise in Informatik, Mathematik, Ingenieurwesen oder Wirtschaftswissenschaften, abgeschlossen haben, was würden Sie diesen jungen Damen und Herren raten, wie sie gute Data Scientists mit gutem Verständnis für Machine Learning werden können?

Neugierig sein wäre ein Tipp von mir. Im Bereich Deep Learning gibt es ja ständig neue Ideen, neue Netze. Die Implementierungen sind meist verfügbar, also kann und sollte man die Sachen ausprobieren. Je mehr Netze sie selbst zum Laufen gebracht und angewendet haben, umso besser werden sie.  Und auch nur so  verlieren sie nicht den Anschluss.