일지/네부캠 AI 4기(22.09.19~23.02.14)

20221007

제로타이 2022. 10. 7. 21:50

데일리 스크럼

어젯밤에 무얼 했고, 오늘은 무얼 할 것이고, 무엇이 예정되어있는가에 대해 짧은 토크!

멘토 미팅

오늘은 시스템 디자인 인터뷰에 대해서. 사실 인터뷰만이 아니더라도 개발자는 시스템을 어떻게 만들어야 하는지 고민해야한다. 코파일럿만 봐도 알 수 있지만 점차 기계가 코드를 짜주는 시대가 오고 있지만, 그럼에도 디자인과 아이디어는 개발자의 머리에서 나오는 것이니 능력있고 실력 있는 개발자가 되기 위해서는 지속적으로 공부해야할 필요가 있다.

인터뷰는 보통 한 시간 이뤄지며 큐 시스템을 디자인하라던가, 트위터를 디자인하라(!)는 등의 간단한 한 문장을 제시한다.
이때 따라야 할 순서는 대충 이러하다.

  • 지속적인 대화를 통해 면접관 마음 속의 scope를 알아내야 한다. 또 사용될 케이스를 생각하면서 면접관과 함께 구체적인 프로그램의 모형을 짠다.
  • 트래픽의 규모에 따라 설계 방법이 달라지기에 이를 먼저 확인하고, API 를 설계한다. 이후에는 DB를 설계한다. 이때도 사용될 케이스에 맞춰 필요한 데이터를 파악한다.
  • 하이레벨 디자인. 전체적인 틀! 데이터의 흐름을 생각하며 DB, Load Balancer 등의 요소들을 적재적소에 배치한다. 
  • 로우레벨 디자인. 각 요소들이 해야할 일과 데이터 구조, 알고리즘 등을 논의한다.
  • 이쯤 되면 끝. 추가적으로 성능을 어떻게 더 높일 수 있는지, 어떤 기능을 추가할 수 있을지 등의 세부 작업에 대한 아이디어를 제시한다. 운영 과정 상의 모니터링에 대해서도 논의한다!

이때 면접관의 평가 목록은 대충 세가지라고 할 수 있다.

  • 커뮤니케이션을 잘 하는가?
    디자인에 관한 면접은 의도적으로 질문이 모호하게 주어진다. 여기에서 구현을 위해 필요한 디테일을 질문을 통해 파악하면서 면접관이 정말 의도하고 있는 요구사항을 파악해야 한다. 면접관은 이를 통해 커뮤니케이션 능력을 평가한다.
  • 문제를 정확히 알고 있는가?
    문제의도를 잘 파악했는지. 그리고 그 문제에 대해 적절한 해결책을 떠올릴 수 있는지를 평가한다.
  • 괜찮은 디자인을 할 수 있는가?
    시스템의 큰 그림을 그릴 수 있는지, 그리고 시스템의 세부적인 부분에서 여러 알고리즘을 사용하여 그 큰 그림이 작동하는 것을 보여줄 수 있는지 평가한다.

경력이 많지 않은 신입에게 엄청난 실력을 요구하지는 않는다. 다만 얇게나마 큰 그림을 그리고 구상을 할 수 있을 정도의 지식을 보유해야 한다. 그렇기에 먼저 하나한 깊게 들어가는 dfs보다는 bfs방식으로 공부하라!
이런 인터뷰를 하게 될 때 알면 좋을 팁!

  • 시스템이 요구하는 최소한의 기능을 만족하는 솔루션을 생각하고 피드백을 받으면서 개선해나간다.
  • 제약 조건을 꼭 먼저 파악해야 한다. 데이터의 양, 시스템의 규모, 메모리, 대기 시간 등.
  • 면접관은 일방적인 평가를 하는 게 아니라 면접자가 어디까지 할 수 있는지를 보는 것이기에 꼭 지속적인 소통이 필요하다.

고려하면 좋은 것들..

위의 내용들은 아직 내가 완벽하게 파악하기에 아는 게 너무 적어 일단 캡쳐를 떠둔다.

보너스로 좋은 것들..

인터뷰 예시.

페이스북 광고 랭킹 모델이 매일 바뀌는데, 어떻게 이 모델들을 적절하게 평가할 수 있을까?

이런 질문을 받고 우리는 계속 면접관과 이야기를 하면서 우리가 맞춰야 할 퍼즐 조각들을 전부 찾아내고, 이후에 퍼즐을 맞추기 시작해야 한다는 것이다.

 

 

지금 네이버에서 배우는 AI도 다양하게 세분화되어있다. 이 모든 것을 할 수 있다면 generalist인데, 실무에서 꼭 모든 것을 알아야하는 것은 아니다. 한쪽 지식을 깊게 알고 동료들과 소통하며 작업을 해나가는 것이 중요하다.

스페셜 피어세션

오늘은 7조에 들어가서 또 새로운 사람들과 이야기를 나눴다. 오늘은 마땅히 먼저 이야기를 꺼내는 사람이 없어 내가 진행을 맡게 되었다. 뭐, 기발한 것을 하지는 않았고 간단하게 자기소개 시간을 가지고 각 팀 별로 피어세션 때 무얼 하는지, 그리고 멘토링 때 어떤 것을 하는지. 끝으로는 곧 시작될 레벨 2에서 어떤 팀원들을 원하는지 대해서 이야기를 나눈 뒤에 자기 PR을 하면서 끝을 냈다.
함께 한 인원들의 세세한 신상은 내 일기장에.. 항상 내가 내세울 수 있는 것이 열정밖에 없다고 생각했는데, 생각해보면 42에서 배웠던 것들도 어느 정도는 내 소중한 경험이었다는 생각이 들어서 그런 것들을 조금 어필했다. 

추가적으로 우리 팀에서도 면접 스터디를 생각하고 있는데 이미 하고 있는 다른 팀들이 있길래 어디에서 리소스를 얻는지, 어떻게 진행하는지 이야기를 들었다. 어떤 팀은 멘토가 소스를 제공하고 멘토도 함께 강의를 들으면서 질문거리를 마구 준비해오신다고.. 강의를 함께 듣는 멘토가 있다는 것은 조금 놀랐다. 

https://zzsza.github.io/data/2018/02/17/datascience-interivewquestions/#%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D

Papers You Must Read (PYMR) (notion.so)

보이저엑스 - 남세동 대표(딥러닝 질문) (tistory.com)

다양한 리소스들! 이것들을 토대로 준비를 하는 것은 매우 효과적일 것 같다.

피어세션

먼저 2레벨 팀을 위해 준비해야 할 것들에 대해 이야기를 나눴다. 스페셜 피어세션 이후에 진행되었기에 자연스레 관련 이야기들도 하게 됐다. 
최종 프로젝트 주제는 어떻게 해야할 것인가?! 미디어, 금융, 음악, 게임 등 생각해보면 다양한 주제를 마련할 수 있을 것 같다. 

내일 오프라인으로 만날 예정이라 만나서 몇 시에 만나고 무얼 먹을지도 정했다!
끝으로는 회고록 공유와 각자의 블로그를 오픈하는 시간.. 내 블로그도 오픈하려 했는데 시간이 다 돼서 결국 못했다! 근데 이전에도 이미 공유한 적이 있어서 알 사람들을 알 지도..?

오피스아워

심화과제 1,2번 해설!

VIsual Transformer

시각 자료에 트랜스포머를 쓰는 비전 트랜스포머. 계산 효율성과 확장성이 있다. 
saturating performance는 데이터가 많아도 학습이 잘 된다는 것을 말한다. 성능의 포화상태가 발생하지 않는다. 보통 모델은 구조 상 어느 정도 많은 데이터가 들어오면 잘 학습되지 않기도 한다.

NLP에서 성공적이던 트랜스포머의 구조를 바꾸지 않고 CV 분야에 적용한 방법이라 확장성이 정말 좋다.
큰 규모의 데이터에서 트랜스포머가 좋은데, 이걸 그대로 가져가기에 계산 효율성도 좋다.

다만, 보통의 CNN과 비교해서 학습에 데이터가 더 많이 필요하다. inductive bias가 부족. 처음 보는 입력에 대해 모델이 출력을 예측하기 위해 사용하는 가정이 부족하다는 것. 이는 데이터 전체를 보고 출력하는 트랜스포머의 특성.
왜냐하면 CNN에서는 translation equivariance가 있어, input 위치만 바뀔경우 또같이 output위치만 바꿔서 출력이 가능하고 locality도 있기 때문이다. 이미지의 특정 영역만을 보고 특징을 추출할 수 있다는 것. 

세세한 풀이는 다시 들어볼 필요가..으윽

Adversarial AutoEncoders

기존 VAE에서 Variational inference를 수행하기 위해 GAN을 적용한 방법론

이하 다시 들을 필요가..으으으으윽
아무래도 VAE를 잘 모르다보니 너무 흐름을 따라가는 것이 너무 힘들었다.

공부

 오늘은 남은 데이터 시각화 강의를 전부 듣고 남은 시간에 심화과제를 조금 보았다. 해봐야 10시부터 15시 이전까지였으니 점심시간을 제외하면(점심 시간도 활용하긴 하지만) 4시간 정도의 시간밖에 없었고, 그래서 데이터 시각화를 다 보고나니 시간이 얼마 남지 않아 심화과제는 자세하게 해보지는 못 했다. 그래서 이번 오피스아워가 힘들었던 것도 있는 듯하다. 그나마도 데이터 시각화도 직접 구현해봐야 더 익숙해질 듯한데, 시간이 녹록치 않았다. 데이터 시각화 관련해서는 내가 실습을 하는 과정까지 곁들여서 정리를 할 예정이다.

회고 및 다짐

벌써 3주차가 지나가버렸다. 매일 공부에 매달리니 시간이 훅훅 지나가는 것 같다. 그래서 나는 얼마나 발전했나? 처음에 비해서 분명 발전했는데, 뭐가 발전했는지도 모를 정도로 한편으로는 제자리인 기분이다. 아직 나는 조금의 준비도 안 되어있는 것 같은데 벌써 2레벨을 맞이할 준비를 해야하니 심란하다. 나는 무얼 하고 싶은가? 당장 프로젝트 아이디어가 잘 떠오르지 않는다. 방금 전까지는 백준에서 여태 푼 문제에 맞춰 앞으로 풀 문제를 추천하는 시스템을 만들면 좋지 않을까 했는데 저번 기수에서 이미 만든 사람들이 있더라고. 비슷한 프로젝트를 진행하는 깃헙 사람들을 연결해주는 추천시스템은 어떨까? 게임으로 생각해볼까. 내가 해보고 싶은 것 중 하나는 게임에서 매크로를 탐지하는 프로그램을 만들어보는 것. 이런 건 어떨까, 마피아 게임에서 마피아를 예측하는 프로그램..! 게임 추천 시스템 자체를 만드는 것은 어떨까? 음악 추천처럼. 게임 친구 추천시스템은 어떨까? id를 검색할 수 있는 게임이라면 그 데이터를 모으는 것도 가능할 것 같다. 게임 시간대, 게임 이용 시간, 사용하는 캐릭터, 평점(인성? 이런 건 모을 수가 있나?), 티어(실력)를 활용해 친구를 추천하는 시스템을 만들어볼 수 있을 것 같다. 롤, 혹은 다른 fps라면 가능할 것 같다는 생각도 든다. 아니면 rpg 게임도 그렇다. 캐릭터를 검색할 수 있으니까 활용 방법이 있을지도 모르겠다. 

와 이거 고민하다가 시간 다 가네. 아무튼 계속 고민해봐야겠다. 내일은 팀원들과 만나 저녁을 함께 할 예정이다.
그런데 내일은 또 카카오 블라인드 코테 2차를 보는 날이기도 하다. 문제 내용은 정확히 모르지만 사전 안내 사항을 보니 이거 내가 풀 수 있는 범주의 내용이 아닐 것 같아서 일단 1차적으로 마음을 내려놓았다. 그래서 코테 보다가 시간 되면 나가서 팀원들 만날 생각. 그러나 임할 때만큼은 최선을 다하지 않으면 안 된다. 그래서 일단 미리 준비해오라고 한 것들은 지금 준비를 할 생각이다. REST API를 호출하는 것과 JSON를 파싱하는 코드를 미리 준비하라고 하던데, 난 당장 API가 무엇인지도 잘 모르겠어서 이것들을 당장 공부할 생각이다. 그래서 몇 문제가 나올지는 모르겠지만, 한 문제라도 풀어보는 게 목표이다.  문제들이 실무에서도 접할 문제들이라고 들었기 때문에 어떤 능력이 필요한지 파악하는 것이 내 진정한 목적. 나는 아직 현직에 조금도 나아가 본 적이 없기 때문에 현실 감각을 느껴보는데 큰 도움이 될 것이라 생각하고 있다. 

'일지 > 네부캠 AI 4기(22.09.19~23.02.14)' 카테고리의 다른 글

20221011  (0) 2022.10.12
20221010  (0) 2022.10.11
20201006  (0) 2022.10.06
20221005  (0) 2022.10.05
20201004  (0) 2022.10.04