Résultats empiriques dans les articles CS

31

Je suis nouveau dans le domaine CS et j'ai remarqué que dans la plupart des articles que j'ai lus, il n'y a pas de résultats empiriques (pas de code, juste des lemmes et des preuves). Pourquoi donc? Étant donné que l'informatique est une science, ne devrait-elle pas suivre la méthode scientifique?

toto
la source
26
La réponse courte est que "l'informatique", c'est beaucoup de choses. Certaines parties comme (certaines) l'IA sont en fait de la science. D'autres parties sont l'ingénierie et le côté théorique est les mathématiques (appliquées). Certaines parties de HCI ressemblent plus à de l'art. L'informatique est une vaste tente.
Aaron Roth
6
Si vous avez des preuves, pourquoi avez-vous même besoin de résultats empiriques?
Aryabhata
2
@Moron: Comment prouvez-vous qu'un algorithme est implémentable sans l'implémenter?
Jukka Suomela
8
La CS théorique semble s'apparenter à la physique mathématique qui évite également les résultats empiriques. Si vous voulez quelque chose comme la physique expérimentale, vous pouvez regarder la recherche en génie logiciel, vérification de programme, systèmes de base de données, etc.
Yaroslav Bulatov
4
piqûre: " la méthode scientifique"?
Kaveh

Réponses:

21

Les mathématiques sont aussi une science, et il faudrait chercher longtemps pour trouver des résultats empiriques publiés dans ce domaine (même si je suppose qu'il doit y en avoir). Il existe d'autres domaines scientifiques où «les lemmes et les preuves» sont valorisés par rapport à l'expérience, comme la physique quantique. Cela dit, la plupart des sciences mélangent théorie et pratique (avec différents ratios), et l'informatique ne fait pas exception.

L'informatique a ses racines dans les mathématiques (voir la biographie de Turing par exemple http://en.wikipedia.org/wiki/Alan_Turing ), et à ce titre de nombreux résultats (généralement surnommés comme dans le domaine de "l'informatique théorique") consistent en des preuves que les ordinateurs dans certains modèles de calcul peuvent résoudre certains problèmes dans un nombre d'opérations donné (par exemple, des conférences telles que FOCS, STOC, SODA, SoCG, etc.). Néanmoins, de nombreux autres résultats de l'informatique se préoccupent de l'applicabilité de ces théories à la vie pratique, à travers l'analyse de résultats expérimentaux (par exemple des conférences telles que WADS, ALENEX, etc ...).

Il est souvent suggéré que l'idéal est un bon équilibre entre la théorie et la pratique, comme dans les "sciences naturelles", où l'observation des expériences incite à la génération de nouvelles théories, qui à leur tour suggèrent de nouvelles expériences pour confirmer ou infirmer celles-ci: comme beaucoup les conférences tentent d'accepter les résultats expérimentaux et théoriques (par exemple ESA, ICALP, LATIN, CPM, ISAAC, etc ...). Le sous-domaine des "algorithmes et structures de données" en informatique pourrait souffrir d'un déséquilibre dans le sens où les conférences "théoriques" sont généralement mieux classées que les conférences expérimentales. Je crois que ce n'est pas vrai dans d'autres sous-domaines de l'informatique, tels que HCI ou AI.

J'espère que ça aide?

Jeremy
la source
Merci, ça aide beaucoup. Je me suis intéressé récemment à la théorie des graphes et dans les articles que je lisais, presque aucun n'avait de code ou de résultats expérimentaux. C'est pourquoi j'ai demandé. Lorsque vous faites des mathématiques pures, vous ne pouvez pas produire de résultats expérimentaux, les preuves sont donc tout. Mais dans la théorie des graphes, ce n'est pas si difficile de coder votre algorithme et de produire des résultats expérimentaux utiles! Prenons le problème MST. Les implémentations actuelles de l'industrie sont Prim / Kruskal et Boruvska et pourtant, des algorithmes plus puissants sont décrits dans les articles mais ils ne sont pas utilisés car personne ne les a jamais codés.
toto
1
NP
1
@ toto Ce que vous dites s'applique certainement à certains problèmes, mais pour le problème MST, vous pouvez voir les résultats (peut-être un peu dépassés) de la mise en œuvre de certains des algorithmes puissants dans books.google.com/…
Abel Molina
1
O(n)O(nlogn)
24

La bonne mise en œuvre des algorithmes est une compétence qui nécessite un ensemble d'outils différent de la simple démonstration des théorèmes. De nombreux algorithmes qui ont été découverts par la communauté théorique ont en effet été mis en œuvre dans la pratique (bien que j'aimerais que la communauté théorique joue un rôle plus important dans ce processus). La physique ne demande pas aux mêmes chercheurs de faire de la théorie et de l'expérimentation, bien que l'on s'attende à ce que les deux groupes communiquent. Pourquoi ne vous attendriez-vous pas à voir le même fossé en informatique?

AJOUTÉ EN ÉDIT:

En développant mon commentaire en réponse à celui de Suresh sur ce que je voulais dire par «rôle» ci-dessus, aux Bell Labs et AT&T Labs, les chercheurs en algorithmes ont été encouragés à parler aux personnes en développement. Je n'ai pas fait autant de choses que j'aurais probablement dû, mais j'en ai retiré au moins un document , et je pense que ce serait bon pour le domaine s'il y avait plus de communication entre les gens théoriques dans les universités et les praticiens . Cela ne signifie pas que je pense que tous ceux qui proposent un algorithme devraient le coder (même si c'est pratique).

D'un autre côté, les algorithmes de codage (ou demander à un élève de les coder) que vous pensez être pratiques peuvent être utiles pour les faire adapter par les praticiens. Prenons un exemple. Lempel et Ziv ont écrit deux articles techniques en 1977 et 1978 sur les nouveaux algorithmes de compression de données. Tout le monde les a ignorés. En 1984, Welch a écrit un article beaucoup moins technique donnant une légère torsion au LZ78 qui a quelque peu amélioré ses performances et a donné les résultats d'une petite étude comparant ses performances avec d'autres méthodes de compression de données. Il a été publié dans un journal lu par un certain nombre de programmeurs, et l'algorithme a été donné par quelques lignes de pseudocode. La méthode a été rapidement adaptée dans un certain nombre d'endroits, ce qui a finalement abouti à un tristement célèbre litige de propriété intellectuelle.

Bien sûr, l'un des meilleurs moyens pour les chercheurs en algorithmes de communiquer avec la pratique est de former des étudiants diplômés qui partent travailler chez Google, IBM ou d'autres entreprises, et nous le faisons déjà. Une autre façon pourrait être de répondre aux questions des pratiquants dans ce forum. J'espère que nous faisons également un travail raisonnable.

Peter Shor
la source
4
Donc, vous dites que même si en physique il n'y a aucune attente que la même personne fasse les deux, en théorie, nous devrions faire les deux? est-ce parce que les modèles de calcul sont beaucoup plus une approximation de la réalité que les modèles physiques?
Suresh Venkat
10
Je dis que les théoriciens devraient parler davantage aux pratiquants. Si vous regardez l'histoire de la physique, de mauvaises choses commencent à se produire lorsque les théoriciens cessent de parler aux expérimentateurs. En fait, je pense que nous avons actuellement une communication raisonnable entre les deux groupes, mais que cela ne ferait pas de mal d'en avoir davantage.
Peter Shor
3
Je ne généraliserai pas, mais je pense que de nombreux chercheurs ne peuvent tout simplement pas coder / n'aiment pas et préfèrent laisser le travail pratique à l'un de leurs étudiants. C'est le cas avec moi et mon mentor.
toto
La tension associée à la spécification formelle par rapport au calcul pratique remonte loin dans l'histoire de STEM. Parfois, des pistes de spécification formelles ("Sur la théorie des ondes de détonation stationnaires" de von Neumann [1948] contre des simulations de calcul ultérieures) et parfois des pistes de calcul pratiques ("New American Practical Navigator" de Bowditch [1807] contre "Disquisitiones generales circa superficies curvas" de Gauss) [1827]). Les plus grands mathématiciens (Gauss et von Neumann dans les exemples cités ci-dessus) ont souvent combiné des spécifications formelles avec des calculs pratiques.
John Sidles
3
L'histoire de Lempel-Ziv, et en regardant les articles sur StackOverflow, vient de m'amener à formuler un précepte très simple qui pourrait aider les théoriciens des algorithmes à trouver des praticiens vy mis en œuvre: si vous pensez que votre algorithme pourrait être pratique, mettez un pseudocode dans votre papier.
Peter Shor
17

Un domaine de recherche qui utilise des méthodes empiriques et des méthodes de l'informatique théorique est le domaine appelé "algorithmique expérimentale" ou "génie algorithmique". Comme Chris l'a mentionné, l'informatique haute performance dépend fortement de cela, car les systèmes modernes ont des problèmes complexes de cache et de latence que nous avons du mal à modéliser.

Gerth Brodal et Peter Sanders sont de bons exemples de chercheurs qui maintiennent un pied dans les domaines "preuve" et "empirique".

--Mise à jour 1/20 / 2013-- Je mentionnerais également une excellente présentation de Robert Sedgewick .

Chad Brewbaker
la source
4
ALENEX et ESA encouragent le travail sur les algorithmes appliqués, et il y a aussi une conférence (SAE) sur ce sujet.
Suresh Venkat
Qu'est-ce que SAE? Ce TLA est intolérable. Avez-vous une URL pour cela?
Peter Boothe
5
SAE est une faute de frappe pour SEA, le Symposium on Experimental Algorithms.
David Eppstein
1
Vous pouvez également faire de l'ingénierie algorithmique de manière plus rigoureuse, c'est-à-dire affiner les modèles théoriques afin qu'ils correspondent à la réalité mais toujours effectuer des analyses précises. C'est difficile, cependant.
Raphael
O(CubeRoot(n))
12

Cela dépend de la discipline dans laquelle vous vous trouvez; comme le dit Jeremy, il y a un spectre de théorie contre pratique.

Des sujets comme la complexité ont tendance à être pondérés du côté de la théorie, car le but est souvent de trouver une limite pour l'espace ou le temps d'exécution. Implémenter un algorithme en C ++ puis l'exécuter plusieurs fois ne va pas prouver qu'un problème est NP-complet.

En tant qu'opposé polaire, le calcul haute performance (avec des conférences comme le Supercalcul ) est tout empirique; personne ne soumettrait jamais de preuve à une publication HPC car il y a trop de variabilité en ce qui concerne la hiérarchie de la mémoire et la surcharge du noyau.

Donc, ce qui semble être la même question (combien de temps faut-il pour fonctionner?) Sera abordé de deux manières complètement différentes selon les objectifs, les techniques, la communauté, etc. Voir Poul-Henning Kamp's Vous le faites mal pour un exemple de la dissonance.

chrisaycock
la source
10

Dans les langages de programmation, de nombreuses idées pour de nouvelles constructions de langage de programmation ou de nouveaux mécanismes de vérification de type découlent de la théorie (peut-être fondées sur l'expérience pratique, peut-être pas). Souvent, un article est écrit sur ces mécanismes d'un point de vue formel / théorique / conceptuel. C'est relativement facile à faire. Vient ensuite le premier obstacle: mettre en œuvre les nouvelles constructions dans le contexte d'un compilateur existant et l'expérimenter, en termes d'efficacité ou de flexibilité. Cela aussi est relativement facile.

Mais peut-on alors dire que la construction de la programmation constitue une avancée dans la science de la programmation? Peut-on dire que cela facilite l'écriture de programmes? Peut-on dire que cela améliore le langage de programmation?

La réponse est non. Une évaluation empirique appropriée impliquant des dizaines de programmeurs expérimentés sur de longues périodes serait nécessaire pour répondre à ce type de questions. Cette recherche est rarement réalisée. Le seul juge de la valeur d'un langage de programmation (et de ses constructions) est la popularité du langage. Et pour les puristes du langage de programmation, cela va à l'encontre de ce que nos hypothèses nous disent.

Dave Clarke
la source
7

Je manque peut-être la motivation de votre question, mais il existe de nombreux exemples de résultats empiriques motivant la recherche, les algorithmes et d'autres résultats.

Les MP3 utilisent la psychoacoustique pour optimiser l'algorithme d'encodage humain.

π

Dans le même ordre d'idées, Bailey et Borwein sont de grands partisans des mathématiques expérimentales. Voir «L'ordinateur comme creuset: une introduction aux mathématiques expérimentales» , «Excursions computationnelles en théorie des nombres», entre autres . On pourrait soutenir qu'il s'agit de mathématiques plus expérimentales, mais je dirais qu'à ce niveau, la discussion est une distinction sémantique.

Les transitions de phase des problèmes NP-Complete sont un autre domaine où les résultats empiriques sont largement utilisés. Voir Monasson, Zecchina, Kirkpatrick, Selman et Troyansky et Gent et Walsh pour les débutants, bien qu'il y en ait beaucoup, beaucoup plus (voir ici pour un bref aperçu).

Bien que n'étant pas tout à fait au niveau de l'informatique théorique ou des mathématiques, il y a une discussion ici sur la façon dont l'exécution moyenne des cas de grep de l'utilitaire unix bat les algorithmes optimisés dans le pire des cas, car il repose sur le fait qu'il recherche du texte lisible par l'homme (grep fait aussi mal ou pire sur les fichiers contenant des caractères aléatoires).

Même Gauss a utilisé des preuves expérimentales pour donner son hypothèse du théorème des nombres premiers.

L'exploration de données ( solution de Bellkor au prix Netflix pour faire un meilleur système de recommandation) pourrait être considérée comme une théorie entièrement basée sur des preuves empiriques. L'intelligence artificielle (algorithmes génétiques, réseaux de neurones, etc.) s'appuie fortement sur l'expérimentation. La cryptographie est en constante évolution entre les créateurs de code et les casseurs de code. Je n'en ai vraiment cité que quelques-uns et si vous assouplissez votre définition de l'empirique, vous pourriez jeter un filet encore plus large.

Je m'excuse d'avoir été si dispersé en répondant à votre question, mais j'espère avoir donné au moins quelques exemples utiles.

user834
la source