2018년 6월 25일 월요일

1주/6강: 개선책을 찾다

[커세라 강좌 소개]자료기반 천문학(Data-Driven Astronomy)
https://www.coursera.org/learn/data-driven-astronomy

----------------------------------------------
Week 1: Thinking about data
제1주차: 자료의 개념
- Principles of computational thinking
  전자계산학에 기초한 자료처리의 원리
- Discovering pulsars in radio images
  전파망원경 관측영상에서 펄서 찾기
----------------------------------------------
----------------------------------------------
2강: 강좌의 구성 / Lesson 2: Course Overview
----------------------------------------------
3강: 펄사(Pulsars) / Lesson 3: Pulsars
----------------------------------------------
4강: 관측영상 겹쳐쌓기 / Lesson 4: Diving In: Image Stacking
----------------------------------------------
5강: 난관에 봉착하다Lesson 5: The Challenge: What went wrong ?
----------------------------------------------
6강: 개선책을 찾다
Lesson 6: The Solution: Improving your method (동영상 강좌) / 한글자막 / 영문자막

[강좌대본]

[00:05] 이제까지 우리가 다뤘던 내용은 통계적 특성을 활용하여 우리가 가진 장비의 감지능력 한계 아래에 놓인 펄사들을 드러나게 하는 방안에 대한 것이었다. 평균(mean)쌓기 알고리즘을 컴퓨터 프로그램으로 구현하였고 아주 잘 작동 하였다. 하지만 중간값(median)쌓기를 적용하므로서 예외적 신호에 대하여 통계적으로 좀더 탄탄한 알고리즘을 말들고자 한다.

[00:22] 중간값쌓기를 적용하려하자 막대한 저장장치의 용량을 필요로 한다는 문제에 직면 했다. 중간값 알고리즘을 곧이곧대로 적용하면 동시에 모든 관측 영상을 메모리에 올려 놓아야 한다. 그로인해 우리가 보유한 컴퓨터의 메모리 용량을 넘어선다. 이 문제를 해결하기 위한 몇가지 방법이 있다.


[00:38] 그중 메모리 용량을 늘릴 수 있지만 비용 들 것이고 어떤 해결책은 문제의 재구성(reframe)을 요한다. 또는 좀더 현명한 해법을 개발할 수도 있다.

[00:46] (첫째 방법은 더좋은 컴퓨터 구입) 아마도 가장 간단한 해법은 비용이 들더라도 더 성능좋은 컴퓨터를 마련하는 것이리라. 어느정도는 이 방법이 괜찮은 해법이 되겠으나 관측자료가 증가하면서 곧 같은 문제에 닥칠 것이다. 그럼 또 더좋은 컴퓨터를 마련해야 할 것이다. 심지어 우리 프로그램을 초고성능 슈퍼 컴퓨터에서 실행 시킬 수도 있다. 모르긴 해도 슈퍼 컴퓨터 관리자들은 그런 메모리 만을 많이차지하는 프로그램을 탐탁지 않아 할 것이다. 값비싼 중앙연산장치(CPU)를 이렇게 비효율적인 프로그램을 돌려야 하니까 말이다.

[01:11] (둘때 방법으로 영상크기 줄이기) 우리가 가진 문제를 세심하게 살펴보고 다른 접근방법은 없는지 찾아보기로 한다. 가로 200 세로 200 크기의 영상이 정말 다 필요한 것일까? 이는 과학자들이 엉뚱한 생각을 해보는 선택지 중의 하나이며 심지어 그들이 전혀 생각해 보지 못했던 것이다. 이번처럼 전혀 접해보지 못한 문제인 경우 유용하다. (과학자들의 사고논리에서 메모리 용량 부족 따위는 생각해보지 않았다. 구현은 그저 공학자, 프로그래머가 알아서 할일이라고 생각했다)


[01:28] 만일, 예를들어 영상을 50x50 화소로 자른다면 자료의 크기는 16분의 1의 비율로 줄어든다. 이는 총 소요 메모리 용량이 192기가 바이트에서 12기가 바이트로 준다는 뜻이다. 이 방법은 관측 영상에서 주목할 필요가 없는 영역을 제외시킬 때 유용하다.

[01:48] 세번째 문제접근 방식으로 알고리즘을 개선하는 것이다. 지금 문제는 중간값을 계산하기 위해 모든 자료를 메모리에 읽어 들이고 있다는 점이다. 중간값을 계산하는 중에 당장 필요하지 않은 자료를 전부 메모리에 읽어다 놓을 필요가 있을까? 이에대한 한 해법은 BinApprox 알고리즘으로 다음과 같이 작동한다.

[02:06] 매 영상을 읽어들인 즉시 각 화소의 값을 취해 값의 크기순을 정한 상자에 담는다. 이렇게 모든 영상이 처리되고 나면 영상에 있던 각 화소 값의 빈도수 도표(히스토그램)를 얻는다. 히스토그램에서 상자는 화소값에 대해 정렬되어 있으므로 히스토그램에서 오름차순으로 배열된 각 상자에 담개 화소의 빈도수를 더할 수 있다. 더한 수의 총 갯수가 전체 갯수의 절반을 넘을 때 더하기를 중지한다. 결국 상자에 부여된 화소값을 중간값으로 사용할 수 있다. 이에 대해 실습을 통해 좀더 자세히 알아보기로 한다.


[02:33] 실제적 숫자를 가지고 예를 들어 살펴보기 위해 정상분포(Normal Distribution)로부터 1,000개의 난수를 생성해 두었다고 하자. BinApprox 알고리즘을 적용해보면 확률변수가 0인 평균을 찾는 것으로 끝난다. 그것이 바로 우리가 예상했던 평균과 중간값이 일치하는 것이다.
---------------------------------------------------------------
[BinApprox 알고리즘의 간략한 해설]
정규분포 확률에 따라 발생된 난수의 평균을 계산을 위해 '중간값'을 찾는 가장 손수운 방법

Q: 정규분포 확률로 발생된 난수의 평균은 중간값과 같다 ?

단계 1: 정상분포 확률을 따르는 난수 1000개 생성
단계 2: 생성된 난수를 오름차순으로 정렬.
단계 3: 배열된 값에 속한 수의 갯수(같은 값을 갖는 수의 갯수) 히스토그램 작성(Bining)
단계 4: 가장 작은 수부터 빈도 갯수 더하기 시작하여 갯수의 합이 500(=1,000/2)을 넘으면 중지.
단계 5: 덧셈을 중지 했을 때  값이 중간값

---------------------------------------------------------------


[02:47] 그럼 이 알고리즘을 겹쳐쌓기에 적용하면 어떻게 될까? 결과 영상은 이와 같다. 중심의 몇개 화소가 분명하게 드러나 보인다. 잡음에서 화소 몇이 드러난 이 결과가 그리 대단해 보이지 않을 수도 있으나 한발짝 물러서서 지금 보고 있는 것이 무엇인지 생각해보자. 개별 펄사를 전혀 인지할 수 없었던 대량의 영상을가지고 있었다. 그 영상들을 줄세워 놓고 보니 전 영상의 중간에 인지 할 수 없었던 펄사가 있었고 전체 영상에 대해 중간값 계산을 한 결과 뭔가 인지할 수 있는 것이 나왔다.

[03:15] 당신이 지금보고 있는 것은 통계적으로 펄사의 모습을 보게된 것이며 너무나 희미해서 원시 자료에서는 찾아볼 수 없었던 펄사의 등장이다. 보이지 않는 우주의 일단을 탐사하기 위해 진정 단순한 기법을 적용하였고 망원경으로 볼 수 없덨던 우주를 보게되었다.

--------------------------------------------------------------------
중간값 알고리즘에 대한 해설


--------------------------------------------------------------------
참고문헌

--------------------------------------------------------------------
파이썬 예제


댓글 없음:

댓글 쓰기