Data Science

[일반]데이터 과학 공부 방법 - 선행 과목 및 유용한 사이트 정리

Author
Irealist
Date
2020-05-15 11:48
Views
4948

한동안 놀려두었던 데이터 사이언스 게시판의 포스팅을 어떤 글로 다시 시작할까 하다, 제가 제일 처음 데이터 사이언스를 공부하기 시작했던 때를 떠올렸습니다. 저 또한 비이공계 출신으로 데이터 사이언스 업계에 입문하였기 때문에, 처음 공부를 시작하였을 당시 어디서부터 어떤 식으로 공부하여야 할지 너무도 막막했고, 여러 가지 시행 착오와 시간 낭비도 많이 했던 기억이 있습니다. 그래서 저와 비슷한 처지에서 데이터 사이언스 공부를 시작하시는 분들을 위해 제가 어떤 방식으로 공부를 접근하였는지를 요약함과 함께 유용한 리소스들을 소개해 드리는 글을 한번 써보려 합니다.

1. 데이터 과학 / 인공지능 일반

데이터 사이언스를 공부하기에 앞서, 업계의 전반적인 방향은 어떤지, 인공지능이 무엇인지 등에 대한 컨텍스트부터 익히는 것이 생각보다 매우 중요하다고 생각합니다. 수학이나 물리학처럼 확실히 자리를 잡은 학문을 공부하고자 할 때, 무엇을 공부해야 하는지, 왜 그것을 공부해야 하는지는 너무도 자명합니다. 그러나 데이터 사이언스는 최근 몇 년간 급격히 꽃 피고 있는 분야이기에 막 생겨난 석사 과정들의 커리큘럼도 각기 상이하며, 최신 학문 경향도 수시로 변하고 있어 종잡기가 힘듭니다.

조금 더 부연 설명하자면, 물리학을 공부하려면 학부 수준의 기초를 한참동안 쌓고, 더욱 세분화 된 분야 (광학, 천체물리학, 입자물리학 등)를 또 한참동안 공부하고 수년 간 연구에 매진해야 합니다. 어떤 세부 분야의 최신 논문, 즉 그 학문의 프론티어에 있는 지식을 알고 습득하는데 걸리는 시간은 학부와 석박사까지 하여 거의 10년이라고 해도 무방합니다. 그 반면, 데이터 사이언스는 짧게는 1~2년 간의 집중적인 학습과 실습을 하다보면 어느 샌가 2주 전에 나온 논문을 읽고 코드를 실행해보는 시점에 이르는 일이 비일비재합니다. 융합학문이기 때문에 각 알고리즘의 근원까지 따진다면 역사가 결코 짧다고 할 수는 없지만, 본격적으로 활발히 연구되기 시작한 시점은 불과 몇 년이 되지 않기에 그러합니다.

그렇게 역사는 짧은 반면, 최근에는 그 어떤 분야보다도 활발하게 연구되고 있기 때문에, 세부 분야들이 폭발적으로 분화되고 있다는 사실도 입문자를 방황하게 하는 요소입니다. 물리학과 같이 이미 오랜 기간 정립되고 자리잡은 학문을 공부하는 것이 마치 잘 정돈된 긴 터널을 지나는 일이라면, 데이터 과학은 숱하게 가지가 돋고 있는 미로를 탐험하는 것으로 비유할 수도 있을 것입니다.

지난 20년간 논문 수 증가율: 금색이 모든 분야, 보라가 컴퓨터 과학, 파랑이 인공지능 논문

이러한 흐름에서 데이터 과학을 공부함에 앞서 업계의 방향과 거장들의 인공지능에 대한 생각에 대해 읽어보는 것은 본인이 왜 인공지능을 공부해야 하며 어떤 방향으로 공부를 할 것인지, 어떤 적용 분야로 나아갈 것인지를 숙고해 볼 수 있는, 실로 값진 기회를 제공해주지 않을까 합니다. 그런 맥락에서 최근 터닝포인트 출판사에서 번역되어 출간된 , 원제 "Architects of Intelligence"의 일독을 추천합니다. 이 책은 미래학자 마틴포드가 인공지능 분야의 거장 23명을 인터뷰한 내용을 간결하면서도 가독성 좋게 편집한 책입니다.

           

최근 5년 간 알파고와 이세돌 씨의 대결 등으로 인해 인공지능이 세간에 화제가 되면서 해당 단어가 지나치게 자극적으로, 상업적으로 남용되고 있는 경향이 있고, 흔히 "인공지능"이라하면 영화 I Am Sam이나 Ex Machina와 같은 작품에서 나오는 인간과 비슷한 로봇을 떠올리기 쉽지만, 학계에서는 그러한 컨셉의 인공지능은 Artificial Intelligence 보다는 Artificial General Intelligence (범용 인공지능)라는 단어로 지칭합니다. 일반적으로 AI라는 단어는 그러한 범용 인공지능보다 더 넓은 의미에서 컴퓨터 시스템, 자연어 처리(Natural Language Processing), 음성 번역, 인공 시각 (Computer Vision) 등의 다양한 분야에서 다양한 정의로 사용되고 있습니다.

이 책은 그러한 인공지능의 다양한 정의에 대한 여러 거장들의 다채로운 이야기와 질의응답을 담고 있으며, 공통적으로 다음의 질문에 대한 해답을 탐구해 보고 있습니다.

  • 사람과 같이 생각하는 범용 인공지능 혹은 초지능의 개발은 가능한가? 그 시기는 언제인가?
  • 인공지능으로 인해 일자리는 줄어들 것인가?
  • 현재 인공지능 분야의 도전 과제는 무엇인가?
  • 인공지능 분야의 발전과 관련된 도덕적 문제들은 무엇인가?
  • 인공지능과 관련한 정부의 역할은 무엇인가?

위와 같은 질문들에 대한 거장들의 응답을 통해 이 분야의 컨텍스트를 아는 것은 여러 모로 큰 도움이 되리라 생각합니다.

이 책과 비슷한 참고 자료를 원하지만 동영상을 선호하시는 분들의 경우, 유명한 앤드류 응 교수님의 Coursera 사이트에 있는 Deep Learning 수업에서 매 주차 수업의 끝에 각 거장들을 실시간으로 인터뷰한 영상들이 있습니다. "Heroes of Deep Learning"이라는 제목으로 진행되는 이 시리즈는, AI 마인드처럼 무거운 주제는 다루지는 않지만 딥러닝 전반의 이야기들을 쉽게 듣기 좋은 영상들입니다. 그 외에는 구글 팟캐스트와 같은 곳에 여러 인공지능 관련 팟캐스트도 있으니 참고하시기 바랍니다.

2. 수학: 미적분, 선형대수

데이터 과학을 공부하기 위해서는, 저같은 비이공계 전공자들에게는 슬프지만 당연하게도 수학 공부를 선행하여야만 합니다. 다행스러운 점은 학문적 연구가 아닌 업계에서 실무적으로 데이터 사이언스를 응용하기 위해서는 그렇게 깊은 수학이 필요하지는 않다는 점입니다.

먼저, 미적분의 경우 경사 하강법 (Gradient Descent)을 공부할 때 기본적인 미분이 쓰이고, 딥러닝을 공부할 때 Backpropagation에서 미분이 사용됩니다. 그러나 고등학교 혹은 학부 초기에 미적분 기초를 들으셨다면, 금융 공학이나 다른 분야에서 나오는 편미분이나 그 이상의 난이도는 크게 나오지 않으니 많은 시간을 할애하시기보다는 데이터 사이언스를 공부하면서 필요한 부분만 다시 찾아보시는 것을 추천합니다. 기본적인 미분과 그 쓰임에 대해서는 앤드류 응 교수님의 Coursera 사이트에서 Deep Learning Specialization의 첫번째 수업 Neural Networks and Deep Learning의 Week 2: Neural Networks Basics에 친절한 설명이 되어 있습니다. (수업을 들었다는 수료증을 원할 경우 월 $49를 내야하지만, 자세히 찾아보시면 Audit하는 청강 옵션이 있어 무료로 들을 수 있습니다)

그 다음 선형대수는 머신러닝 분야에 있어 상당히 중요한 필수 선행과목입니다. 선형대수라는 분야를 간단히 정의하자면, 하나의 숫자가 아닌 병렬된 여러 행과 열의 숫자를 한번에 연산하는 것에 대한 수학이라고 할 수 있습니다. 따라서 데이터 사이언스에서 많이 다루는 테이블 형식으로 저장된 데이터를 효율적으로 연산하는데 있어 굉장히 중요하다 할 수 있겠습니다. 선형대수는 최소한 대학 기초 수업 하나는 들으시는 것을 추천하며, 깊이 들어가면 깊이 들어갈 수록 좋기는 합니다. 처음부터 독학하시려는 분께는 아래의 책을 추천드립니다.

  • 프로그래머를 위한 선형대수: 히라오카 카즈유키 저, 직관적인 설명을 하려고 저자가 노력을 많이 했습니다.
  • 코딩 더 매트릭스: 필립 클라인 저, 조금 더 깊게 공부하면서 코딩적인 면까지 보시려는 분께 추천합니다.

3. 통계

통계의 기초를 탄탄히 쌓아두지 않으면 데이터 사이언스를 공부함에 있어 두고두고 고생을 하게 됩니다. 딥러닝 영역으로 오면서 통계학이 많이 저평가되는 경향이 있지만, 실제로 데이터 사이언티스트로서 업계에서 일하다보면 딥러닝을 사용할 수 있을 정도의 빅데이터를 다루는 것보다, 1만 개 이하의 소규모 데이터를 다룰 경우가 많습니다. 작은 데이터를 다뤄야할 수록 회귀 분석을 비롯한 전통적인 통계 방법론들이 중요해지므로 기초를 탄탄히 해 두시는 것을 추천합니다.

통계도 학부 수준 기초 통계 수업 정도는 들으시는 것을 추천하며, 아래의 기초 책들은 아예 처음부터 하시는 분을 위한 책입니다.

  • 세상에서 가장 쉬운 통계학 입문: 고지마 히로유키 저, 제목에서 알 수 있듯이 매우 기초적인 내용이므로 통계를 처음 하시는 분께 추천합니다.
  • 세상에서 가장 쉬운 베이즈통계학 입문: 고지마 히로유키 저
  • Practical Statistics for Data Scientists: O'Reilly 출판사, 어느 정도 기초 통계가 있고 데이터 사이언스 컨택스트에서의 통계를 훑고 싶은 분께 추천합니다.

4. 코딩

미적분, 선형대수, 통계가 선행과목들이었다면 코딩은 선행과목임과 동시에 데이터 사이언스 전반에 걸쳐 가장 중요한 스킬입니다. 혹자는 실무의 많은 부분들에서 이미 패키징된 라이브러리를 로딩하여 사용하는 것이 대세이므로 코딩 스킬은 그런 라이브러리를 이용할 수 있는 정도면 된다고 말하기도 합니다. 그러나 저는 오히려 역설적으로, 그러면 그럴 수록 코딩 스킬이 중요하다는 입장입니다.

데이터 사이언스 실무의 많은 부분이 라이브러리화되고 여러 플랫폼에서 자동화되고 있는 것은 사실입니다. 구글, 마이크로소프트, 아마존 등의 거대 테크 기업들에게 있어 앞으로 가장 큰 이윤이 나는 분야 중 하나가 바로 클라우드 서비스입니다. 그리고 그 클라우드 서비스의 이용을 극대화하기 위해서 각 테크 기업들은 머신러닝과 딥러닝 기능들을 플랫폼 위의 어플리케이션으로 개발하는데 박차를 가하고 있으며 데이터 사이언 지식의 대중화에도 앞장서고 있습니다. 그로 인해 기본적인 데이터 사이언스 스킬은 많이 평준화되고 있는 실정입니다.

데이터 사이언티스트에게 있어 중요한 3대 스킬은 통계 지식, 코딩 스킬, 그리고 분야별 전문 지식입니다. 지금 현재는 데이터 사이언스에 대한 수요가 워낙 급증하고 있고 위에서 언급한 테크 기업들의 노력히 시작된지 얼마 되지 않은 시점이기 때문에, 통계 지식과 코딩 스킬이 탄탄하게 쌓이지 못한 저숙련 데이터 사이언티스트들 또한 좋은 포지션을 잡는 것에 문제가 없습니다.  그러나 이 흐름이 계속되다 보면 그러한 저숙련 데이터 사이언티스트들의 스킬셋은 플랫폼이나 라이브러리로 쉽게 대체될 것이고, 그에 따라 각 분야별 도메인 전문가들에 밀려 사라지게 될 것입니다. 그렇기 때문에 데이터 사이언티스트로 장수하기 위해서는 꾸준히 코딩 실력을 갈고 닦는 것이 중요합니다.

데이터 사이언스 업계에서 코딩이라 함은 주로 1) Python, 2) R, 그리고 3) SQL를 의미합니다. 한동안은 Python과 R이 비등한 경쟁을 했으나 언어 자체의 유연성이나 라이브러리의 격차로 인해 점점 더 Python이 주류가 되어가는 추세에 있습니다. 그렇기에 이미 R이 너무나 익숙하다는 분이 아니라면 Python으로 공부를 시작하시기를 추천드립니다. SQL는 데이터베이스 관련 언어인데 데이터베이스를 다루는 개발자나 Data Engineer가 아니라면 기초만 알아도 무방하다는 생각입니다.

코딩 공부는 가장 먼저 기초적인 문법을 훑고 나서, 각종 문제풀이 사이트 공부를 하는 것이 가장 집중도 잘 되고 실력도 느는 방법이라고 생각합니다. 아래는 제가 코딩을 공부한 순서와, 해당 단계를 익히기 좋은 자료 링크들입니다.

  1. Python의 기초 문법 익히기
  2. SQL 기초 알기
  3. 각 코딩 문제풀이 사이트에서 매일 1~5개 문제 풀기
  4. 머신러닝 알고리즘 직접 구현해보기 (Numpy, Pandas 라이브러리 사용)
  5. 머신러닝 알고리즘 라이브러리 사용해보기
    • 머신러닝: scikit-learn
    • 딥러닝: PyTorch, Tensorflow(Keras)
    • 강화학습: TF-Agent, stable-baselines, Google Dopamine
  6. 라이브러리 소스코드를 뜯어보고 더 효율적인 구현 배우기
  7. 논문 읽고 구현해보기

4번부터 7번까지는 본격적으로 데이터 사이언스 공부를 하는 부분이므로 다음 포스팅에서 자세히 다루도록 하겠습니다. 여기서는 코딩 공부를 위한 개괄적인 순서도만 참고하시면 되겠습니다.

이상이 데이터 사이언스를 공부하는데 있어 필요한 선행과목 네 가지, 미적분, 선형대수, 기초통계, 그리고 코딩이었습니다. 다음 포스팅은 본격적으로 데이터 사이언스의 공부에 관해서 적어보도록 하겠습니다.

Total 1

  • 2022-02-28 23:24

    좋은 내용 감사합니다.
    참고해서 공부 많이 해볼께요 ㅎㅎ


Total 38
Number Title Author Date Votes Views
Notice
[공지]Data Science 게시판의 운영에 관하여
Irealist | 2020.05.18 | Votes 0 | Views 1241
Irealist 2020.05.18 0 1241
22
[강화학습-2]Sutton 교과서 챕터 3: Finite Markov Decision Processes
Irealist | 2020.05.15 | Votes 0 | Views 1393
Irealist 2020.05.15 0 1393
21
[강화학습-1]Sutton 교과서 챕터 1: 강화학습이란?
Irealist | 2020.05.15 | Votes 0 | Views 2171
Irealist 2020.05.15 0 2171
20
[일반]데이터 과학 공부 방법 - 머신러닝, 딥러닝, 강화학습
Irealist | 2020.05.15 | Votes 0 | Views 2632
Irealist 2020.05.15 0 2632
19
[일반]데이터 과학 공부 방법 - 선행 과목 및 유용한 사이트 정리 (1)
Irealist | 2020.05.15 | Votes 0 | Views 4948
Irealist 2020.05.15 0 4948
18
[계산통계학]Automatic Differentiation
Irealist | 2017.01.23 | Votes 0 | Views 1128
Irealist 2017.01.23 0 1128
17
[시계열분석-8]시계열 모델과 예측
Irealist | 2016.12.04 | Votes 0 | Views 990
Irealist 2016.12.04 0 990
16
[시계열분석-7]자기상관과 AR모델
Irealist | 2016.12.04 | Votes 0 | Views 2038
Irealist 2016.12.04 0 2038
15
[시계열분석-6]추세의 모델링
Irealist | 2016.12.04 | Votes 0 | Views 1287
Irealist 2016.12.04 0 1287
14
[회귀분석-5]회귀분석 결과의 해석
Irealist | 2016.12.03 | Votes 0 | Views 630
Irealist 2016.12.03 0 630
13
[회귀분석-4]변수 선택 및 모델의 진단
Irealist | 2016.12.03 | Votes 0 | Views 2103
Irealist 2016.12.03 0 2103
12
[회귀분석-3]다중 회귀 분석 II
Irealist | 2016.10.12 | Votes 0 | Views 973
Irealist 2016.10.12 0 973
11
[회귀분석-2]다중 회귀 분석
Irealist | 2016.10.09 | Votes 0 | Views 1702
Irealist 2016.10.09 0 1702
10
[알고리즘-7]그래프의 최단 거리
Irealist | 2016.10.09 | Votes 0 | Views 561
Irealist 2016.10.09 0 561
9
[알고리즘-6]DFS의 응용
Irealist | 2016.09.29 | Votes 0 | Views 1240
Irealist 2016.09.29 0 1240
8
[회귀분석-1]기본 회귀 분석
Irealist | 2016.09.25 | Votes 0 | Views 1131
Irealist 2016.09.25 0 1131