CS 논문의 경험적 결과


31

나는 CS 분야를 처음 접했고 내가 읽은 많은 논문들에서 경험적 결과 (코드가없고, 명예와 증거)가 없다는 것을 알았습니다. 왜 그런가요? 컴퓨터 과학이 과학이라는 것을 고려하면 과학적인 방법을 따라서는 안됩니까?


26
짧은 대답은 "컴퓨터 과학"이 많은 것입니다. 인공 지능과 같은 일부는 실제로 과학입니다. 다른 부분은 공학적이며 이론적 인 측면은 (적용된) 수학입니다. HCl의 일부는 예술과 비슷합니다. 컴퓨터 과학은 광범위한 텐트입니다.
Aaron Roth

6
증거가 있다면 왜 경험적인 결과가 필요한가?
Aryabhata

2
@Moron : 알고리즘을 구현하지 않고 구현할 수 있다는 것을 어떻게 증명합니까?
Jukka Suomela

8
이론적 CS는 경험적 결과를 피하는 수학 물리학과 유사 해 보입니다. 당신은 실험 물리학 같은 것을 원한다면, 당신은 소프트웨어 공학, 프로그램 검증, 데이터베이스 시스템 등의 연구에서 볼 수 있었다
야로 슬라브 Bulatov

4
하찮은 일에 속 태우고있다 " 과학적 방법"?
Kaveh

답변:


21

수학은 과학이기도하기 때문에이 분야에서 발표 된 경험적 결과를 찾기 위해서는 오랜 시간을 검색해야 할 것입니다. 양자 물리학과 같은 경험보다 "리마와 증거"가 평가되는 다른 과학 영역이 있습니다. 즉, 대부분의 과학은 이론과 실제를 다양한 비율로 혼합하며 컴퓨터 과학도 예외는 아닙니다.

컴퓨터 과학은 수학에 뿌리를두고 있으며 (예 : http://en.wikipedia.org/wiki/Alan_Turing 과 같은 Turing의 약력 참조 ) 많은 결과 (일반적으로 "이론적 컴퓨터 과학"분야에서 더빙 됨)는 증거로 구성됩니다. 일부 계산 모델의 컴퓨터는 주어진 양의 작업 (예 : FOCS, STOC, SODA, SoCG 등의 회의)에서 일부 문제를 해결할 수 있습니다. 그럼에도 불구하고, 컴퓨터 과학의 다른 많은 결과들은 실험 결과 (예 : WADS, ALENEX 등의 회의 등)의 분석을 통해 이러한 이론을 실제 생활에 적용하는 데 관심이 있습니다.

실험의 관찰이 새로운 이론의 생성을 촉발하는 새로운 자연 이론의 생성을 자극하는 "자연 과학"에서와 같이 이론과 실천 사이의 이상적인 균형이 이상적이라고 종종 제안된다. 회의는 실험 및 이론 결과 (예 : ESA, ICALP, LATIN, CPM, ISAAC 등)를 모두 받아들이려고합니다. 컴퓨터 과학에서 "알고리즘 및 데이터 구조"의 서브 필드는 "이론적"컨퍼런스가 일반적으로 실험적인 컨퍼런스보다 더 높은 순위라는 의미에서 불균형을 겪을 수 있습니다. HCI 나 AI와 같은 컴퓨터 과학의 다른 하위 분야에서는 이것이 사실이 아니라고 생각합니다.

도움이 되길 바랍니다.


고마워, 그것은 실제로 많은 도움이됩니다. 나는 최근 그래프 이론에 관심이 있었고 내가 읽고있는 논문에 거의 코드 또는 실험 결과가 없었습니다. 이것이 내가 물었던 이유입니다. 순수한 수학을하면 실험 결과를 얻을 수 없으므로 증거가 전부입니다. 그러나 Graph Theory에서는 알고리즘을 코딩하고 유용한 실험 결과를 얻는 것이 어렵지 않습니다! MST 문제를 보자. 현재 업계 구현은 Prim / Kruskal 및 Boruvska이지만 더 강력한 알고리즘은 논문에 설명되어 있지만 아무도 코딩하지 않았기 때문에 사용되지 않습니다.
toto

1
예, 그래프 이론에서 알고리즘을 구현할 수 있습니다. 그러나 그래프 이론 의 흥미로운 많은 문제 들, 즉 적어도 hard는 알고리즘의 지수 시간 복잡성으로 인해 매우 작은 입력 만 (허용 가능하게) 계산할 수 있기 때문에 쓸모가 없습니다. NP
Mathieu Chapelle

1
@ toto 확실히 당신이 말하는 것은 일부 문제에 적용되지만, MST 문제의 경우 books.google.com/…
Abel Molina

1
O(n)O(nlogn)

24

알고리즘을 잘 구현하는 것은 이론을 증명하는 것과 다른 도구 세트를 취하는 기술입니다. 이론 커뮤니티에서 발견 한 많은 알고리즘이 실제로 실제로 구현되었습니다 (이 과정에서 이론 커뮤니티가 더 큰 역할을하고 싶지만). 물리학은 동일한 연구자들에게 이론과 실험을 요구하지는 않지만 두 그룹이 의사 소통을 할 것으로 예상됩니다. 왜 컴퓨터 과학에서 같은 분열을 기 대해서는 안됩니까?

편집에 추가됨 :

벨 연구소 (Bell Labs)와 AT & T 연구소 (AT & T Labs)에서 위의 "역할"의 의미에 대한 Suresh의 답변에 대한 나의 의견을 넓히고 알고리즘의 연구자들은 개발중인 사람들과 대화하도록 장려했다. 내가해야 할만큼이 일을 많이하지는 않았지만 적어도 한 장의 논문을 꺼내서 대학과 실무자 이론의 사람들 사이에 의사 소통이 더 많으면 현장에 좋을 것이라고 생각합니다. . 그렇다고 알고리즘을 만든 사람이 모두 코딩해야한다고 생각하는 것은 아닙니다 (실용적 임에도 불구하고).

다른 한편으로, 실용적이라고 생각하는 코딩 알고리즘 (또는 학생이 가지고있는 코드를 갖는 것)은 실무자에 의해 적응되도록하는 데 유용 할 수 있습니다. 한 가지 예를 생각해보십시오. Lempel과 Ziv는 1977 년과 1978 년에 새로운 데이터 압축 알고리즘에 관한 두 가지 기술 논문을 작성했습니다. 다들 무시 했어요 1984 년, 웰치가 쓴 훨씬 적은 기술 논문 어느 정도의 성능을 향상 LZ78에 약간의 트위스트를주는 및 기타 데이터 압축 방법과의 성능을 비교하는 작은 연구 결과를 주었다. 그것은 많은 프로그래머들에 의해 읽힌 저널에 출판되었으며, 알고리즘은 몇 줄의 의사 코드에 의해 주어졌습니다. 이 방법은 여러 곳에서 빠르게 적용되어 결국 악명 높은 지적 재산권 분쟁이 발생했습니다.

물론 알고리즘 연구원이 실습과 의사 소통하는 가장 좋은 방법 중 하나는 Google, IBM 또는 다른 회사에서 일하는 대학원생을 배출하는 것입니다. 우리는 이미 그렇게하고 있습니다. 또 다른 방법은이 포럼에서 실무자의 질문에 대답하는 것입니다. 잘만되면, 우리는 그것의 합리적인 일을하고 있습니다.


4
물리학에서는 같은 사람이 두 가지를 모두 할 것으로 기대하지는 않지만 이론 CS에서는 두 가지를 모두 수행해야한다고 말하고 있습니까? 계산 모델이 물리 모델보다 현실에 훨씬 더 가깝기 때문입니까?
Suresh Venkat

10
나는 이론가들이 실무자들과 더 이야기해야한다고 말합니다. 물리학의 역사를 살펴보면 이론가들이 실험 론자들과 이야기를 중단 할 때 나쁜 일이 시작됩니다. 실제로 우리는 지금 두 그룹간에 합리적인 의사 소통이 있다고 생각하지만 더 많은 것을 갖는 것이 아프지 않을 것이라고 생각합니다.
Peter Shor

3
나는 일반화하지는 않지만 많은 연구원들이 단순히 코딩 / 싫어하는 것을 할 수 없으며 학생들 중 한 사람이 실제 작업을 수행하도록 할 것이라고 생각합니다. 저와 저의 멘토의 경우입니다.
toto

공식적인 사양 대 실제 계산과 관련된 긴장은 STEM 역사에서 훨씬 거슬러 올라갑니다. 때때로 공식적인 스펙 리드 (von Neumann의 "고정 파폭 파 이론"[1948] 대 후속 계산 시뮬레이션)와 때로는 실용적인 계산 리드 (Bowditch의 "New American Practical Navigator"[1807] vs. Gauss의 "Disquisitiones generales circa superficies curvas") [1827]). 위대한 수학자 (위에 인용 된 예에서 가우스와 폰 노이만)는 공식적인 사양과 실제 계산을 결합한 경우가 많습니다.
John Sidles

3
Lempel-Ziv의 역사와 StackOverflow에 대한 게시물을 살펴보면 알고리즘 이론가가 구현 된 vy 실무자를 내놓는 데 도움이 될 수있는 매우 간단한 교훈을 만들었습니다. 알고리즘이 실용적이라고 생각되면 의사 코드를 종이.
Peter Shor

17

이론적 컴퓨터 과학의 경험적 방법과 방법을 사용하는 한 연구 분야는 "실험 알고리즘"또는 "알고리즘 공학"이라는 분야입니다. Chris가 언급했듯이, 최신 시스템에는 복잡한 캐시 및 대기 시간 문제가 있기 때문에 모델링에 어려움을 겪기 때문에 고성능 컴퓨팅은 이것에 크게 의존합니다.

Gerth BrodalPeter Sanders 는 "증거"와 "경험적"영역에서 발을 유지하는 연구원의 좋은 예입니다.

--2013 년 1 월 2 일 업데이트-Robert Sedgewick 의 멋진 프레젠테이션에 대해서도 언급하겠습니다 .


4
ALENEX와 ESA는 모두 적용 알고리즘이 작동하도록 권장하며이 주제에 대한 회의 (SAE)도 있습니다.
Suresh Venkat

SAE 란 무엇입니까? 그 TLA는 구글입니다. URL이 있습니까?
피터 부스

5
SAE는 실험 알고리즘 심포지엄 인 SEA의 오타입니다.
David Eppstein

1
알고리즘 엔지니어링을보다 엄격한 방식으로 수행 할 수도 있습니다. 즉 이론 모델을 구체화하여 현실에 맞지만 정밀한 분석은 수행 할 수 있습니다. 그러나 어렵습니다.
Raphael

@Raphael 각 VonNeuman 컴퓨팅 노드 주변의 구를 모델링하고 거리에 비례하는 대기 시간 비용으로 메모리 객체를 명시 적으로 배치하고 가져와야합니다. 랜덤 액세스영형(기음이자형아르 자형영형영형()), 메모리 구의 지름, 빛의 속도는 최고의 대기 시간입니다.
Chad Brewbaker

12

이것은 당신이 속한 징계에 달려 있습니다. 제레미가 말했듯이 이론과 실제의 스펙트럼이 있습니다.

복잡성 과 같은 주제 는 종종 공간 또는 런타임의 경계를 찾는 것이기 때문에 이론 측면에 가중치를 두는 경향이 있습니다. C ++에서 알고리즘을 구현 한 다음 여러 번 실행한다고해서 문제가 NP- 완전임을 증명할 수는 없습니다.

정반대로서, 고성능 컴퓨팅 ( 슈퍼 컴퓨팅 과 같은 회의 )은 모두 경험적입니다. 메모리 계층 구조 및 커널 오버 헤드와 관련하여 너무 많은 가변성이 있기 때문에 HPC 간행물에 증거를 제출 한 사람은 없습니다.

목표, 기술, 커뮤니티 등에 따라 동일한 질문 (일이 얼마나 오래 걸립니까?)에 완전히 다른 두 가지 방식으로 접근하게됩니다. Poul-Henning Kamp 's You 're Doing It Doing It Doing of example 불협화음.


10

프로그래밍 언어 연구에서 새로운 프로그래밍 언어 구조 또는 새로운 유형 검사 메커니즘에 대한 많은 아이디어는 이론에 기인합니다. 종종 이러한 메커니즘에 대한 논문은 공식 / 이론적 / 개념적 관점에서 작성됩니다. 비교적 쉬운 일입니다. 다음은 첫 번째 장애물입니다. 기존 컴파일러의 맥락에서 새로운 구문을 구현하고 효율성 또는 유연성 측면에서 실험합니다. 이것도 비교적 쉽습니다.

그러나 프로그래밍 구성이 프로그래밍 과학의 발전을 구성한다고 말할 수 있습니까? 프로그램 작성이 더 쉽다고 말할 수 있습니까? 프로그래밍 언어가 더 좋다고 말할 수 있습니까?

내 대답은 아니오 야. 이러한 종류의 질문에 대답하기 위해서는 오랜 기간 동안 수많은 숙련 된 프로그래머가 참여하는 적절한 경험적 평가가 필요합니다. 이 연구는 거의 이루어지지 않았습니다. 프로그래밍 언어 (및 그 구조)의 가치에 대한 유일한 판단은 언어의 인기입니다. 그리고 언어 순수 주의자를 프로그래밍하기 위해 이것은 우리의 가설이 말하는 것과 반대입니다.


7

아마도 귀하의 질문에 대한 동기가 누락되었지만 연구, 알고리즘 및 기타 결과에 동기를 부여하는 경험적 결과의 많은 예가 있습니다.

MP3psychoacoustic 을 사용 하여 사람 인코딩 알고리즘을 최적화합니다.

Plouffe다음의 숫자에 대한 BBP 스피 곳 알고리즘을 발견 한 계정을 제공합니다.π여기서 그는 정수 관계 알고리즘 Mathematica가 공식을 발견하기 위해 사용했던 것을 사용하는 것에 대해 이야기합니다 .

동일한 선을 따라 Bailey와 Borwein은 실험 수학의 큰 지지자입니다. 참조 : "실험 수학에 소개 도가니로 컴퓨터" , "번호 이론 전산 유람" 사이에 다른 사람 . 이것이 더 실험적인 수학 이라고 주장 할 수도 있지만,이 수준에서는 토론이 의미 론적이라고 주장합니다.

NP-Complete 문제의 위상 전이는 경험적 결과가 많이 사용되는 또 다른 영역입니다. 참조 Monasson, Zecchina, 커크 패트릭, 셀만 및 Troyansky겐트와 월시 많은, 더 많은 (참조 있기는하지만, 우선 여기에 간단한 설문 조사에 대한 참조).

이론적 인 컴퓨터 과학 또는 수학 수준은 아니지만 유닉스 유틸리티 grep의 평균 케이스 런타임이 사람이 읽을 수있는 텍스트를 검색한다는 사실에 의존하기 때문에 최적화 된 최악의 알고리즘을 능가하는 방법에 대한 논의가 있습니다 (grep는 나쁘거나 임의의 문자가있는 파일에서는 최악).

가우스조차도 실험적 증거 를 사용하여 소수 이론에 대한 가설을 제시했습니다.

데이터 마이닝 ( Bellkor의 솔루션 받는 넷플릭스 상 더 나은 추천 시스템을 만들 수는) 완전히 경험적 증거에 기초한 이론으로 주장 될 수 있습니다. 인공 지능 (유전 알고리즘, 신경망 등)은 실험에 크게 의존합니다. 암호화는 코드 제작자와 코드 차단기 사이에서 끊임없이 밀고 나가고 있습니다. 나는 단지 몇 가지 이름을 지어 왔으며 경험적 정의를 완화하면 더 넓은 그물을 던질 수 있습니다.

귀하의 질문에 대답하는 데 뿌려진 것에 대해 사과드립니다. 그러나 최소한 도움이되는 몇 가지 예를 들었기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.