Fog Computing

Was ist Fog Computing?

Fog Computing, auch Fogging genannt, ist eine dezentrale Infrastruktur, welche sich zwischen der Cloud und der Datenquelle befindet. Die Cloud ist wie eine Wolke, zentral über allen Endgeräten schwebend und Fog Computing wie ein Nebel, näher an den Endgeräten dran. Durch die Verarbeitung und Speicherung der Daten in Mini-Rechenzentren (den Fog Nodes) vor Ort, müssen nicht mehr alle Daten an die Cloud geleitet werden. Fog Computing bringt damit die Vorteile und Leistungsfähigkeit der Cloud näher an die Endgeräte und bietet dadurch verringerte Latenz-, sowie die Bearbeitungszeiten und senkt zudem die Bandbreitennutzung durch die vorverarbeiteten Datenmengen.

Wie funktioniert Fog Computing?

Fog Computing nutzt sogenannte Fog Nodes, welche zwischen der Cloud und den Endgeräten agieren. Diese Fog Nodes fungieren als Mini-Rechenzentren, um gesammelte Daten der Endgeräte zu speichern und / oder zu analysieren. Somit müssen nicht alle Daten an die Cloud geschickt werden, sondern können näher an dem Ort der Datenquelle genutzt werden, um Echtzeitentscheidungen zu gewährleisten. Für komplexe Analysen werden die Daten an die Cloud weitergeleitet. Diese Struktur aus Fog Nodes kann als eine lokale Cloud angesehen werden. Dabei können die Fog Nodes miteinander interagieren und kommunizieren.

Was sind Anwendungen und Beispiele für Fog Computing?

IoT und IIoT

Da große Datenmengen durch Sensoren und Steuergeräte entstehen, ist Fog Computing beim IoT (Internet of Things) genau wie beim IIoT (Industrial Internet of Things) sehr sinnvoll. Durch die Fog Nodes werden die Daten bereits vor Ort verarbeitet, wodurch weniger Daten an die Cloud geschickt werden müssen. Das spart Zeit und Geld, da die Kommunikation zwischen den Endgeräten und den Fog Nodes schneller ist und zeitnahe Entscheidungen ermöglicht.

Autonomes Fahren

Für das autonome Fahren wird eine Kombination aus Fog und Edge Computing verwendet. Es entstehen durch Steuergeräte, Sensoren und Aktoren große Datenmengen, bis zu 20 Terabyte am Tag sind möglich. Durch die Verwendung von Fog Computing wird eine lokale Datenanalyse (Code to data) in einem mobilen Mini-Rechenzentrum vorgenommen, die Daten vor Ort ausgewertet und nur die Ergebnisse weitergeleitet. Durch die Verarbeitung der benötigten Daten in Echtzeit sind schnelle Entscheidungen möglich, denn Verzögerungen können im laufenden Straßenverkehr lebensbedrohlich sein.

Fog Computing vs. Cloud Computing

Fog Computing ergänzt das Cloud Computing und kann somit als Mittler der Cloud-Infrastruktur gesehen werden. Während beim Cloud Computing die Daten in einer zentralen IT-Struktur, der Cloud, verarbeitet werden, geschieht dies beim Fogging in den Fog Nodes näher an der Datenquelle. Dadurch sind beim Fog Computing kurzfristige und zeitnahe Analysen möglich, während in der Cloud zeit- und ressourcenintensive Analysen von großen Daten (im Englischen Big Data) stattfinden. Fog Computing bringt damit im übertragenen Sinne die Cloud näher an die Endgeräte heran und bietet schnellere Entscheidungen und kürzere Latenzzeiten.

Fog Computing vs. Edge Computing

Fog und Edge Computing werden oft als Synonyme gebraucht, obwohl sie unterschiedliche Ansätze beschreiben. Edge Computing beschreibt eine dezentrale Datenverarbeitung am Rande des Netzwerks. Hierbei werden die am Endgerät entstehenden Daten vorgefiltert und gegebenenfalls einfache Analysen gemacht. Diese Daten können dann an Fog Nodes weitergeleitet werden, um beispielsweise gespeichert oder weiter analysiert zu werden. Da die Fog Nodes untereinander kommunizieren können und mehr Rechenleistung zur Verfügung steht, sind komplexere Analysen als beim Edge Computing möglich.

Fog, Edge und Cloud Computing funktionieren besonders gut zusammen. Zuerst werden mithilfe des Edge Computing die Datenmengen vorgefiltert und verringert. Daraufhin werden in den Fog Nodes erste Analysen durchgeführt und abschließend werden zeitaufwendige und komplexe Aufgaben durch Cloud Computing erledigt. Somit kann von den jeweiligen Stärken der unterschiedlichen Modelle profitiert werden.

Formale Sprache

Was ist formale Sprache?

Eine formale Sprache ist eine abstrakte Sprache, welche zum Ausdruck von Definitionen, Anweisungen und Logik genutzt wird. Sie besteht aus einer bestimmten Menge von Zeichen- oder Symbolketten (Wörter), die wiederum aus bestimmten Zeichen (Alphabet, Symbole) gebildet werden. Formale Sprachen werden in den Bereichen Informatik, Mathematik und Linguistik genutzt.

Die Definition lautet:

Eine formale Sprache L über einem Alphabet Σ ist eine Teilmenge der Kleeneschen Hülle des Alphabets: L⊆Σ*.

Die Kleeneschen Hülle Σ* definiert dabei die Menge aller Wörter, die aus dem im Alphabet A enthaltenen Zeichen durch beliebige Konkatenation (Verkettung von Zeichenketten) zusammengesetzt werden können. Dabei ist das leere Wort (eine Zeichenkette der Länge 0) enthalten.

Allgemein wird auch bei formalen Sprachen der Syntax und die Semantik unterschieden. Der Syntax beschreibt die Grammatik der Sprache, also die Regeln, mit denen die Sprache zusammengesetzt wird. Die Semantik beschreibt hingegen die Bedeutung der Wörter. Der Satz: „Die Lampe schließt das Fenster mit einer Kuh.“ ist syntaktisch korrekt, aber semantisch unsinnig. Daher brauchen Sprachen die richtige Zusammenarbeit von Syntax und Semantik.

Formale Sprache in der Informatik

In der theoretischen Informatik werden formale Sprachen zur Modellbildung, Informationsverarbeitung und für den Compilerbau genutzt. Sie werden durch bestimmte Ersetzungsverfahren definiert. Dies sind Regeln, wie die Zeichen des Alphabets kombiniert werden dürfen. Gängige Ersetzungsverfahren sind beispielsweise Chomsky-Grammatiken, Semi-Thue-Systeme oder die Lindenmayer-Systeme.

In der angewandten Informatik finden formale Sprache in Form von Programmiersprachen Anwendung. Der Quellcode (die gesamten Anweisungen in Form einer Programmiersprache) kann in einem einfachen Texteditor erstellt werden. Dieser muss in eine passende Maschinensprache (einem Binärcode) übersetzt werden. Je nach Zeitpunkt der Übersetzung gibt es hierfür verschiedene Möglichkeiten. Mithilfe eines Compilers wird der Quellcode vor der Ausführung des Programms übersetzt. Ein JIT-Compiler (Just-in-Time-Compiler) oder ein Interpreter übersetzt den Quelltext, während das Programm läuft. Eine Kombination von beiden ist auch möglich und wird beispielsweise bei der Programmiersprache Java genutzt.

Programmiersprachen lassen sich in verschiedene Klassen unterteilen, den sogenannten Programmierparadigmen. Die drei bekanntesten Anwendungen formaler Sprache sind die objektorientierte, die funktionale und die imperative Programmierung.

Eine objektorientierte Programmierung basiert auf Daten und Objekten. Das Objekt gehört zu einer übergeordneten Klasse, besitzt bestimmte Attribute und es werden ihm verschiedene Methoden zugeordnet.

Bei einer funktionalen Programmierung sind alle Bestandteile des Computerprogramms ausschließlich Funktionen, sogar das Programm selbst. Die Funktionen können zu Funktionen höherer Ordnung verknüpft werden, wie in der Mathematik.

Von einer imperativen Programmierung spricht man, wenn das Computerprogramm aus Anweisungen besteht, welche dem Rechner vorgeben, was er wann genau zu tun hat. Dafür werden Schleifen oder Verzweigungen als Kontrollstrukturen genutzt.

Was sind Beispiele für formale Sprache?

1. Programmiersprachen wie:

  • C++, Java, JavaScript und Python als objektorientierte Programmierung
  • Haskell, LISP und Scheme als funktionale Programmierung
  • ALGOL, Cobol, C und FORTRAN als imperative Programmierung

2. Sprache der Palindrome: ein Palindrom ist ein Wort, welches vorwärts und rückwärts geschrieben identisch ist. Der formale Ausdruck lautet:

  • Ein Palindrom ist ein Wort u über dem Alphabet Σ mit der Eigenschaft u=uR.
  • Dabei sorgt der Operator R für Umkehrung der Zeichenfolge.

3. Morse-Folge (auch Morse-Thue-Sequenz, Thue-Morse-Sequenz genannt): ist eine unendliche Binärfolge, die nach konkreten Regeln gebildet wird. Als formale Sprache beginnt sie mit 0, 01, 0110, 01101001, 0110100110010110…

Federated Learning (Föderales Lernen)

Was ist Federated Learning?

Beim federated learning werden Modelle gleichzeitig auf mehreren Geräten trainiert. Dies erfolgt dezentral und ist dabei ohne jegliche Herausgabe oder Austausch von sensiblen Informationen. So verbleiben die entsprechenden Daten zu jeder Zeit bei den jeweiligen Besitzern. Das zentrale Analysemodell bekommt lediglich die Lernergebnisse sowie die Parameter von den einzelnen Modellen.

Federated learning ermöglicht, die Modellgüte bei maschinellem Lernen deutlich zu verbessern und dabei die Datenschutzbestimmungen einzuhalten. So wird aus einer Fülle von einzelnen Analysemodellen von unterschiedlichen Teilnehmern ein ganz zentrales Modell gebildet.

Der große Vorteil besteht darin, dass der entstehende Lerneffekt durch die Einbeziehung von Informationen von verschiedenen Trainingsdaten massiv bestärkt wird. Es wird auf mehreren Geräten parallel trainiert und somit steigt die Genauigkeit des Modells.

Föderales Lernen kann Unternehmen im Bereich Machine Learning die Möglichkeit eröffnen, eine Entwicklung von datengetriebenen Prozessen und Services auch bei begrenzter Datenbasis zu erhalten. Föderales Lernen besitzt das Potenzial, Kosten einzusparen und einen hohen Mehrwert zu generieren.

Wie funktioniert Federated Learning of Cohorts (FLoC)?

Federated learning of cohorts, kurz FLoC, ist ein Teil der Google-Privacy-Sandbox-Initiative. Es handelt sich dabei um eine Art von Web-Tracking. Das Nutzungsverhalten aller Nutzer kann durch den Browser selbst direkt ausgewertet werden und die Nutzer werden in bestimmte Kategorien gruppiert. Die Anwender erhalten daraufhin interessenbasierte Werbung.

Die Funktionsweise geht über Hashing, indem innerhalb des Browsers Kohorten-IDs generiert werden. Dies erfolgt mithilfe von SimHash-Algorithmen. Der Browser-Verlauf kann mittels Hash-Werten verschlüsselt werden. Die Privatsphäre wird dabei geschützt, denn FLoC ersetzt Third-Party-Cookies und auch Fingerprinting.

Trotzdem ist zielgerichtete Werbung für die Anwender möglich. Nutzer werden nach den entsprechenden Werten gruppiert und können daraufhin gezielt mit Werbung angesprochen werden. Über eine API kann man auf die Kohorten-ID zugreifen. Diese werden in jeder Woche neu erstellt. Entwickler erhalten zum Beispiel durch TensorFlow ein Federated-Learning-Framework, das Berechnungen für dezentrale Daten ermöglicht und daraus eigene Nutzertypen für Werbetreibende abzuleiten.

Mit welchem Framework wird Föderales Lernen aufgesetzt?

Eine Möglichkeit ist das bekannte Machine-Learning-Framework „Flower“. Dieses Framework wurde im Jahre 2020 entwickelt und ist durch seine weite Verbreitung und hohe Skalierbarkeit besonders vorteilhaft. Die Infrastruktur hat sich dabei als sehr bewährt herausgestellt, besonders durch die hohe Nutzerfreundlichkeit von Flower.

Fallbasiertes Schließen (case-based reasoning)

Was ist fallbasiertes Schließen?

Die Idee des fallbasierten Schließens (case-based reasoning, kurz cbr) stammt vom psychologischen Modell, dass Menschen mit gemachten Erfahrungen, aus ihnen gestellten Aufgaben, auf ähnliche Problemstellungen reagieren können. Mithilfe dieser Analogien werden durch maschinelle Lernverfahren Problemlösungen erzeugt und angewandt.

Beim fallbasierten Schließen werden maschinelle Erfahrungen durch ein Problem und einer dazu passenden Lösung erfasst. Dies ist das generelle Modell eines CBR-Systems, in welchem Fälle aus der Vergangenheit verwendet werden, um aktuelle Probleme lösen zu können. Erfahrungen bilden selbst in weiteren wissensbasierten Systemen die Basis für deren Aufbau, allerdings wird das Wissen in CBR-Systemen anders verwendet, sodass diese Anwendungen als Weiterentwicklung wissensbasierter Systeme angesehen werden.

Wie läuft ein CBR-Zyklus ab?

Das fallbasierte Schließen ist ein begründetes Paradigma der Künstlichen Intelligenz (KI) zum Problemlösen aufgrund von Erfahrungen. Dieses fundiert auf der Beobachtung, dass ähnliche Probleme meistens auch ähnliche Lösungen erfordern. Dementsprechend ist die Idee des fallbasierten Schließens, Erkenntnisse bei der Lösung der Probleme aus der Vergangenheit zu verwenden, um ähnliche Probleme an die aktuelle Situation anzupassen. Hierzu werden die Lösungen der einstigen Probleme angepasst, um diese damit auf die neue Problemstellung übertragen zu können.

Der Hauptbestandteil eines jeden fallbasierten Problemlösers ist die Fallbasis. Diese ist eine Sammlung gespeicherter Erfahrungseinheiten, den Fällen. Ein solcher Fall beinhaltet hierbei eine Beschreibung des Problems sowie eine dazugehörige Lösung. Dabei ist die Fallbasis in aller Regel in der Datenbank gespeichert und bildet das Grundwissen des Problemlösers.

Die neuen Probleme werden gelöst, dass Fälle aus einer Fallbasis aufgerufen werden (retrieve), die analog zu dem aktuellen Problem sind. Die in den ähnlichen Fällen abgespeicherten Erfahrungen werden sodann wiederverwendet (reuse). Dabei können zum Beispiel auch Teile einer Lösung im Hinblick auf ein neues Problem adaptiert und eventuell verbunden werden.

Was sind Anwendungen für fallbasiertes Schließen?

Das case-based reasoning hat sich vor allem in Anwendungssystemen für den Kundendienst, den Help-Desk-Systemen, bewährt, wo der Anwender es beispielsweise zur Diagnose von Kundenanfragen nutzt. In neuster Zeit wird es verstärkt in Beratungssystemen für Produkte eingesetzt, zum Beispiel im E-Commerce und zur Gliederung von Texten.

Vorteilhaft ist, dass die Methode selbst bei unvollständig beschriebenen und schlecht strukturierten Problemen verwendet werden kann. Im Vergleich zu benachbarten Konzepten genügt am Anfang schon eine recht kleine Sammlung von Referenzen, welche durch die Arbeit mit dem CBR-System immer weiter heranwächst. In den Anwendungsdomänen, deren Wirkungszusammenhänge nicht immer gänzlich bekannt sind, eignet sich CBR ebenfalls.

Feedforward Neural Network

Was ist ein Feedforward Neural Network?

Ein Feedforward Neural Network ist ein neuronales Netzwerk aus künstlichen Neuronen, das keinerlei Rückkopplungen aufweist. Die Signale laufen bei einem solchen Netzwerk immer von der Eingangsschicht in Richtung Ausgangsschicht. Dieser Klasse von Netzwerken gehören auch Multilayerperzeptronen und radiale Basisfunktionen-Netzwerke an. Feedforward Neural Networks werden auch als vorwärts gerichtetes Netzwerk oder als vorwärts fortschreibendes Netzwerk bezeichnet. Im Gegensatz zu solchen Netzwerken spricht man bei Netzwerken mit Rückkopplungen von rekurrenten Netzwerken.

Bei einem Feedforward Neural Network gibt es Verbindungen zwischen Knoten, die keinen Zyklus bilden. Dieses Netzwerk war das erste und einfachste künstliche neuronale Netzwerk. Die Information fließt in solch einem Netzwerk immer nur in eine Richtung. Der Informationsfluss kommt von den Eingangsknoten durch die verborgenen Knoten (falls vorhanden) zu den Ausgangsknoten. Es gibt weder Zyklen noch Schleifen in solch einem Netzwerk. Es gibt Einschicht-Perzeptrone oder Mehrschicht-Perzeptrone.

Tiefe vorwärts gerichtete Netzwerke sind Teil von Deep Learning. Diese Deep Learning Modelle sollen eine gewisse Funktion approximieren und werden Feedforward genannt, weil die Information durch eine Funktion fließt und von x evaluiert wird und dann durch Zwischenberechnungen läuft, um die Funktion f zu definieren und schließlich zur Ausgabe y gelangt. Es gibt keine Feedback-Verbindungen, in denen Ausgaben des Modells zu sich selbst zurückkommen.

Warum wird ein neuronales Modell benötigt?

Ein Netzwerk von Perzeptronen wird genutzt, um ein Problem zu lösen. So gibt es Eingaben ins Netzwerk, die aus rohen Pixel-Daten bestehen von einem gescannten, handgeschriebenen Bild einer Ziffer. Wir wollen, dass das Netzwerk Gewichtungen und Bias lernt, sodass das Netzwerk in der Ausgabe korrekt die Ziffer klassifiziert. Es soll so sein, dass bei einer kleinen Änderung in der Gewichtung auch nur eine kleine Änderung in der zugehörigen Ausgabe vom Netzwerk entsteht. Das macht dann das Lernen möglich.

Wie funktioniert ein Feedforward Neural Netzwerk?

Ein Feedforward Neural Netzwerk wird in seiner einfachsten Form als ein Single-Layer-Perzeptron angesehen. In diesem Modell wird eine Serie von Eingaben gemacht, die mit ihren Gewichtungen multipliziert wird. Jeder Wert wird hinzugefügt, um eine Summe von den gewichteten Eingabewerten zu erhalten. Ist die Summe von Werten über einem spezifizierten Schwellwert (normalerweise auf null gesetzt), dann wird der produzierte Wert oft 1 sein, wohingegen falls die Summe unter den Schwellwert sinkt, die Ausgabe -1 ist. Das Ein-Schichten-Perzeptron wird sehr häufig für Klassifizierungsaufgaben eingesetzt.