skip to Main Content
1544-6561|070-4842-6588 koandi.com@gmail.com

Google 직원으로서 나의 역할 중 하나는 기계 학습 (ML)에 관한 소프트웨어 개발 커뮤니티를 교육하는 것입니다. 많은 개인을위한 첫 번째 소개는 ‘모델’이라고하는 것입니다. 모델을 구축하고 튜닝하고 예측 능력을 평가하는 것이 많은 흥미와 흥미를 유발했지만 많은 조직에서는 기계 학습이 소프트웨어 개발 수명주기에 어떻게 맞춰 지는지와 같은 기본적인 질문을하고 있습니다.

이 글에서는 기계 학습 (ML)이 전통적인 소프트웨어 개발 라이프 사이클에 어떻게 맵핑되고 맞는지에 대해 설명합니다. 이 매핑을 기계 학습 수명주기라고 합니다. 이것은 모델을 포함한 기계 학습을 소프트웨어 개발 프로세스에 통합하는 방법을 생각할 때 도움이 될 것입니다.

machine_learning_ecosystem.png

기계 학습 라이프 사이클은 계획 (빨간색), 데이터 엔지니어링 (파란색) 및 모델링 (노란색)의 세 가지 주요 단계로 구성됩니다.

계획

소프트웨어 개발자가 코딩 한 정적 알고리즘과 달리 ML 모델은 학습되고 동적으로 업데이트되는 알고리즘입니다. 소프트웨어 애플리케이션은 디자인 패턴에 의해 정의되고 소프트웨어 엔지니어에 의해 코딩되고 계획된 작업을 수행하는 알고리즘의 합병으로 생각할 수 있습니다. 응용 프로그램을 프로덕션 환경에 릴리스하면 계획대로 수행되지 않을 수 있으므로 개발자는 다시 생각하고 다시 디자인하고 다시 작성해야합니다 (지속적인 통합 / 연속 제공).

우리는 이러한 정적 알고리즘 중 일부를 본질적으로 동적 알고리즘 인 ML 모델로 대체하는 시대에 접어 들고 있습니다. 이러한 역 동성은 제품 소유자 및 품질 보증 (QA) 팀과 함께 일하는 기획자에게 새로운 과제를 안겨줍니다.

예를 들어 품질 관리 팀은 측정 항목을 테스트하고보고해야합니까? ML 모델은 종종 신뢰 점수로 표현됩니다. 모델이 평가 데이터 세트에서 97 % 정확함을 보여 주었다고 가정 해 봅시다. 품질 테스트를 통과 했습니까? 정적 알고리즘을 사용하여 계산기를 구축하고 97 %의 응답을 얻은 경우, 그 시간의 3 %를 알고 싶습니다.

마찬가지로, 기계 학습 모델을 사용하여 일상 업무를 어떻게 처리합니까? 어제 배운 내용과 오늘 학습을 기대하는 부분에 대해 교육 과정에서 매일 아침 빠른 업데이트를 제공하는 것과는 다릅니다. 팀이 데이터 수집 / 청소 및 하이퍼 매개 변수 조정에 대한 업데이트를 제공 할 가능성이 큽니다.

응용 프로그램이 릴리스되어 지원되면 일반적으로 사용자 문제를 해결하기위한 정책이 개발됩니다. 그러나 지속적인 학습 및 강화 학습을 통해이 모델은 정책을 학습하고 있습니다. 어떤 정책을 배우고 싶습니까? 예를 들어, 사용자 인터페이스를 탐색 할 때 사용자 마찰을 관찰하고 감지하고 마찰을 줄이기 위해 인터페이스 (Auto A / B)를 적용하는 방법을 배울 수 있습니다.

효과적인 ML 라이프 사이클 내에서 모든 단계에 계획을 임베드하여 조직과 관련된 이러한 질문에 대답을 시작해야합니다.

데이터 엔지니어링

데이터 엔지니어링은 대부분의 개발 예산이 소요되는 곳입니다. 일부 조직에서는 공학 기금의 70 ~ 80 % 정도를 사용합니다. 학습은 데이터 – 많은 데이터 및 올바른 데이터에 의존합니다. 쓰레기통, 쓰레기통과 같은 옛 소프트웨어 공학 경구와 같습니다. 모델링에 대해서도 마찬가지입니다. 잘못된 데이터가 입력되면 모델이 알아 차리는 것은 잡음입니다.

소프트웨어 엔지니어와 데이터 과학자 외에도 실제로 데이터 엔지니어링 조직이 필요합니다. 이러한 숙련 된 엔지니어는 데이터 수집 (예 : 수십억 개의 레코드), 데이터 추출 (예 : SQL, Hadoop), 데이터 변환, 데이터 저장 및 데이터 처리를 처리합니다. 이는 물리적 리소스의 대부분을 사용하는 데이터입니다 (영구 저장 및 컴퓨팅). 일반적으로 규모가 크기 때문에 클라우드 서비스와 기존의 일회용 방법을 사용하여 처리됩니다.

데이터 클라우드 운영의 효과적인 배치 및 관리는 데이터 운영 분야의 숙련 된 전문가 (DataOps)가 처리합니다. 데이터 수집 및 검색은 데이터웨어 하우징 (DBA) 분야의 전문가가 처리합니다. 데이터 추출 및 변환은 데이터 엔지니어링 분야의 전문가 (데이터 엔지니어)가 처리하며 데이터 분석은 통계 분석 및 시각화 분야의 전문가 (데이터 분석가)가 처리합니다.

모델링

모델링은 소프트웨어 개발 라이프 사이클 전반에 걸쳐 통합됩니다. 한 번만 모델을 훈련하면 완료됩니다. 예산 조건 및 단순화를 고려한 원 샷 교육의 개념은 학업 및 단일 태스크 사용 사례에서만 효과적입니다.

비교적 최근까지 모델링은 데이터 과학자들의 영역이었습니다. 초기 ML 프레임 워크 (Theano와 Caffe와 같은)는 데이터 과학자를 위해 설계되었습니다. ML 프레임 워크는 진화하고 있으며 오늘날에는 Keras와 PyTorch와 같은 소프트웨어 엔지니어의 영역에서 더 많이 사용되고 있습니다. 데이터 과학자는 기계 학습 알고리즘 및 그 병합의 종류를 연구하고, 비즈니스 정책 및 방향에 대해 조언하며, 선도적 인 데이터 중심 팀의 역할을 수행하는 데 중요한 역할을합니다.

그러나 ML 프레임 워크와 AlaS (Service as a Service)가 발전함에 따라 대부분의 모델링은 소프트웨어 엔지니어에 의해 수행됩니다. 오늘날의 데이터 엔지니어가 수행하는 기능인 피쳐링 (feature engineering)도 마찬가지입니다. 데이터 온톨로지, 네임 스페이스, 자체 정의 스키마 및 인터페이스 간의 계약과 관련된 기존 작업과의 유사성 때문에 소프트웨어 엔지니어링의 영역으로 옮겨 갈 것입니다. 또한 많은 조직이 소프트웨어 엔지니어가 사용하고 데이터 작업에 의해 관리되는 클라우드 기반 서비스로 모델 구축 및 교육을 이동합니다. 그런 다음 AIaaS가 발전하면서 모델링은 Cloud Vision  및 Cloud Speech-to-Text 와  같은 클라우드 API를 통해 액세스 할 수있는 턴키 솔루션의 조합으로 전환합니다 AutoML과 같은 전송 학습 도구를 사용하여 사전 훈련 된 알고리즘을 사용자 정의 할 수 있습니다.

Keras와 PyTorch와 같은 프레임 워크는 이미  심볼 프로그래밍  을  명령형 프로그래밍  (소프트웨어 개발에서 지배적 인 형태)으로 전환하고 상속, 캡슐화 및 다형성과 같은 객체 지향 프로그래밍 (OOP) 원칙을 통합했습니다. 다른 ML 프레임 워크가 데이터베이스, 데이터 소스 및 추론 (예측)에 이미 사용하고있는 객체 관계형 모델 (ORM)을 포함하도록 진화 할 것으로 예상해야합니다. 일반적인 베스트 프랙티스가 진화하고 업계 전반의 디자인 패턴이 정의되고 발표 될 것입니다.  이는 Gang of Four의 디자인 패턴 이 OOP의 진화에 어떻게 영향을 주 었는지와 같습니다  .

지속적인 통합 및 전달과 마찬가지로 지속적인 학습도 구축 프로세스로 이동하고 구축 및 안정성 엔지니어가 관리합니다. 그런 다음 응용 프로그램이 출시되면 야생에서의 사용 및 적응은 데이터 형태로 새로운 통찰력을 제공하여 모델을 다시 학습 할 수 있도록 모델링 프로세스로 피드백됩니다.

보시다시피, 기계 학습을 채택하는 것은 단순히 모델을 훈련하는 학습의 문제가 아니며, 완료되었습니다. ML 모델이 기존 시스템 및 프로세스에 어떻게 적용되는지 깊이 생각하고 이에 따라 직원을 성장시켜야합니다. 저는 소프트웨어 개발주기를 업그레이드하여 기계 학습을 수용 할 수 있도록 최선을 다하겠습니다. Google Cloud에서 기계 학습에 대한 자세한 내용을 보려면 Cloud AI 제품  페이지를 방문  하십시오.

Back To Top