본문 바로가기

개발회고록

DL engineer에게 필요하다고 생각하는것

DL engineer들의 수요는 점점 올라가고 있는 추세입니다. 그로 인한 , 여러 교육 프로그램으로 많은 engineer 들이 쏟아져 나오고 있습니다. 그로인해 , 양산형 Portfolio는 점점 더 쏟아져 나오고 있습니다. 현업에서, AI 기업 Head로 있으신 분의 말을 빌리자면, 양산형 Portfolio는 자세하게 보지 않게 된다고 합니다.
교육 , 정말 좋습니다. 2500만원 짜리 교육을 0원에 해주는 곳도 있는데요.
교육에서 요구하는 것을 전부 완벽하게 할 수 있다면, 취업은 무조건 될거라 생각합니다. 명심할점은 , 요구는 누구나 할 수 있으니까요 ~.

딥러닝 엔지니어에게 필요한 역량을 여기 일일이 적는건 무의미합니다. 어차피 구글링해서, 공통점을 추려보면 쉽게 알 수 있습니다.  구글링으로 얻을 수 없는 조언들(이것은 유명 AI 기업의 AI Tech leader, CTO, Senior분들로부터 여러 조언을 듣고 summary and paraphrase한 제 주관적인 결론 입니다.)에 대해서 얘기해보도록 하겠습니다.다시 한번 말하지만, 제 주관적인 견해가 들어가있습니다.

 

 

1.Project 경험  , Decision Tree

항상, 많은 기업들에서 요구하는 것은 Project 경험입니다. 

Project의 정의는 이렇습니다.

 프로젝트(영어: project)는 일정한 기간 안에 일정한 목적을 달성하기 위해 수행하는 업무의 묶음을 말한다. 하나의 프로젝트는 정해진 기간, 배정된 금액, 투입인력 등 일정한 제약조건 하에서 각종 요구사항(requirement)을 수행하는 방식으로 진행된다.  

from Wikipedia

제가 한번 구체적인 예를 들어보겠습니다.

안녕하세요, 저는 000 라고 합니다.  저는 00000 이라는 교육 프로그램에서 MRC 프로젝트를 했던 것이 기억에 남습니다. ODQA System을 만드는게 프로젝트의 목적이였습니다. 저희는 transformer 기반의 encoder-decoder,encoder, decoder 모델로  Reader를 실험해서 decoder 기반의 모델이 성능이 잘 나왔기에 , Reader에서는 decoder를 사용해봤습니다. Retriver로는 Faiss,ElasticSearch로 실험을 해봤는데, 역시 ElasticSearch가 성능이 잘 나왔습니다. metric으론 F1 score를 사용하였고, 점수가 000였습니다. ....

사실 , 이 정도 했으면 엄청나게 훌륭하다고 볼 수 있습니다.  문제는 이런분들이 개인 한명이 아니라는 것입니다. 

여러, AI 기술  면접 사이트들의 질문을 고려했을때 , 이렇게 질문이 들어올 수 도 있을 거 같습니다. 

1. 왜 Transformer 기반 모델을 사용하셧죠?
2.Rnn, CNn 등의 다른 architecuture로는 시험 안해봤나요?
3. 꼭 외부 domain KB을 사용해야 하나요?
4. 최신 MRC의 Trend는 어떠하죠?
5. 성능이 안나온 이유를 머라고 생각하시나요?

   ......

저 위에서 대부분 막힐거라 생각하는데 , 질문이 끝나지 않을겁니다. 대부분, AI 프로젝트를 pre_trained model을 이용해서, 이를 교체해가면서 프로젝트를 진행하게 될 것입니다. 저는 개인적으로 이를 1개 아키텍쳐를 쓰든, 100개의 아키텍쳐를 쓰든 이게 CV에서의 차이를 만들어 낼 것이라 생각하지 않습니다. 애초에 현업에서는 deep decision tree 를 요구하지 , infinite trial 능력을 요구하지 않습니다. 라고 저는 생각합니다.  여기서 더 어떻게 깊게 내려가는 아래에서 기본기 에서 설명하겠습니다.

 

 

2.기본기

 

그리고, 중요시 여기시는게 기본기 ,기본기 자주  물어보십니다.

어떤 e-commerce 기업에서는 ML Engineer를 뽑는 곳에서 이렇게 물어봤다고 합니다.

Q.Rnn을 아느냐?LSTM을 아느냐? 
A: Sequence data를 처리하기 위한 deep learning architecture 입니다.
Q.둘의 차이점을 아느냐?
A: Rnn의 gradient vanshing 문제를 LSTM이 cell 이라는 hidden state로 해결하였습니다.(이거 답 맞나요? 이렇게 알고는 있는데 틀렸으면 정정해주세요)

네 , 안끝났습니다. 여기까지 끝나면 진짜 happy하죠.

Q.이 모델이 나온 배경과 컨셉을 수학적으로 여기 종이줄테니 증명해볼수 있겟느냐?

뻥 아니에요. 이 이상은 어떤 질문 했는지 알 수없습니다. 지원자 분이 여기서 대답을 못했기 때문이죠. 대답했으면 아마 더 질문 들어갔겟죠. 

 

왜 내가 여러모델을 실험하는데 들인 시간은 안알려주는거지? 

어차피 , 회사에서 푸는 문제를 저희가 해봤을 확률은 적습니다. 회사에서 그러한 문제가 있다 하더라도, 거기에 여러분이 배속된다고 보장 할 수 없죠. 

회사에서 요구 하는것은 "새로운 문제를 봐도 잘 푸는 사람" 입니다.  생뚱맞게 , 웹, 백엔드를 시키진 않겟죠. ML Engineer를 뽑앗으니까요. ML문제를 잘 푸는 사람을 뽑는 것입니다. 

난 MRC, RE 도했고, OD ,Semantic segmentation도 풀어봤는데 , 이정도면 ML 잘하지 않아?? 뽑아줄만 하잔아.

여기서는, 전 구글의 Data Team Tech leader이자 , 현 Facebook Data Tech leader인 John Evans님의 말을 인용하겠습니다.


Ai is a dicipline like pyhsis . Ai refer that machine act automatically and think like human .Mahcine learing is tool set of AI,like NewTown's Laws of mechanics

인공 지능은 물리학과 같은 학문입니다. Ai는 기계가 자동으로 행동하고 인간처럼 생각하는 것을 말합니다. 기계 학습은 NewTown의 역학 법칙과 같은 AI의 도구 세트입니다.

그럼, 딥러닝은요? 대충 제 2법칙 가속도의 법칙  쯤이라 할수 있겟네요. NLP는요? 등가속도 운동 쯤으로 볼까요?

MRC는 자동차가 v=10 으로 등속운동을 한다 정도로 봐도 되겟네요. (너무 극단적이였네요, 물리학 조사해보니까 분야가  범위가 넓네요. 물리학자분들 위대합니다!!)

현재 , DeepLearning Trend는 휙휙 바뀝니다. 3년전에 Transformer, 2년전에 Bert ,20년에 Vit 등등 계속 나오고 있습니다.  최신 Trend를 따라가다 보면, 실력이 늘까요?  

가수 나얼님이 이런 말씀을  학생들에게 주로 하신다고합니다.

얘들아 , 트렌드 따라가는거 중요한데, 너무 트렌드 따라갈려 하지마. 트렌드만 따라가다 보면 나중에 나온애들한테 밀려. 걔내가 너네보다 더 잘해

롤 프로게이머 구마유시(이민형) 선수는 이런말을 했습니다.

나?사람들이 나를 피지컬로만 한다. 뇌빼고 한다 . 이렇게 말하는데 , 사실 나는 기본기의 결정체야. 나는 기본기를 극한까지 갈고닦앗어. 뭐든지 기본이 중요해.

 

최신 논문 읽는 모임들이 있는데, 그걸 해도 되는 사람은 진짜 소수의 고수들이라고 개인적으로 생각합니다.정말 주변에 초고수들이 많아서 항상 열심히 해야한다고 자극 받습니다. Project를 깊게 판다는 것은 , 어떤 분야든지 깊게 판다는 것은 ,  정보를 분해해서 인식 하는것이라 생각하게 됩니다. 인식하는 정보의 단위가 작아지게 됩니다. 그 정보를 이루는 것들을 기본적인 것들이 되게 됩니다.  사실, Project를 깊게 판다는것 = 기본기 깊게 라고 저는 생각합니다. 

 

3.성장가능성

 

성장을 잘한다가 무엇일까요? 경험치 2배 이벤트라도하나요?(있었으면 좋겟네요. 진심으로)  . 일단 , 이 DL 분야에서 성장이 무엇일지 알아야겟죠? 개발에 숙달이 되고 , 생산성 이높아지고, 새로운 이론 잘만들고 등등이 있겟죠. 어찌됬든 , 결국 이러한 능력은 외부의 자극(stimulus)를 받고 내부에서 어떻게 피드백(feedback)을 해서 변화를 통해 생길겁니다.

그냥 간단하게 말하면, 학습을 잘하자 입니다.  저도 요즘 되게 학습 전략에 관심이 많습니다. 학습의 방법들에 대해서  이론과 공식이 과학적인 실험을 통해 많이 증명되어 있습니다. 그 중에서 ,저는 pretest, posttest, control그룹을 나눠서 한 학습실험의 결과를 제 자신에게 적용하고 있습니다. 그 실험은 교재만 복습하는 학생 , 먼저 시험을 쳐서 내용을 파악하고, 교재를 공부하는 학생, 교재를 공부하고 시험을 보는 학생으로 그룹을 나눕니다. 결론은 control < pretest < posttest 이 순으로 성적의 결과가 나왔습니다. 그리고, 또  이 pretest, posttest를 각각 시험 결과에 대해 no-feedback , one question one feedback(문제 1개풀고 피드백) , set of question  feedback(문제를 다풀고 피드백)  이렇게 나눠서 실험을 했는데 이것도, no-feedback< one-question < set fo question feedback 순으로 성적이 나왔습니다. 사실, 이게 중요한게 아닙니다. 학습하는 방법을 어디까지 고민해봤나가 중요하다고 생각합니다. 어떤 영상을 통해 간접적으로 보게된 구글의 발표에서 인상깊은 speech가 있었습니다.

예전에는, 명문대 , 성적순으로 줄 세워서 사람을 뽑았습니다. 하지만, 지금은 그렇게 하지않습니다. 연구를 해본결과 , 그 사람이 일을 잘하는것과 성적은 상관관계가 없다고 밝혀졌습니다. 구글에 이력서를 제출하게 된다면 그 사람이 얼마나 "빨리 배우는지"를 평가할 것입니다.  "고차원적 사고", "복잡한 의사소통", "문제해결능력"을 시장에서 더 요구하는 추세입니다.

딥러닝 모델 아키텍쳐만 갈아끼워선 안됩니다. 본인의 학습방법도 갈아끼우는것을 재고해볼 필요가 있다고 생각합니다.

 

 결론

취업 못한  취준생이 적은 개소리였습니다. 뭐야? 하고 넘어가주셧으면 합니다. 봐주셔서 감사합니다.