본문 바로가기

COMPUTING/AI

근황 & 혼공 머신러닝 + 딥러닝 2주차 공부 인증

근황

1월 8일부터 15일까지는 혼공학습단 9기 2주 차 진도를 나가는 기간이죠. 저번 주처럼 밀려서 하고 싶진 않아서 월요일 오후부터 공부하기 시작했습니다. 그날 다 공부를 끝냈으면 좋겠다고 생각해 열심히 계속했어요. 그러나 다음날인 10일부터 13일까지 일본 오사카 여행을 떠나는 지라, 밤 12시 반이 넘어갈 때쯤 한 절반쯤 한 것을 확인하고 아쉽게 컴퓨터를 종료했습니다.

 

일본 여행에 대해 간단히 얘기하자면 정말 좋았습니다. 제 인생의 첫 타국땅을 밟아보는 일이라 전부터 무척이나 설렜습니다. 동기들과 함께 두 발로 걸어 다니면서 모든 일들을 함께 해결해 나갔기 때문에 재밌었고, 새로운 성장을 한 기분입니다. 그리고 우리나라와는 다른 문화를 보고 즐기는 일은 정말이지 말로 형용할 수 없었습니다. 제가 어린 시절부터 TV로만 보았던 그들의 문화를 직접 확인해 보고 기억과 연결하는 순간들은 잊을 수 없었습니다. 지금도 여유만 있다면 계속 해외여행을 나가고 싶은 기분이네요. 3박 4일의 시간이 아쉽게만 느껴집니다.

 

여행에서 돌아오고 나서는 너무 피곤해서 11시쯤 일찍 잤습니다. 그러고 다음날 오전 10시가 돼서야 어머니의 호통에 마지못해 일어났네요. 말짱해진 정신으로 바로 여행 후기를 쓰고 싶지만...! 당장 해야 할 일들이 산더미이기 때문에 부지런히 움직이게 되네요. 가장 먼저 시작한 일은 당연히 못다 한 이번 주차 혼공입니다. 

 

CHAPTER3 회귀 알고리즘과 모델 회귀

챕터 3은 크게 3가지 절로 이뤄져 있습니다.

첫 번째 절에서 가장 간단한 회귀 알고리즘인 k-최근접 이웃 회귀에 대해 다룹니다.

두 번째 절에서는 선형 회귀가 무엇인지에 대해 다루고 새로운 데이터의 값을 예측해 봅니다.

세 번째 절에서는 과소적합을 막는 기법인 특성 공학적 기법에 대해 배워보고 과대적합을 막는 기법인 규제 역시 배워봅니다.

 

챕터 3부터는 이공계 전공서적을 보는 듯한(?) 기분이 들었습니다. 처음 어느 기법을 소개하면서 이것의 효과를 다룹니다. 그런데 이것이 문제점이 생겨서, 혹은 한계점이 있어서 이를 보완하는 새로운 기법을 도입합니다. 그런데 이 기법도 완전하지 않아 새로운 기법을 도입하는... 이런 보완적인 개념들을 계속해서 소개하는 게 재밌었습니다. 이런 게 제가 전적대에서 CS 공부할 때 굉장히 많았었는데... 그때 생각도 나기도 하고 여러모로 이 책이 어느 정도 수준 있다!라는 생각이 들게 했습니다.

 

선형회귀 파트(2절)를 공부할 때가 가장 기억과 연결되는 부분들이 많았습니다. 전적대에서 전공공부와 더불어 교양공부도 열심히 했었는데, 공대다 보니 대학수학을 공부했었죠. 그때 3차원 공간에서 극대 극소를 구하는 법을 배우며 정말 고통스러웠습니다. 고등학교 때 xy좌표계에서 놀던 것과는 차원이 다르게 복잡했습니다. 그런데 그게 머신러닝과 연결될 줄을 꿈에도 몰랐죠. 이 책은 머신러닝의 수학적 메커니즘은 최대한 배제한 채 서술되어 있어 나오지 않은 듯 보이나, 원래는 선형회귀 시 계수와 절편값은 경사하강법을 통해 구합니다. 샘플들과의 거리의 제곱의 합이 최소가 되는 방정식을 계산을 다 때려 구해내는 법입니다. 특성의 개수가 늘면 당연히 xy좌표계로는 부족하고 N차원에서의 극점을 구해내는 작업이 필요하죠. 이런 걸 컴퓨터는 혼자서 뚝딱 몇 초 만에 해내니 참으로 대단한 세상입니다.

 

이번 챕터부터는 또한 제가 모르는 내용들도 대거 등장했습니다. 선형회귀에 대한 개념만 간단히 알고 있을 뿐, 2절 후반부부터는 싹 다 처음 보는 내용이었습니다. 그래도 과소적합과 과대적합을 조절하는 기법이라는 것을 계속 상기시키면서 공부하니 이해하기 편했습니다. 적절한 난이도였습니다.

앞으로도 아마 제가 모르는 내용이 더 많을 것 같습니다. 그래서 계속해서 스스로 찾아보는 작업도 필요할 것 같아요. 이번에 릿지, 라쏘 회귀에 대해서는 물음표가 가득해 구글링을 하면서 봤는데 못 볼걸 본 기분입니다. 다들 복잡한 수식으로 알고리즘을 설명하고 있었거든요. 뭐.. 둘의 차이점을 위주로만 간단히 이해하고 넘어갔습니다. 그런데 찾다 보니 두 가지 회귀를 절충한 엘라스틱 넷이라는 것도 있더라고요? 대부분 릿지를 사용하긴 하지만 엘라스틱 넷도 때에 따라 쓰인다고 하니 기억해 두면 좋겠네요.

 

3-1

3장 1절 손코딩
3장 1절 손코딩
상관계수 R^2값이 0.99에 근접한 모습. 참고 이웃의 개수를 조절하면 정확도가 변화함!
기본미션 손코딩. 반복문에서 n값을 달리해 그래프를 다양하게 그려보자.
n값이 커질수록 굴곡이 적어지며 단순해진다

3-2

손코딩은 별 것 없어서 회귀 결과만 첨부. 때에 따라선 비선형 회귀도 해야 함

3-3

특성공학 기법으로 과소적합을 해결하는 모습
릿지 회귀 손코딩.
릿지 회귀 성능 그래프를 그려봤을 때, alpha=-1에서 최대
라쏘 회귀 손코딩. 맨 아래 출력은 데이터프레임
라쏘 회귀 성능 그래프를 그려보았을 때, alpha=1에서 최대

선택 미션 - 모델 파라미터에 대해 설명하기

모델 파라미터는 머신러닝 모델이 데이터로부터 학습해 결정한 매개변숫값입니다. 주로 선형회귀 시, 직선의 방정식 y=ax+b에서 a와 b에 해당하는 녀석들이죠. 이 것들의 값을 결정해 전체 샘플(훈련 데이터)들을 가장 잘 대변하는 모델을 만들고, 이를 통해 테스트 샘플의 값을 대입해 회귀(예측)할 수 있는 것입니다. 모델 파라미터를 결정짓는 방법으로는 앞에서 설명했다시피 최소제곱값을 이용해 경사하강법을 돌리는 기법이 있죠. 이것은 싹 다 계산에 의존하기에 컴퓨팅 성능에 크게 영향을 받았습니다.

그리고 alpha값처럼 사람이 미리 정해줘야 하는 변수들도 있습니다.  하이퍼 파라미터라고 하죠. 머신러닝은 이 두 가지값을 어떻게 하면 가장 깔끔하게 정해줄 수 있을까 하는 고민을 끊임없이 해야 하는 분야일 겁니다.

 

방법론

아! 그리고 제가 혼공 서적을 공부하는 패턴은 다음과 같습니다. 먼저 책을 차근차근 읽어가면서 직접 코랩에 손코딩합니다. 하면서 조금 주의하거나 인상 깊은 부분들은 주석으로 남깁니다. 그 후에 절이 끝날 때마다 그 절의 내용을 아이패드 굿노트에 정리합니다. 뭐, 대학 시험 보는 것도 아니니 제가 공부할 때 기록하는 방식으로 간단하고 편하게 정리합니다. 공부 진도도 정리하면서 나중에 보고 빠르게 회상하는 역할을 합니다. 정리를 한 이후에는 이렇게 블로그에 글 씁니다. 어차피 공부한 내용은 굿노트 정리본으로 올릴 것이니 블로그에 올릴 내용은 제가 공부한 것을 재구성한 것이라고 보면 됩니다. 그래서 블로그에는 조금 더 경험하고 느낀 것을 풀어쓰도록 노력할 생각입니다. 물론 미션 과제들과 사진들도 함께 올릴 겁니다! ㅎㅎ

 

혼공 머신러닝 + 딥러닝 2주차.pdf
10.24MB

 

마무리 및 소감

과대적합과 과소적합에 대한 이야기는 전적대에서도 알고 있었지만 어떻게 해결해야 하는지는 알지 못했습니다. 이번 주차 공부를 통해 어떻게 해소할 수 있는지 다양한 머신러닝 기법을 배울 수 있어서 좋았습니다. 남은 3가지 챕터에서는 어떤 머신러닝 기법을 배울지 기대가 되네요 ㅎㅎ

 

이번 주에 여행을 갔다오니 벌써 1월 중순이 다 되었네요. 이번 주부터는 제가 3월 초에 있을 기타 동아리 연주회 준비로 집에서 단체곡을 연습하고 매주 영상을 녹화해야 하는 숙제가 생겼어요ㅜㅜ 그래서 앞으로도 계속 바빠질 것 같습니다. 그렇지만 혼공학습도 꾸준히 하고, 친구도 만나고, 무엇보다 방학이니 놀 땐 놀면서 즐겁게 지내도록 하겠습니다. 그럼 다음 주 3주 차 진도로 뵙겠습니다! 안녕~