All Projects → Kyubyong → Dl_career_faq

Kyubyong / Dl_career_faq

Licence: mit
Deep Learning Career FAQ

Deep Learning Career FAQ

This (https://github.com/kyubyong/dl_career_faq) is for my talk at Deep Learning Talks on Sep. 1, 2018.

Q. 딥러닝 플레이어가 무엇인가요?

딥러닝에 기반한 활동(예를 들어 연구나 프로젝트)에 참여하는 사람을 가리킵니다. 대체로 아래와 같이 구분해 볼 수 있습니다. 다만, 이러한 구분이 아주 명확한 것은 아닙니다. 오히려 "나는 R, A, E, D의 성향을 2:5:2:1 정도로 갖고 있다"라고 말하는 것이 자연스럽습니다. 이처럼 스스로의 정체성이나 포지션에 대해 질문을 던지고 고민하는 과정에서 딥러닝 플레이어들의 성격이 균일하지 않음을 이해하게 되고, 또 자신이 나아갈 방향을 설정할 수 있습니다.

  • 딥러닝 연구자(Researcher): 딥러닝을 학문적 관점에서 접근합니다. 이론이나 모델, 알고리즘 등 본질과 근간의 혁신을 목표로 탐구합니다. 학계나 연구소에 계시는 분들이 대체로 이 범주에 속합니다. 논문 발표를 통해 커뮤니티에 기여합니다.
  • 딥러닝 응용연구자(Applied researcher): 딥러닝을 이용해 사람들에게 도움이 되는 서비스나 제품을 만듭니다. Under the hood에보다 실제적인 것에 더 관심이 있는 성향이 많습니다. 영상, 언어, 의료, 바이오, 로보틱스 등 여러 분야의 실제 문제들을 푸는 데 딥러닝을 효율적으로 사용하고자 합니다. 가치 기여와 비즈니스 양쪽 모두를 고민합니다. 연구 주제보다 실제 문제를 다룬다는 점에서 R과 다르고, 실행이나 효율성보다 문제 해결 방법에 초점을 맞춘다는 점에서 E와도 차이가 있습니다.
  • 딥러닝 엔지니어(Engineer): 딥러닝을 실제 서비스나 제품으로 만들기 위한 실행 역량을 갖추고 있습니다. 논문이나 주어진 설명서에 기반해 효율적이고 빠르게 모델과 시스템을 구현할 수 있습니다. 뛰어난 프로그래밍 능력을 보유하고 있고, IT 서비스에 대한 고도의 이해를 갖추고 있습니다.
  • 도메인 전문가(Domain expert): 전문적인 도메인 지식을 바탕으로 풀고자 하는 문제를 모두의 언어로 정의하고 프로젝트 방향을 설정하는 분들이 D에 해당합니다. 특정 IT 제품이나 서비스를 만들기 위해서는 해당 도메인에 대한 지식이 반드시 필요합니다. 가령 패션에 딥러닝 기술을 적용하려면 패션 산업 자체에 대한 이해가 선행해야 합니다. 신약 개발에도 딥러닝이 획기적인 발전을 가져올 것이라 모두들 기대하지만 이를 위해 시스템생물학이나 화학을 잘 아는 연구자들과의 협업이 꼭 필요합니다. 이때 서로 다른 성격의 그룹들이 상호 소통하고 공통의 목표를 향해 나아가기 위해서는 D의 역할이 매우 중요합니다.

Q. 딥러닝 플레이어가 갖추어야 할 역량에는 어떤 것이 있나요?

딥러닝 플레이어가 갖추어야 할 역량을 한마디로 정의하기도, 빠짐없이 열거하기도, 무엇이 더 중요하고 덜 중요한지 단정하기도 모두 쉽지 않은 문제입니다. 하지만, 아래에 나열하는 사항들은 대체로 많은 분들이 공통적으로 꼽는 것들입니다.

기초 지식

  • 수학 (대수학, 미분, 확률, 통계, 로그 등): 수학은 다른 자연과학과 마찬가지로 딥러닝을 이론적으로 이해하고 연구하는 데 있어 필수적인 도구입니다. R이라면 왼쪽에 열거한 영역뿐 아니라 다른 영역에도 학부 수준 이상의 깊이 있는 지식을 필요로 하는 경우가 많습니다. AE는 우선 고등학교 과정의 수학 지식 정도로 출발해도 좋습니다. 그러다 부족한 부분은 그때그때 따로 공부하면 됩니다.
  • 전산학 /프로그래밍 (자료구조, 알고리즘, 파이썬, 자바, C, R 등): 자료 구조나 알고리즘 등의 전산학 과목은 특히 학부생이라면 꼭 기초를 튼튼히 해야 합니다. 면접의 단골 주제이기도 하고요. 프로그래밍 능력은 D를 제외한 모든 플레이어들에게 필수 역량입니다. (D도 프로그래밍을 할 줄 안다면 아주 많은 도움이 될 것입니다) 대체로 요즘은 파이썬을 기본 언어로 여기지만, E라면 다른 언어를 능숙하게 활용하는 것이 요구될 수 있습니다. R, A, D는 상대적으로 매우 뛰어난 프로그래밍 역량을 필요로 하지는 않으나 자신이 원하는 것을 무리 없이 구현하려면 한 언어를 최소 6개월은 사용해 봐야 합니다.
  • 영어 (읽기>>>듣기, 쓰기, 말하기): 딥러닝과 관련한 자료, 그러니까 논문, 블로그, 기사, 강의 등이 100이라면 그 중 99가 영어로 되어 있습니다. 딥러닝 플레이어가 되고 싶은데 영어에 부담이 있어 한국어로 된 자료만 찾고 있다면 지금 당장 영어 공부를 해야 합니다. 그렇지 않으면 결국은 한계에 봉착할 것입니다. 언어의 네 영역 중 가장 필요한 것은 독해입니다. 논문을 읽을 정도의 독해력을 위해서는 기본적인 문법 지식과 함께 격식 어휘에 대한 지식이 있어야 합니다. 영어로 된 영상을 보거나 학회에 참석했을 때, 해외 연구자들과의 소통을 위해 듣기나 쓰기, 말하기도 필요합니다. 원어민 수준이 되어야 한다는 강박을 버리고 차근차근 도전하다보면 딥러닝 플레이에 필요한 영어 실력을 얻을 수 있습니다.

실전 역량

  • 딥러닝 지식: 한 분야에 대해 깊이 있는 지식을 습득한다는 것은 쉬운 일이 아닙니다. 딥러닝처럼 폭발적으로 발전하는 분야라면 더욱 그렇습니다. 많은 사람들이 새롭게 쏟아지는 지식에 부담을 느낍니다. 그렇지만 딥러닝의 바탕을 이루는 이론들이 쉽게 바뀌지는 않습니다. 기초를 탄탄히 다진 후 조금은 가벼운 마음으로 즐기듯 새 지식들을 받아들이는 자세가 필요합니다. 딥러닝 기초는 이나 Coursera, Stanford 강의 등을 소화한다면 다질 수 있습니다. 특히 용어를 정확하게 이해하고 사용할 수 있도록 해야 합니다. 딥러닝 용어집을 자주 읽으며 자신의 언어로 다른 사람에게 설명할 수 있는지 자가 확인해 보는 것도 좋겠습니다.
  • 딥러닝 도구 사용 능력 (TensorFlow, PyTorch, Keras 등): 현재, 대부분의 딥러닝 프로그래밍이 왼쪽 세 개의 라이브러리 중 하나를 활용해 이루어지고 있습니다. 재론의 여지 없이 이 도구들을 잘 이해하고 잘 다루는 능력은 매우 중요합니다. 셋 중 어느 것을 익혀야 하느냐는 진행 중인 논쟁거리입니다. 사실 그보다 더 중요한 것은 그 중 하나라도 온전히 자신의 것으로 만드는 것입니다. TensorFlow는 버전의 변화가 잦은 편이니 유의해야 합니다.
  • 관련 분야 지식 (검색, 자연어 처리, 언어학, 신호 처리, 생물학, 의학, 패션, ...): 학제간 연구가 필수가 된 요즘 관련 분야에 지식이 있다면 자신만의 큰 무기가 될 수 있습니다. 가령 딥러닝으로 추천 시스템을 만든다면 검색과 관련한 지식이 유용할 것입니다. 자연어 처리나 언어학 지식은 언어 과제를 할 때 필요하고, 음성을 다룰 때는 신호 처리에 대한 지식이 필요할 때가 많습니다. 의학이나 생물학은 의료나 바이오 쪽 연구에서 매우 중요합니다. D라면 자신의 전문성을 확고하게 할 필요가 있고, R, A라면 소통과 문제 이해를 위해 필요한 지식 습득에 초점을 맞추는 것이 낫습니다.

자질

실제로 어떠한 일을 하기 위해서는 역량 못지않게 성향이나 자질이 중요합니다. 다른 사람과의 협업이 필수적으로 요구되며 어지러울 정도로 빠르게 변하는 필드의 특성상 자신이 아래에 열거하는 자질을 갖추었는지 생각해 보는 시간이 필요합니다.

  • 문제 해결 능력: 딥러닝은 문제를 풀기 위한 도구입니다. 연구를 할 때는 엄격한 학문적 세팅 속에서 문제를 해결해야 하며, 필드에서는 또 다양한 제약과 조건 속에서 작업을 하게 됩니다. 그러한 룰을 준수하는 가운데 목표를 이루기 위해 끊임없이 고민하는 자세가 요구됩니다. 이는 기술력과 또다른 영역인데 기본적으로 해당 문제에 대한 깊고 넓은 고민, 의지력이 동반되어야 합니다.
  • 커뮤니케이션 능력: 딥러닝은 혼자 할 수 없습니다. 여러 다양한 사람과 팀을 이루어 과제를 수행하게 됩니다. 사람들마다 성향이 다르며 다른 언어를 사용합니다. 그들을 존중하는 자세가 있어야 합니다. 뿐만 아니라 자신의 의견을 명확하고 쉬운 언어로 표현하는 능력이 필요합니다.
  • 지적 호기심: 매일 쏟아지는 논문들에서 끊임없이 흥미를 느끼며 그 과정에서 지적인 희열을 느낄 수 있는 사람이라면 딥러닝을 하기 위한 좋은 자질을 갖추고 있는 겁니다.

Q. 저는 고등학생입니다. 딥러닝 플레이어가 되려면 저는 무엇을 어떻게 준비해야 할까요?

영어와 수학 공부를 착실히 해 두세요. 여력이 된다면 프로그래밍을 배워두는 것도 좋습니다. 그리고 공부를 열심히 해서 원하는 대학, 원하는 학과에 가세요. 반드시 전산학과에 갈 필요는 없지만, 가서는 안 될 이유도 없습니다. 어느 과를 가든 저라면 복수전공을 하겠어요. 언어에 관심이 있다면 언어학, 바이오에 관심이 있다면 생물학이나 화학을요. 반대로 전산학이 아닌 다른 전공을 하더라도 전산학을 병행해서 공부해야겠지요. 아무튼 고민은 고민대로 하면서 공부 열심히 하세요.

Q. 저는 전산학과 학부생입니다. 딥러닝을 하나도 모르는데, 딥러닝 플레이어가 되려면 저는 무엇을 어떻게 준비해야 할까요?

일단 학과 공부를 열심히 하세요. 자신에게 천부적인 재능이 없다면 학점을 무시하지 마세요. 위에서 설명한 기초 지식이 자신에게 있는지 점검해 보세요. 준비가 됐다면 Coursera나 모두를 위한 딥러닝 등을 통해 딥러닝 공부를 시작하세요.

Q. 저는 문과 출신의 학부생입니다. 저도 딥러닝 플레이어가 될 수 있을까요?

아마도요. 안 된다라고 물론 말할 근거가 없고 (참고로 저도 문과 출신), 아무 문제 없다라고 무책임하게 말할 생각도 없습니다. 일단 파이썬을 배워 보세요. 구조적 사고가 자신에게 맞는지 확인해 보세요. 프로그래밍에 조금씩 자신이 생긴다면 자신의 전공과 관련해 프로그래밍을 활용해 보세요. 이런 수련기간을 1년 정도 거친 후 여전히 딥러닝을 하고 싶다면 당신은 준비가 된 거예요.

Q. 학부생입니다. 혼자 열심히 공부하고 논문도 읽는데 이렇게 계속하면 되는 건가요?

혼자 하면 쉬이 지칩니다. 온라인 오프라인 모임에서 같은 생각을 가진 사람들과 활발히 교류하세요. 그리고 대학원에 갈 것인지 취업을 할 것인지, 창업을 할 것인지 등에 대한 계획도 세워야 합니다. 어떤 길을 가든 인턴을 할 수 있다면 해 보는 게 좋습니다. 동기부여도 되고 밖에서 보는 것과 다르게 현장의 분위기를 느껴 볼 수 있습니다. 인턴을 하든, 대학원에 가든, 취업을 하든 포트폴리오는 필요합니다. 당신의 이력서에 내세울 만한 인상적인 경력이 없다면 현실적으로 힘들어질 거니까요. 아래와 같은 활동을 추천합니다.

  • 캐글에 도전해 보세요. 캐글은 실제 필드의 고민을 안고 있는 문제이면서 매우 잘 정의된 문제들입니다. 딥러닝뿐 아니라 데이터 사이언스 전반에 대한 경험을 쌓을 수 있습니다. 다른 사람들의 생각과 코드를 볼 수 있습니다. 순위가 나오기 때문에 자신의 호승심을 만족시킬 수, 혹은 좌절할 수 있습니다. 상위 순위에 들면 상금을 받을 수도 있습니다. 어찌됐든 그 경험을 통해 많은 것을 느낄 수 있습니다. 이력서에 캐글 도전기를 쓰면 아마 면접자가 질문을 할 거예요. 그때 자신이 고민했던 사항, 시도했던 것들을 설명하며 자신이 진지한 연구자임을 어필하세요.
  • 해커톤에 도전해 보세요. 사실 저는 안 해 봐서 몰라요. 하지만 해커톤에서 좋은 성적을 거둔 사람은 늘 면접자의 눈길을 끕니다.
  • 깃헙 활동을 하세요. 깃헙에 본인의 프로젝트를 잘 관리하세요. 깃헙 활동은 여러 가지 의미를 가질 수 있습니다. 자신의 프로그래밍 역량을 직접적으로 보여주고, 자신의 연구 주제나 관심 영역을 보여줍니다. 또 자신이 오픈 소스 공유 문화에 기여하는 공익적 인간임으로 보여주기도 합니다. 자신의 독창적인 연구도 좋고 논문의 구현도 좋습니다.
  • 가능하다면 학교 과제 주제를 딥러닝과 관련한 걸로 잡아 보세요. 학교 과제 페이퍼를 잘 다듬어 arXiv에 제출해 보세요. 논문을 쓰는 연습도 되고 좋은 포트폴리오가 될 거예요.

Q. 기본적인 공부가 끝나고 나면 다음 단계로 어떻게 하는 게 좋을까요?

본인이 풀고 싶은 문제가 있다면 도전해 보는 것이 제일 좋습니다. 그렇지 않다면 바로 위 답변으로 갈음합니다.

Q. 저는 학부생인데요, 딥러닝 플레이어가 되기 위해 대학원에 가야 할까요?

더 많은 지식과 학습을 위해 대학원에 반드시 가야 하는 것은 아닙니다. 사실 딥러닝 석학들의 강의와 커리큘럼이 모두 공개되어 있어요. 공부하고 싶다면 그런 쪽을 참조하는 게 낫습니다. 대학원에 가는 이유는 딥러닝이라고 특별할 게 없습니다. 학문을 진지하게 탐구하는 수련을 하기 위한 겁니다. 그 과정을 거친 사람과 거치지 않은 사람은 당연히 다릅니다. "세상에 석박사는 많아, 그거 별거 아니야", 라고 얘기한다면 그건 지나친 독선입니다. "우리 회사는 사람 뽑을 때 학력을 보지 않아", 라고 누가 얘기한다면 그 사람은 이런 수련 과정의 의미를 잘 모르거나 혹은 자신을 속이고 있는 겁니다. 그렇다고 반드시 대학원에 가야만 한다는 뜻은 아닙니다. 대학원에서의 수련 과정이 본인에게 의미가 없다거나 자신은 이미 그런 훈련이 되어 있거나 기타 대학원에 가지 않을 이유가 더 많습니다. 대학원에 가야 할 이유가 명확할 때 가야 한다고 정답입니다.

Q. GPU를 사용하고 싶은데, 너무 비싸요. GPU를 꼭 써야 하나요?

GPU는 꼭 있어야 합니다. 자신이 간절하다면 투자를 아끼지 마세요. 100배, 아니 그 이상의 리워드가 있을 거예요.

Q. 저는 딥러닝과는 상관없는 제조업 분야에 있는데요, 딥러닝을 배우면 좋을까요?

잘 물어보셨어요. 딥러닝을 배우시면 반드시 새로운 기회를 만나게 되실 거예요. 일단 이 레포의 다른 문답들을 읽어보시며 자신이 얼마나 간절한지, 자신의 논리적 사고 능력이 어느 정도인지 스스로에게 물어보세요. 딥러닝을 이론적으로 깊이 들어가지 말고 데이터 사이언스 플러스 알파라는 관점에서 접근하세요.

Q. 딥러닝을 이용해 언어 관련 과제를 수행하고자 할 때 언어학, NLP 지식이 필요한가요?

일반론적으로 얘기하자면 필요하지만 그것이 깊은 수준은 아닙니다. 본인이 하는 과제에 필요한 부분을 그때그때 보는 것만으로 일단 족합니다. 언어 관련 과제가 너무 많아 (참조: nlt tasks) 각 과제에 필요한 언어학, NLP 영역을 열거하는 건 무리지만, 예를 몇 개만 듭니다. 음성 관련 과제를 한다면 음성학 (phonetics)과 신호 처리 (signal processing) 배경지식이 필요합니다. Word embedding에 대해 좀더 깊은 수준에서 고민하고 싶다면 구문론 (syntax)과 형태론 (morphology)을 살펴볼 필요가 있습니다. 번역 과제에서 attention이 어디서 나왔는지 그 맥락을 읽고 싶다면, 고전적인 IBM 모델의 word alignment을 공부해 보면 좋습니다. 반면, 통합적으로 언어학이나 NLP 지식을 쌓으면 그게 차곡차곡 쌓여 특정 과제뿐 아니라 전반적인 자신만의 insight를 가질 수 있습니다. 자신만의 specialty를 가질 수 있다는 뜻입니다. 그러나 반드시 그렇다는 보장도 없고 기회 비용을 생각했을 때 그게 좋은 방법일지는 모르겠습니다. 요약하자면, 자신이 언어를 정말 좋아한다면 언어학이나 NLP 공부를 따로 하세요. 그게 아니라면 딥러닝 플레이의 수단으로 삼으세요.

Q. 주위를 보면 영상이나 언어를 자신의 도메인으로 결정한 친구들이 있는데, 저는 아직 어떤 도메인을 잡아야 할지 모르겠습니다. 아니, 특정 도메인을 선택해서 집중적으로 해야 하는 건지도 모르겠습니다. 어떻게 생각하세요?

좋아하는 걸 하세요. 자기가 좋아한다면 현재 딥러닝의 어떤 도메인이든 길은 있습니다. 영상 쪽 연구가 상대적으로 더 성숙했지만 아직 갈 길이 머니 일자리가 없을까 봐 고민하지 않아도 됩니다. 언어 쪽은 말할 것도 없고요. 자율주행이든 로봇이든 어떤 도메인도 수요가 많습니다. 특정 도메인을 당장 정하지 않아도 언젠가는 자신의 영역을 대부분 정해야 하지 않을까 싶습니다. 수학 등 이론 연구가도 물론 영역의 하나죠. 딥러닝 공부를 시작하는 단계라면 도메인을 특정하기보다 일단 기본 개념이나 툴 사용법 등 소위 펀더멘탈을 확실히 하는 게 필요합니다. 천성이 무엇 하나 딱히 좋아하는 게 없어서 누가 콕 하나 찝어줬으면 좋겠다는 분이 계시다면, 현 시점(2018)에서 바이오와 환경 쪽에 관심을 가져볼 것을 추천합니다. 두 분야 다 배경지식을 쌓아야 합니다. 하지만 그렇기 때문에 많은 사람들이 하지 못하는 영역입니다. 남들과 다른 길을 가고 싶다면 딥러닝 외 그런 쪽에서 허들을 넘는 배경지식을 갖추고 선도적으로 연구를 진행하는 게 어떨까 싶습니다.

Q. 하루에도 수십 편의 딥러닝 논문이 쏟아집니다. 처음에는 열심히 새로 나오는 논문들을 읽으려고 노력했는데 요즘은 너무 벅차다고 느낍니다. 과연 어떤 논문을 읽어야 할지도 모르겠고 비슷비슷한 논문들의 홍수 속에 지치기도 합니다. 저는 어떻게 해야 할까요?

가장 먼저 인식해야 할 것은 “넌 혼자가 아니다”라는 것을 기억하는 것입니다. 사실 저도 그렇거든요. 많은 사람들이 그럴 거예요. 저도 답을 모릅니다. 그냥 이러면 어떨까요? 새로 나오는 모든 논문을 읽어야 한다는 강박을 버리세요. 여러 커뮤니티나 소식지 정보를 구독해 남들이 주목하는 논문만 놓치지 않도록 하세요. 다른 사람들과 자주 접하거나 학회를 갔다오면서 자주 환기를 시키고 큰 연구의 줄기를 잃지 않으려고 노력하세요. 그리고, 지금은 백 세 시대이며 우리가 살 날도, 인공지능이 가야할 길도 너무나 많이 남았다는 걸 기억하세요. 강한 자가 살아남는 게 아니라 살아남는 자가 강한 거예요. 살아남읍시다.

Q. 딥러닝 연구나 비즈니스 생태계 조성을 위해 무엇을 해야 할까요?

당연히 딥러닝 연구자가 더 많아져야 하지만 더 많이 비즈니스 성공으로 이어져야 합니다. 그러려면 딥러닝 연구자와 도메인 전문가가 만날 기회가 더 많아져야 합니다. 제안을 하나 하죠. 도메인 전문가라면 딥러닝 연구자들에게 세미나를 요청해 보세요. 도메인 전문가가 공개 세미나에 참석하는 것도 좋지만 정말 궁금한 내용을 물으려면 회사로 초청하는 것이 낫습니다. 여러 가지 조언을 구하고 인재를 소개해 달라고 해 보세요. 이 바닥은 거미줄처럼 인맥이 얽혀 있어요. 인공지능 연구자라면 자주 회사들을 찾아가 현장의 목소리를 들으세요. 답은 늘 현장에 있습니다.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].