Skip to content

pbj0812/dl_career_faq

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

Deep Learning Career FAQ

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

About me

Life / Carreer Path

  • Korean Language and Literature at SNU (BA)
  • In-house writer (2 yrs)
  • Search / NLP (4 yrs)
  • NLP (2 yrs)
  • Linguistics at Univ. of Hawaii (MA)
  • NLP (1 yr)
  • Deep Learning / NLP (2 yrs)
  • Bio? Social good?

(Research) Interests

  • NLP, Speech, (computational) linguistics, bioinformatics, education, philosophy, environment

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라면 소통과 문제 이해를 위해 필요한 지식 습득에 초점을 맞추는 것이 낫습니다.

자질

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

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

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

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

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

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

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

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

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

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

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

About

Deep Learning Career FAQ

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages