머신러닝 엔지니어란?
인공지능 모델을 만들고 서비스에 적용하는 개발자
기존에 발표된 모델을 서비스에 적용하는 역할
머신러닝 엔지니어 업무 예시
목표: 리뷰 긍부정 분석 모델 개발
자신이 갖고 있는 데이터에 따라 어떤 모델이 좋은지 잘 모르기 때문에 여러 모델들을 세팅해놓고 확인
프로젝트 단위 업무 계획
1. 리뷰 긍부정 학습셋 구축
2. 1차 베이스라인 NB 모델 학습
3. 1차 결과 공유 및 웹데모 제작
4. 우저메타정보피쳐 추가 모델 학습 및 2차 결과 공유
5. 서비스 적용을 위한 파이프라인 구축
6. 학습셋 추가, 긍부정 사전피쳐 추가로 점진적인 모델 개선
7. 팀 및 외부업체 Labeling 작업으로 품질 검수
8. 사전 및 모델 기반 예외처리 & 필터링 & 방어로직 적용
9. 배포 및 서비스 오픈
10. ctr, 체류 시간 등 서비스 지표 변화 확인
머신러닝 엔지니어에게 중요한 자질
모델링 센스
: 어떤 데이터를 어디서 가져와서 학습하고 서비스를 만들겠다.
머신러닝 업계에 가장 빠르게 적응하기
- 결국 회사 생활이란 "기여"할 수 있는 포인트가 필요
- ML 역량이 부족하면?
머신러닝 < 엔지니어 역할이 더 중요할 수도 있음
우선 코딩을 잘해야 그 다음도 있다. ex) 웹 데모, 가독성 있는 코드
- 코딩이 부족해도 ML 역량이 충분하다면?
부족한 코딩 부분을 극복할 수 있음
- Fast Learner가 되는 것이 중요
구글과 유튜브
- 외부 커뮤니티를 활용하는 것도 도움이 됨
모두의 연구소
가짜 연구소
TensorFlowKR
머신러닝 엔지니어가 내게 맞는지 고민된다면?
다양한 문제를 풀어내는데 관심이 많으면 O
ML 모델 자체를 연구하기 보다 기존 모델을 활용해 빠르게 서비스를 만들어내고 싶다면 O
나에게 잘 맞는 직무, 기업을 알아보는 방법
기업 지원 페이지에 들어가서 나에게 필요한 역량부터 확인
취업 준비
- 업계 포트폴리오 스탠다드는 Github과 기술블로그
- 어떤 컨텐츠로 채워나갈지는 본인의 전략
- 유명한 논문중 난이도가 쉬운 모델 재구현
- 스터디 내용 정리
- 프로젝트 데모
- 코딩테스트 풀이 정리
- 다양한 프로젝트를 경험하고 결과물들을 모두 포트폴리오화 하자
- Kaggle과 같은 Competition도 실력 향상 및 포트폴리오에 도움이 됨
- 코딩테스트
- 온라인 석사에 관심이 있다면?
직무를 수행하기 위해 필요한 역량
- 석사가 필요한가요?
- 갈 수 있으면 좋겠지만 필수는 아님
- 인터넷에 이미 좋은 자료들이 많고 요즘 학부에서도 ML/DL을 많이 배우기 때문
- 결국 본인이 하기 나름
- 빠르게 배울 수 있는 학습 능력(구글링, 논문읽기)
- 다양한 시도를 할 수 있는 빠릿함
- 모델링에는 정답은 없다
한 가지만 개선을 시도하는 게 아니라 여러 모델을 줄지어서 테스트해보는게 더 효과적
소 잡는 칼이 아니라 닭 잡는 칼로도 풀리는 문제가 많다
- 문제 정의 능력(모델링 능력)
- 현재 서비스에서 무엇이 문제인지
- 내가 사용할 수 있는 데이터와 피쳐는 무엇인지
- 가장 간단한 방법으로 가장 크게 기여할 수 있는 것이 무엇인지
- 커뮤니케이션 능력
- 훅 들어오는 상사/기획자의 질문에 대답해야함
- 모델링 결과를 수시로 보고해야 할 때도 있음
recall은 조금 떨어지지만 precision이 매우 높기 때문에 이 모델은 배포해도 괜찮을 것 같아요 등..
- Python
- 사이킷런, Numpy, Pandas, Matplotlib
- PyTorch
- TensorFlow
- 머신러닝/딥러닝/통계관련 지식
- 학습기법(지도학습/비지도학습)
- 모델(뉴럴넷, 트리모델, 선형모델)
- 평가방법(Precision, recall, F1 Score)
- Web (데모 구현)
- BackEnd: Flask
- FrontEnd: Bootstrap
- DB
- SQL
- Elasticsearch
- Kibanan(지표확인)
- 빅데이터처리 경험(입사해서 보통 학습)