머신러닝을 시작하는 개발자를 위한, (1) 머신러닝 용어정리, 분류부터 MLOps까지
안녕하세요. SQLER의 코난 김대우입니다.
처음 머신러닝(Machine Learning), 딥러닝(Deep Learning)을 시작하면서 막막했던 시간이 있었고, 많은 시행 착오가 있었습니다. 이 문서에서는 개발자의 시각에서, 어떻게 하면 더 쉽고 빠르게 머신러닝을 시작할 수 있을지 그 경험을 나눠 보려고 합니다. 이 내용은 제가 지난 SOSCON 2016 발표자료 에서 많이 인용 하였습니다.
머신러닝? 쫄지마!
그거 그냥 파편화가 심각하고, 문서화가 불친절한 SDK라고 생각하면 편해.
머신러닝을 처음 시작했을때의 느낌.
처음 시작했을때의 느낌은 참 대략 난감하다.
머신러닝, 깊이를 알기도 어렵고, 이것이 맞는 것인지, 예제라고 올라와 있는 코드들은 모두 개발 언어와 다르게 실행도 잘 안되며, 도움말이나 가이드도 매우 부족. 알고리즘들, 수학적인 내부 구조 등, 어떻게 시작해야 하는건지?
머신러닝은 더이상 새로운 기술이 아니다. 딥러닝도 Python? R로 되어있어서 러닝커브가 낮다고?
고민하지 말고, 그냥 새로운 일종의 Python이나 R의 파생언어/프레임워크라고 생각하면 편해.
Python 이랑 비슷하다고 해서 처음 시작했다가, 좌절한 경험이. 마음 편하게 새로운 언어라고 시작해도 좋다.
SQLER에서 계속 개발자를 위한 머신러닝 강좌가 제공될 예정이니 참고해도 좋을 듯.
수많은 머신러닝 관련 용어들, 분류와 정리 시작
처음 새로운 프레임워크/플랫폼으로 개발할때도, 키워드 용어만 이해하고 잘 분류해도 개발할때 반은 먹고 들어감.
머신러닝을 접할때 가장 난감한게 바로 이런 다양한 새로운(이름도 복잡한) 키워드.
- 키워드 들이 어떻게 상호 연관되어 있는 것인지?
- 어떻게 키워드들을 그룹으로 분류 가능한지?
- 실제 제품이나 서비스 벤더의 기술과 어떻게 연결되는지?
수많은 ML 문서에 나오는 다양한 용어들을 어떻게 계층적으로 그룹하고 정리할 수 있을지에 대해 시작.
인공지능 - 가장 상위의 개념
이렇게 인공지능 = AI (Artificial Intelligence) 용어를 사용. 이미지와 같이 ML도 이렇게 AI의 한 분류.
NLP나 Vision Speech도 클라우드 서비스 벤더에서 ML의 하위로 묶는 경우도 있는데, 일반적인 업계에서의 분류는 이렇게 AI가 최상위의 개념이라고 보면 됨.
"인지(Cognitive)" 라는 것은 결국 사람의 인지 능력을 AI로 대신하는 서비스를 의미하고 이 이미지 처럼, NLP나 Vision, Speech 등의 서비스가 여러 클라우드 벤더에서 비슷한 이름으로 제공됨.
그럼 머신러닝은?
엄밀한 분류로는, 이렇게 보는 것처럼 Deep Learning, Supervised Learning과 Unsupervised Learning을 포함. (Reinforcement learning도 포함)
실제 현업에서는 ML이 훨씬 더 폭 넓은 의미로 쓰이기도. 개발자의 시각에서 우선 개념만 정리해 두면 좋음.
참고로,
Cognitive Service와 클라우드 벤더의 이름만 기억해 두자, 나중에 SQLER.com 강좌에서 상세히 소개 예정
- Microsoft Cognitive Services (음성, 자언어 처리-LUIS, Face 인식, 감정처리, 동작인식, 챗봇(Bot framework) 등)
- Amazon Lex(자연어 처리, 챗봇 등), Amazon Polly(음성 변환 등), Amazon Rekognition(인지 서비스 API 모음)
- Google AI Service (비전, 텍스트, 음성, 챗봇 등)
느낌 오는 것처럼, 대부분의 벤더가 다 이름만 조금씩 다루고 대부분의 기술들은 크게 다르지 않음.
한두개 정도의 벤더 기술만 사용해보면, 나머지는 이름만 다르고 API 호출 방식만 조금씩 다를 뿐임.
자꾸 클라우드 벤더 이야기를 하는 이유는, 결국 수 많은 기술들의 종착점이기 때문.
클라우드 기술은 이제 우리에게 더 피할 수 없는 개발자의 개발도구 같은 존재(개발할때 VI 쓰시는 분들은...)
다음 강좌 글에서 계속됩니다.
머신러닝을 시작하는 개발자를 위한 - (1) 머신러닝 용어정리, 분류부터 MLOps까지
머신러닝을 시작하는 개발자를 위한 - (2) 머신러닝 서비스/프레임워크/툴킷 분류 및 전체 개발 흐름
머신러닝을 시작하는 개발자를 위한 - (3) 우리 개발자가 머신러닝을 해야 하는 이유는?
머신러닝을 시작하는 개발자를 위한 - (4) 2021년의 ML Trend - MLaaS와 MLOps(Machine Learning + DevOps)