어제는 일찍 자려고 했는데, 프로젝트 11 때문에 늦게 잤다. 요약문을 비교해서 분석하고 있는데, 무엇을 잘못 눌렀는지 리셋이 되어버렸다. 다시 돌리는 김에 조금 더 수정하고, 못 다한 것들 하느라 새벽 3시에 잤다. 여전히 늦게 일어났지만 생각보다 낮에는 힘들지 않았다.
오늘의 스터디 내용은 Deconvolution이다. 어제 밤에 비몽사몽하면서 해야할 내용을 겨우 다 읽었지만 오늘 스터디를 하면서 내용을 잘못 이해하고 있는 것을 깨달았다. 입을 다물고 있어야 했는데, 괜히 질문을 해서는.. 블로그 처음에 Deconvolution=transposed convolution이라고 써 있는 것을 대충 봐서 그 이후로 완전히 꼬였다. 그 둘이 다르다고 생각했기 때문에 뒤의 내용도 잘못 이해했다. 매일 헛소리만 해서 민망하고 스터디원들에게 죄송하다. 언제쯤이면 제대로 이해할 수 있을까? 다음주부터는 정말 조용히 있어야겠다.
transposed convolution를 어떻게 만드는지에 대해서는 잘 이해가 안 된다. 자기 전에 한 번 더 찾아봐야겠다.
오늘의 프로젝트는 시계열 데이터를 다루는 것이다. 시계열이란 '시간 순서대로 발생한 데이터의 수열'로 시계열 데이터의 종류에는 주식 변동 데이터, 판매 현황 데이터, 기온 데이터 등이 있다. 시계열 데이터가 안정적(stationary, 정상적이라고도 함)이라면 시간의 변화와 상관 없이 평균, 분산, 공분산(자기 공분산)이 비슷하고, 이 시계열 데이터를 통해 미래를 예측할 수 있다. 하지만 일상 생활에서 안정적인 시계열 데이터를 찾기란 어렵다.
공분산이란 단어는 자주 들어봤는데, 공분산을 정규화시킨 것이 상관계수라는 것은 오늘 처음 알았다. (어디선가 들어봤을지는 모르지만 기억에는 없다) 공분산은 각 확률 변수 X, Y의 상관 관계를 나타낸다. 공분산은 2개의 변수간의 관계를 의미한다. 그러나 확률 변수가 여러 개 있을 경우, 2개의 변수의 관계는 다른 변수와의 관계에 영향을 받는다. 그래서 선형 회귀 분석을 할 때에는 이런 상황을 고려해야 한다. 일상 생활에서는 이론처럼 딱 2개의 확률 변수만 존재하는 것이 아니기 때문이다.
공분산을 Y님이 강의해주셨는데, 쉽게 설명해 주셔서 공분산에 대해서 쉽게 이해할 수 있었다. 이런 기회가 더 있었으면 좋겠지만 내일, 아니 오늘이 지나면 Y님과 헤어져야 한다. 이런 시간이 거의 없었기에 아쉬움이 더 크다.
강의를 들으면서 수학 벙개 강연에서 나온 질문인 'y=ax+b에서 확률 변수는 무엇인가?'이 생각났다. 나는 그 때 a는 하이퍼파라미터, b는 바이어스이기 때문에 a, b, y가 확률변수라고 생각했지만 소장님은 답이 x, y라고 하셨다. 소장님이 예로 들어주신 스프링쿨러를 지금 생각해보면 x, y가 확률 변수라는 말이 이해가 된다. y는 x에 영향을 받으므로 제외하고 x가 왜 확률변수인가를 생각해보면, 음... 사실 직관적으로는 이해가 되는데, 설명하기가 어렵다.
정의를 찾아보면 확률변수란 '확률현상에 기인해 결과값이 확률적으로 정해지는 변수이고, 확률현상이란 어떤 결과가 나올지 알지만 가능한 결과 중 어떤 결과가 나올지는 모르는 현상'이라고 한다. (출처: [기초통계] 확률변수(random variable)의 개념, 의미) 이 정의에 의하면 x는 확률변수인 것 같다. x라는 입력값은 알지만 모델학습에 의해 어떤 결과가 나올지는 모르기 때문이다. 스프링쿨러도 물이 떨어진다는 것은 알지만 물이 어디에 떨어질지는 모른다. 물이 떨어지는 곳을 그래프로 그리면 정규 분포를 가지게 된다. 그래서 소장님이 그런 예를 사용하셨나 싶다. (실생활 혹은 자연에서 대부분의 확률 분포는 정규 분포를 따른다. 표본이 무수히 많으면 정규 분포를 따르게 된다.)
오늘의 노드는 재미있었다. 오랜만에 통계 개념을 보게 되니 왠지 반갑고, 익숙한 내용이 나오니까 재미있었다. 통계 수업을 들을 때는 정말 힘들었는데 이렇게 큰 도움이 될 줄이야. 이래서 인생은 새옹지마라고 하는가 보다. 물론 한 학기 수업으로 모든 통계 이론을 다 배운 게 아니라서 앞으로 새로운 통계 내용이 나오면 어렵겠지만 아직은 익숙한 내용만 나오니 좋다.
시계열 데이터에 대한 내용도 재미있었다. 해커톤을 할 때는 시계열 데이터가 뭔지 몰라서 헤맸기에 오늘 배운 내용을 토대로 나중에 한 번 더 공부해봐야겠다는 생각이 든다. 그 때는 정상성, 추세, 계절성, 잔차 같은 개념이 뭔지 몰라서 멘붕이었다. 그래도 이번 노드를 통해 그 개념을 알게 되어서 다음에 캐글 커널을 보면 이해할 수 있을 것 같다.
잊기 전에 한 번 더 적어보는 개념들. 잔차와 오류. 오류(error)는 모집단 분포의 (회귀분석의 예측값 - 실제값), 잔차는 표본분포의 (회귀분석의 예측값 - 실제값)이다. 통계를 공부할 때 왜 귀무가설을 기각하고 대립가설(원하는 주장)을 채택하는가에 대해서 항상 궁금했는데, 그에 대한 내용을 오늘 노드에 나온 블로그에서 설명했다. "귀무가설이 맞다는 가정하에 검정통계량의 '분포'가 존재하게 되고 그에 따라 통계적 가설검정이 만들어 질수 있기 때문이다. "검정통계량은 "검정 통계량은 표본 데이터에서 계산되어 가설 검정에 사용되는 랜덤 변수이며, 데이터의 표본과 귀무 가설 사이의 합치도를 측정"한다.(참고: 검정통계량) 이 부분은 나중에 다시 봐야겠다. (나중에 봐야할 것들이 점점 늘고 있다.)
쓰다보니 너무 길어졌다. 통계 이야기는 이제 그만 해야겠다. 다행히 오늘 안에 노드는 마무리하고 프로젝트도 대충 어떻게 하는지는 감을 잡았다. 오늘의 프로젝트는 답이 다 나와 있어서 조금만 신경 써서 데이터를 분석하면 될 것 같다. 그 데이터 분석이 쉽지는 않을 것 같지만.
오늘 통계에 대해 이야기를 나누면서 수학에 대한 이야기까지 했다. 오랜만에 수학 이야기를 하니 재미있었다. 게다가 오늘은 수학 스터디까지 있었다. 오늘 하루는 수학과 함께 하는 날인가 보다. 수학 스터디에서 J님께서 행렬 변환과 이차곡선(원, 포물선, 타원, 쌍곡선)에 대해서 이야기해주셨는데, 재미있었다. 수학을 배우거나 가르칠 때 가장 답답한 것은 수학을 이론으로만 배우는 것이었다. 아이들에게 수학을 어떻게 가르칠 것인가는 학부 시절의 고민거리였다. 그래도 최근에는 수학을 실생활과 연관시키는 노력을 많이 하는 것 같아서 다행이다. 나 때만 해도 그런 자료가 없어서 시연을 하거나 실습을 할 때 고민이 많았다.
아이펠에 들어와서 수학을 내가 좋아한다는 사실을 조금씩 깨닫는다. 임고 준비할 때는 힘들어서 두 번 다시 보고 싶지 않았는데 말이다. 어려운 수학은 아직 힘들지만 조금씩 수학을 접하고, 개념을 다시 익히면서 잠자고 있던 수학 세포가 조금씩 살아나는 기분이다. 물론 나는 Y님이나 J님처럼 수학의 고수가 아니고 누군가에게 전공을 말하기는 부끄러운 수준이지만, 수학 얘기를 듣거나 배우는 것만으로도 기분이 좋다.
오늘 스터디에서 배운 행렬 변환이나 사인, 코사인 함수에 대한 내용은 어려웠지만 문제 풀이 방법을 듣고 나니 이해가 되었다. 선형대수가 기하학과 연관된다는 Y님의 말이 생각났다. 어렵게 연산을 하지 말고 기하학적으로 상상을 하면 쉽게 풀 수 있는 것이다. 주변에 수학을 잘 하시는 분들이 계셔서 좋다. 앞으로도 수학 이야기를 많이 들을 수 있었으면 좋겠다.
요즘 헛소리도 많이 하고 정신을 놓고 살아서 이대로 괜찮은가 하는 생각이 든다. 마음의 여유도 너무 없고, 몸이 지치니 인간 관계에도 신경을 덜 쓰고 있다. 아직 4개월이나 남았는데, 잘 할 수 있을지 걱정이 된다.
프로잭트 11: 분석 부분을 제대로 못 해서 마무리하느라 11시 57분에 올렸다.