https://www.coursera.org/learn/data-driven-astronomy
Week 1: Thinking about data
- Principles of computational thinking
전자계산학에 기초한 자료처리의 원리
- Discovering pulsars in radio images
전파망원경 관측영상에서 펄서 찾기
----------------------------------------------
1강: 폭주하는 관측 자료 / Lesson 1: Thinking about data
----------------------------------------------
[강좌대본]
지난번 강의에서 일련의 관측영상의 평균쌓기(mean stack)를 수행해 봤다. 그결과 이런 영상을 얻을 수 있었다.

[강좌대본]
지난번 강의에서 일련의 관측영상의 평균쌓기(mean stack)를 수행해 봤다. 그결과 이런 영상을 얻을 수 있었다.

[00:13] 각각의 영상에서 아무것도 관측된 것이 없어 보였지만 모두 쌓아 평균을 해보니 신호대잡음의 비율이 높아져 마침내 숨어있던 펄사들이 모습을 드러냈다.
[00:22] 이제 잡음에 대한 강인성을 높일 방법을 찾아보자. 그 방법으로 쌓기 평균대신 중간값평균을 적용하는 것이다. 말하자면 영상에서 모든 화소값 크기별 순서를 세우고 중간 값의 화소를 기준으로 새로운 영상을 생성하는 방법이다.
[00:36] 이 방법을 그대로 컴퓨터 프로그램으로 작성하기는 그리 어렵지 않았다. 그러나 학생들이 60만 매에 이르는 영상을 대상으로 이 프로그램을 실행 시켰을 때 당장 문제가 생겼다. 이 프로그램이 우리 컴퓨터의 모든 지점(병렬 분산 컴퓨터 망의 각 CPU)에서 실행 되는 것이었다. 기억장소 전부를 차지하면서 예상했던 것보다 훨씬 더 많은 실행시간이 걸렸다. 말하자면 해결책을 가늠할 수 없었다.(끝이 안보였다)
[00:56] 이런 방식의 계산 이면에 무엇이 있는지 찾아보자. 뭔가 일을 시키기 전에 최선의 결과를 얻기위해 그 이면을 살펴보자. (요즘쓰는 말로 '악마는 디테일'에 있다.) 계산의 개념을 이해하면 계산과정에서 매 단계마다 왜 그렇게 하는지 타당성을 추정할 수 있으며 컴퓨터로 구현할 때 어느 정도의 성능과 저장장치 용량을 필요할지 가늠해 볼수 있다. 정확한 숫자가 중요한 것이 아니다. 계산을 수월하게 수행할 개략적인 값을 알고 시작할 수 있다.
[01:20] 나의 해법은 이렇다. 처음에 미지의 관측영상 60만장을 가지고 있다. 각 영상은 가로 200화소 세로 200화소 크기다. 한 영상당 총 4만 화소다. 그리고 각 화소마다 8바이트 크기의 배정도 부동소수점 값으로 저장되었다. 만일 본래의 중간값평균 계산을 적용한다면 이 영상의 화소 값들을 모두 저장장치에 올려 둬야 한다. 그러니까 200곱하기 200에 8을 곱하고 다시 60만을 곱한 저장용량이 필요하다. 계산하면 무려 192기가 바이트가 필요하다. 맙소사!
[01:51] 학생들이 모르긴 해도 이정도 메모리를 사용하는 프로그램을 짰을 것이다. 우리가 가진 (슈퍼)컴퓨터 장비의 전체 용량과도 맞먹는다. 이것이 바로 계산의 이면에 숨어있는 것이다. (디테일에 숨은 악마다.) 대용량의 자료 묶음을 다룰 때 그 일을 하기 전에 어떤 문제가 있을지 예상해 봐야한다. 어떤 방법으로 이 문제를 고치거나 아니면 아주 회피할 방법은 무엇일까?
[02:09] 이것이 바로 다음에 주어진 과제에서 풀어야할 일이다. 다음 강좌에서 여러분이 작성한 프로그램의 동작 시간을 재고 계산의 효율성과 컴퓨터 자원 사용량 규모을 평가해 보기로 하자.
-------------------------------------
효율적인 컴퓨팅을 위해 알고리즘을 분석하는 일은 매우 중요하다. 계산하고자 하는 수학식을 그대로 컴퓨터 언어로 옮기는 일은 무척 쉽다. 하지만 컴퓨터의 자원과 시간을 얼마나 소요할지 평가하지 않으면 그 프로그램이 결과를 내기까지 평생이 걸릴지도 모른다. 더구나 수행시간은 곧 에너지 소모를 의미하며 컴퓨터 자원은 비용을 요구한다.
우주 탐사장비에 사용되는 컴퓨터의 경우 열악한 우주환경에 견디려면 동작 속도가 매우 느리다. 에너지 또한 매우 제한적이다. 이런 컴퓨팅 환경에서 관측 데이터를 수집하고 분석하는 소프트웨어를 가동 해야 한다. 우주 탐사선에 구현된 각종 수학식이라고 특별하지는 않다.
곧이곧대로(naively) 프로그램을 짤 일이 아니다. 수학식의 계산 절차를 분석하고 반복횟수를 최적화해야 한다. "알고리즘 분석"이 필요하다.
[참고강좌] "알고리즘 분석"
Analysis of Algorithm, https://www.coursera.org/learn/analysis-of-algorithms



댓글 없음:
댓글 쓰기