Künstliche Intelligenz wird die Menschheit übernehmen

Der Artikel

In meinem Studium habe ich momentan das Fach Künstliche Intelligenz und der Dozent gab uns die Aufgabe, folgenden Artikel durchzulesen:

The AI Revolution: The Road to Superintelligence
https://waitbutwhy.com/2015/01/artificial-intelligence-revolution-1.html

Was ich darin gelesen habe, ist gleichzeitig unglaublich wie auch erschreckend.

Falls Sie sich nur im Geringsten für künstliche Intelligenz (oder Ihre nahe Zukunft) interessieren und des Englischen mächtig sind, empfehle ich Ihnen unbedingt, diesen Artikel zu lesen. Er ist zwar nicht nur unglaublich, sondern auch unglaublich lang, aber ich verspreche, dass es sich lohnen wird!

Welche Punkte sind speziell erwähnenswert?

Nun zuerst einmal das Law of Accelerating Returns: Der menschliche Fortschritt passiert schneller und schneller, und ist mit der künstlichen Intelligenz momentan vielleicht am extremsten Wendepunkt beziehungsweise bei der grössten Steigung der Menschheitsgeschichte. Die Veränderung in naher Zukunft werden, gemäss Artikel, riesig sein. Und diese Veränderungen werden exponentiell und nicht linear stattfinden.

Viele Menschen denken dabei bei künstlicher Intelligenz an Roboter, welche die Welt übernehmen. Dem ist aber nicht so: Künstliche Intelligenz ist mehr das Gehirn, welches einen Roboter steuern kann. Diese Intelligenz steht nur vor der Gefahr, der Menschheit zu entgleiten, in einer sogenannten Singularity. Singularity steht für einen Moment, bei dem normale Regeln nicht mehr gelten. Dies kann eintreffen, wenn die Intelligenz der gebauten Technologie die Intelligenz der Menschheit übersteigt.

Noch ist dieser Zeitpunkt noch nicht gekommen. Das menschliche Gehirn ist superkomplex und die künstliche Intelligenz hat Mühe, Arbeiten zu erledigen bei denen man eben NICHT denken muss. Arbeiten, bei denen es etwa um Empathie oder Gefühle geht. Bei denen es darum geht, Formen oder Tiere in einem Bild zu erkennen. Aufgaben, die Kinder bereits hinkriegen, sind heute für den Computer eine Schwierigkeit.

Dies kann sich aber ändern, wenn sich die heutigen ANI = Artificial Narrow Intelligence = schwache Intelligenz zu einer ASI = Artificial Superintelligence entwickelt.

Eine ASI ist für einen Menschen unvorstellbar intelligent. So intelligent, wie Menschen es zu Spinnen oder Käfer sind. Wenn ich zur Arbeit gehe und am Wegesrand einen Käfer sehe, habe ich mir schon oft gedacht, dass dieser Käfer keine Ahnung von der Welt hat, in die ich gerade gehe: Auf SSH Server connecten, programmieren, MQ Messages rumschicken – Nichts davon ist dem Käfer bekannt, und dennoch existiert dieser Teil der Welt. Genauso kann es mit einer ASI und den Menschen enden. Eine ASI, die sich selber trainiert und Dinge beibringt, und zwar weit über die Denkfähigkeit eines Menschen hinaus. Eine ASI würde beim Erreichen der menschlichen Gehirn-Leistungsfähigkeit nicht stoppen.

Meine Meinung zu dem Artikel

Die Fragen dabei sind: Wann wird es passieren und wird die ASI dabei gut oder schlecht sein?

Wer mich kennt weiss, dass ich ein elender Optimist bin. Das Internet wurde erfunden, und ja, es gibt viele russische/anders geografisch lokalisierte/böse Idioten/Arschlöcher/Hacker/etc., welche das Internet für illegale Tätigkeiten, Erpressung oder das Verbreiten von Würmen und Viren verwenden. Der Grossteil der Leute will aber nur friedlich ihre Pornos schauen und gegeneinander Dota 2 zocken. Meiner Meinung nach kann das Internet daher grundsätzlich als Erfolg angesehen werden.

Genauso denke ich, dass eine ASI dem Menschen unglaublich weiterbringen könnte – Ja sogar insofern unglaublich, dass ich selber nicht genau weiss, inwiefern.

Im Artikel wird sogar geschrieben, dass der Mensch gegebenfalls sogar die Sterblichkeit oder das Altern überwinden kann. Das finde ich doch sehr unglaublich. Aber darum geht es ja gerade.

Wenn eine ASI mit Nanotechnologie den Menschen heilen kann… ja warum eigentlich nicht? Wäre ich ein Käfer würde ich das dem ASI-Menschen durchaus zutrauen.

Meine offenen Fragen

Ich habe viele Fragen zu dem Artikel, aber kann mir jemand eine Antwort geben?

Wann wird es geschehen?

Wird die ASI gut oder schlecht sein?

Werde ich ewig leben können?

Kann ich dann endlich aufhören zu arbeiten?

Kann mir die ASI ein supergeiles Computerspiel programmieren?

Kann eine ASI die Gefühle, die beim Schauen eines Pornos oder beim (echten wie virtuellen) Sex entstehen, vertausendfachen?

Weltbewegende Fragen!

 

Was ist statistische Standardisierung?

17.02.2017

Stellen Sie sich vor, Sie haben eine Menge statistische Daten und stellen diese grafisch dar. Es gibt jeweils beidesmal einen hübschen Hügel, welcher wie die Gauss’sche Glockenkurve aussieht. Sie möchten nun die beiden Hügel miteinander vergleichen – Dies geht aber nicht, den beide Hügel haben eine ganz andere Lage. Der eine ist irgendwo um die 0 und der andere liegt irgendwo bei 200.

Eine Standardisierung der beiden Daten kann Ihnen hierbei behilflich sein.

PS: Die Gauss’sche Glockenkurve heisst übrigens auch Normalverteilung und dieses Verfahren findet man auch unter dem Namen z-Transformation.

Wie sehen die Hügel nach der Standardisierung aus?

Wenn die Daten standardisiert wurden, liegt ihr Erwartungswert bei 0 und die Standardabweichung bei 1.

standardisierung

Quelle dieses genialen Bildes: http://www.statistics4u.info/fundstat_germ/ee_ztransform.html

Dabei gelten folgende Regeln:

  • Geht man vom Erwartungswert nach links und rechts „eine“ Standardabweichung findet man ca. 70% der Werte
  • Geht man vom Erwartungswert nach links und rechts „zwei“ Standardabweichungen findet man ca. 95% der Werte
  • Geht man vom Erwartungswert nach links und rechts „drei“ Standardabweichungen findet man ca. 99% der Werte

Und wie mache ich diese Standardisierung?

Die Formel, um Ihre Daten zu standardisieren, ist ganz simpel:

standardisierung2

In Python kann man dies mit Numpy Methoden folgendermassen erreichen:

X = (X - X.mean()) / X.std()

Mü oder X.mean() steht dabei für den Erwartungswert und sigma oder X.std() für die Standardabweichung.

Was ist der Erwartungswert?

Erwartungswert ist einfach gesagt einfach der Durchschnitt der Werte. Andere Namen dafür sind Mittelwert oder arithmetisches Mittel.

mittelwert

Was ist die Standardabweichung?

Die Standardabweichung ist der Wert, den die meisten Daten im Durchschnitt vom Erwartungswert abweichen. Es ist ein Mass für die Streubreite der Daten.

standardabweichung

Warum funktioniert das?

Nun, die Schritte, die in der Formel gemacht werden, kann man sich so vorstellen.

1. Zuerst rechnet man jeden Wert der Daten minus den Mittelwert. Der Mittelwert selber geht also nach 0, alle kleineren Werte sind dann links und alle grösseren Werte rechts davon. Der Hügel wird also quasi um den Mittelwert nach links verschoben, damit er genau über der 0 steht.

2. Dann steht der Hügel zwar am richtigen Ort, ist aber noch zu breit. Darum quetscht man den Hügel um den Faktor der Standardabweichung. An der Formel sieht man, dass das ganze nur in X-Richtung passiert, der Hügel ist also noch gleich gross wie vorher.

Was ist das Gradientenabstiegsverfahren?

11.02.2017

Dieses Verfahren braucht man beim Machine Learning Algorithmus Adaline, weshalb ich hier einen mathematischen Einstieg in das Thema geben möchte. Beachten Sie, dass ich kein Mathematiker bin. Falls etwas nicht stimmt, dürfen Sie mich gerne korrigieren.

Das Gradientenabstiegsverfahren ist ein Verfahren, um bei einer Funktion das Minimum oder das Maximum zu finden.

Das kann ich schon mit Analysis!

Wie man das Minimum oder das Maximum findet haben wir in der Analysis gelernt:

Beispielfunktion:

f(x) = x^2 - 2x + 2

Vorgehen:
1. Die erste Ableitung von f herausfinden und = 0 setzen und auflösen

f'(x) = 2x - 2 = 0
x = 1

2. Bonusschritt: Die zweite Ableitung von f herausfinden und den gefundenen x-Wert aus 1 einsetzen

ist f'' < 0 -> Maximum
ist f'' > 0 -> Minimum

f''(x) = 2 -> Also ein Minimum

Warum also das Gradientenverfahren?

Also zuerst einmal schreibe ich extra diesen Blogeintrag, um das Gradientenverfahren zu erläutern, da wünsche ich mir schon ein bisschen Interesse! Und zweitens hat man in der Realität oftmals nicht solche einfache Funktionen wie x^2 – 2x + 2, sondern hochkomplizierte Gleichungen. Und wenn man diese dann noch = 0 setzen und auflösen soll – viel Spass damit!

Was ist denn ein Gradient?

Ah, jetzt also plötzlich doch Interesse. Nun, ein Gradient zeigt den höchsten Punkt einer Funktion. Oder etwa auf den höchsten Punkt beziehungsweise den steilsten Anstieg eines Berges.

Ich denke, so kann man sich das am Besten vorstellen. Stellen Sie sich vor, sie gingen mit einer Klasse von Schülern zum Matterhorn spazieren. Und ein Schüler hat eine ganz besondere Macke: Er zeigt mit seinem Arm immer genau zur Spitze des Berges. Den Schüler dürfen Sie dann spasseshalber Gradient nennen.

Wenn Sie sich ein Vektorfeld vorstellen, also etwa ein Feld mit 10*10 Punkten, dann würde von jedem Punkt aus ein Vektor zum höchsten Ding zeigen – Sei dieses Ding nun der wärmste Ort, der höchste Berg oder der hellste Punkt. Je nachdem, was Sie halt gerade für ein Bild anschauen. Und bei jedem Punkt gibt es einen solchen Gradienten.

Aber wir suchen doch das Minimum nicht den höchsten Berg

Ja genau, darum heisst es auch Gradientenabstiegsverfahren. Aber das kommt nicht so sehr drauf an. Man kann mit dem Gradientenverfahren ein Maximum oder ein Minimum suchen, dabei ändert sich nur ein Plus zu einem Minus.

Genug gequatscht!

Genau, jetzt schauen wir uns das Gradientenabstiegsverfahren an. Wir suchen also das Minimum einer Funktion.

Zuerst einmal das ganz allgemeine Vorgehen: Beim Gradientenabstiegsverfahren fängt man bei irgendeinem x Wert der gegebenen Funktion an. Dazu bildet man an diesem Punkt den Gradienten, also den Vektor, der zum tiefsten Punkt zeigt (und eben nicht zum höchsten, weil wir suchen ja das Minimum – sollte klar sein).

Dann gehen wir auf der Funktion in Richtung des Minimums um eine gewisse Schrittlänge. Nun sind wir dem Minimum also ein wenig nähergekommen.

Und jetzt berechnen wir wieder den aktuellen Gradienten, gehen dann eine Schrittlänge etc. bis wir beim Minimum angekommen sind.

Man merkt, dass man beim Minimum angekommen ist, wenn der y-Wert mit dem gefundenen x-Wert nicht mehr kleiner wird. Dann ist man beim Minimum.

gradient-descent

Und wie berechnet man den Gradienten?

Ganz einfach mit der (partiellen) Ableitung!

Beispiel: Wir haben die Funktion: f(x) = x^2 – 2x + 2 und wollen davon das Minimum herausfinden.

1. Wählen Sie eine zufälliges x

Etwa x = 3

2. Leiten Sie die Funktion ab

f'(x) = 2x - 2

3. Setzen Sie das x in die Ableitung

f'(3) = 2*3 - 2 = 4

4. Analysieren Sie das Ergebnis

Sie wissen hoffentlich noch, dass die Ableitung auch die Steigung des Vektors (oder der Tangente) an einem Punkt bedeutet.

Ist die Steigung positiv, geht der Vektor von links unten nach rechts oben. Ist die Steigung negativ, geht sie von links oben nach rechts unten.

Wenn nun die Steigung positiv ist, heisst das, wir sind bereits am Minimum vorbei und müssen zurück auf der Funktion – Wir müssen also unser gewähltes x verkleinern.

steigungen.png

Beim Maximum ist es übrigens dasselbe Verfahren einfach „Vorwärts gehen“ und „Rückwärts gehen“ sind vertauscht.

Ist die Steigung negativ, sind wir vor dem Minimum und müssen auf der Funktion vorwärts gehen – Und unser gewähltes x ein wenig vergrössern.

5. Nun können Sie also das neue x mit der gewählten Schrittlänge herausfinden und dann zum Schritt 3 gehen, bis das Minimum gefunden ist.

Was heisst partielle Ableitung schon wieder?

Bei der Funktion oben hatten wir nur eine Variable, nämlich x. Oftmals hat man aber noch ein y und vielleicht noch ein z. Für den Gradienten muss man dann die partielle Ableitung machen. Das bedeutet, man leitet die Funktion nach jeder dieser drei Variablen ab. Leitet man etwa nach x ab, werden y und z wie Konstanten behandelt. Am einfachsten stellt man sich für y und z dann zum Beispiel eine 1 vor und leitet die Variablen so ab, wie man eine 1 ableiten würde.

Beispiel
f(x,y,z) = x^2 * y^2 + z^3

Abgeleitet nach x = 2x * y^2

Abgeleitet nach y = 2y * x^2

Abgeleitet nach z = 3z^2

Diese drei Teile in einem Vektor geschrieben gibt dann den Gradientenvektor. Sucht man dann etwa den Gradienten beim Punkt P(1,1,1) setzt man diese Werte einfach in den Gradientenvektor und erhält den Gradientenvektor beim Punkt 1,1,1 = (2, 2, 3).

Die Länge des Gradientenvektors steht dabei für seine Steilheit/Steigung. Die Länge eines Vektors berechnet man folgendermassen:

|(2, 2, 3)| = WurzelVon( 2^2 + 2^2 + 3^2 ) = 4.12

Die Ableitung einer einfachen Funktion nach x ist wie gesagt die Steigung der Funktion. Und Steigung bedeutet nichts anderes als die Änderung der Funktion beziehungsweise irgendeiner Grösse. Mathematisch gesehen ist die partielle Ableitung einer Funktion die Veränderung dieser Grösse in eine der drei Richtungen x, y oder z.

Nabla

Nachdem mir kein besserer Wortwitz für diesen Nabla Absatz eingefallen ist als „Das Kind muss sich früher oder später von seinen Eltern abnabla“ habe ich es gelassen.

Auf jeden Fall ist der Nabla Operator das Dreieck, dass nach unten zeigt, und steht schlussendlich für einen Vektor, der die partiellen Ableitungen beinhaltet. Dieses komische Ding, das wie eine verkehrte 6 aussieht, steht für die partielle Ableitung.

nabla

Warum zeigt der Gradient immer zum höchsten Punkt? Magic?

Das scheint mir eine längere Geschichte zu sein weshalb ich einen eigenen Artikel dazu schreiben werde.

Ich bin verwirrt – Wo waren wir?

Also nochmals kurz zusammengefasst: Das Gradientenverfahren verwenden wir, um das Minimum oder Maximum einer Funktion zu finden. Man fängt dabei bei einem Punkt der Kurve an und berechnet den Gradienten mit der partiellen Ableitung nach jeder Variablen. Der Gradient zeigt immer zum höchsten/tiefsten Punkt. Wenn man diesen berechnet hat, weiss man, ob man auf der Funktion vor oder zurück muss, um zum Minimum/Maximum zu kommen. Dabei verwendet man eine gewisse Schrittlänge, mit der man sich dem Minimum/Maximum nähert.

Scheint eine bombensichere Sache zu sein

Nun, etwas muss man beachten: Die Schrittlänge darf nicht zu gross sein, da man dann Gefahr läuft, über das Minimum hinüberzuspringen und es so zu verpassen. Macht man dann den nächsten Schritt, springt man wieder über das Minimum – Und so kann das dann endlos weitergehen.

Die Schrittlänge muss daher genügend klein gewählt werden. Ist sie aber „zu“ klein, kann es ewig dauern, bis man beim Minimum angekommen ist.

schrittlaenge

Um diesen beiden Problemen entgegenzuwirken, macht man oftmals eine Standardisierung, welche die Daten den Eigenschaften einer Standardnormalverteilung anpassen. Aber auch dies ist eine Geschichte für ein anderes Mal.