시작하며
지난 12월 29일 박종천 님의 ML 기초 세미나가 있었습니다. (행사 링크 [OKKY 12월 세미나] 모두를 위한 ML / Data, ML, Service, and Platform) 본 글은 해당 세미나 내용을 간략하게 마크다운으로 남깁니다.
박종천님은 유튜브 개발자가 갖추어야 할 9가지 기술 10만뷰 영상으로 유명하시며 과거 한글과컴퓨터에서 초기 한글 개발에 참여하셨으며 블리자드 재직시절 스타크래프트 한글화 지원 패치를 하신분입니다.
강연 일부 내용을 간략하게 남깁니다. 강연 자료는 okky에 아직 업로드되지 않은 상태라 추후 업로드되면 본 글에 링크를 남기겠습니다. 본문의 삽화는 강연 슬라이드에서 언급하신 자료의 원본 자료입니다.
발표자 박종천님
현) TBT 고문 (Advisor)
현) MOLOCO Head of Solutions Architecture
전) 삼성전자 무선사업부 상무/그룹장
전) 넥슨 VP of Platform Technology
전) Blizzard 미국 본사 Lead Software Engineer
행사를 주관해주시고 강연 요약을 블로그에 남길 수 있도록 허락해주신 okky 관계자분들께 감사의 말씀을 남깁니다.
모두를 위한 ML
ML의 시대
- 지금은 ML 시대
- 각 시대가 펼쳐졌을 때 새로운 회사가 등장하여 세상을 지배하였다
- MS가 PC 시대. 구글이 인터넷의 시대. 애플이 모바일의 시대
디지털 전환
- 회사에서 데이터로 일하는지 주먹구구로 일하는지?
- 데이터 기반으로 모든 의사결정을 내리는 것이 디지털 트랜스렌스포메이션(Digital Transformation)이다.
- 디지털 전환을 잘하기 위해서 4가지 역량이 필요하다.
- 기술 역량, 데이터 역량, 프로세스 역량, 조직 변화 역량
- 디지털 전환 이후에야 쓸만한 데이터가 나와서 ML을 할 수 있다.
데이터
- 크게 두 가지 용도
- 사람이 보기 위한 용도
- 기계가 보기 위한 용도
- 사람이 보기 위한 용도의 데이터
- 몇 분 플레이 했는가? → 사람이 볼 수 있게(시각화) → 사람이 이해하여 의사결정
- 그러나 사람의 한계속에 갇혀 있다. 1백만 명의 평균적으로 좋아한다. 싫어한다는 할 수 있어도 1백만 명 각각에 대해서 컨트롤하기는 불가능함
- 이커머스라면 제일 잘 팔리는 것을 뽑아서 보여줄 수는 있어도 이 사람이 무엇을 좋아하는지 뽑아주기는 힘들다.
- 기계가 보기 위한 용도
- 데이터를 기계에 주어서 개인화.
- 게임이라면 이 판을 어렵다고 생각하는 사람에게 쉽게 해준다.
머신러닝
- 인공지능은 1950년 때부터 있던 개념
- 머신러닝 즉 기계가 학습하여 사람과 비슷한 것을 할 수 있다는 것을 발견하였다.
- 기계학습을하다보니 복잡한 레이어를 만들어서 데이터를 주어 학습하니 더 똑똑하더라.
- 최근의 머신러닝은 다 딥러닝이다.
- 전통적인 프로그래밍은 데이터와 규칙을 주면 결과가 나왔다.
- 문제는 데이터와 규칙 기반은 조금만 어려워저도 불가능하다. (ex. 개와 고양이를 규칙으로 분류할 수는 없다.)
- 머신러닝은 굉장히 좋은 기계에서 무지막지한 랜덤을 돌려서 하다 보니 찾아지는 것이다.
- 사람도 마찬가지다. 개 사진 100장, 고양이 100장을 보고 혼자서 규칙을 만든 것이다. 머신러닝도 마찬가지다. 개 100장, 고양이 100장 보고 규칙을 판단하는 것이다.
- 머신러닝은 데이터와 결과가 있다면 규칙을 만들 수 있다.
머신러닝의 시대
- 왜 지금 ML이 각광 받고 있을까?
- 규칙을 찾아내는 다양한 알고리즘이 있다.(CNN, DNN ..) 최근에 많이 나오고 발전했다.
- 데이터를 구하기 쉬워졌다. 지금이야 고양이, 개 사진 구하기가 쉽지만 20년 전은 어려웠다.
- 머신러닝 학습을 위해서는 굉장한 컴퓨팅 파워가 좋아졌다.
머신러닝의 세 가지 학습 타입
- 지도학습(Supervised Learning)
- 입력과 정답을 주고 학습한다.
- 데이터가 많이 있어야 하고 정답지가 있어야 한다.
- ex. 쇼핑몰에서 사용자가 다음 살 물건은 무엇일까? 사용자가 광고를 클릭할 확률은 무엇일까?
- 그러나 세상 모든 데이터에 정답지를 줄 수 없다.
- 비지도학습(Unsupervised Learning)
- 정답지 없는 상태에서 데이터만 주고 맞추자
- 강화학습(Reinforcement)
- 아예 데이터가 없는 상황이다.
- 게임을 이기는 것은 정답이 없고 상황이 다르다.
- 체스를 두고 나서 이겼으면 잘하네. 졌으면 다시 해봐. 데이터 자체를 만드는 것이다.
머신러닝 시스템
- 데이터 수집
- 데이터에서 피처 추출
- 고양이와 개를 두었을 때 사진 속에서 작게 있다. 이러면 의미 없다.
- 쓸모있는 데이터만 넣는다. 고양이 얼굴만 넣어도 충분하다.
- 같은 해상도의 사진으로 변환
- 모델
- CNN, DNN 등등
- 혼자만의 방식으로 이렇게 개와 고양이를 판단 가능하구나. 규칙을 만듦.
- 인프라
- 하나 학습하는 데 6시간 걸리면 업무가 안 돌아간다.
- 향상
- 한번 학습해서 끝나지 않는다.
- 세상의 데이터는 무한하다. (새로운 개와 고양이 스타일이 등장할 수 있다.)
- 데이터에 의해서 루프가 돌아야 한다.
- 쇼핑몰이라면 사용자에게 물건을 추천해주었다. 사용자가 사지 않으면 잘못 추천한 것이다. 이를 바탕으로 다시 학습
머신러닝 실패
- ML은 다 성공하지는 않는다.
- 나쁘거나 너무 편향되면
- Underfitting
- 개와 고양이 사진이 각각 너무 다르다.
- 다른 사진 주면 바로 틀린다.
- Overfitting
- 개가 서로 너무 비슷. 고양이가 서로 비슷
- Slow Training
- 학습 이미지 하나에 100MB다.
MLOps
- 추천 → 클릭 → 데이터 발생 → 다음 추천에 사용 루프가 무한히 돌아가야 한다.
- MLOps가 안되어있으면 1달 후 1년 후 돌지 않을 수 있다.
Enterprise ML
- 회사에서 ML을 쓰는 것을 Enterprise ML이라고 한다.
- Enterprise ML은 생산, 판매, 제품, 광고 4가지로 나눌 수 있다.
- 생산
- 생산하며 나오는 데이터로 더 생산을 잘한다.
- ex. 스마트 팩토리
- 판매
- ex. MarTech(마케팅 + 기술), 고객 관계 관리(CRM)
- 제품
- 개인화 추천
- ex. Youtube(광고, 영상 추천, 자막, 번역)
- 광고
ML 산업
- 네 가지 산업
- 개인화
- 사용자 데이터 + 타켓 아이템 데이터 + 상호작용(이런 영화를 보았다, 구매했다) → 미래 예측 가능
- 시계열 예측
- 미래를 예측
- 날씨는 어떻게 될까?
- 물건이 얼마나 팔릴 수 있을까?
- 글자 / 소리 / 이미지 / 비디오 인식 및 생성
- 자연어 처리
- 개인화
- 머신러닝도 사람이 할 수 있는 일은 다 할 수 있지만, 쓸모 있는 것으로 발전
ML 플랫폼(MLaaS)
- 우리가 직접 ML을 만드는 것은 어려운 것. 어마어마한 데이터, 새로운 데이터로 다시 학습해야 함. 쉽지 않음
- 앞서 본 것은 ML 플랫폼에서 잘 지원하고 있음
- 개인 추천: Moloco Recommendation Engine
- 시계열 예측: Amazone Forecast
- 이미지 인식: Google Cloud Vision AI
- NLP 번역, 챗봇 등등...
- Amazone SageMaker
- 우리 데이터는 독특하고, 직접 모델링이 필요해서 로우 레벨로 만들어야 하는 경우
- 데이터와 정답지에만 집중하고 MLOps는 시스템이 처리
좋은 ML 플랫폼 기준
- 1,2에 집중하고 나머지는 아마존, 에저에 맡기자
- Scale of Business
- 비즈니스가 커져서 처음에는 감당 가능하다가 이후 몇십억식 들어간다면?
- 비용이 기하급수적으로 늘지 않는 것
- Experienced Talents
- ML을 만든다는 것은 어려운 것
- 유능한 인재가 있어야 함
- Business Impact
- 사업적으로 영향력이 있어야 함
실제 어떻게 ML을 활용하는가?
- 당근마켓 사례
- 설명도 자신들이 올리고 설명도 제각각.
- 검색과 필터링이 어려움
- 처음에는 자체적으로 상품 이미지 인식, 이후 Google 사용
- 부적절한 단어도 ML을 이용하여 처리
ML 산업
- 왼쪽 회사: 머신러닝 기술을 사용하는 회사
- 오른쪽 회사: 머신러닝 기술을 만드는 회사
- ML 산업은 발전하는 중
- 앞서 말한 네 가지 카테고리(개인화, 시계열 예측, 이미지 비디오 인식, 자연어 문자 처리) 혹은 플랫폼으로 제공
Q&A
ML Q&A
데이터 사이언스가 MLOps를 알아야할까?
알아야 한다. 데이터에 관한 사람을 세 가지로 분류
- 데이터 엔지니어 - 데이터에 관한 모듈 제작
- 데이터 에널리스트 데이터 사이언티스트 - 데이터 보고 분석.
- ML 엔지니어 - 모델 만지는 거
- ML 파이프라인을 만드는 사람, 모델을 만드는 사람, 데이터를 분석하는 사람 직군이 나뉜다. 전체적인 그림은 알아야 한다.
앞으로 머신러닝/딥러닝이 주목하는 모델 혹은 기술?
- 사업에 도움이 되어야 한다. 강의 중에 말한 네 가지 카테고리. 인터넷을 많이 쓴다고해도 메일, 웹 페이지 몇 개 없다. 인터넷이 대단하지만 상용화된 카테고리는 몇 개 안된다. 여기서 많이 쓰일 것은 몇개 안된다.
- 머신러닝의 가장 큰 문제점은 룰을 뽑아낼때 고양이 사진 100장, 강아지 사진 100장 주었고 룰을 뽑아낼때 이해할 수 없는 모델이 나온다. 말 그대로 설명이 안된다. 모든 고양이, 개 100% 맞추지 못한다. 사람도 100% 못 맞추는 것처럼 머신러닝도 마찬가지이다. 많은 데이터를 준다고 하더라도 영원한 미래에 맞출 것은 아니다. 훈련해서 나오는 모델의 내부 구조는 말 그대로 주사위 100만 번 굴려서 생긴 결과여서 설명할 수 없다. 우리가 설명할 수 없는 것에 자잘한 것은 맞길 수 있지만 큰 일은 맞길 수 없다. 사람 수술, 운전 등등 생명에 직결되는 것을 AI에 맞길 수 있는가? 이해하지 못하는데 맡길 수 있는가? 사람이 이해할 수 있는 인공지능을 만들어야 한다는 것에 이슈가있다. 이게 해결이 되어야지 머신러닝이 미래로 점프할 수 있다.
개발자로서 사내 데이터를 가장 효과적으로 사용할 수 있는 상황
- KPI에 기본이 되는 데이터를 수집. 좋은 대시보드로 보여주고 서비스를 낼 때마다 대시보드를 봐야 한다. 기능 출시할 때도 A, B테스트. 서비스를 나가면 해당 서비스의 모든 자료를 수집하고 개선할 수 있어야 한다.
- 데이터가 금광에서 금을 캐듯 접근하면 잘못된 것. 측정하고 싶은 게 있고 측정하고 싶은 것을 어떻게 측정할지. 어떻게 우리 서비스를 숫자로 표현하지? 즉, 데이터 기획자가 필요하다. 어떤 데이터를 어떻게 수집해서 어떻게 볼 것인지 봐야 한다.
ML Platform이 model을 위한 life cycle 관리 도구인지?
맞다. 도입시 고려해야 할 상황은 강의 중에 말한 것과 같다.
- 스케일이 되는지
- 비즈니스에 도움이 되는지
- ML Platform을 만드는 회사에 좋은 인재들이 많은지
설계 자동화를 하는데 데이터가 많지 않다. 어떻게 할까?
지도학습, 강화학습 이야기할 때 말한 것. 데이터가 조금이라도 있으면 정답지를 주고 훈련. 데이터가 없으면 만드는 것부터 해야 한다. 첫 단추를 돌리는 것보다 중요한 것은 루프가 돌게 한다.
자율주행 데이터를 만들어서 훈련했다. 차가 굴러간 다음에 계속 학습할 수 있는 ML 싸이클을 만들어야 한다.
데이터와 정답지를 쉽게 구할 수 있는 분야가 ML 하기 좋다. 안 그러면 힘듦
비전공자의 ML직군 이력서 작성방법?
- 어디를 가냐에 따라 다르다. 비전공자가 ML로 가는 것은 불가능에 가깝다.
- ML을 잘 사용해야 하는 것은 맞지만, 천재적 지능을 발휘해서 놀라운 것은 쉽지 않다. 잘 사용하는 쪽으로 가자. 인터넷을 이해해서 잘 활용하는 서비스를 만들자. 인터넷 3.0을 만드는 것은 아닌 것처럼. 어떻게 쓸까에 집중하자
ML 사용하는 회사 조건
- 데이터와 사용량도 당연히 어느 정도 있어야 한다
- 루프가 돌아야 한다. 이미 있는 데이터, 사용자 데이터를 바탕으로 결론을 내고 사용자의 반응을 다시 보는
- 행동 데이터가 더 중요하다. 사용자가 23살이다. 보다는 어제는 ~ 구매, 오늘은 ~를 구매했다가 소중하다.
- 안 좋은 데이터 왕창 있는 것보다 좋은 데이터가 있어야지 의미 있다.
ML의 학습 데이터의 응용은 어떻게 가능한가?
- ML은 데이터가 왕창 있고 정답지가 왕창 있는데 자기 혼자서 고민하다가 룰을 찾아낸 것이다. ML은 데이터 자체로서 이해 못 한다. 그냥 비트이다.
- 기계가 어떻게 판단했는지 이해하려고 하면 안된다.
- 남세동님의 머신러닝 강의를 참고하라.
ML 학습에 추천하는 강의
- 기초는 남세동님
- 직접 ML을 하고 싶다면 많다. 나중에 정보 남겨드리겠다.
- ML을 알기 위해서 모델링 하는 것은 좋은데 이걸로 비즈니스 돌리겠다는 것은 다르다.
- 공부와 사업은 큰 차이가 있다.
- 집의 컴퓨터는 스스로 조립해도 IDC 컴퓨터를 직접 조립할 수는 없다.
머신러닝의 실생활 변화 사례
- 구글의 작년 매출 200조인데 머신러닝을 사용한 광고이다.
- 아직 대한민국에서 모으는 데이터가 100이라고 하면 사람이 쓰는 것은 10도 안 될 것이다. 50은 써야 한다. 안 쓰는 데이터가 너무 많다.
엔터프라이즈 ML의 고려사항은?
- 굉장히 많은 데이터를 넣어야지 좋은 결과를 뽑아낸다.
- 테슬라 같은 경우에도 전 세계 모든 도로를 다녀봐야 똑똑해진다.
- 한국에서 운전 많이 해도 캐나다에서 운전하려고 하면 헤매는 것처럼
- 많은 데이터를 처리할 수 있어야 한다.
온 디바이스 머신러닝(인베디드 머신러닝) 미래
- 테슬라 서버로 가서 학습한다. 학습한 모델을 차에 배포한다.
- 문제는 계속 데이터가 서버로 가는 것이다. 개인정보 이슈와 네트워크 트래픽이 엄청나다.
- 쇼핑몰의 경우 다른 사람에게 추천해야 할 것은 사용자가 모바일 엡을 열었을 때 그동안의 데이터를 바탕으로 추천해서 돌아오는 것이다.
- 미래에 로봇 청소기가 있다. 집에 가져와서 제일 처음에 집안 구조를 공부해야 한다. 우리 집의 구조가 기계를 벗어나기 싫다.
- 굉장히 많은 데이터가 기계를 벗어나지 않고 학습하는 것. 이러기 위해서 컴퓨팅 파워가 무지막지해야 한다. 그러나 미래에는 가능할 것이다.
- 애플 M1 칩이 이런 점이 상당히 강력하다. 아이폰이 밖으로 나가지 않더라도 개인 정보 한 달 모아서 맞춤형 서비스가 가능할 것이다.
- 장래가 밝다고 생각한다.
개발 일반 Q&A
문제 해결능력을 어떻게 향상시킬 수 있을지
- 엔지니어는 문제 해결에 집중한다.
- 떡볶이가 먹고 싶어! → 이 근처에 ~가 있어
- 나는 배가 고픈데 매운 것을 먹고 싶어 다. 결국, 떡볶이가 먹고 싶어 솔루션에 대응하는 것이 아니라 문제(욕구)에 대해서 질문해야 한다. 배고파? 왜 먹고 싶어 하지? 매운 것을 먹어야겠어? 문제 분석능력을 키우는 것이 중요하다.
- 문제 원인을 고민하자.
개발자의 붐이 끝날지
- 앞으로도 붐이다.
- 그러나 실력을 쌓아야 한다.
- 어떤 기술이라도 습득해서 쓸 수 있는 습득능력, 협업능력이 필요하다.
- 30년째 일하고 있지만 30년 전부터 부족했다.
자기 계발은 어떻게 하는지?
- 책을 많이 읽고 사람을 많이 만난다.
- 코로나지만 줌으로 130명 정도 만나서 책으로 정리했다.
커리어 고민
- U자형 인재. 프론트, 백 다 알고 그러나 내가 하나는 충분히 깊게 알아야 한다.
- 리엑트의 설계자가 왜 이렇게 설계했을지 고민할 수 있을 정도여야 한다.
- 부전공은 있어야 한다. 전공은 백엔드, 부전공은 프론트
- 업계 상황을 봤을 때 하나만 알아서 부족하다.
사수가 없는 상황에서 어떻게 발전할까?
- 사수가 없으면 혼자 발전할 수 없다.
- 좋은 사수가 있는 곳에서 성장할 수 있는 회사가 중요하다.
- 사수가 없으면 밖에서 찾아봐라.
- 사수는 사내, 사외에도 있으면 좋다.
신입 채용할 때 무엇을 보는지?
- 똑똑한가? - 학습능력이 뛰어난 사람
- 부지런한가? - 똑똑해도 부지런하지 않을 수 있다.
- 착한가? - 세상에 악하고 이기적인 사람이 많다. 이러한 사람은 조직을 와해시킨다.
'Note' 카테고리의 다른 글
세 번째 회사로: 네이버 웹툰에 가기까지 (59) | 2022.10.29 |
---|---|
레거시 폭파 프로젝트 이야기 (두 달간의 회원 가입 서비스 레거시 개선 회고) (7) | 2022.07.21 |
오픈소스 용감한 친구들 21년 회고 (13) | 2022.01.01 |
메타버스 개발자에서 커머스로 주니어 개발자 1년 회고 (23) | 2021.12.26 |
재택근무를 위한 서버 개발자 책상 업그레이드 (22) | 2021.07.25 |