Skip to content

머신러닝 엔지니어

Sung Yun Byeon edited this page Jan 10, 2021 · 8 revisions

머신러닝 엔지니어는 속한 도메인의 목적에 맞는 모델 생성 및 모델의 정확도를 개선해 고도화하는 업무를 합니다. 알고리즘을 만든 후, Production(실제 서비스) 단계로 적용합니다. 데이터 사이언티스트와 유사하지만 조금 더 "개발"적 관점을 가지는 직군을 머신러닝 엔지니어라고 생각합니다! 데이터 사이언티스트와 내용이 중복되는 부분이 있습니다. 아래 내용들을 가볍게 읽어보시고 추천 링크도 꼭 읽어보세요! :)

최근엔 MLOps 엔지니어라는 직군도 생기고 있습니다. ML + DevOps의 조합으로 Serving, 모델 파라미터, 데이터 처리 등을 다룹니다. 더 궁금하시면 머신러닝 오퍼레이션 자동화, MLOps를 참고하면 좋을 것 같습니다

주요 업무

  • 속한 도메인의 목적에 맞는 모델 생성 및 퍼포먼스 개선
  • 추천 시스템
    • 개인화 추천 알고리즘 개선 및 설계
  • 금융권(퀀트)
    • 금융 자산 예측 모델 연구/개발
  • 자연어 처리
    • 자연어 처리(NLP), 자연어 이해(NLU) 모델 개발
  • 컴퓨터 비전
    • Image Classification
    • Object Detection을 물체 인식
    • Segmentation
  • 음성 인식
    • 음성 인식 모델 개발
  • 강화 학습
    • 강화 학습을 적용할 수 있는 도메인에서 모델 개발
    • 게임 AI
  • 만든 모델을 Production에 붙이는 업무

필요 역량

  • 논문을 읽고 구현할 수 있는 능력
    • 논문 이해를 위한 수학 지식
    • 구현을 위한 코딩 능력(Python, Tensorflow, Spark ...)
  • 머신러닝, 딥러닝 이론 지식
  • 개발적 역량
    • Docker, Linux
  • 도메인 관련 지식

실제 업무 사례

  • 스팸 사진을 분류하고 싶은데, 어떻게 하면 될까요?
      1. 문제 정의
      • 분류
      • Task를 더 구체화 : 스팸 유무만 분류? 라벨이 여러가지?
      1. 데이터 수집
      • 모델에 넣기 위해 데이터 전처리
      • 데이터는 Database에 있는가? 클라우드 저장소에 있는가?
      1. 모델 선정 및 학습
      • 베이스 라인 모델에서 성능을 최대한 올린 후, 앙상블 또는 스태킹 등을 사용해 성능 개선
      • 하이퍼 파라미터 튜닝도 진행
      • 실제 Production에 올라갈 때는 정확도보다 모델 weight 파일의 용량, 모델의 추론 속도 등이 더 중요할 수 있음(딥러닝이 최선은 아니라는 뜻)
  • 영화 추천 모델을 만들어야 하는데, 어떻게 할까요?
  • 과거 1년치 데이터를 기반으로 내년을 예측할 수 있나요?
  • 딥러닝 모델을 실제 Production에 Serving
    • Tensorflow Serving
    • Google AI Platform
    • RESTful API
    • Kafka, Redis 등

공부 로드맵

1. 기초 다지기

  • 머신러닝/딥러닝 강의 수강
  • 선형대수 강의
  • Python 강의
  • 딥러닝 Framework
    • Tensorflow 공식 홈페이지
    • 머신러닝 엔지니어를 지향하시면 Pytorch보단 Tensorflow를 추천합니다(엔지니어링 관점에서) 리서치 위주로 진행하시면 Pytorch 추천
  • 이론만 배우고 끝이 아니고 코드로 구현해보는 연습을 꼭!!!! 해보기
    • 선형대수도 코드론 1줄이지만 직접 쳐보세요

2. 세부 분야 탐색

3-1. 논문 읽고 정리

  • 주 관심 분야를 정했으면 논문을 읽고 정리합니다
    • 블로그에 정리 추천
  • 코드로 구현해서 Github에 남기면 Best
  • 최근에 나온 논문이고 아직 구현체가 없는 상황에 먼저 만들기 : 좋은 포트폴리오
    • Reddit에 올릴 경우 인기 좋을 수 있음
  • 처음에 영어 논문 읽기가 어렵다면
  • 논문을 보다 어려운 수학이 나오면 하나씩 공부
    • 수학을 끝내고 딥러닝 시작해야지!도 정말 좋지만 끝없이 수학 공부하다 지칠 수 있으니 병행 추천
  • 논문 정리하는 방법
    • 정권우님의 Github : Issue에 태그를 달아 논문을 정리합니다. 발상이 Awesome!

3-2. 프로젝트 진행

  • 데이터 프로젝트 진행
    • 문제 정의, 데이터 수집, 모델 선정, 결론 도출의 과정을 경험해보기
    • 직접 데이터를 가지고 오기 위한 노력(크롤링 혹은 노가다..)부터 끝까지 다 해보기!
  • Kaggle Competition에 참여하는 것도 좋은 방법
    • 대량의 데이터를 다룰 수 있는 점은 Best
    • 그러나 실제 데이터는 캐글처럼 깔끔하게 내려오지 않음. 한번은 직접 데이터를 가지고 오는 삽질을 경험해보기 추천
    • Kernel에 있는 다른 분들의 지식을 통해 학습
    • 참고하면 좋은 문서 : Kaggle Knowhow, Hello-Kaggle-KOR
  • 빅데이터 공모전 참가
  • 그래도 제일 좋은 것은 개인 프로젝트!
    • 프로젝트하면서 핵심은 ~을 해봤다가 아닌, 그 경험에서 얻은 생각입니다
    • 예를 들어 딥러닝에서 Batch Normalization을 하면 성능이 좋아진다고 배웠지만 실제 데이터에선 그러지 않을 수 있습니다. 그 이유는 왜 그럴까? 데이터가 불균형해서? 아니면 데이터 도메인의 특징 때문에?
    • 기존에 알던 개념이 반드시 참은 아닐 수 있으니 이런 비판적 사고를 해보세요!

추천 링크