Empirische Ergebnisse in CS-Papieren

31

Ich bin neu im CS-Bereich und habe festgestellt, dass es in vielen der von mir gelesenen Artikel keine empirischen Ergebnisse gibt (kein Code, nur Lemmata und Beweise). Warum das? Wenn man bedenkt, dass Informatik eine Wissenschaft ist, sollte sie nicht der wissenschaftlichen Methode folgen?

toto
quelle
26
Die kurze Antwort lautet: "Informatik" ist vieles. Einige Teile wie (einige) KI sind eigentlich Wissenschaft. Andere Teile sind Ingenieurwesen und die theoretische Seite ist (angewandte) Mathematik. Teile von HCI ähneln eher der Kunst. Informatik ist ein weites Zelt.
Aaron Roth
6
Wenn Sie Beweise haben, warum brauchen Sie überhaupt empirische Ergebnisse?
Aryabhata
2
@Moron: Wie beweisen Sie, dass ein Algorithmus implementierbar ist, ohne ihn zu implementieren?
Jukka Suomela
8
Die theoretische CS scheint der mathematischen Physik zu ähneln, die auch empirische Ergebnisse vermeidet. Wenn Sie etwas wie Experimentalphysik wollen, können Sie sich die Forschung in den Bereichen Software Engineering, Programmverifikation, Datenbanksysteme usw. ansehen
Yaroslav Bulatov
4
Nitpicking: " die wissenschaftliche Methode"?
Kaveh

Antworten:

21

Mathematik ist auch eine Wissenschaft, und Sie müssten lange suchen, um veröffentlichte empirische Ergebnisse auf diesem Gebiet zu finden (obwohl ich vermute, dass es einige geben muss). Es gibt andere wissenschaftliche Bereiche, in denen "Deckspelzen und Beweise" wichtiger sind als Erfahrung, wie beispielsweise die Quantenphysik. Die meisten Wissenschaften mischen jedoch Theorie und Praxis (mit unterschiedlichen Verhältnissen), und die Informatik ist keine Ausnahme.

Die Informatik hat ihre Wurzeln in der Mathematik (siehe beispielsweise Turings Biografie http://en.wikipedia.org/wiki/Alan_Turing ), und so viele Ergebnisse (im Allgemeinen als "theoretische Informatik" bezeichnet) bestehen in Beweisen Computer in einem Rechenmodell können Probleme bei einer bestimmten Anzahl von Vorgängen lösen (z. B. Konferenzen wie FOCS, STOC, SODA, SoCG usw.). Dennoch beschäftigen sich viele andere Ergebnisse der Informatik mit der Anwendbarkeit dieser Theorien auf das praktische Leben durch die Analyse experimenteller Ergebnisse (z. B. Konferenzen wie WADS, ALENEX usw.).

Es wird oft behauptet, dass das Ideal ein gutes Gleichgewicht zwischen Theorie und Praxis ist, wie in "Naturwissenschaften", wo die Beobachtung von Experimenten die Erzeugung neuer Theorien hervorruft, die wiederum neue Experimente vorschlagen, um diese zu bestätigen oder zu bestätigen: als solche viele Konferenzen versuchen, sowohl experimentelle als auch theoretische Ergebnisse zu akzeptieren (zB ESA, ICALP, LATIN, CPM, ISAAC, etc ...). Das Teilgebiet "Algorithmen und Datenstrukturen" in der Informatik könnte ein Ungleichgewicht aufweisen, da "theoretische" Konferenzen im Allgemeinen einen höheren Stellenwert haben als experimentelle. Ich glaube, dass dies in anderen Bereichen der Informatik wie HCI oder AI nicht der Fall ist.

Ich hoffe es hilft?

Jeremy
quelle
Danke, es hilft wirklich sehr. Ich habe mich in letzter Zeit für Graphentheorie interessiert und in den Artikeln, die ich las, hatte fast keiner von ihnen Code oder experimentelle Ergebnisse. Deshalb habe ich gefragt. Wenn Sie rein rechnen, können Sie keine experimentellen Ergebnisse erzielen, daher sind Beweise alles. In der Graphentheorie ist es jedoch nicht SO schwierig, Ihren Algorithmus zu codieren und nützliche experimentelle Ergebnisse zu erzielen! Nehmen wir das MST-Problem. Derzeitige Implementierungen in der Industrie sind Prim / Kruskal und Boruvska. Leistungsstärkere Algorithmen werden in Veröffentlichungen beschrieben, jedoch nicht verwendet, da sie noch nie von jemandem codiert wurden.
Toto
1
Ja, Sie könnten Algorithmen aus der Graphentheorie implementieren. Aber für viele der interessanten Probleme in der Graphentheorie, die mindestens hart sind, wäre dies nutzlos, da nur sehr kleine Eingaben aufgrund der Komplexität der Algorithmen in Exponentialzeit (akzeptabel) berechenbar wären. NP
Mathieu Chapelle
1
@toto Sicherlich trifft das, was Sie sagen, auf einige Probleme zu, aber für das MST-Problem können Sie die (möglicherweise etwas veralteten) Ergebnisse der Implementierung einiger leistungsfähiger Algorithmen in books.google.com/…
Abel Molina vom
1
@toto. Dies ist nicht der einzige Grund, warum ältere Algorithmen verwendet werden. Für die TCS-Perspektive ist immer besser als . Aber big-oh kann eine große Konstante verbergen, die den Algorithmus in der Praxis unpraktisch macht. Eine solche Arbeit zielt auf TCS-Leute ab und die Kodierung des Algorithmus würde dem Leser keinen Gewinn bringen oder ihn sogar verwirren. O(n)O(nLogn)
Chazisop
24

Algorithmen gut zu implementieren ist eine Fähigkeit, die andere Werkzeuge benötigt als nur das Beweisen von Theoremen. Viele Algorithmen, die von der Theoriegemeinschaft entdeckt wurden, wurden tatsächlich in die Praxis umgesetzt (obwohl ich mir wünschen würde, dass die Theoriegemeinschaft eine größere Rolle in diesem Prozess spielt). Die Physik fordert nicht die gleichen Forscher auf, Theorie und Experimente durchzuführen, obwohl erwartet wird, dass die beiden Gruppen kommunizieren. Warum sollten Sie nicht damit rechnen, dass es in der Informatik dieselbe Kluft gibt?

IN EDIT HINZUFÜGEN:

Als Antwort auf Sureshs Frage, was ich oben unter "Rolle" verstehe, wurden Forscher in Algorithmen von Bell Labs und AT & T Labs ermutigt, mit Menschen in der Entwicklung zu sprechen. Ich habe nicht so viel getan, wie ich wahrscheinlich hätte tun sollen, aber ich habe mindestens eine Arbeit herausgeholt, und ich denke, es wäre gut für das Fach, wenn es mehr Kommunikation zwischen theoretischen Personen an Universitäten und in der Praxis geben würde . Das bedeutet nicht, dass ich denke, jeder, der einen Algorithmus entwickelt, sollte ihn codieren (auch wenn er praktisch ist).

Andererseits können Codierungsalgorithmen (oder die Codierung durch einen Schüler), die Sie für sinnvoll halten, hilfreich sein, um sie von Praktikern anpassen zu lassen. Betrachten Sie ein Beispiel. Lempel und Ziv haben 1977 und 1978 zwei technische Artikel über neue Datenkomprimierungsalgorithmen verfasst. Alle haben sie ignoriert. Im Jahr 1984 hat Welch ein viel weniger technisches Papier verfasst , das die Leistung von LZ78 geringfügig verbesserte, und die Ergebnisse einer kleinen Studie vorgelegt, in der die Leistung mit anderen Datenkomprimierungsmethoden verglichen wurde. Es wurde in einer Zeitschrift veröffentlicht, die von einer Reihe von Programmierern gelesen wurde, und der Algorithmus wurde durch einige Zeilen Pseudocode angegeben. Die Methode wurde schnell an mehreren Stellen angepasst, was schließlich zu einem berüchtigten Streit um geistiges Eigentum führte.

Eine der besten Möglichkeiten für Algorithmusforscher, mit der Praxis zu kommunizieren, besteht darin, Studenten hervorzubringen, die bei Google, IBM oder anderen Unternehmen arbeiten, und das tun wir bereits. Ein anderer Weg könnte sein, die Fragen der Praktizierenden in diesem Forum zu beantworten. Hoffentlich machen wir das auch vernünftig.

Peter Shor
quelle
4
Sie sagen also, obwohl in der Physik nicht erwartet wird, dass dieselbe Person beides tut, sollten wir theoretisch beides tun? Liegt es daran, dass Rechenmodelle viel mehr eine Annäherung an die Realität darstellen als physikalische Modelle?
Suresh Venkat
10
Ich sage, dass die Theoretiker mehr mit den Praktizierenden sprechen sollten. Wenn man sich die Geschichte der Physik anschaut, passieren schlimme Dinge, wenn Theoretiker aufhören, mit Experimentatoren zu reden. Ich denke tatsächlich, dass wir im Moment eine angemessene Menge an Kommunikation zwischen den beiden Gruppen haben, aber dass es nicht schaden würde, mehr zu haben.
Peter Shor
3
Ich werde nicht verallgemeinern, aber ich denke, dass viele Forscher einfach nicht kodieren können / nicht mögen und sie es vorziehen, die praktische Arbeit von einem ihrer Studenten erledigen zu lassen. Das ist bei mir und meinem Mentor der Fall.
Toto
Das Spannungsfeld zwischen formaler Spezifikation und praktischer Berechnung reicht weit in die Geschichte des MINT zurück. Mal formale Spezifikationshinweise (von Neumanns "Über die Theorie der stationären Detonationswellen" [1948] gegenüber nachfolgenden rechnerischen Simulationen), mal praktische Berechnungshinweise (Bowditchs "New American Practical Navigator" [1807] gegenüber Gauß '"Disquisitiones generales circa superficies curvas" [1827]). Die größten Mathematiker (Gauß und von Neumann in den oben genannten Beispielen) haben häufig formale Spezifikationen mit praktischen Berechnungen kombiniert.
John Sidles
3
Die Geschichte von Lempel-Ziv und das Betrachten von Beiträgen auf StackOverflow haben mich nur dazu veranlasst, ein sehr einfaches Gebot zu formulieren, das es den Theoretikern ermöglichen könnte, Algorithmen zu entwickeln, die sich als sehr praktisch erweisen: Wenn Sie der Meinung sind, dass Ihr Algorithmus praktisch ist,
Peter Shor
17

Ein Forschungsgebiet, das empirische Methoden und Methoden der Theoretischen Informatik verwendet, ist das Gebiet der "Experimentellen Algorithmik" oder "Algorithm Engineering". Wie Chris bereits erwähnte, ist High Performance Computing in hohem Maße darauf angewiesen, da moderne Systeme komplexe Cache- und Latenzprobleme aufweisen, die wir nur schwer modellieren können.

Gerth Brodal und Peter Sanders sind gute Beispiele für Forscher, die sowohl im "Beweis" - als auch im "empirischen" Bereich Fuß fassen.

--Update 1/20 / 2013-- Ich möchte auch eine großartige Präsentation von Robert Sedgewick erwähnen .

Chad Brewbaker
quelle
4
Sowohl ALENEX als auch ESA fördern die Arbeit mit angewandten Algorithmen, und es gibt auch eine Konferenz (SAE) zu diesem Thema.
Suresh Venkat
Was ist SAE? Diese TLA ist unauffindbar. Hast du eine URL dafür?
Peter Boothe
5
SAE ist ein Tippfehler für SEA, das Symposium für experimentelle Algorithmen.
David Eppstein
1
Sie können Algorithm Engineering auch strenger durchführen, dh theoretische Modelle so verfeinern, dass sie der Realität entsprechen, aber dennoch präzise Analysen durchführen. Es ist allerdings schwer.
Raphael
O(CubeROOt(n))
12

Dies hängt von der Disziplin ab, in der Sie sich befinden. Wie Jeremy feststellt, gibt es ein Spektrum von Theorie und Praxis.

Themen wie Komplexität tendieren dazu, sich auf die theoretische Seite zu konzentrieren, da das Ziel oft darin besteht, eine Grenze für den Raum oder die Laufzeit zu finden. Das Implementieren eines Algorithmus in C ++ und das wiederholte Ausführen dieses Algorithmus beweisen nicht, dass ein Problem NP-vollständig ist.

Im Gegensatz dazu ist Hochleistungsrechnen (mit Konferenzen wie Supercomputing ) empirisch. Niemand würde jemals einen Proof bei einer HPC-Veröffentlichung einreichen, da es zu viele Unterschiede hinsichtlich der Speicherhierarchie und des Kernel-Overheads gibt.

Was also wie die gleiche Frage aussieht (wie lange dauert es, bis etwas läuft?), Wird auf zwei völlig unterschiedliche Arten angegangen, abhängig von den Zielen, Techniken, der Community usw. Ein Beispiel dafür finden Sie in Poul-Henning Kamps " You're Doing It Wrong" die Dissonanz.

Chrisaycock
quelle
10

In der Programmiersprachenforschung gehen viele Ideen für neue Programmiersprachenkonstrukte oder neue Mechanismen zur Typprüfung von der Theorie aus (möglicherweise durch Erfahrungen in der Praxis, möglicherweise nicht). Oft wird eine Arbeit über solche Mechanismen aus einer formalen / theoretischen / konzeptuellen Perspektive geschrieben. Das ist relativ einfach zu machen. Als nächstes kommt die erste Hürde: Die neuen Konstrukte im Kontext eines vorhandenen Compilers zu implementieren und damit hinsichtlich Effizienz oder Flexibilität zu experimentieren. Auch das ist relativ einfach.

Aber können wir dann sagen, dass das Programmierkonstrukt einen Fortschritt in der Wissenschaft der Programmierung darstellt? Können wir sagen, dass es das Schreiben von Programmen erleichtert? Können wir sagen, dass es die Programmiersprache besser macht?

Die Antwort ist nein. Für die Beantwortung derartiger Fragen wäre eine ordnungsgemäße empirische Bewertung erforderlich, an der zahlreiche erfahrene Programmierer über einen längeren Zeitraum hinweg beteiligt sind. Diese Forschung wird kaum jemals durchgeführt. Der einzige Maßstab für den Wert einer Programmiersprache (und ihrer Konstrukte) ist die Popularität der Sprache. Und für Programmiersprachenpuristen widerspricht dies unseren Hypothesen.

Dave Clarke
quelle
7

Vielleicht fehlt mir die Motivation für Ihre Frage, aber es gibt viele Beispiele für empirische Ergebnisse, die Forschung, Algorithmen und andere Ergebnisse motivieren.

MP3 verwendet Psychoakustik , um den Algorithmus für die menschliche Kodierung zu optimieren.

π

Auf der gleichen Linie sind Bailey und Borwein große Befürworter der experimentellen Mathematik. Siehe „Der Computer als Crucible: Eine Einführung in die Experimentelle Mathematik“ , „Computational Ausflüge in Zahlentheorie“ unter anderem . Man könnte argumentieren, dass dies eher experimentelle Mathematik ist, aber ich würde argumentieren, dass die Unterscheidung auf dieser Ebene semantisch ist.

Phasenübergänge von NP-Complete-Problemen sind ein weiterer Bereich, in dem empirische Ergebnisse stark genutzt werden. Sehen Sie sich zunächst Monasson, Zecchina, Kirkpatrick, Selman und Troyansky sowie Gent und Walsh an, obwohl es noch viele weitere gibt (siehe hier für eine kurze Übersicht).

Obwohl es sich nicht ganz um theoretische Informatik oder Mathematik handelt, wird hier diskutiert , wie die durchschnittliche Falllaufzeit des Unix-Dienstprogramms grep optimierte Worst-Case-Algorithmen übertrifft, da es auf der Tatsache beruht, dass es von Menschen lesbaren Text sucht (grep tut so schlecht oder schlecht) am schlimmsten bei Dateien mit zufälligen Zeichen).

Auch verwendete Gauß experimentelle Beweise seine Hypothese von dem Primzahlsatz zu geben.

Data Mining ( Bellkors Lösung für den Netflix-Preis , um ein besseres Empfehlungssystem zu entwickeln) könnte als Theorie angesehen werden, die vollständig auf empirischen Erkenntnissen beruht. Künstliche Intelligenz (genetische Algorithmen, neuronale Netze, etc.) stützt sich stark auf Experimente. Die Kryptographie ist ein ständiges Hin und Her zwischen Codemachern und Codebrechern. Ich habe wirklich nur einige genannt und wenn Sie Ihre Definition von empirisch lockern, dann könnten Sie ein noch breiteres Netz werfen.

Ich entschuldige mich dafür, dass ich so zerstreut auf Ihre Frage geantwortet habe, aber ich hoffe, ich habe zumindest ein paar Beispiele genannt, die hilfreich sind.

user834
quelle