29.7.2013

Über Algorithmen

(Thema)

Das Thema „künstliche Intelligenz“ (AI, artifical intelligence) ist anläßlich der Enthüllungen um das Prism-Projekt der NSA brandaktuell.

Die pure Erfassung von Datenbeständen durch die Geheimdienste ist ja zunächst gar nicht das Problem. Problematisch wird es erst, wenn man diese Datensätze zueinander in Beziehung setzt, und aus diesen Beziehungen eine Bedeutung ableitet, die dann zu einem Handeln führt. Der Erhebung von Daten folgt deren Sichtung, und erst dann kann man bestimmen, ob es lohnt, einen Anfangsverdacht (auf was auch immer) zu formulieren, dem man dann weiter nachgeht.

Das Verfahren gab es schon immer: man sammelt Beobachtungen (aka Intelligence), und läßt diese dann von Experten auswerten. Früher – zB. bei Echelon – brauchte man ganze Abteilungen in der NSA oder der CIA, deren Mitarbeiter die (analogen) Daten „zu Fuß” abhörten und analysierten, um gelegentlich Alarm zu schlagen.

Die unfaßbar hohe Anzahl der Datensätze, die bei Prism (und anderen, verwandten Projekten) abgegriffen werden, läßt sich unmöglich von einem auch noch so großen Stab von Geheimdienstlern auswerten. Zumindest eine grobe Vorauswahl muß zwangsläufig automatisiert erfolgen, mittels „intelligenter“ Computeralgorithmen.

(Disclaimer: Ich habe keine Ausbildung in der Wissenschaft der AI – ich habe aber einige Algorithmen in diesem Bereich geschrieben, und kenne die Forschung zumindest soweit, wie ich sie für meine konkrete Arbeit hilfreich fand.)

Grundsätzlich kann man mE. festhalten, daß die Forschung im Bereich der AI letztlich zum Stillstand gekommen ist. Nach einer großen Aufbruchstimmung in den 80ern des letzten Jahrhunderts folgte eine Welle der Ernüchterung, von der die allermeisten Projekte weggespült wurden.

Ein Algorithmus ist letztlich immer ein Computerprogramm: eine Abfolge von Befehlen, die von der CPU ausgeführt werden.

Man versuchte jedoch schon immer, sich von der Prozessorlogik soweit wie möglich zu entfernen, indem man von ihr abstrahiert. Solche Abstraktionen sind Grundbestand im Werkzeugkasten der Computerwissenschaft; im Alltag benutzt sie jeder Programmierer, der eine „Hochsprache“ benutzt, um Sourcecode zu schreiben (Assembler, C++, Basic, Javascript – selbst HTML-Quellcode ist letztlich solch eine „Sprache“).

Ein Algorithmus setzt hier noch eine Abstraktionsebene oben drauf: er formuliert ein Konzept, wie bestimmte „hochsprachliche Konstrukte“ ineinander greifen müssen, um ein bestimmtes Ergebnis zu produzieren.

Ein gutes Beispiel für einen (letztlich gar nicht so) einfachen Algorithmus ist das Sortieren von Datensätzen. Wenn man etwa – als User – vom Betriebssystem (MS Windows; Mac OSX; Linux; etc.) seine Dateien zB. nach Namen sortiert haben will, aktiviert man einen Algorithmus, der über ein bestimmtes Wissen über das Alphabet verfügt. Dieses Wissen ist seinerseits wieder ein Computerprogramm, das auf Tabellen zurückgreift, die einer Zahl (aus denen jeder Datensatz letztlich besteht) ein Symbol (im Alphabet einer bestimmten Sprache) zuordnet.

Auf solch ganz rudimentären Verhältnisse muß jeder Algorithmus immer zurück – unabhängig davon, welche „Magie“ sich hinter ihm zu verbergen scheint.


(Wird fortgesetzt)

(Kommentarfunktion z.Zt. deaktiviert.)