19 Punkte von GN⁺ 2025-01-07 | 1 Kommentare | Auf WhatsApp teilen
  • Ich hatte ursprünglich überhaupt nicht vor, im Bereich AI/ML zu arbeiten.
  • Ich nutzte einfach die Werkzeuge, die ich für meine Arbeit brauchte, und kam so ganz natürlich mit AI und ML in Berührung – am Ende bin ich in diesem Feld gelandet (Associate Professor an der CMU).
  • Zum Jahreswechsel blicke ich zurück ins Jahr 2000 und auf die wichtigsten AI/ML-Projekte, an denen ich beteiligt war.

if-Anweisungen und Zufallszahlen: frühe Programmiererfahrungen

  • Beginn mit Videospielen:
    • Inspiriert von Tamagotchi versuchte ich, mit VB6 ein virtuelles Haustierspiel zu entwickeln.
    • Mit Timern und Bedingungen wurde einfache Logik umgesetzt:
      • Alle 10 Sekunden steigt der Hungerwert.
      • Wenn der Hunger einen bestimmten Wert überschreitet, sinkt alle 3 Sekunden die Gesundheit.
      • Wenn die Gesundheit 0 erreicht, bricht das Haustier zusammen.
    • Ergebnis: ein monotones und langweiliges Spiel.
  • Spieleentwicklung in der Highschool:
    • Entwicklung eines 2D-Weltraum-Shooters:
      • Der Spieler verteidigt sich gegen gegnerische Wellen und sammelt Power-ups.
    • Das Auftreten der Gegner wurde mit langen if-Anweisungen umgesetzt, die Zufallszahlen und Gameplay-Statistiken nutzten (Spielzeit, Anzahl der Schüsse, HP usw.).
    • Ergebnis:
      • Das Spiel wirkte etwas dynamischer und unvorhersehbarer.
      • Trotzdem hielt das Interesse nicht lange an, und die Spieler hörten schnell wieder auf.
  • Erkundung von AI-Konzepten:
    • Mitte der 2000er kaufte ich das Buch Programming Game AI by Example, um zu lernen, wie man AI in Spiele einbaut.
    • Zunächst konnte ich das Wissen nicht einsetzen, später half es mir jedoch in vielen Projekten.
  • Die Erfahrungen aus dieser Zeit bildeten die Grundlage, um mit komplexeren und interessanteren Spielmechaniken zu experimentieren.

Zustandsmaschinen und Higher-Order Functions: Spieleentwicklung im Studium

  • Weiterentwicklung der Spiele:
    • Im Studium hob ich meine Spieleentwicklung auf die nächste Stufe und entwickelte Spiele, die von Millionen Menschen gespielt wurden.
    • Einige Spiele waren sogar kommerziell erfolgreich.
    • Mit wachsender Programmiererfahrung konnte ich das Wissen aus Büchern in der Praxis anwenden.
  • Technischer Einsatz:
    • Finite State Machines:
      • Eingesetzt zur Umsetzung von Verhaltensmustern für Gegner.
    • Factory Pattern:
      • Für die Erzeugung und Verwaltung von Objekten.
    • Higher-Order Functions:
      • So entworfen, dass sich Verhaltensweisen von Gegnern und Waffen kombinieren ließen.
      • Beispiel:
        • Eine Waffe schwingt mit einer Amplitude von 25 Grad nach links und rechts und feuert Geschosse in einem schmalen Kegel ab.
        • Die Geschosse steuern leicht auf nahe Ziele zu und prallen mit einer Wahrscheinlichkeit von 1 % ab.
  • Lebendigkeit der Spiele:
    • Auf Basis von Spielzustand und Eingaben der Spieler wurden nach und nach dynamische Elemente ergänzt.
    • Zufälligkeit und Kombinierbarkeit sorgten für zusätzliche Variation.
    • Dieser Ansatz wurde nicht nur für das Verhalten der Gegner verwendet, sondern als Schichtsystem im ganzen Spiel angewandt – etwa bei Sprites, Partikeleffekten, Soundeffekten, Geschossen und Animationen.
  • Ergebnis:
    • Die Spiele wurden lebendiger und unterhaltsamer.
    • Gleichzeitig wurde mir klar, dass das keine AI war, sondern nur eine gut entworfene Kombination aus if-Anweisungen und Funktionsaufrufen.
  • Die Spiele konnten zwar den Eindruck von etwas „Lebendigem“ vermitteln, doch in dieser Phase war es immer noch handgefertigte Logik in Kombination mit Funktionen.

Aussagenlogik erster Stufe, Wissensrepräsentation, Support Vector Machines und neuronale Netze: frühe Erfahrungen im Masterstudium

  • Beginn des Masterstudiums:
    • Nach dem Abschluss schrieb ich mich in letzter Minute für ein Masterstudium ein.
    • Die Auswahl an Kursen war begrenzt, daher belegte ich Veranstaltungen zu AI und neuronalen Netzen.
    • Statt der eigentlich gewünschten Compiler-Vorlesung wählte ich diese Kurse und war enttäuscht:
      • Sie waren stark theoretisch und abstrakt, ohne Praxis oder Implementierung.
      • Viel Zeit wurde auf Diskussionen über Definitionen verwendet.
  • AI-Kurs:
    • Verwendet wurde das Lehrbuch Artificial Intelligence: A Modern Approach (Third Edition).
    • Ich lernte Konzepte wie Planung, Agenten, Logik erster Stufe und Wissensrepräsentation.
    • Ich gewann ein neues Vokabular, um über Probleme nachzudenken, hatte aber Schwierigkeiten mit der praktischen Anwendung.
  • Kurs zu neuronalen Netzen:
    • Behandelt wurden unter anderem Perzeptron, Support Vector Machines (SVM), Feedforward-Netze, Hopfield-Modelle und Backpropagation.
    • Es fehlten klare Hinweise zur praktischen Umsetzung:
      • Die Antwort des Professors, ich solle „ein MATLAB-Paket suchen“, war frustrierend.
  • Entwicklung eines Low-Bandwidth-Videochat-Programms:
    • Mit OpenCV wurden Gesichter erkannt und Regionen extrahiert:
      • Etwa der Zustand der Mundwinkel, die Position der linken Augenbraue oder ob das rechte Auge geöffnet ist.
      • Hunderte gelabelte Gesichtsaufnahmen wurden aus einer Datenbank gesammelt.
      • Die klassifizierten binären Zustände wurden über Sockets übertragen und ein Avatar mit OpenGL gerendert.
    • Ergebnis:
      • Das System reagierte empfindlich auf Beleuchtungsänderungen, Parameter waren schwer anzupassen und das Training dauerte lange.
      • OpenCV war mühsam zu verwenden, und Änderungen am Programm waren umständlich.
  • Erkenntnisse:
    • Durch viele Versuche und Irrtümer lernte ich eine Menge.
    • Im Januar 2013 lud ich ein frühes Demo-Video hoch und teilte es:
      • Das Demo-Video war zwar amateurhaft, erreichte aber mehr als 1000 Aufrufe.
  • Diese Phase war ein wichtiger Entwicklungsschritt, in dem ich lernte, Theorie praktisch umzusetzen und Probleme zu lösen.

Entscheidungsbäume, Clustering und Empfehlungssysteme: Erfahrungen im Promotionsstudium

  • Forschungsziel:
    • Ich versuchte, anhand von Logdaten aus Code-Editoren folgende Probleme zu lösen:
      • Festzustellen, ob Programmierer im Code feststecken oder die Orientierung verlieren.
      • Vorherzusagen, welche Datei ein Programmierer als Nächstes untersuchen wird.
      • Relevanten Code gezielt zu empfehlen.
  • Eingesetzte statistische Methoden:
    • C4.5-Algorithmus: Erstellung von Entscheidungsbäumen.
    • K-means und DBSCAN: Clustering von Ereignissen.
    • Apriori und kollaboratives Filtern: Auffinden von Zusammenhängen zwischen Ereignissen.
    • Ergebnis:
      • Diese einfachen Methoden erwiesen sich als überraschend leistungsfähig.
      • In den meisten Fällen waren sie ausreichend effektiv und komplexen neuronalen Netzen nicht unterlegen.
  • Ergebnisse:
    • Veröffentlichung von Papers, mehrere Praktika und die Entwicklung von Tools für Entwickler.
    • Erfolgreicher Abschluss der Promotion.
  • Verwandte Materialien:
    1. Paper: Datenanalyse darüber, wie Entwickler nach Informationen suchen
      Foraging and Navigations, Fundamentally: Developers Predictions of Value and Cost (PDF))
    2. Bericht über ein Microsoft-Praktikum: Erfahrungen beim Bau eines Code-Review-Bots
      When users never use the features they asked for
  • Während der Promotion erzielte ich mit statistischen Verfahren bedeutsame Ergebnisse sowohl in der Forschung als auch in der Praxis, indem ich reale Probleme löste.

Intelligente Benutzeroberflächen: Beginn der Forschung als Professor

  • Neue Forschungsrichtung:
    • 2018 wählte ich als Tenure-Track-Professor Intelligent Developer Tools als Forschungsschwerpunkt.
    • Anfangs war das Konzept noch unscharf, doch ich begann mit Projekten, die Vorhersagemodelle nutzen, um Missverständnisse von Programmierern frühzeitig zu erkennen und zu korrigieren.
  • Erster Forschungsantrag:
    • Projektziel:
      1. Einsatz von Programmanalyse-Techniken und Vorhersagemodellen, um Missverständnisse von Programmieranfängern über das Verhalten ihrer Programme zu identifizieren.
      2. Diese Missverständnisse korrigieren und die Logik erklären, ohne die Programmierenden zu stören.
      3. Testcode erzeugen, der unbeabsichtigte Änderungen im Programmverhalten erkennt und so zukünftige Missverständnisse verhindert.
    • Zusammenfassung:
  • Zweites Projekt:
    • Forschung zur Vorhersage des Informationsbedarfs von Programmierern und zur Echtzeit-Erzeugung passender Benutzeroberflächen.
    • Beispiel:
      • Einem Programmierer, der den Git-Verlauf untersucht, wird eine visualisierte Empfehlung relevanter Commits angezeigt.
  • Zusammenführung der Forschung:
  • Erfolge und Grenzen:
    • Das Projekt startete erfolgreich mit Fördergeldern, doch bevor die Forschung richtig Fahrt aufnahm, trat ich von meiner Professur zurück.
  • Diese Phase war ein wichtiger Wendepunkt, an dem ich meine Forschung zu intelligenten Benutzeroberflächen konkretisierte und eine große Vision entwarf.

Program Synthesis und Large Language Models (LLMs): Erfahrungen bei Microsoft

Schluss

  • Es waren wunderbare 25 Jahre.
  • Was kommt als Nächstes? Ich werde weiter lehren, lernen und bauen.

1 Kommentare

 
GN⁺ 2025-01-07
Hacker-News-Kommentare
  • Ich war zwar in einem AI-Team, habe den Einsatz von AI aber vermieden, wenn es dafür keinen wirklich überzeugenden Grund gab. Ich habe überlegt, ob wir damit tatsächlich ein Nutzerproblem lösen, ob dafür wirklich ein LLM nötig ist oder ob ein paar if-Anweisungen ausreichen. Man muss sicher sein, dass natürliche Sprache die passende Schnittstelle ist.
    • Diese pragmatische Herangehensweise im AI-Bereich fühlt sich erfrischend an. Ich habe einmal ein Tool gebaut, bei dem ein einfaches Regressionsmodell besser funktionierte als ein neuronales Netz. Es war schwer, den Widerstand des Teams auszuhalten, weil ich nicht voll auf AI gesetzt habe.
  • Ich habe 14 Jahre lang eine ähnliche Reise durchgemacht und mich immer gefragt, wie es heute anders wäre.
    • Wir sind zusammen mit der Branche gewachsen und konnten nach und nach komplexere Dinge lernen. Studierende, die heute ihren Abschluss machen, treffen in ihrem ersten Job sofort auf die Komplexität von mehreren Jahrzehnten.
  • Ich habe kürzlich jemanden gesehen, der UTK verlassen hat, und sein Blogpost hat mich dazu gebracht, den Weg in die Wissenschaft nach dem Masterstudium noch einmal zu überdenken.
  • Eine Webseite, die nicht mit Werbung und Pop-ups überladen ist, fühlt sich erfrischend an. Sie besteht aus sauberem, gut organisiertem Text und einem einfachen Aufbau.
  • Für viele Menschen ist AI eine unterhaltsame Reise, auf der sie Erstaunliches erschaffen. Ich stimme zu, dass die Ergebnisse erstaunlich sind. Traurig ist aber, dass Wissenschaftler oft nicht über die größeren Auswirkungen ihrer Arbeit auf die Gesellschaft nachdenken. Mit ihrem steigenden sozialen Status verändern ihre Schöpfungen die gesellschaftlichen Strukturen grundlegend. AI ist eines der gefährlichen Elemente, und wenn Großunternehmen Intelligenz verherrlichen, um Menschen anzuziehen, ist das ein Vorzeichen für eine Katastrophe.