https://www.coursera.org/learn/data-driven-astronomy
--------------------------------------------------------
Week 2: Big data makes things slow
제2주차: 자료가 방대해지면 뭘하든 느려진다.
- How to work out the time complexity of algorithms
복잡한 계산을 빠르게 수행하는 방법
- Exploring the black holes at the centers of massive galaxies
거대 은하의 중심부 블랙 홀 찾기
--------------------------------------------------------
1강: 방대한 자료는 일을 더디게 만든다
Lesson 1: Big Data makes things slow / 한글자막
--------------------------------------------------------
2강: 초거대 블랙홀과 활동성 은하 핵(AGN)
Lesson 2: Supermassive Black Hole / 한글자막
--------------------------------------------------------
3강: 교차정합(cross-matching) 알고리즘에 대하여
Lesson 3: What is cross-matching ? / 한글자막
--------------------------------------------------------
4강: 실행 시간 복잡도 평가
Lesson 4: Evaluating Time Complexity / 한글자막
--------------------------------------------------------
5강: 더욱 빠른 알고리즘
Lesson 5: A (much) faster algorithm / 한글자막--------------------------------------------------------
2주 요약: 대량의 관측자료분석, 누군가 같은 고민을 했을 것이다.
Mudule Summary / 한글자막 / 영문자막
[강의대본]
[00:06] 이번 강좌에서 전파관측 은하 목록과 광학관측 은하목록의 정합을 해봤다. 우리는 손수 정합 프로그램을 작성해 봤다. 목록내 은하 갯수가 증가 하면 어떤 문제가 생기는지도 확인하였다. 파이썬의 astropy 패키지에 구현되어 있는 K-d 트리라고 하는 자료구조를 사용 하므로서 우리가 작성한 프로그램으로는 무려 24일이 걸릴 작업을 단 25초에 끝낼 수 있었다. 그 입력으로 사용한 두 목록에 각각 백만개의 항목들이 수록 되었었다.
[00:31] 이는 문제 해결을 위한 접근시 올바른 자료구조와 현명한 계산 방법을 사용해야 하고 어떤 알고리즘이 자료해석에 있어서 엄청난 차이를 낳게 되는지 보여주는 좋은 예다. 이제까지 확실히, 대부분 과학자들은 결과를 얻는데 집중해 왔었다. 그리고 이면에 숨은 것이 무엇인지 알아보려 하거나 작성한 모든 소프트웨어를 세밀하게 살펴 보는데 시간을 할애하지 않았다. 하지만 우리는 이런 상황에 놓이면 표준 라이브러리와 과학관련 계산 라이브러리의 사용이 얼마나 유용한지 보여 주었길 바란다. 이들 라이브러리는 손수 만든 프로그램보다 훨씬 유용하다.
* 계산 소프트웨어를 만드는 것 자체를 연구 성과로 두는 것은 어리석다. 이미 엄청난 관측 자료가 쌓이고 공유되어 거의 동일한 문제로 고민했던 과학자들이 많다는 것을 기억하자. 현대 널리 퍼져있는 컴퓨터 관련 기술과 공개된 소프트웨어의 수준은 이미 넘쳐나는 엉뚱하고 호기심 많은 과학기술자들로 인해 상상할 수 없을 만큼 높다.
[01:03] 만일 여러분들이 과학과 천문학 컴퓨팅에 관한 알고리즘을 더 배우고자 한다면 시작해볼 방법은 많다. 먼저, 아주 저명한 교과서, 예를 들면 'Numerical Recipies'를 보라. 정렬(Sorting)이나 퓨리에 변환(Fourier Transform)같은 아주 중요한 알고리듬들로 가득하다. 사실, 이번 강좌에서 다뤘던 K-d 트리 알고리즘도 여기에서 차용되었다. 손수 프로그램을 작성해보면 알고리즘의 작동 원리를 배우울 수 있어 항상 흥미롭긴 하다. 비록 쓸만한 프로그램이 만들어지지 못했더라도 말이다.
[01:31] 두번째, 파이썬의 라이브러리 SciPy와 AstroPy에는 훌륭한 예제들로 가득하다. 좌표계 변환 같은 천문-과학 관련 애용을 수록하고 있으니 해당 웹사이트를 방문해 보라.
1. AstroPy, http://www.astropy.org/
2. SciPy, https://www.scipy.org/
[01:38] 끝으로, 흥미로운 논문들이 발간되어 있으니 찾아보기 바란다. 천문 관련 커뮤니티에 고급 컴퓨팅 기법에 관한 논문이 많이 소개되고 있다. 일예로, 상호정합 알고리즘에 관심이 있다면 이에 대한 논문을 강좌 자료실에 소개해 두었으니 참고하기 바란다. 이 논문의 내용에 아주 난해한 수학들을 많이 담고 있으나, 대부분 관련 소프트웨어의 원시 코드들이 공개되어 있으니 이를 읽을 줄 아는 사람들에겐 도움이 될 것이다.
[참고논문]
1. Tamas Budavari, Alexander S. Szalay,
Probabilistic Cross-Identification of Astronomical Sources,
https://arxiv.org/abs/0707.1611
2. Line et.al.,
PUMA: The Positional Update and Matching Algorithm,
https://arxiv.org/abs/1611.05534,
PUMA Source, https://github.com/JLBLine/PUMA
[02:02] 소량의 관측자료라면 실행시간에 별로 고민할 것도 없고 손으로 해도 결과를 얻을 수 있다. 심지어 컴퓨터 힘을 빌지 않고도 문제를 해결하고 결론을 낼 수 있다. 하지만 거대규모 자료의 상황이 되면 알고리즘의 선택이나 소프트웨어 패키지의 선택이 아주 중요한 요인이 된다. (기술발전으로 정교하고 방대해진 넘쳐나는 관측자료를 보라!) 누군가 나와 비슷한 관심을 가졌을 것이며 그 전산 문제에 충분한 이해를 가지고 있다는 점을 인식하기 바란다. 그것이 당신의 과학과 분석을 더욱 효과적으로 해결 했을지 모른다. 이런 상세한 것에 메달려야 하는지 그럴 필요없이 이미 준비된 것을 쓰든지 안다면 우주를 이해하는데 훨씬 많은 질문을 던질 수 있을 것이다.
댓글 없음:
댓글 쓰기