Blockchain

Was ist eine Blockchain?

Blockchain ist ein dezentrales und unveränderliches Aufzeichnungssystem, das es ermöglicht, Transaktionen und Assets in einem Netzwerk nachzuvollziehen. Es wird oft als Kontobuch, Transaktionsbuch oder Ledger bezeichnet. Dieses System kann sowohl materielle (z.B. Häuser, Autos, Geld, Land) als auch immaterielle Güter (z.B. geistiges Eigentum, Patente, Urheberrechte, Marken) verfolgen und handeln.
Blockchain ist beispielsweise die Technologie, die Kryptowährungen wie Bitcoin und zugrunde liegt und findet auch Anwendung im NFT-Markt.

Blockchain gilt als eine neue und innovative Technologie und ist weithin als sichere und transparente Methode zur Speicherung und Übertragung von Daten anerkannt. Wie jede Technologie ist sie jedoch nicht perfekt, und es gibt einige Bedenken hinsichtlich ihrer Skalierbarkeit und ihrer potenziellen Anwendungsfälle.

Für das Erlernen von Blockchain gibt es zahlreiche Online-Ressourcen wie Tutorials, Kurse und Foren. Viele Universitäten und Hochschulen bieten inzwischen auch Kurse zu Blockchain und Kryptowährung an. Darüber hinaus gibt es im Internet viele Blockchain-Entwicklungs-Communities, in denen man viel über die Blockchain-Entwicklung lernen, Fragen stellen und sich mit anderen Entwicklern austauschen kann.

Wie funktioniert eine Blockchain?

Jede Transaktion wird als Block von Daten aufgezeichnet, der die Bewegung eines Assets, das sowohl materiell als auch immateriell sein kann, darstellt. Dieser Block kann je nach Bedarf Informationen wie wer, was, wann, wo, wie viel und sogar Bedingungen, wie z.B. die Temperatur bei einer Lebensmittellieferung, enthalten. Diese Blöcke sind miteinander verknüpft und bilden eine Kette, während sich das Asset von einem Ort zum anderen bewegt oder sich Eigentumsverhältnisse ändern.
Jeder Block bestätigt die genaue Zeit und Reihenfolge der Transaktionen und die Blöcke sind sicher miteinander verknüpft, sodass kein Block verändert oder zwischen zwei bereits bestehenden Blöcken eingefügt werden kann. Diese Kette von Blöcken ist die Blockchain, die jederzeit nachvollziehbar und unveränderlich ist und die Sicherheit durch jeden zusätzlichen Block erhöht. Durch die Unveränderlichkeit der Blockchain ist eine Manipulation ausgeschlossen und es entsteht ein digitales Kontobuch, dem man vertrauen kann.

Der Nutzen von Blockchains

Aus der Funktionsweise ergibt sich auch der Nutzen von Blockchains: Sie sind äußerst sicher und transparent für die Speicherung und Übertragung von Daten. Dies geschieht durch den Einsatz von Kryptographie, um jeden Datenblock mit dem vorhergehenden Block zu verknüpfen, wodurch eine Kette von Blöcken entsteht. Da die Daten im gesamten Netzwerk gespeichert werden, ist es schwierig, sie zu hacken oder zu manipulieren, ohne den Konsens des Netzwerks zu ändern. Zudem ist jeder Block mit dem vorherigen verknüpft, so lassen sich Transaktionen leicht verfolgen und überprüfen.

Dies macht sie für eine Vielzahl von Anwendungen nützlich, darunter Finanztransaktionen, Lieferkettenmanagement und Online-Identitätsüberprüfung.

Beispiele für die Anwendung von Blockchains

Online-Casinos

Ein Beispiel dafür, wie Blockchain in der realen Welt eingesetzt wird, sind Online-Casinos. Blockchain-Casinos verwenden intelligente Verträge, um den Prozess der Wetten und Gewinnauszahlungen zu automatisieren. Dadurch wird der Prozess nicht nur effizienter, sondern es wird auch sichergestellt, dass die Spiele fair sind und dass die Spieler dem Casino bei der Auszahlung der Gewinne vertrauen können.

Finanzbereich

Ein weiteres Beispiel ist der Einsatz der Blockchain-Technologie im Finanzbereich. Blockchain-Plattformen wie Ethereum werden genutzt, um digitale Vermögenswerte und neue Finanzinstrumente wie Stablecoins zu schaffen, die an den Wert traditioneller Währungen gekoppelt sind. Dadurch wird es für die Menschen einfacher, in digitale Vermögenswerte zu investieren, und es entstehen neue Finanzmärkte.

Lieferkettenmanagement

Und schließlich hat die Blockchain-Technologie ein enormes Potenzial für den Einsatz im Lieferkettenmanagement. Durch die Bereitstellung einer sicheren und transparenten Methode zur Verfolgung von Produkten auf ihrem Weg durch die Lieferkette kann die Blockchain dazu beitragen, die Effizienz zu steigern, Kosten zu senken und die Transparenz zu verbessern. So können Unternehmen die Herkunft von Produkten leichter zurückverfolgen, sicherstellen, dass sie aus ethischen Gründen bezogen werden und Probleme schneller erkennen und lösen.

Bootstrapping

Was ist Bootstrapping?

Beim Bootstrapping-Verfahren handelt es sich um eine Methode in der Statistik zur Schätzung von Verteilungsfunktionen, bei welcher das Verfahren des sogenannten Resampling angewandt wird. Resampling beschreibt eine Vorgehensweise der wiederholten Ziehung von Unterstichproben aus einer Ausgangsstichprobe, um so Rückschlüsse auf Größen der ursprünglichen Verteilungsfunktion wie Mittelwert oder Standardabweichung zu erhalten.

Bootstrapping findet dort Anwendung, wo die Verteilungsfunktion einer Statistik nicht bekannt ist und dahingehend geschätzt werden muss. Voraussetzung für die Wirkungsweise ist eine gewisse Größe der Ausgangsstichprobe.

Der Name Bootstrapping leitet sich aus dem englischen Wort für Stiefelschlaufe ab und hat in der Geschichte vom Baron von Münchhausen seinen Ursprung. Da Baron von Münchhausen sich der Geschichte nach an seinen eigenen Stiefeln aus dem Sumpf zog, wird diese Metapher auch für die Methode aufgegriffen, indem beim Bootstrap-Verfahren die Unterstichprobe aus der eigenen Stichprobe gezogen wird.

Was sind statistische Verfahren im Bootstrapping?

Da Bootstrapping lediglich eine allgemeine Vorgehensweise in der Statistik beschreibt, entwickelten sich für unterschiedliche Anwendungsgebiete auch verschiedene konkrete Bootstrapping-Verfahren. Beim i.i.d Bootstrap (independent and identically distributed; engl. für unabhängig und identisch verteilt) wird beispielsweise derart vorgegangen, dass wiederholt eine bestimmte Unterstichprobengröße aus der Ausgangsstichprobe mit Zurücklegen gezogen wird. Nach dem Ziehen der definierten Anzahl an Stichprobenwiederholungen kann die approximierte Verteilung zur Erzeugung eines Konfidenzintervalls verwendet werden.

Da das i.i.d Bootstrap keine zeitliche Korrelation der Daten darstellen kann, wird für solche Fälle Block-Bootstrap angewendet. Bei dieser Methode werden in einem vorbereitenden Schritt die Daten in zusammenhängende Blöcke unterteilt. Durch Aufteilung der Trendzeitreihenfunktion in einen Trend- und Residualanteil wird die Grundlage zur Durchführung des Verfahrens geschaffen. Der Residualanteil entspricht dabei der Differenz zwischen dem jeweiligen Mess- und Schätzpunkt. Mittels Ziehen und Zurücklegen werden wiederholt Residualblöcke gezogen, bis die Länge des ursprünglichen Signals bzw. der Ausgangsstichprobe erreicht wird und anschließend mit der Trendzeitreihe addiert. Durch wiederholte Anwendung dieser Stichprobenwiederholung kann schlussendlich mit diesem Verfahren eine zeitliche Korrelationsfunktion mittels Bootstrap dargestellt werden.

Im Gegensatz zu den bisher beschriebenen Verfahren des nichtparametrischen Bootstrapping wird beim parametrischen Bootstrapping eine bestimmte Verteilung der Ausgangsstichprobe angenommen. Nichtparametrisches Bootstrapping macht sich die Tatsache der nichtparametrischen Statistik zunutze, dass für ihre Anwendung keine Annahmen über die Verteilung trifft, da diese erst aus der betrachteten Stichprobe hervorgeht. Beim parametrischen Bootstrapping konzentriert man sich auf die Schätzung der Parameter der angenommenen Verteilung.

Wo wird das Verfahren beim maschinellen Lernen genutzt?

Im Bereich des maschinellen Lernens wird das Verfahren im Rahmen des sogenannten Bagging (kurz für „Bootstrap Aggregating“) genutzt. Bagging findet insbesondere bei Regressions– und Klassifikationsbäumen Anwendung und soll der Varianzreduktion und somit der Verbesserung von Vorhersagewerten dienen. Durch Bootstrapping werden beim Bagging Stichproben gezogen (Bootstrap), welche mit dem Vorhersagemodell trainiert und schlussendlich zu einem Vorhersagewert aggregiert (Aggregating) werden. Auch im Bereich des Temporal Difference Learning im Umfeld des bestärkenden Lernens wird das Verfahren verwendet, indem die Zielfunktion durch Varianzreduktion iterativ optimiert wird.

Die Programmiersprache R bietet für nichtparametrisches Bootstrapping eine Implementierung an. Durch Angabe der Parameter können einzelne Größen oder Vektoren berechnet werden. In einem nächsten Schritt lassen sich auch die dazugehörigen Konfidenzintervalle ermitteln.

Auch Statistiksoftware wie SPPS von IBM oder Stata bieten weitgehend automatisierte Anwendungsverfahren von Bootstrapping. SPSS stellt dahingehend sogar ein eigenes Modul mit vielen Funktionalitäten zur Verfügung. Nach Eingabe der einzelnen Parameter wird die Stichprobenverteilung mittels der beschriebenen Methode geschätzt.

Bagging

Was ist Bagging?

Bagging bezeichnet eine Abkürzung des Begriffs „Bootstrap Aggregating“ und stellt ein Verfahren zur Varianzreduktion bei Verwendung von verschiedenen Klassifikations- und Regressionsbäumen im Rahmen des maschinellen Lernens dar.

Neben dieser Erhöhung der Genauigkeit von Klassifikations- und Regressionsproblemen, wird Bagging auch genutzt, um das bekannte Problem des Overfitting zu lösen. Die Ergebnisse des Algorithmus sind besonders gut, wenn die einzelnen Lerner der Klassifikations- und Regressionsbäume instabil sind und eine hohe Varianz aufweisen.

Gemäß der Wortbestandteile wird bei dieser Methode das Bootstrap Aggregating in zwei Prozessschritten durchlaufen. Bootstrapping beschreibt grundsätzlich ein Verfahren in der Statistik, bei welcher wiederholt Zufallsstichproben aus einem definierten Datensatz gezogen werden, um eine unbekannte Verteilungsfunktion des Datensatzes zu identifizieren. Somit ist dieses Bootstrapping-Verfahren dem Resampling zuzuordnen, da auf Basis einer Stichprobe (Datensatz) wiederholt Unterstichproben gezogen werden. Diese einzelnen Stichproben werden anschließend mit dem Vorhersagemodell bzw. schwachen Klassifizierern trainiert und anschließend zu einem Vorhersagewert aggregiert.

Daraus leitet sich auch der Name Bootstrap Aggregating ab, indem Daten anfangs durch wiederholte Stichproben gezogen werden (mittels des Bootstrapping-Verfahrens) und anschließend die Vorhersagemodelle vereinigt (aggregiert) werden. Somit ist es möglich, dass diese Methodik zu einer Informationsfusion führt und sich dadurch die Klassifikations- bzw. Regressionsleistung erhöht.

Wie funktioniert die Ensemblemethode?

Bei einer Ensemblemethode bzw. dem Ensemble Learning spricht man grundsätzlich davon, wenn mehrere (schwache) Lerner bzw. Klassifizierer zusammengeschaltet und durchlaufen werden und dadurch ein sogenanntes Ensemble entsteht. Dahin gehend spricht man bei den Ensemblemethoden auch von einem Meta-Ansatz des maschinellen Lernens, da mehrere Modelle zu einem Vorhersagewert zusammengefasst werden.

Wie eingangs beschrieben, werden beim Bagging (Bootstrap Aggregating) mehrfach Stichproben eines Datensatzes gezogen und anschließend derselbe Algorithmus mit den Stichprobendaten parallel trainiert und getestet. Dabei werden im Regelfall Zufallsstichproben des Datensatzes gezogen, jedoch wäre es auch möglich, den gesamten Datensatz zu verteilen und daraus die Aufteilung der Daten zu generieren. Bei der Auswahl der Daten durch eine Zufallsstichprobe entspricht es dem Modell „Ziehen mit Zurücklegen“. Dies bedeutet, dass bestimmte Datenpunkte mehrfach (über mehrmalige zufällige Selektion) in das Modell einfließen können, andere hingegen gar nicht.

Nach der Generierung der Stichprobe erfolgt die Anwendung des Lernalgorithmus für jedes Ensemblemitglied. Dabei geschieht dies parallel zueinander. Abschließend werden die einzelnen Vorhersagemodelle aggregiert, wodurch ein endgültiger Ensemble-Klassifizierer entsteht. Die einzelnen Modelle bzw. Algorithmen können entweder mit gleich großen Gewichten in den Klassifizierer einfließen oder aber auch unterschiedlich hohe Gewichte besitzen.

Was unterscheidet Bagging von Boosting?

Neben dem Bagging stellt auch das sogenannte Boosting eine Ensemblemethode im maschinellen Lernen dar.

Dabei werden im Gegensatz zum Bagging die (schwachen) Klassifizierer nicht parallel durchlaufen, sondern sequenziell. Bei beiden dargestellten Methoden wird zu Beginn eine Basisstichprobe gezogen. Aufgrund der iterativen und sequenziellen Vorgehensweise der Ensemblemethode ist es möglich, dass die Erkenntnisse aus den vorherigen Schritten auf nachfolgende Schritte angewandt wird. Dies wird erreicht, indem falsch klassifizierte Iterationen anders gewichtet werden als richtig klassifizierte Iterationen.

Ziel von Boosting ist es, dass aus einer Vielzahl von schwachen Klassifizierern schlussendlich ein starker Klassifizierer entsteht. Während beim Bagging grundsätzlich auch Gewichte zur Anwendung kommen können, unterscheiden sich diese beim Boosting dahin gehend, dass ihre Größe vom bisherigen sequenziellen Fortschritt abhängen, während die Gewichte beim Bagging bereits im Vorhinein definiert werden, da der Prozess parallel abläuft.

Ein weiterer Unterschied zwischen den beiden Methoden besteht in der Zielsetzung. Das Ziel von Bagging besteht darin, durch Kombination die Varianz der einzelnen Klassifizierer zu reduzieren, während Boosting darauf abzielt, den systematischen Fehler bzw. die Verzerrung der Verteilung (=Bias) zu verringern. Dahin gehend kann Bagging dabei helfen, das Overfitting-Problem zu lösen, während dies beim Boosting keine Zielsetzung darstellt.

Beide Verfahren lassen sich mit Python umsetzen, wobei die scikit-learn-Bibliothek eine Implementierung für Ensemblemethoden bereitstellt und somit relativ einfach umgesetzt werden kann.

BERT

Was ist BERT?

BERT steht für „Bidirectional Encoder Representations from Transformers“ und beschreibt einen Algorithmus, welchen Google für Suchanfragen verwendet. Google entwickelt in ihren sogenannten Core-Updates den Algorithmus für Suchanfragen weiter, um immer bessere Suchergebnisse auf Suchanfragen der Nutzer zu erzielen.

BERT wurde Ende 2019 eingeführt und hat den Zweck, den Kontext der Suchanfrage besser zu verstehen. Dabei wurde ein besonderes Augenmerk auf Präpositionen und Füllwörter in der Suchanfrage gelegt, welche Google früher in Suchanfragen oftmals ignorierte. Neben dem Einsatz des Algorithmus wurden mit BERT auch sogenannte „Featured Snippets“ eingeführt. Dabei handelt es sich um hervorgehobene Suchergebnisse, welche dem Nutzer in Kurzform die Antwort auf die Suchanfrage liefern soll.

Da BERT auf die Sprach- und Texterkennung (Natural Language Understanding) sowie deren Verarbeitung abzielt, basiert der Algorithmus auf Natural Language Processing (NLP) im Gebiet der neuronalen Netze. NLP hat sich zum Ziel gesetzt, die natürliche menschliche Sprache für Computer verarbeitbar zu machen, sodass sie den Sinn der Sprache verstehen.

BERT nutzt ein Spezialgebiet im Bereich des maschinellen Lernens, das sogenannte Transfer Learning. Grundsätzlich fundieren Konzepte des maschinellen Lernens darauf, dass Trainings- und Testdaten aus demselben Merkmalsraum und derselben Verteilung stammen. Dies hat jedoch die Einschränkung, dass bei einer Änderung der Verteilung die ursprünglichen Trainingsdaten nicht weiter verwendet werden können. Beim Transfer Learning ist es jedoch möglich, dass Trainingsdaten aus einem „fachfremden“ Datensatz herangezogen und zur Lösungsfindung genutzt werden können. Dies reduziert die Anzahl der benötigten Trainingsdaten sowie gegebenenfalls auch die Trainingszeit. Während Transfer Learning ihren Ursprung in der Bilderkennung hat, nutzt BERT diese Methodik für die Textverarbeitung, da Suchanfragen sehr individuell gestellt werden und nicht immer spezifische Trainingsdaten vorhanden sind.

Wie ist das Sprachmodell aufgebaut und welche Funktionen umfasst es?

Das Sprachmodell BERT beruht auf Rechenmodellen, sogenannten Transformers, welche ein Wort jeweils in Beziehung zu allen anderen Wörtern eines Satzes stellt und so die Bedeutung besser zu verstehen versucht. Die Transformer funktionieren derart, indem Eingangssignale über sogenannte Encoder in eine verarbeitbare Form von Vektoren gebracht werden, mit welchen mathematische Operationen durchgeführt werden können. Im sogenannten „Self-Attention-Layer“ erfolgt die Gewichtung jedes Wortes der Eingabe anhand einer Werteskala. Diese Werteskala bewertet jedes Wort in Beziehung zu den anderen Worten der Eingabe. Die Werte werden anschließend normalisiert und mittels sogenannter Softmax-Funktion derart gewichtet, dass sich die Summe aller Werte auf 1 summiert. Anschließend werden diese an den nächsten Layer weitergeleitet.

Sowohl die Encoder als auch die Decoder sind als Feed-Forward-Neural-Network aufgebaut. Das bedeutet, dass es innerhalb der neuronalen Netze zu keiner Rückkoppelung zu vorherigen Schichten/Layern kommt, wie es bei rekurrenten Netzen der Fall ist. Im Decoder kommt es wieder zur Anwendung eines „Self-Attention-Layers“, zur Normalisierung der Werte sowie zur Zusammenführung mit den verarbeiteten Inputdaten im sogenannten „Encoder-Decoder-Attention-Layer“. Anschließend kommt es wiederum zur Implementierung eines neuronalen Feed-Forward-Netzes sowie zur Anwendung einer Linearisierung der Werte und der Softmax-Funktion, um schlussendlich die wahrscheinlichste Lösung auszugeben.

Auch BERT funktioniert wie die meisten Algorithmen auf Basis von Wahrscheinlichkeiten, auf welchen für die Lösungsfindung aufgesetzt wird.

Black Box

Was ist eine Black Box?

Als Black Box wird jedes System der eingesetzten künstlichen Intelligenz bezeichnet, dessen Eingaben und Operationen nicht sichtbar für den Benutzer sind. Allgemein handelt es sich bei einer Black Box um ein undurchdringliches System.

Bei Deep Learning wird in der Regel eine Black-Box-Entwicklung durchgeführt. So nimmt der Algorithmus Millionen von Datenpunkten entgegen, verarbeitet diese Eingabe und korreliert bestimmte Datenmerkmale, damit er eine Ausgabe erzeugen kann. Im Data Mining dagegen ist es ein Algorithmus oder auch eine Technologie, die keinerlei Erklärung für ihre Funktionsweise geben kann.

Ein Black-Box-Modell zur Entwicklung von Software mit künstlicher Intelligenz ist ein adäquates Entwicklungsmodell, um Software Bausteine zu testen. Dagegen spricht man bei Suchalgorithmen, Entscheidungsbäume und wissensbasierte Systeme, die von KI-Experten entwickelt wurden, transparent sind und nachvollziehbare Lösungswege bieten, von White-Box-Verfahren.

Eine Black Box im maschinellen Lernen ist ein Modell rein statistischer Art. White-Box-Modelle bezeichnen hingegen analytische und physikalische Beschreibungen, bei denen eine Modellierung häufig sehr aufwändig ist. Die Grey-Box-Modelle kombinieren schließlich beide Ansätze und können die jeweiligen Vorteile in sich vereinen.

Was sind typische Methoden?

Ein Black-Box-Test wird immer dann eingesetzt, wenn keine Kenntnisse der inneren Funktionsweise und Implementierung der Software vorhanden sind. Nur das nach außen sichtbare Verhalten fließt in den Test mit ein.

Ein erfolgreicher Test stellt dabei keinen ausreichenden Hinweis auf ein erfolgreiches und fehlerfreies System dar. So können eine nicht-geforderte Funktionalität oder eine massive Sicherheitslücke unerkannt bleiben. Ein Testverfahren genügt deshalb in aller Regel nicht aus, da Strukturtests keine fehlende Funktionalität erkennen können und Funktionstests nur unzureichend die vorliegende Implementierung berücksichtigen. Am besten ist ein kombiniertes Vorgehen von Funktionstests mit Grenzwertanalyse beziehungsweise Zufallstest, Strukturtests der Abschnitte welche nicht abgedeckt wurden und Regressionstests nach Fehlerkorrektur.

Funktionstests können die vorliegende Implementierung nur unzureichend berücksichtigen. Als Testmethoden gib es funktionale Tests (Black-Box-Test) mit einer Testfallauswahl, die auf einer Spezifikation beruht. So werden Äquivalenzklassentests durchgeführt, Grenzwerte berechnet und der Test über spezielle Werte eingegrenzt. Zustandstests können auf dieser Spezifikationsbasis umgesetzt werden.