TEIL IV
Deep Unsupervised Learning mit TensorFlow und Keras
Bis jetzt haben wir nur mit flachen neuronalen Netzen gearbeitet – d.h. mit Netzen, die nur wenige Hidden-Schichten aufweisen. Flache neuronale Netze sind zweifellos nützlich beim Aufbau von maschinellen Lernsystemen, doch die größten Fortschritte des letzten Jahrzehnts im maschinellen Lernen wurden erzielt durch neuronale Netze mit vielen Hidden-Schichten, den sogenannten tiefen neuronalen Netzen. Dieses Teilgebiet des maschinellen Lernens bezeichnet man als Deep Learning. Deep Learning an großen, gelabelten Datasets hat zu starken kommerziellen Erfolgen in Bereichen wie Computervision, Objekterkennung, Spracherkennung und maschineller Übersetzung beigetragen.
Wir konzentrieren uns auf Deep Learning an großen, ungelabelten Datasets, was man gemeinhin als Deep Unsupervised Learning bezeichnet. Dieses Gebiet ist noch sehr neu und voller Möglichkeiten, bis heute aber mit geringerem kommerziellem Erfolg im Vergleich zur Supervised-Variante. In den nächsten Kapiteln erstellen wir Deep-Unsupervised-Lernsysteme, beginnend mit den einfachsten Bausteinen.
Kapitel 10 beschäftigt sich mit beschränkten Boltzmann-Maschinen, auf denen wir ein Empfehlungssystem für Filme aufbauen. In Kapitel 11 stapeln wir beschränkte Boltzmann-Maschinen übereinander, was tiefe neuronale Netze ergibt, die als Deep Belief Networks bekannt sind. In Kapitel 12 generieren wir synthetische Daten mit Generative Adversarial Networks, aktuell eines der heißesten Bereiche des Deep Unsupervised Learning. Dann kehren wir in Kapitel 13 zum Clustering zurück, arbeiten diesmal aber mit Zeitreihen.
Dies ist zwar jede Menge anspruchsvoller Stoff, doch vieles beim Deep Unsupervised Learning stützt sich auf die grundlegenden Prinzipien, die wir weiter oben im Buch bereits eingeführt haben.
KAPITEL 10
Empfehlungsdienste mit beschränkten Boltzmann-Maschinen
Weiter oben in diesem Buch haben wir mit Unsupervised Learning die zugrunde liegende (verdeckte) Struktur in nicht gelabelten Daten gelernt. Im Speziellen haben wir durch Dimensionsreduktion ein hochdimensionales Dataset auf eines mit weniger Dimensionen reduziert und ein Anomalieerkennungssystem aufgebaut. Ein weiteres Thema war Clustering, bei dem Objekte gruppiert werden, je nachdem, wie ähnlich oder unähnlich sie einander sind.
Jetzt kommen wir zu Generative Unsupervised Models, die eine Wahrscheinlichkeitsverteilung aus einem Original-Dataset lernen und anhand dieser Verteilung Rückschlüsse auf zuvor nicht gesehene Daten ziehen. In späteren Kapiteln generieren wir mit derartigen Modellen scheinbar reale Daten, die manchmal von den Originaldaten praktisch nicht zu unterscheiden sind.
Bisher haben wir uns vor allem mit diskriminierenden Modellen befasst, die lernen, Beobachtungen zu trennen, und zwar basierend darauf, was die Algorithmen von den Daten lernen; diese diskriminierenden Modelle lernen keine Wahrscheinlichkeitsverteilung von den Daten. Zu den diskriminierenden Modellen gehören überwachte Versionen wie zum Beispiel die logistische Regression und Entscheidungsbäume aus Kapitel 2 sowie Clustering-Methoden wie k-Means und hierarchisches Clustering aus Kapitel 5.
Beginnen wir mit dem einfachsten der generativen unüberwachten Modelle, der sogenannten beschränkten Boltzmann-Maschine.
Boltzmann-Maschinen
Boltzmann-Maschinen wurden 1985 von Geoffrey Hinton (damals Professor an der Carnegie Mellon University, heute einer der Väter der Deep-Learning-Bewegung, Professor an der Universität Toronto und Forscher auf dem Gebiet des maschinellen Lernens bei Google) und Terry Sejnowski (der zu dieser Zeit Professor an der John Hopkins University war) erfunden.
Die – unbeschränkten – Boltzmann-Maschinen bestehen aus einem neuronalen Netz mit einer Input-Schicht und einer oder mehreren Hidden-Schichten. Die Neuronen oder Einheiten im neuronalen Netz treffen stochastische Entscheidungen darüber, ob sie schalten oder nicht, basierend auf den Daten, die während des Trainings eingespeist werden, und der Kostenfunktion, die die Boltzmann-Maschine zu minimieren versucht. Bei diesem Training entdeckt die Boltzmann-Maschine interessante Features der Daten, die dabei helfen, die komplexen zugrunde liegenden Beziehungen und Muster zu modellieren, die in den Daten präsent sind.
Allerdings verwenden diese unbeschränkten Boltzmann-Maschinen neuronale Netze, in denen die Neuronen nicht nur mit anderen Neuronen in anderen Schichten, sondern auch mit Neuronen innerhalb derselben Schicht verbunden sind. Zusammen mit der Vielzahl von Hidden-Schichten dürfte klar sein, dass das Training einer unbeschränkten Boltzmann-Maschine sehr ineffizient ist. Daher war unbeschränkten Boltzmann-Maschinen in den 1980er- und 1990er-Jahren auch nur wenig kommerzieller Erfolg beschieden.
Beschränkte Boltzmann-Maschinen
In den 2000er-Jahren begannen Geoffrey Hinton und andere, mit einer modifizierten Version der ursprünglichen unbeschränkten Boltzmann-Maschine kommerzielle Erfolge einzufah...