Longread

WARUM
KI & ETHIK?

Künstliche Intelligenz (KI) ist inzwischen weit mehr als ein Science-Fiction-Motiv – sie hält Einzug in unser alltägliches Leben. In diesem Beitrag erklären wir, was KI und Maschinenlernen ist, und welche Rolle ethische Erwägungen dabei spielen.
Porträtfoto von Prof. Dr. Alexander Pretschner, Vorsitzender des bidt-Direktoriums. Foto: bidt/Diane von Schoen
AUTOR
Prof. Dr. Alexander Pretschner
Inhaber des Lehrstuhls für Software- und Systems Engineering an der TUM, wissenschaftlicher Direktor von fortiss, Vorsitzender des bidt-Direktoriums

Die folgenden Texte sind für den KI-Campus als kurze Vorlesungen im Modul zu Ethik entstanden und nähern sich dem Thema KI und Ethik – oder eigentlich dem Thema Software und Ethik – aus technischer Perspektive. Ethische Erwägungen werden motiviert, aber bewusst nicht durchdekliniert; denn das müssen Ethikerinnen und Ethiker tun. Viele der hier vorgestellten Ideen haben die bidt-Projekte zu Ethik im Agilen Software Engineering und zu Erklärungen in komplexen sozio-technischen Systemen motiviert.

INHALT

Teil I
Was ist KI, was ist Maschinenlernen?

Was heißt „Problem“ in der Informatik?

Künstliche Intelligenz, ein ganz falsches Wort, bezeichnet eine Reihe von Verfahren, um Probleme zu lösen. Als „Probleme“ bezeichne ich dabei technische Probleme, die Informatikerinnen und Informatiker haben und deren Lösung hoffentlich zur Lösung von Problemen in der analogen Welt beiträgt. Technische Probleme, die wir in der Informatik haben, sind vergleichsweise einfach, wenn man sie mit den Problemen vergleicht, die in der Philosophie, Politikwissenschaft oder Soziologie auftreten. Das liegt möglicherweise daran, dass unsere Probleme eine Lösung haben.

Für Informatikerinnen und Informatiker ist ein Problem die Zuordnung von Ausgaben zu Eingaben. Die Eingabe „Entfernung zum vorausfahrenden Auto“ bildet die Software in einem adaptiven Tempomaten auf die Ausgabe „Bremsen“ oder „Beschleunigen“ ab. Die Eingaben „Isttemperatur und Solltemperatur“ bildet die Software in einer Klimaanlage auf die Ausgabe „Öffnungsgrad des Ventils für Kälteflüssigkeit“ ab. Ein Herzschrittmacher bildet die Eingabe „aktueller Herzschlag und elektrischer Widerstand des Lungengewebes“ auf Spannungsimpulse ab. Die Google-Suche bildet die Eingabe „Ethik und KI“ auf eine Liste von Webseiten ab. Die Corona-App bildet Bluetooth-Kontakte auf Zufallszahlen ab. Und so weiter. Das sind mathematische Funktionen, die wir aus der Schule kennen: f(x)= x2 berechnet als Ausgabe das Quadrat der Eingabe x.

Traditionelle Programme beschreiben durch eine Menge von Schritten, wie diese Funktionen ausgerechnet werden. Diese Schritte sind sehr kleinteilig, in ihrer Reihenfolge klar festgelegt, und sie müssen absolut präzise sein. Wahrscheinlich haben Sie das Wort „Algorithmus“ schon einmal gehört. Das ist auch so eine Abfolge von Schritten. Wenn ein Algorithmus so präzisiert und aufgeschrieben wird, dass er von einem Computer verstanden werden kann, dann nennen wir das ein „Programm“. Mehrere Programme zusammen bilden Software. Wir haben das ausführlich in diesem Beitrag dargestellt. Lassen Sie uns für jetzt im Kopf behalten, dass eine Funktion und ihre Berechnung, hier durch ein Programm, zwei unterschiedliche Dinge sind.

Welche Arten von KI gibt es?

Künstliche Intelligenz existiert grob in zwei Ausprägungen. Einmal gibt es die sogenannte symbolische KI. Die funktioniert ein bisschen so, wie ich eben Programme beschrieben habe. Man schreibt explizit und ganz detailliert alles auf, was man weiß und was relevant ist. Das, was im Programm die einzelnen Schritte sind, sind hier Regeln und Eigenschaften von Objekten: Wenn es regnet, wird es mit einer gewissen Wahrscheinlichkeit nass. Wenn ich ein Objekt an einer Schnur ziehe, bewegt es sich entlang der Zugrichtung. Wenn die Symptome Fieber, Husten und Geschmacksverlust beobachtet werden, liegt möglicherweise eine Corona-Infektion vor. Anhand der Regeln und vorliegender Fakten kann man dann Schlüsse ziehen. Was in diesem Fall nicht durch Programmiererinnen und Programmierer festgelegt werden muss, ist die Reihenfolge der Regelanwendungen: Die „rät“ gewissermaßen die symbolische KI.

Das funktioniert manchmal, aber in der Summe nicht immer besonders gut. Wenn man festhält, dass sich bei Ziehen an einer Schnur ein Objekt bewegt, dann wird es Situationen geben, in denen man auch festhalten sollte, dass man mit einer Schnur zwar ziehen, aber nicht schieben kann. Und was noch? Dass die Schnur vorher nicht durchgeschnitten worden sein darf? Dass sie hinreichend robust sein muss? Dass das Objekt nicht zu schwer sein darf? Oder, ganz ähnlich: Wenn man beschreiben will, woran eine Kamera im Auto eine Fußgängerin oder einen Fußgänger erkennt, dann muss man über große, kleine, dicke und dünne Menschen sprechen; über Menschen mit Regenschirmen und Einkaufstüten; über Menschen, die Fahrräder schieben und im Rollstuhl sitzen; über Menschen, die zu Karneval Hühnerkostüme tragen. Ein Mensch erkennt das alles sofort ohne Nachdenken. Ein explizites Aufschreiben der entsprechenden Regeln, die dann in einem Programm zur Erkennung von FußgängerInnen verwendet werden könnten, ist aber sehr schwierig bzw. unmöglich, weil es so viele zu berücksichtigende Situationen gibt.

Maschinenlernen als Lösung für unscharfe Probleme

Sehen wir uns das Problem der Erkennung von FußgängerInnen an. Wir sind interessiert an einer Funktion f, die für Eingabebilder mit FußgängerInnen als Ausgabe „Achtung FußgängerIn“ liefert und für Bilder ohne FußgängerInnen die Ausgabe „kein/e FußgängerIn“. Erinnern Sie sich, dass eine Funktion und ihre Berechnung zwei unterschiedliche Dinge sind. Die Berechnung der Funktion f als Programm zu formulieren, oder als explizites Regelsystem, ist angesichts des unscharfen Problems schwierig, wie wir gesehen haben.

Deswegen gibt es für bestimmte Klassen von Problemen eine Variante des Problemlösens, das Maschinenlernen. Anstatt die Zusammenhänge, also die Regeln oder die Programmschritte explizit aufzuschreiben, die die Funktion f zur Erkennung von FußgängerInnen ausrechnet, lässt man sie die Berechnung dieser Funktion anhand vieler Beispiele lernen. Weil anhand einer Menge von Beispielen gelernt wird, nennen wir sie die Trainingsdaten. Jedes Trainingsdatum ist ein Paar, das aus einem Bild und seiner Beschreibung besteht, also „FußgängerIn“ oder „kein/e FußgängerIn“. Beim Maschinenlernen wird dann automatisch eine Struktur geschaffen, die für die Trainingsdaten die Zuordnung Eingabebild nach Ausgabe „FußgängerIn“ oder „kein/e FußgängerIn“ repräsentiert. Der Clou ist nun, dass diese Struktur nicht nur für die Trainingsdaten funktioniert. Für diese Bilder wissen wir ja schon, ob sie eine/n FußgängerIn beinhalten – das wäre langweilig. Diese Struktur ermöglicht es nun auch, für neue, unbekannte Bilder zu berechnen, ob sie eine/n FußgängerIn enthalten oder nicht!

Das funktioniert ungefähr so: Wenn ein unbekanntes Bild analysiert werden soll, werden in der gelernten Struktur aus den Trainingsdaten diejenigen Bilder identifiziert, die diesem unbekannten Bild am ähnlichsten sind. Für diese ähnlichsten Trainingsbilder weiß man ja, ob sich eine/n FußgängerIn darauf befindet oder nicht. Wenn nun die Mehrheit der dem neuen Bild ähnlichsten Trainingsbilder eine/n FußgängerIn beinhaltet, wird angenommen, dass das neue Bild ebenfalls eine/n FußgängerIn beinhaltet. Und umgekehrt. Wichtig ist, dass die gelernte Struktur selbst keine expliziten Zusammenhänge beschreibt, sondern allein über die Analyse von Ähnlichkeiten zu einem Ergebnis kommt.

Das funktioniert nicht nur für Funktionen, deren Ausgabe eine von zwei Möglichkeiten ist, wie hier „FußgängerIn“ oder „kein/e FußgängerIn“. Es funktioniert auch für Ausgaben, die kontinuierliche Werte sind, etwa der Öffnungsgrad eines Ventils für Kälteflüssigkeit. Da wird für eine neue, unbekannte, Eingabe „Ist- und Solltemperatur“ wieder nach den ähnlichsten Werten im Eingabeteil der Trainingsdaten gesucht, und es wird der Durchschnitt der entsprechenden Ausgaben der Trainingsdaten verwendet anstatt eine Mehrheit, wie wir das vorher gesehen haben. Die Ausgabe kann auch aus mehreren solcher Werte bestehen, etwa „FußgängerIn oder kein/e FußgängerIn“ und außerdem „Entfernung zur/zum FußgängerIn“. Die Ausgabe kann auch ein ganzes Bild sein oder ein Film – vielleicht haben Sie schon einmal Deep Fakes gesehen. Und sie kann auch ein Programm im klassischen Sinn sein, also eine Menge von kleinteiligen Schritten, die dann ausgeführt werden. Das ist wirklich irre!

Halten wir fest: Funktionen bilden Eingaben auf Ausgaben ab. Die Berechnung einer Funktion ist von der Funktion zu unterscheiden. Die Berechnung der Ausgabe bei gegebener Eingabe kann durch klassische Programme erfolgen, die aus sehr präzisen kleinteiligen Schritten bestehen. Eine ähnliche Art der Berechnung wird in der symbolischen Variante der KI ebenfalls durchgeführt; hier sind die einzelnen Schritte Anwendungen von sehr präzisen expliziten Regeln zur Schlussfolgerung. Die Reihenfolge der Anwendung muss aber nicht vom Menschen vorgegeben werden, sondern wird von der symbolischen KI gewissermaßen geraten. In der datengetriebenen KI, dem Maschinenlernen, werden keine expliziten Schritte oder Regeln angegeben. Stattdessen werden Strukturen aus Beispielen gelernt, die es später ermöglichen, Ausgaben auch für vorher unbekannte Eingaben zu ermitteln, die also nicht Teil der Trainingsdaten waren. Ob diese Struktur genau die Zusammenhänge zwischen Konzepten gelernt hat, die wir Menschen als relevant erachten würden, ist übrigens meistens nicht der Fall. Das sehen wir uns im nächsten Teil an.