Künstliche Intelligenz Wie sich das menschliche Gehirn im Computer nachbilden lässt

Rich Miron * |

Anbieter zum Thema

Die Herausforderung, die Komplexität des menschlichen Gehirns im Computer nachzubilden, hat eine neue Generation von Wissenschaftlern und Entwicklern von Computeralgorithmen hervorgebracht.

Künstliche Intelligenz: Anwendungen hierfür werden zunehmend unsere Welt verändern.
Künstliche Intelligenz: Anwendungen hierfür werden zunehmend unsere Welt verändern.
(Bild: Clipdealer 7115879)

Kontinuierliche Forschung hat zu verstärkter Entwicklung von KI-Anwendungen (häufig auch als „Deep Learning“ oder „Maschinelles Lernen“ bezeichnet) geführt, die zunehmend Teil unserer Welt werden.

Bildergalerie

Die Grundlagen sind zwar seit langer Zeit bekannt, aber der kommerzielle Einsatz ist nie richtig Wirklichkeit geworden. In den letzten Jahren ist der Umfang der generierten Daten sprunghaft angewachsen und es gelang Entwicklern nach langer und mühevoller Arbeit Algorithmen zu entwickeln, mit denen daraus nützliche Daten und Statistiken extrahiert werden können.

Ein weiterer entscheidender Faktor ist die Verfügbarkeit von skalierbaren Computerressourcen. Hier bot sich die Cloud als ideale Technologie an. Auf Ihrem Smartphone werden vielleicht die sprachgesteuerten Anwendungen „Now“ von Google („OK Google“) oder „Siri“ von Apple eingesetzt. Diese verwenden Algorithmen für das maschinelle Lernen – sogenannte künstliche neuronale Netze, die Spracherkennung und Lernfähigkeit ermöglichen.

Neben der Bequemlichkeit und dem Spaß, sich mit dem Telefon zu unterhalten, profitieren auch ganze Industriezweige wie Automobilbau und Unternehmen, die Anwendungen entwickeln, in denen maschinell lernende neuronale Netze eingesetzt werden.

Konvolutionale neuronale Netze

Bevor wir einen Blick auf einige dieser Anwendungen werfen, wollen wir untersuchen, wie neuronale Netze funktionieren und welche Ressourcen sie benötigen. Wenn wir allgemein von neuronalen Netzen sprechen, sollten wir diese genauer als künstliche neuronale Netze bezeichnen. In einer Implementierung als Software-Algorithmus stützen sich diese auf biologische neuronale Netze – das zentrale Nervensystem – von Mensch und Tier.

Im Laufe der Jahre wurden verschiedene Typen von Architekturen neuronaler Netze entwickelt. Dabei fanden convolutione neuronale Netze (Convolutional Neural Network, CNN) die weiteste Verbreitung. Einer der Hauptgründe dafür besteht darin, dass diese aufgrund ihres Ansatzes für Parallelverarbeitungstechniken geeignet sind, die von einer Hardwarebeschleunigung in Form von GPUs und FPGAs ermöglicht werden.

Ein weiterer Grund für die Beliebtheit von CNNs besteht darin, dass sie sich für die Arbeit mit räumlich verteilten Daten eignen – und dafür sind Bildverarbeitungsanwendungen ideal. Räumliche Verteilung bezieht sich auf Pixel in der Nachbarschaft einer bestimmten Stelle mit ähnlichen Helligkeits- und Farbattributen. CNNs setzen sich aus verschiedenen Schichten zusammen, von denen jede einen bestimmten Zweck hat. Bei ihrer Arbeit treten zwei unterschiedliche Phasen auf.

Die Lernphase, der erste Teil der CNN

Der erste Teil ist eine Lernphase, während der der Verarbeitungsalgorithmus erkennt, um welche Daten es sich handelt und welche Beziehung oder Kontext zwischen den einzelnen Datenelementen besteht. Das CNN wird als Lern-Framework aus strukturierten und unstrukturierten Daten mit vom Computer geschaffenen Neuronen aufgebaut, die ein Netz von Verbindungen und Bruchstellen bilden. Der Mustervergleich ist ein Schlüsselkonzept hinter einem CNN. Er wird beim maschinellen Lernen intensiv genutzt (Bild 1).

Einen tieferen Einblick in die Arbeitsweise eines CNN finden Sie im Artikel Samer Hijazi, Rishi Kumar, Chris Rowen „Using Convolutional Neural Networks for Image Recognition“,IP Group, von Cadence und im Video „The Computing Earthquake: Neural Networks, Cognitive Layering“, das bei einer der letzten IEEE-Konferenzen zum Thema „New Frontiers in Computing“ („Die neuen Grenzen der Datenverarbeitung“) entstand.

Es galt als weiterer Nachweis für die Nützlichkeit von CNNs für die Bildverarbeitung, das ein Forschungsteam von Microsoft den MageNet-Challenge für maschinelles Sehen gewann.

Vorteile für die Automatisierung

Die zweite Phase eines CNNs besteht in der Ausführung. Die sich aus verschiedenen Schichtknoten zusammensetzenden Möglichkeiten, wie das Bild wahrscheinlich aussieht, können immer abstrakter werden. Eine Faltungsschicht extrahiert Merkmale auf niedriger Ebene aus der Bildquelle, um Merkmale wie Linien oder Kanten innerhalb des Bildes zu erkennen.

Andere als Pooling-Schichten bezeichnete Schichten sollen die Abweichungen reduzieren, indem sie gemeinsame Merkmale innerhalb einer bestimmten Region eines Bildes mitteln (poolen). Sie können dann an weitere Faltungs- und Pooling-Schichten übergeben werden.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Big Data, Analytics & AI

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Die Anzahl der CNN-Schichten korreliert mit der Genauigkeit der Bilderkennung. Allerdings steigert dies die Leistungsanforderungen an das System. Die Schichten können parallel arbeiten, wenn genügend Speicherbandbreite zur Verfügung steht. Der rechenintensivste Teil des CNN sind die Faltungsschichten.

Die Herausforderung für die Entwickler besteht darin, innerhalb der zeitlichen Beschränkung einer Anwendung ausreichende Berechnungsressourcen aufzutreiben, damit das CNN die erforderliche Anzahl von Bildklassifizierungen durchführen kann.

Eine Anwendung für die industrielle Automatisierung könnte mithilfe des maschinellen Sehens ermitteln, welcher Stufe ein Teil auf einem Fließband zugeführt werden muss. Wenn der Vorgang angehalten werden muss, bis das neuronale Netz das Teil identifiziert hat, würde der Fluss unterbrochen und die Fertigung verlangsamt werden.

Implementierung des Convolutional Neural Networks

Eine Beschleunigung eines Teils der aktuellen Phasen des „Reinforcement Learning (Bestärkendes Lernen)“ der Ausführung verkürzt diese im wesentlichen mathematische Aufgabe signifikant. GPUs und FPGAs sind mit ihrer großen Speicherbandbreite und Rechenleistung potenzielle Kandidaten für diese Aufgabe.

Herkömmliche Mikroprozessoren mit den der „von-Neumann“-Architektur innewohnenden Cache-Flaschenhälsen können den Algorithmus ausführen, sollten aber Schichtabstraktionsaufgaben an Hardwarebeschleuniger übergeben.

GPUs und FPGAs verfügen beide über beträchtliche Parallelverarbeitungsmöglichkeiten, aber ein FPGA mit seiner flexiblen und dynamisch konfigurierbaren Architektur erweist sich wegen der festgelegten Architektur einer GPU als geeigneter zur Beschleunigung eines CNN.

Mit einem Ansatz mit hoher Granularität, bei dem die CNN-Algorithmen im Wesentlichen in Hardware implementiert werden, trägt die Architektur eines FPGAs dazu bei, die Latenzen im Vergleich mit einem auf Software basierenden algorithmischen Ansatz einer GPU auf ein absolutes Minimum zu reduzieren und deterministischer zu gestalten.

Ein weiterer Vorteil eines FPGA ist die Möglichkeit, Funktionsblöcke wie einen DSP in der Struktur des Bausteins zu „härten“. Dieser Ansatz stärkt die deterministische Natur des Netzes weiter. Bezüglich des Ressourcenverbrauchs ist ein FPGA sehr effizient. Daher kann jede Schicht des CNNs innerhalb der Struktur des FPGAs in der Nähe ihres Arbeitsspeichers aufgebaut werden (Bild 2).

Die Entwicklung von mit FPGAs beschleunigten CNN-Anwendungen wird durch den Einsatz von OpenCL6-Parallelverarbeitungserweiterungen der Programmiersprache C ergänzt. Ein Beispiel für einen für convolutionale neuronale Netze geeigneten FPGA-Baustein ist die Arria-10-Serie der Programmable Solutions Group (PSG) von Intel, offiziell als Altera bezeichnet.

CNN-Referenzdesign von Intel PSG

Intel PSG stellt ein CNN-Referenzdesign zur Verfügung, das Entwickler bei CNN-Beschleunigungsprojekten auf FPGA-Basis unterstützen soll. Hier werden zur Implementierung der jeweiligen CNN-Schichten OpenCL-Kernel verwendet. Die Daten werden über Channels und Pipes von einer Schicht an die nächste übergeben.

Dies ermöglicht die Übergabe von Daten zwischen OpenCL-Kernels ohne den Verbrauch von externer Speicherbandbreite. Die Faltungsschichten werden innerhalb des FPGAs durch DSP-Blöcke und -Logik implementiert. Die gehärteten Funktionsblöcke umfassen Gleitpunktfunktionen, die den Durchsatz des Bausteins ohne Beeinträchtigung der verfügbaren Speicherbandbreite weiter erhöhen.

Das in Bild 3 (siehe Bildergalerie) dargestellte Blockdiagramm veranschaulicht ein Beispiel für ein System zur Bildverarbeitung und -klassifizierung, für das FPGAs als Beschleunigungseinheiten verwendet werden könnten.

Intel PSG bietet auf seiner Website eine Vielzahl von Dokumenten und Videos zum Thema „Verwendung von konvolutionalen neuronalen Netzen mit FPGAs für Anwendung in Industrie, Medizin und Automobilbau“ an. Die Wahl eines Frameworks für eine maschinell lernende Anwendung ist einer der wichtigsten ersten Schritte.

Zur Unterstützung von Entwicklern stehen eine wachsende Zahl von Tools wie OpenANN (openann.github.io), eine Open-Source-Bibliothek für künstliche neuronale Netze sowie informative Community-Websites wie deeplearning.net und embedded-vision.com zur Verfügung. Beliebte Design-Frameworks für das maschinelle Lernen mit Unterstützung von OpenCL sind u. a. Caffe (caffe.berkeleyvision.org), das auf C++ basiert, und Torch, das auf Lua basiert. Eine weiteres Framework, das OpenCL vollständig unterstützt, aber noch nicht wie die beiden oben erwähnten über eine Anwenderbasis verfügt, ist DeepCL.

Fazit: Die Industriemärkte streben danach, die von maschinell lernenden neuronalen Netzen gewonnenen Erkenntnisse in eine Vielzahl von Produktions- und Automatisierungsanwendungen einzubringen. Dieser Aspekt erhielt dank Initiativen wie „Industrie 4.0“ in Deutschland und des weiter gefassten Konzepts des „Industriellen Internets der Dinge“ neuen Schwung.

Zusammen mit hochauflösenden Videokameras, einer CPU-FPGA-Lösung und geeigneter Steuerung kann ein convolutionales neuronales Netz zur Automatisierung einer Vielzahl von Prüfaufgaben in der Fertigung verwendet werden. Dadurch erhöhen sich die Qualität und Zuverlässigkeit des Produkts und die Sicherheit der Fertigungsanlagen.

FPGAs sind wegen ihrer dynamisch konfigurierbaren Struktur, ihrer hohen Bandbreite und ihrer Energieeffizienz hervorragend zur Beschleunigung der Faltungs- und Pooling-Schichten eines CNN geeignet. Der künftige Einsatz von FPGAs für derartige Zwecke ist aufgrund der Vielzahl von durch die Community geförderten Open-Source-Frameworks und Parallelverarbeitungs-Bibliotheken wie OpenCL gesichert. FPGAs stellen eine hochskalierbare und flexible Lösung für die unterschiedlichen Anforderungen vieler Industriesparten dar.

Dieser Artikel stammt von unserem Partnerportal Elektronikpraxis. Verantwortliche Redakteurin: Margit Kuther

* Rich Miron ist Technical Content Engineer bei Digi-Key.

(ID:44513076)