Freitag, November 17, 2017

Blockchain und Bitcoin

Blockchain als Basistechnologie in der Wirtschaft

In den letzten Jahren hat sich aus einer seltsamen Idee, wie man Daten verknüpfen kann, eine wichtige Technik für die datengetriebene Wirtschaft entwickelt. Man kann Verträge aber auch Geld auf eine neuartige Weise definieren.
Was steckt genau dahinter, ich will das mal hier erklären.

Der Wert von Bitcoins am 17. Nov. 2017 (Quelle: Bitcoin.com)

Eine feste Kette: Blockchain

Eine Kette in der realen Welt besteht aus Kettengliedern die untrennbar miteinander verknüpft sind. In der Informatik kann man eine derartige Kette auch aufbauen. Dort beginnt man mit einem ersten Kettenglied, was nichts anderes als ein Datenblock ist, das man mit einem zweiten Kettenglied, wieder ein Datenblock, verknüpft. 

Die Verbindung zwischen den Blöcken erfolgt über eine interessante mathematische Funktion, eine Hashfunktion. 

Was ist ein Hash?

Ein Hash ist eine Zahl, die aus einer anderen Zahl gebildet wird, ähnlich, wie man eine Quersumme von einer großen Zahl bilden kann. Für Blockchain wir der Hash Algorithmus SHA 256 verwendet, der weitaus mehr mögliche Ergebnisse liefert, als das Weltall Atome hat. Somit ist das zufällige Übereinstimmen von zwei Hashcodes praktisch unmöglich.
Ändert man die Ausgangszahl, aus der der Hash gebildet wird, so verändert sich auch der Hashcode in unvorhersehbarer Weise. Hierbei liegt die Betonung auf "unvorhersehbar", denn das wird später nochmal wichtig.

Ein Block


Ein Block in einer Blockchain ist eine größere Datei, etwa 1 MByte, in der Datensätze über wirtschaftlich relevante Vorgänge stehen, etwa:
Firma A überweist Firma B einen festen Betrag für die Lieferung von einem Produkt.
Sind etwa 1000 solche Vorgänge aufgesammelt, wird ein Block gebildet, der an die Kette angehängt wird.

Kettenglied einhängen

Das Einhängen des neuen Kettenglieds ist der spannende Prozess! Jetzt wird nämlich vom letzten Kettenglied der Hashcode genommen und zusammen mit dem neuem Kettenglied und einem freiem Datenfeld ein neuer Hashcode gebildet.
Dabei gibt es aber eine Besonderheit: Der neue Hashcode muss mit einer festen Zahl von Nullen beginnen. Da dies aber nicht vorhersehbar ist, kommt jetzt ein mühsamer Vorgang, das Mining, ins Spiel. 

Beim Mining versucht man das freie Datenfeld so lange zu ändern, bis zufällig am Anfang des Hashcodes die gewünschte Anzahl an Nullen steht. 
Aktuell müssen es mehr als 30 Nullen sein, so dass man Milliarden von Versuchen benötigt. Dafür gibt es inzwischen Rechenzentren (z.B. Genesis Mining), die nichts anderes als diese Rechenaufgabe auf Höchstleistungsprozessoren durchführen und dabei eine Menge (öko-) Strom verbrauchen. Die Menge entspricht dem Stromverbrauch des Landes Nigeria [1]

Ist die Rechnung erfolgreich, kann das nächste Kettenglied eingehängt werden. Jetzt wird die Kette an alle Miner verteilt, das sind tausende, und alle Rechnen weiter.
Mit der Zeit entsteht so eine sehr lange Kette, die man praktisch nicht ändern kann ohne all den Rechenaufwand nochmals zu haben und zugleich ist die Kette so gut im Internet verteilt, dass kein besonderes Backup nötig ist, da tausende von Kopien existieren. Aktuell hat etwa die Kette von Bitcoin eine Größe von 130 GByte.

Eine gute englische Einführung als Video

Wie Geld entsteht

Was genau in einer Kette steht ist nicht wichtig, aber man kann selbstverständlich auch die Zahlung von Geld in die Datensätze schreiben. Bei der Blockchain Bitcoin wird sogar eine eigene Währung, das Bitcoin, verwendet. Die digitalen Münzen Bitcoin werden an die Miner ausgezahlt, wenn sie erfolgreich einen Hash gefunden haben, eine Art Entlohnung für den Rechenaufwand und die Stromkosten. Diese Bitcoins können dann weiter getauscht werden oder auch von Teilnehmern in traditionelle Währungen, wie Dollar oder Euro getauscht werden. 

Ein Hype oder eine neue Welt?

Aktuell wird für ein Bitcoin etwa 7000 Euro gezahlt. Ein völlig fiktiver Wert, da es von keiner Zentralbank einen Anspruch auf Einlösung von Bitcoins gibt. Aber ähnlich wie bei Gold oder anderen Ersatzwährungen ist entscheidend ob ich einen Handelspartner finde, der den aktuellen Preis zu zahlen bereit ist.
Prinzipiell kann man alle tauschbaren Güter als Währung benutzen, sie müssen rar und schwer zu gewinnen sein. Beides ist bei Bitcoins gegeben, es gibt aus mathematischen Gründen nur 21.000.000 Bitcoins und das Berechnen des Hashcodes ist schwer.
Da die Anzahl der Bitcoins begrenzt ist, würde ihr Wert steigen, wenn der Welthandel auf diese Währung umsteigt. 
Eine Abschätzung: Das jährliche Weltbruttosozialprodukt liegt bei etwa 100.000 Milliarden Dollar. Will man das mit Bitcoins abbilden, wäre jedes Bitcoin 100.000.000.000.000 $ / 21.000.000 Bitcoin = 4,8 Mio.$ wert!
Damit ist natürlich noch viel "Luft" nach oben. 

Aber die Sache kann auch völlig anders ausgehen. Da Bitcoins ein anonymes Zahlungsmittel sind, wird diese Währung gerne für "illegale" Geschäfte genutzt, was dazu führt, dass einige Staaten, etwa China, die Nutzung verbieten. Würde sich diese Haltung der Staaten durchsetzen, wären die Bitcoins praktisch wertlos.

Wie die Sache ausgeht, weiß ich natürlich nicht, aber ich darf verraten, dass ich (aktuell) keine Bitcoins besitze.

Fazit


Auf jeden Fall ist die Blockchain Technologie sehr wichtig um im Internet zukünftig Geschäfte zu beglaubigen. Ob sich eine Währung, basierend auf dieser Technologie, durchsetzt, kann man noch nicht sagen, da sicherlich auch wieder neue, vielleicht noch überzeugendere Ideen geboren werden.


Zum Weiterlesen im Blog:



Hinweis: Die Darstellung ist sehr vereinfachend, da die verwendeten Datenstrukturen komplex und für das Prinzip nicht relevant sind. Der Wikipedia Beitrag ist für Interessierte, auch wegen der Quellen, nützlich: Blockchain

Quellen:
[1] Blockchains Use Massive Amounts of Energy—But There’s a Plan to Fix That, 2017
MIT Technology Review

Sonntag, November 05, 2017

Künstliche Intelligenz (KI)

Intelligente Maschinen

In den letzten fünf Jahren haben Maschinen erhebliche Fortschritte gemacht Intelligent zu werden, aber wie weit ist es noch bis wir wirklich von Intelligenz sprechen können, wo stehen wir?

Als jemand, der eine Dissertation mit dem Titel "Einsatz von Neuronalen Netzen in der Elektronenholographie"[1] vor 25 Jahren begann und 2001 abgeschlossen hat, will ich darauf einen genaueren Blick werfen.

Die Bausteine der KI

Für künstliche Intelligenz benötigt man drei Zutaten, sehr schnelle Rechner, gute Software, sehr viele Daten.

Schnelle Rechner

Die Geschwindigkeit von Rechnern hat in den letzten Jahren, wie seit hundert Jahren, zugenommen, aber es ging in letzter Zeit etwas unauffälliger voran und das liegt am Aufbau von Computern. Gab es in der Zeit von 1980 bis etwa 2010 einen spürbare Steigerung bei der Prozessorleistung, 8086 (1980, ein MegaFlop pro Sekunde), danach 80386, Pentium, und heute Core i7[2] Prozessoren (2016 50 GigaFlops) ist das eine Steigerung um den Faktor 50.000. (Eine Ursache liegt in der Lernkurve)

Das ist aber nur die halbe Wahrheit, denn die wahre Leistung eines modernen Computers liegt in der Grafikkarte. Um Videospiele in Echtzeit, hochauflösend und realistisch zu gestalten gibt es heute Grafikprozessoren, die tausendmal schneller sind und damit in den Leistungsbereich von Gehirnen vordringen!
Schnellster Rechner auf einer Platine von Nvidia [4]

Aktuell bietet etwa die Firma Nvidia einen Rechner mit acht Tesla100 [3] Prozessoren an, der 
960 000 000 000 000 Rechnungen pro Sekunde 
durchführt [4]. Dabei ist der Computer darauf optimiert, die Datenoperationen, die für Neuronale Netze erforderlich sind, optimal abzuarbeiten. 

Gute Software

Hohe Rechenleistung ist nur nützlich einzusetzen, wenn es geeignete Algorithmen gibt, die die Daten effizient aufbereiten. Künstliche Neuronale Netze (KNN) sind seit über 50 Jahren bekannt und seit den 1970 Jahren gibt es dafür auch einen sehr erfolgreichen Trainings-Algorithmus, den Backpropagation Algorithmus zum Trainieren der KNNs. Allerdings hat 1991 der Informatiker Sepp Hochreiter, geboren 1967 in Mühldorf am Inn (Am gleichen Ort wie der Autor dieses Blogs;), gezeigt [5], dass Backpropagation bei tiefen KNN, also jenen, die besonders "schlau" werden können, versagt. 

LSTM Speicherzelle, Quelle: Wikipedia

1997 ist es dann Sepp Hochreiter gelungen eine Alternative für die Neuronen in den Netzen aufzuzeigen, die Deep Learning ermöglicht. Das Verfahren wird als Long-Short-Term-Memory (LSTM) bezeichnet und ist eine überschaubar komplizierte Erweiterung des ursprünglichen Konzepts. 

Das entscheidende an diesem Verfahren ist eine Art Gedächtnis, das es dem Computergehirn ermöglicht, sich kurzzeitig an Ereignisse zu erinnern, was etwa beim Autofahren oder Texte erkennen entscheidend ist. Die Erfolge, die man aktuell in diesem Gebiet beobachtet, gehen entscheidend auf den Einsatz von LSTM zurück.


Viele Daten

In den Tagen, zu denen ich in den ich in den 1990 Jahren KNN programmiert und trainiert habe, gab es fast keine Daten, die man für das Training verwenden konnte. Ich erinnere mich noch an einen Diplomanden, den ich betreut habe, der achttausend Datensätze für eine Analyse vorbereiten musste.

Völlig anders ist die Situation heute, Täglich werden Milliarden Bilder und Texte ins Internet hochgeladen und stehen zur Verfügung, Big Data eben.

Ein Meer aus Bildern als Datenquelle

Unternehmen, die sich darauf besonders konzentrieren, an vorderster Stelle Google, sind daher auch in diesem Gebiet erfolgreich, wie ich schon 2004 [6] prognostiziert habe.

Und tatsächlich ist es einem Computer von Alphabet (Dachfirma von Google) 2016 [7] gelungen, das sehr schwierige Brettspiel Go gegen den Weltmeister aus Südkorea zu gewinnen (AlphaGo), und nur ein Jahr später war ein Programm aus dem gleichem Hause in der Lage, von 100 Partien gegen diese künstliche Go-Maschine 100 Partien zu gewinnen, also weit jenseits der Go-Intelligenz des Menschen, zu spielen.

Der Weg zur klugen Maschine

Vergleicht man die Situation heute mit dem Stand der Technik vor 25 Jahren, dann hat die künstliche Intelligenz gewaltige Fortschritte gemacht, der Computer gewinnt in Schach (1997), in der Quiz Show "Jeopardy" (2011) und in Go (2016). Er kann leidlich gut übersetzen, Bildinhalte erkennen und zumindest teilweise, Auto fahren. Aber immer haben wir berechtigterweise das Gefühl, der Computer ist dumm im Vergleich zu uns. Doch was fehlt? Jürgen Schmidhuber hat in einem Interview vermutet, es fehlen noch fünf Zeilen Code im Programm von Sepp Hochreiter. Nur welche?

Betrachtet man das menschliche Gehirn, so ist klar, dass die Arbeitsweise eines Neurons, einer Nervenzelle im Gehirn, nicht so besonders komplex ist. Allerdings ist die Verschaltung, und auch das Training, sehr trickreich. Ein Mensch kommt fast blind, taub und stumm zur Welt, nach einigen Monaten kann er Bilder und Worte erkennen, nach einigen Jahren sprechen und nach zwei Jahrzehnten ein Studium abschließen, ist dann also Intelligent (Genauer: Hat einen Bachelorabschluss).

Was ist in der Zeit passiert? Die 100 Milliarden Neuronen (10^11) haben pro Neuron tausende Verbindungen (Synapsen) aufgebaut und jede Sekunde bis zu 100 Nervenimpulse ausgesendet. 
Alles zusammen sind das 10^11*10^3*10^2*20*365*24*60*60 = 6,3* 10^24 Rechenoperationen bis das Studium abgeschlossen ist. Gehen wir davon aus, wir würden den genauen Algorithmus kennen und die Daten in den aktuellen Rechner von Nvidia einspeisen, nach 208 Jahren hätte der Computer den Bachelor Titel. 

Das ist zumindest ein Hinweis, wo wir stehen. In 10 Jahren ist der Computer 100 mal schneller, der Bachelor Titel nach zwei Jahren geholt und der Computer ist intelligent. 

Daher die Prognose: Im Jahr 2029 ist der Computer intelligent wie ein Mensch!

Worin die Gefahren liegen, habe ich im Blog "Glück gehabt" beschrieben.

Quellen:

[1] EINSATZ VON NEURONALEN NETZEN IN DERELEKTRONENHOLOGRAPHIE Dissertation Zur Erlangung des Grades eines Doktors der Naturwissenschaften an der Fakultät für Physik der Eberhard-Karls-Universität zu Tübingen Vorgelegt von Eduard Heindl aus Mühldorf am Inn 2001
[2] Intel-Core-i-Serie, Wikipedia
[3]  Whitepaper: NVIDIA Tesla P100 The Most Advanced Datacenter Accelerator Ever Built Featuring Pascal GP100, the World’s Fastest GPU
[4] Nate Oh, NVIDIA Ships First Volta-based DGX Systems, Anandtech, September 7, 2017
[5] Sepp Hochreiter's Fundamental Deep Learning Problem (1991), Diplomarbeit bei
Jürgen Schmidhuber
[6] Eduard Heindl, Das Google Zeitalter, Vortrag im Studium Generale der FH-Furtwangen am 14. Juni 2004
[7] AlphaGo, Wikipedia