갓.바.조.아

머신러닝/딥러닝 공부 스토리 - 1 본문

dev/reviews

머신러닝/딥러닝 공부 스토리 - 1

자바를 사랑하는 lugi 2018.04.01 19:32

요즘 머신러닝/딥러닝이 워낙 핫하기도 하고, 업무적으로도 앞으로는 우리도 딥러닝을 써야할 일이 있지 않을까. 해서 딥러닝을 공부하고 있다. 직년 말부터 현재 한 3~4개월 정도 공부해오고 있는데, 부정기적으로 학습 진도에 관한 이야기를 써 내려가려고 한다. 아마도 부정기적으로 업데이트하는 글이 되지 않을까. 어떤 경로를 거쳐서 공부하고 있고, 그 과정에서 어떤 어려움이 있었고, 무엇을 해 보았으며, 얼마나 진척이 되었다는 흔적 정도 될 것 같다.


1) 시작

딥러닝/머신러닝이라는 단어가 어색하지 않게 되었다. 이걸 배우면 뭔가 인공지능을 할 수 있을 것 같은 착각이 든다. 서점에 가서 머신러닝과 관련된 책을 찾아보았다. 나는 업무상으로 가장 많이 쓰는 언어는 자바니까 머신러닝 인 자바(http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788960779297&orderClick=LAH&Kc=)라는 책을 보았다. 무슨 소리인지 하나도 모르겠다. 코드는 눈에 들어오지도 않는다, 일단 무슨 이야기인지를 모르겠어서 덮어버렸다. 최근에 파이썬으로 딥러닝이 약간 익숙해진 다음에 그래도 난 자바 개발자니까... 라는 생각으로 deeplearning4j 를 다시 한 번 시도 해 보았는데... 아직도 모르겠다 여전히 모르겠다... 언젠간 java로 하는 날도 오지 않을까?


2) 조금씩 관심을 가져봄

오라클코드2017 행사(2017년 8월)에 참여했다. 원래 Spring framework의 대가이신 토비 이일민 선생님께서 Java9와 관련된 강연을 하신다고 하셔서 들으러 간 것인데, 여기서 머신러닝 세션이 있어서 들어보았는데 내용이 매우 좋았다. 그냥 막연하게 생각했던 "머신러닝이 터미네이터 같은 인공지능인가?" "요즘 뜨고 있는 최첨단 기술인가?" 에 대한 의문이 어느 정도 풀렸다.

머신러닝은 실제 1950년대 컴퓨터의 발전이 시작하면서부터 사고하는 기계가 가능한 것인가? 라는 의문에서부터 태동했던 것이고 머신러닝은 정밀한 결과와 해석 가능성의 트레이트 오프 관계에서 어떤 알고리즘을 선택하고, 어떤 예측값을 낼 것인가의 과정이었다. 거기에는 다양한 기하학/확률/통계가 들어간다. 이제 슬슬 뭔가 알 것 같다. 머신러닝/딥러닝은 터미네이터나 A.I. 같은 영화에 나왔던 만능은 아니다. 답이 정해져 있는 문제라면 그 답을, 답을 쉽사리 찾을 수 없는 문제라고 한다면, 그 숨겨진 맥락을 컴퓨팅 파워의 힘을 빌어 좀 더 쉽게 찾게 해 준다.


3) 뭔가 약간씩 찾아 다녀봄

머신러닝에 대해서 좀 찾아다니다보니 텐서플로우라는 이야기가 여기저기서 많이 들린다. 텐서플로우가 있으면 쉽게 딥러닝을 입문할 수 있다길래 작년 말쯤 무턱대고 텐서플로우를 받아서 예제를 한 번 돌려보았다. 신기하다. 예제를 돌려보니 결과가 나온다. 그런데 뭐가 뭔지 전혀 모르겠다. 무엇으로 공부를 해야할까 찾아보니, 스탠포드 대학의 앤드류 응 선생님의 강의(https://www.youtube.com/playlist?list=PLA89DCFA6ADACE599)가 매우 유명하다고 한다. 근데 일단 영어라서 제꼈다. 처음 공부하는 건데 영어로 공부하면 너무 어려울 것 같아서... 그래서 다른 것을 찾아본 결과 김성훈 교수님의 모두를 위한 딥러닝(https://www.youtube.com/watch?v=BS6O0zOGX4E&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm)이 매우 좋은 평을 얻고 있어서, 이걸 들어보았다. 텐서플로우를 기반으로 설명을 해 주시는데 따라가기 참 잘 되어 있고, 텐서플로우 예제도 잘 되어 있다. 이제 텐서플로우를 돌리는 법은 알게 됐다. 그런데 아직까진 딱 그냥 예제코드를 이런데 쓰는구나, 결과가 이렇게 나오는구나 밖에 모르겠다. 내가 생각하는 것, 혹은 우리 업무와 관련된 부분을 머신러닝/딥러닝을 적용할 수 있을까 에 대해서는 여전히 모르겠다.


4) 아무 책이나 일단 사봄

혼자서 무엇을 해 보아야겠단 생각이 들어서 서점에 가서 몇 가지 책을 고르다 파이썬을 이용한 머신러닝/딥러닝 실전 개발 입문(http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791158390679&orderClick=LEA&Kc=)이라는 책을 샀다. 이 책의 초반 1/3은 웹크롤링, 데이터 추출, 파이썬을 이용한 DB연계 등의 내용이다. 사실 머신러닝 자체에 대한 내용도 있지만, 파이썬 기본 문법은 기초 강의를 들어서 어느 정도 알지만, 업무에서 주로 쓰는 언어는 Java, Javascript, Golang 정도라서 파이썬으로는 뭔가 실질적인 걸 해본 적이 없어서 해당 부분에 대한 내용도 익힐 겸, 그리고 머신러닝에 필수적으로 따라다니는 numpy, pandas 등의 라이브러리 사용법도 익힐 겸 구입하기도 했다.


초반에 sci-kit으로 돌리는 예제들이 이해가 잘 된다. tensorflow보다 직관적인 느낌이다. 아무래도 tensorflow를 바로 시작하기 전에 sci-kit으로 일단 한 번 개념을 잡고 갔으면 좋았을 것 같다는 생각이 든다. 이제 뭔가 시작한 기분이다. 뒷쪽으로 갈수록 tensorflow를 활용한 예제가 나오는데 김성훈 교수님의 내용에 비해 간략하다. 김성훈 교수님의 강의를 좀 들어서 그런가  무슨 소리를 하는지는 좀 알 것 같은 느낌이 든다. 아직까지도 아 이런 것이 있구나... 수준을 좀 벗어나진 못 한다는 생각이 든다. 코드를 돌리면 결과는 이렇게 나오는 구나. 를 알겠는데 이걸 내가 원하는 데이터를 가지고 머신러닝/딥러닝을 처리하거나, 우리 업무에 적용을 하려면 이게 대체 왜 이런 것인가에 대해 좀 자세히 알아야겠다는 생각이 든다.


5) 이제야 시작한다는 생각이 듬


파이썬을 이용한 머신러닝 딥러닝 실전 개발 입문은 보았던 책이고, 이번에 새로 접한 책은 다음과 같다

딥러닝 첫걸음, 밑바닥부터 시작하는 딥러닝, 인공지능 머신러닝 딥러닝 입문, 모두의 딥러닝, 파이썬으로 데이터 주무르기


각 책을 고르는데 고려한 점은 다음과 같다

- 딥러닝 첫걸음 : 딥러닝 강의를 듣다보면 퍼셉트론이나 신경망의 이론에 대한 설명이 꼭 나온다, 이론적인 부분을 좀 차근차근히 공부하고 싶었다. 후술하겠지만 아래에서 언급할 밑바닥부터 시작하는 딥러닝의 각 단원별 서문을 모아놓은 책이라는 생각이 든다. 가볍게 읽기에는 괜찮은 책이다. 이 책을 보지 않고, 아래의 밀바닥부터 시작하는 딥러닝부터 보아도 별 지장은 없을 것 같다. 기초 수준의 설명은 비슷한 것 같고  코드를 따라가보기엔 밀바닥부터 시작하는 딥러닝이 더 많고, 정말 수식이라든가 좀 더 깊이 들어 가기엔 아래에서 언급하는 인공지능, 머신러닝, 딥러닝 입문이 더 자세하니까.


- 밑바닥부터 시작하는 딥러닝 : 텐서플로우와 싸이킷을 써보았지만, 데이터를 넣으면 뿅~ 하고 결과가 나와서는 내가 원하는 것을 만들 수는 없을 것 같았다. 외부 라이브러리는 최대한 배제하고 numpy, pandas 및 반복문 조건문을 가지고 딥러닝 예제들을 해결 해 나간다. 현재 이 책을 보고 있다. 설명하는 부분에 있어서도 위에 언급한 딥러닝 첫걸음이라는 책만큼 기초 이론 설명도 풍부하고, 코드도 기본적인 코드를 작성 해 나가는 방식이라 만족하면서 보고 있다.


밑바닥부터 시작하는 딥러닝을 보고나면 모두의 딥러닝을 볼 생각이다. 밑바닥부터 시작하는 딥러닝과 목차는 대동소이하지만 예제로 제시하고 있는 케이스가 조금 더 많다. 그리고 밑바닥부터 시작하는 딥러닝의 예제는 주로 tensorflow와 keras를 통해서 구현하게 된다. 아마도 밑바닥부터 시작하는 딥러닝에서 쌩으로 구현을 좀 해 보고나서 tensorflow와 keras를 써보면 좀 더 익숙하게 느껴지고 이해가 될 것 같아서 그렇다.


그 다음에 인공지능, 머신러닝, 딥러닝 입문을 볼 생각이다. "입문" 이라고 되어 있는 책의 순서가 너무 밀린 것 아닌가 하는 생각이 들기도 하지만, 이 책은 입문서라고 보기에는 나처럼 비전공의 필드에서 코딩만을 해 왔으며, 미적분을 했다고는 하지만 고등학교 시절 정도에만 하고 손 뗀지 15년 가까이 되가는 사람이 보기에는 너무나도 이론적이다. 딥러닝 첫걸음의 후속 과정 정도의 느낌으로, 파이썬 기반으로 한 이론서에 나온 코드와 기초적인 수식을 이해한 다음, 좀 더 많은 설명과 수식을 이해하기 위해 읽을 예정에 있다.


파이썬으로 데이터 주무르기는 결국 머신러닝/딥러닝을 하는 목적은 데이터를 다루는데 있을 것이기 때문에 numpy, pandas 라든가, 기타 데이터 처리에 대해서도 어느 정도는 해야할 것 같아서이다. 사실 파이썬을 그다지 많이 써보지 않았던 입장에서 머신러닝/딥러닝을 공부할 때 시작에서 가장 혼란스러웠던 것은 numpy와 pandas의 np 자료구조나 dataframe 등이 뭔지, 그리고 여기에 딸린 메소드가 뭔지 잘 이해가 되지 않았기 때문이기도 했다. 이제 책 몇 권을 보고나니, 그 부분에 대해서는 어느 정도 익숙해졌지만, 어쨌거나 데이터 처리도 잘 해야 될 것 같아서...


6) 조금 더 땡겨 봄

밑바닥부터 시작하는 딥러닝과 시너지를 일으켜보기 위해 와우인사이트 강성희 대표님이 강의하시는 DS스쿨의 딥러닝반에 등록했다. 3월 27일부터 등록해서 이제 두 번째 강의를 들어서 강의평을 하기엔 아직 이르지만, DS스쿨의 강의도 지금 공부하고 있는 밀바닥부터 시작하는 딥러닝과 컨셉이 비슷한 것 같다. 프레임워크로 결과를 보기보다 이론적인 부분을 자세하게 코드로 짜보면서 실습을 한다. 그 과정에서 밀바닥부터 시작하는 딥러닝의 내용이 복습되기도 하고, 강의에서 들은 내용을 밀바닥부터 시작하는 딥러닝을 통해 복습할 수도 있어서 어느 정도 시너지가 있는 것 같다. 무엇보다 좋은 점은 어디가서 물어보기 민망한 정말 되도 않게 쉬운 내용이나 헷갈리는 개념에 대한 내용을 강사님께 직접 물어볼 수 있어서 맘에 든다. 한 번 나머지 6강도 잘 따라가봐야 겠다. 근데 사실 강의 금액이 백만원이 넘는 관계로 쉽사리 손이 가는 강의는 아니라는 건 확실하다. 나도 회사 돈이니까 듣지 회사 돈이 아니었으면 과연 들었을까 싶다.


- 아마도이 카테고리는 공부를 해 나가면서 느낀 점이나 읽은 책에 대한 리뷰가 주기적으로 업데이트 되지 않을까 싶다. 계속 공부해서 뭔가 좀 쓸만한 걸 만들었다고 자랑할 수 있게 열심히 해야지...





'dev > reviews' 카테고리의 다른 글

머신러닝/딥러닝 공부 스토리 - 1  (1) 2018.04.01
1 Comments
  • 프로필사진 임희목 2018.08.08 16:12 안녕하세요 글 잘읽었습니다! 제가 딥러닝반을 듣고싶었는데,, 비용상 듣지 못해서 들으셨다니 고생많으셨습니다.
    혹시 어떤걸 배우셨는지 공부한 것을 올리신 깃허브나 따로 정리하시는 곳 있나요? ㅠㅠ
댓글쓰기 폼