Maschinelles Lernen an Programmen (Sommersemester 2018)
Dozent:
Prof. Dr. Robert Hirschfeld
(Software-Architekturen)
Allgemeine Information
- Semesterwochenstunden: 4
- ECTS: 6
- Benotet:
Ja
- Einschreibefrist: 20.04.2018
- Lehrform: Seminar
- Belegungsart: Wahlpflichtmodul
Studiengänge, Modulgruppen & Module
- OSIS: Operating Systems & Information Systems Technology
- HPI-OSIS-K Konzepte und Methoden
- OSIS: Operating Systems & Information Systems Technology
- HPI-OSIS-S Spezialisierung
- OSIS: Operating Systems & Information Systems Technology
- HPI-OSIS-T Techniken und Werkzeuge
- SAMT: Software Architecture & Modeling Technology
- HPI-SAMT-K Konzepte und Methoden
- SAMT: Software Architecture & Modeling Technology
- HPI-SAMT-S Spezialisierung
- SAMT: Software Architecture & Modeling Technology
- HPI-SAMT-T Techniken und Werkzeuge
Beschreibung
Die an einem Entwicklungsprozess beteiligten Parteien müssen laufend über kleine und große Fragestellungen entscheiden. Diese reichen von Details der Implementierung, z.B. den Namen einer Variablen oder der Notwendigkeit eines Refactorings, über Fehlerursachen oder zu verwendende Bibliotheken, bis hin zur Vorhersage zukünftiger Probleme oder Automatisierung von Entwicklungsprozessen.
Damit solche Entscheidungen nicht nur intuitiv, und damit schwer nachvollziehbar getroffen werden, ist eine belastbare Datengrundlage von Vorteil. Darüber hinaus werden Werkzeuge benötigt, die diese Daten aufgabenspezifisch und unmittelbar verfügbar machen, sowie Vorhersagen und Empfehlungen unterstützen. Für Programmierer könnte dies eine Entwicklungsumgebung sein, die Problemlösungen direkt am Code vorschlägt, oder für Manager eine grafische Darstellung von Metriken, anhand derer sie Defizite erkennen und gegensteuern können.
Mit moderner Open-Source-Entwicklung, die häufig auf öffentlichen Plattformen wie GitHub oder BitBucket stattfindet, steht uns eine umfangreiche Datenbasis zur Verfügung. Der gesamte Ablauf vieler Softwareprojekte ist durch Versionsverwaltungssysteme komplett erfasst und kann durch Methoden der statistischen Datenanalyse und des maschinellen Lernens aufbereitet werden. So können Entscheidungen nicht nur mit lokal vorhandenen Daten unterstützt, sondern mit weltweiten Beobachtungen verglichen und kalibriert werden.
Im Rahmen der Veranstaltung entwerfen und implementieren die Teilnehmer Verfahren und Werkzeuge zur Datenaufbereitung, Auswertung und Entscheidungsfindung im Kontext unterschiedlich großer Mengen von Code und Versionshistorien. Dabei spielt eine Vielzahl von Aspekten eine wichtige Rolle, unter anderem:
- Technische Lösungen zum Verarbeiten großer Mengen von Quelltext und Metadaten (Parser, Parallelisierung, Programmierkonzepte, Datenstrukturen, …)
- Datenaufbereitung und -exploration (Statistiken über Rohdaten, Outlier, Duplikate, …)
- Statistische Modelle zum Beschreiben, in Bezug setzen und Vorhersagen von Entwicklungsprozessen und -artefakten. (Hypothesentests, Korrelation, Regression, Vektorraum-Einbettung, Topic Models, Language Models, Klassifikatoren, Neuronale Netze, Explainable Learning, …)
- Werkzeuge für den Nutzer und Werkzeugintegration in vertraute Umgebungen (Diagramme, Codevervollständigung, Versionsverwaltung, APIs, Such- und Empfehlungssysteme, …)
Neben technischer Qualität der Software, formaler Sorgfalt bei der Bearbeitung mathematischer Modelle und Benutzbarkeit der Schnittstellen spielen insbesondere im Bereich des maschinellen Lernens auch Reproduzierbarkeit, Replizierbarkeit und Erklärbarkeit von Analysen, Modellen und Vorhersagen eine wichtige Rolle bei allen bearbeiteten Themen.
Voraussetzungen
- Vertiefende Kenntnisse in mindestens einer Programmiersprache.
- Themenspezifische Empfehlungen werden bei der Themenvorstellung bekanntgegebenen.
Literatur
Themenspezifisch
Lern- und Lehrformen
Seminar mit Projektarbeit
Leistungserfassung
Vorträge, Diskussionen, Implementierung, Dokumentation und Mitarbeit in den Seminar- und Konsultationsterminen werden mit sechs benoteten Leistungspunkten angerechnet.
Jeder Seminarteilnehmer bearbeitet eines der gestellten Seminarthemen.
Das bearbeitete Thema wird in zwei Vorträgen zu je 15 - 30 Minuten Dauer präsentiert, an die sich jeweils eine Diskussion anschließt. Der erste Vortrag soll einen Zwischenstand präsentieren und dabei Kontext, Problemstellung, in Betracht gezogene Werkzeuge/Datenquellen und Literatur einführen. Der zweite Vortrag soll Design- und Implementierungsentscheidungen sowie abschließende Ergebnisse vorstellen und eine Vorführung entwickelter Softwareartefakte (Demo) enthalten.
Spätestens eine Woche vor dem jeweiligen Vortragstermin bespricht jeder Teilnehmer eine Vorversion seiner Vortragsunterlagen mit einem der Betreuer. Um einen Termin für diese Vorbesprechung kümmern sich die Teilnehmer selbstständig. Die Vortragsunterlagen sind einen Tag vor dem Vortrag per E-Mail einzureichen. Sie bestehen für beide Vorträge aus
- den Dokumentquellen der im Vortrag verwendeten Präsentationsunterlagen,
- einer PDF-Version derselben
und für den zweiten Vortrag zusätzlich aus
- Rohdaten, Zwischen- und Endergebnissen (oder einem Verweis auf ihren serverseitigen Speicherort)
- Quelltexten und Installationsanleitung der präsentierten Softwareartefakte
- Demo-Videos/Screencasts
Die endgültigen Versionen von Implementierung und Ergebnissen sind spätestens zum Ende des Vorlesungzeitraums per E-Mail oder als Repository im HPI GitLab (gitlab.hpi.de) einzureichen oder, falls angebracht, auf dem bereitgestellten Server zu hinterlegen. Diese bestehen aus:
- Quelltexten mit Installationsanleitung
- Falls mit Daten gearbeitet wurde: Rohdaten, Zwischen- und Endergebnisse in maschinenlesbarer Form
- Dokumentation, in der übersichtlich strukturiert die folgenden Punkte kurz dargelegt werden:
- Annahmen,
- Vorgehensweise,
- Konzepte und verwendete Literatur,
- Architektur des Softwareartefakts,
- Wichtige Implementierungsdetails,
- Schritte und Artefakte zum Reproduzieren der Ergebnisse,
- eine grobe Diskussion der Ergebnisse
- und Einschränkungen/Grenzen des gewählten Ansatzes
Auf Reproduzierbarkeit der Ergebnisse und Wiederverwendbarkeit der Artefakte wird besonderen Wert gelegt.
Termine
17.04.2018 Themenvorstellung
24.04.2018 Themenvergabe
15.05.2018 Zwischenstandsvorträge
03.07.2018 Abschlussvorträge I
10.07.2018 Abschlussvorträge II
01.08.2018 Projektabgabe
Zurück