< 2주차 데이터 분석 소개(3) >
머신러닝을 기반으로 한 제품 개선이 무엇인지 알아보자!
3-1. 데이터 기반 제품 개선(Product Science)이란?
: 머신러닝 기술을 사용해 제품/서비스의 기능을 개선하는 것에 대해 살펴보자.
데이터 과학자의 역할(Product Science)
- 머신러닝 형태로 사용자들의 경험을 개선
: 중요한 문제를 정의(가설 정의) -> 데이터 수집(머신러닝 모델에 따라 수집방법이 달라짐) -> 예측 모델 생성 -> 테스트
(테스트는 훈련데이터의 일부를 사용 / A.B 테스트를 수행하는 것이 좋음)
(짧은 사이클로 단순하게 시작해서 고도화하는 것이 좋음 -> 에자일 방법론)
데이터 과학자에게 필요한 스킬셋
: ML/DL에 대한 깊은 지식과 경험
: 코딩 능력(파이썬, SQL)
: 통계 지식, 수학 지식 -> 있으면 좋지만 필수는 아님!
: 끈기와 열정 (박사 학위가 도움이 되는 이유 중 하나)
: 다양한 경험 (여러가지 경험을 해 본 사람들이 오히려 경험을 통해 새로운 인사이트를 뽑아낼 수 있음! )
: 현실적인 접근 방법 -> 애자일 기반의 모델링(워터풀 모델링 X ), 딥러닝이 모든 문제의 해답은 아님!
: 과학적인 접근 방법 -> 지표기반 접근, 모델의 목표와 측정 방법
=> 제일 중요한 것은 모델링을 위한 데이터! -> 데이터 보유량이 새로운 빈부격차를 보임
모델 개발 전체 과정(애자일 방법론)
문제정의(가설 정의)
-> 훈련용 데이터 수집 -> 모델 빌딩 및 테스트 -> 모델 배포 -> 모델 A/B 테스트 -> A/B 테스트 결과 분석
-> 모델 개선 -> 전체 론칭
3-2. 머신 러닝이란?
머신러닝 모델링 예 - 개인화된 추천 엔진
: "유데미" 회사에서는 추천 시스템을 규칙 기반에서 머신 러닝 기반으로 전환.
-> 머신러닝 모델 도입 전에는 마케터들이 규칙 기반 추천 ->마케터들의 의욕이 떨어질까봐.. A/B 테스트를 통해 그 장점을 실제로 테스트해서 보임
머신러닝 모델링 예 - 사기 결제 감지
강의를 살 때 사기 결제 케이스가 발생함
-> 훈련 데이터를 수집하는 두 가지 방법
1) 실제 사례 수집(신용카드 회사와 협업)
2) 이상값 탐지를 실행하고 사람에게 검토 요청(휴먼 인더 루프)
=> 패턴을 찾아 사기 결제 감지
(만약 훈련데이터가 잘못 수집되었다면.. 머신러닝이 편향성을 가져 윤리적인 문제가 발생할 수 있음
/ ex. 제약회사에서 인종 및 나이등의 훈련데이터에 편향이 있어 제대로 모델 개발을 못하면 다양한 윤리적 문제 생길 수 있음)
머신러닝 모델링 예 - 환자 이상 징후 예측
- 원격 환자 모니터링에 많이 사용됨
- 환자의 다양한 측정 데이터를 기반으로 환자의 상태가 혹시라도 치료를 필요로 하는지 예측
-> 환자의 문제가 커지기 전에 환자의 병원 입원이나 응급실 방문을 막는 것! 100% 정확할 필요 없이 50% 정도만 정확해도 좋음
머신러닝 모델링 예 - 농업용 자율 트랙터
- 존디어는 ML을 사용하여 자율 트랙터 개발
-> 밭을 탐색하고 사람보다 더 효율적으로 심기 및 수확과 같은 작업을 수행
의료 이미지 (Medical Imaging) 분석
: 기존에는 사람이 분석하여 시간이 매우 오래걸림.
- 로봇 방사선 기술자의 대두
- VoxelMorph라는 오픈소스 프레임웍은 딥러닝을 이용해 몇 초만에 MRI 분석
-> 시간 축소 및 정확도 향상
- 초음파 사진 기반의 심장병 진단 기술
그러나, 잘못된 진단의 경우 누구 책임인가?
따라서, 사람이 한 번 더 확인필요 -> 머신러닝 모델이 사람의 일 완전 대체가 아닌 정확성을 높이는 수단임.
3-3. ML 모델 개발시 고려할 점
: 머신러닝이 무엇이고 어떤 종류가 있을까?
머신 러닝(Machine Learning)의 정의
: 구체적으로 프로그래밍을 하지 않고 배울 수 있는 능력을 컴퓨터에게 주는 분야의 연구
"배움이 가능한 기계의 개발"
- 결국 데이터의 패턴을 보고 흉내내는 방식 (imitation)
- 컴퓨터가 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야 (지도학습 / 비지도학습)
- 딥러닝(인공신경망)은 이 중의 일부 -> 컴퓨팅 자원을 많이 사용. 클라우드 개념이 나오며 발전함
- AI는 머신러닝을 포괄하는 개념
머신 러닝 모델이란?
- 머신러닝 학습을 통해 최종적으로 만드는 것이 머신러닝모델
-> 특정 방식의 예측을 해주는 블랙박스(알고리즘의 내부가 어려줌. 디버깅이 쉽지 않음)
-> 입력 데이터를 주면 그를 기반으로 예측
(정확히 얘기하자면 Supervised ML (지도기계학습) )
- 모델 트레이닝 / 빌딩
" 만들어진 모델을 실제 서비스에 배포하기 위해 API 형태로 만드는 사람 = MLOps "
머신 러닝의 종류
- 지도 기계 학습
: 정답이 존재하는 학습 방법
-> 분류 지도 학습 : 이진 분류 / 다중 분류 (분류할 것이 정해져있음)
-> 회귀 지도 학습 : 예측 대상이 연속적인 숫자 (가격 예측 등)
과정
: 트레이닝 셋(X(입력데이터), Y(예측값)) -> 학습 알고리즘 -> 머신러닝모델 생성 -> 배포
예시) 타이타익 승객 생존 여부 예측
- 이진분류문제
- 탑승 승객별로 승객 정보와 최종 생존 여부가 트레이닝 셋으로 제공됨
- 기존 필드로부터 새로운 필드를 뽑아내는 것이 일반적 : Feature Engineering
예시) 스팸 웹 페이지 분류기
- 문자열 데이터는 머신러닝 모델로 활용 불가 -> 수치형 데이터로 변경 필요
-> 명사/조사/목적어 등... 의 조합 / 명사만의 조합
-> 두 가지 웹페이지의 차이를 수치형 데이터로 바꾸어 형태소 분석을 통해 조사/명사의 비율을 찾고
스팸 웹 페이지 분류기 가능 -> 피처 엔지니어링의 중요성!
- 비지도 기계 학습
: 데이터를 주면 특정 기준을 기준으로 그룹핑함.
: 클러스터링 혹은 뉴스 그룹핑처럼 주어진 데이터를 몇 개의 그룹으로 분리
: GPT 같은 언어 모델의 훈련도 여기에 속함
예시) Language Model (초거대 언어 모델 : Large Language Model (LLM))
- ChatGPT 와 같은 언어 모델
- 문장의 일부를 보고 비어있는 단어를 확률적으로 맞추는 모델
- 언어 모델은 어떤 문장을 주었을 때 다음에 나오는 단어 예측 가능
- 강화학습
: 알파고 혹은 자율주행
3-4. ML 모델 개발 시 고려할 점
: 머신러닝 개발에서는 모델 빌딩 뿐만 아니라 실제 서비스 배포까지도 중요. 그 사이 과정이 매우 중요함
모델 개발 시 데이터 과학자 & 엔지니어들의 일반적인 생각
데이터 과학자 -> 주어진 문제를 잘 풀기 위한 머신러닝 모델만을 개발!
-> 이 모델을 받은 엔지니어의 입장 : 모델이 어떤 형태인가, 어떻게 적용할 것인가가 중요한 포인트임.
-> 데이터 과학자가 주로 서비스 배포와 운영에 관해 신경쓰지 않음
-> 파이썬 모델 주로 사용(R로 만든 모델은 백엔드에서 배포&사용하기 어렵기 때문)
엔지니어 -> 머신러닝 모델을 받긴 했는데 어떻게 배포하지?
-> 모델 배포하는 과정이 어려움 (논쟁 발생)
마찰이 생기는 지점 - 개발된 모델의 이양 관련
- 많은 수의 데이터 과학자들은 R을 비롯한 다양한 툴로 모델 개발
- 하지만 실제 프로덕션 환경은 R로 만든 다양한 모델들을 지원하지 못함
: 개발/검증된 모델의 프로덕션 환경 론치시 시간이 걸리고 오류 가능성이 존재
: 심한 경우 모델 관련 개발을 다시 해야함 (피쳐 계산과 모델 실행 관련)
=> R 대신 Python으로 머신러닝 모델 개발!!
모델 개발 시 꼭 기억할 포인트
- 모델 개발부터 최종 런칭까지 책임질 사람 필요
: 모델 개발은 시작일 뿐이고 성공적인 프로덕션 론치가 최종적인 목표
-> 런칭이 아닌 운영을 통해 점진적인 개선을 이뤄내는 것이 중요
: 이 일에 참여하는 사람들이 같이 크레딧을 받아야 협업이 더 쉬워짐
-> 최종 론치하는 엔지니어들과 소통하는 것이 중요
- 모델 개발 초기부터 개발/론치 과정을 구체화하고 소통
: 모델 개발시 모델을 어떻게 검증할 것인지?
: 모델을 어떤 형태로 엔지니어들에게 넘길 것인지?
-> 피쳐 계산을 어떻게 하는지? 모델 자체는 어떤 포맷인지?
: 모델을 프로덕션에서 A/B 테스트할 것인지?
-> 한다면 최종 성공판단 지표가 무엇인지?
- 개발된 모델이 바로 프로덕션에 론치가능한 프로세스/프레임웍이 필요
: 예를 들어 R로 개발된 모델은 바로 프로덕션 론치가 불가능
: 트위터: 데이터 과학자들에게 특정 파이썬 라이브러리로 모델개발 정책화
-> 툴을 하나로 통일하면 제반 개발과 론치 관련 프레임웍의 개발이 쉬워짐
: 머신러닝 전반 개발/배포 프레임웍의 등장
-> 머신러닝 모델 개발, 검증, 배포를 하나의 프레임웍에서 수행
-> AWS SageMaker가 대표적인 프레임웍
--> 검증된 모델을 버큰 클릭 하나로 API 형태로 론치 가능!
--> AutoPilot이란 AutoML 기능도 제공 (자동으로 ML 모델 생성. 기초 모델을 생성해 발전하면 좋음)
-> Google Cloud와 Azure도 비슷한 프레임웍 지원
-> 우버/리프트/넷플릭스 등의 IT 기업도 자체 머신러닝 개발/배포 프레임웍을 개발
- 피드백 루프가 필요
: 운영에서 생기는 데이터, 인사이트를 가지고 개선점 찾기
: 주기적으로 모델을 재빌딩하고 배포 (이 과정을 반복)
==> 이를 자동화하는 것이 필요 (Continous Model Update and Monitoring)
===> 이로 인해 탄생한 직군이 MLOps
3-5. MLOps란?
: 머신러닝 모델 빌드, 배포, 모니터링 전체 프로세스를 자동화하는 직군!
-> 머신러닝 모델이 한 번 만들어지면, 시간이 지날수록 성능이 떨어지게 됨.
-> 데이터가 계속해서 변화하기 때문에.
Data Drift로 인한 모델 성능 저하
: ML 모델에서 가장 중요한 것은 훈련 데이터
: 시간이 지나면서 훈련에 사용한 데이터와 실제 환경의 데이터가 다르게 변화함 (시간이 지날수록 모델의 성능이 떨어짐)
-> 이를 Data drift라고 부르며 이를 모니터링하는 것이 중요
: 즉 주기적으로 ML 모델을 다시 빌딩해주는 일이 필요 => 이 일을 하는 직군이 MLOps
<MLOps vs. DevOps>
DevOps가 하는 일은?
- Deliver software faster and more reliably in automated fashion
- 개발자가 만든 코드를 시스템에 반영하는 프로세스 (CI/CD)
- 시스템이 제대로 동작하는지 모니터링 그리고 이슈 감지시 escalation 프로세스 수행.
개발을 직접 하지는 않지만 모든 서비스를 알아야함
-> On-call 프로세스 (밤 혹은 주말에도 on-call 필요)
: 개발자들이 만든 코드를 동작하고, 배포를 할 수 있는 형태로 변경, 모니터링, 이슈 해결
MLOps가 하는 일은?
- Deliver ML models faster and more reliably in automated fashion
- 앞의 DevOps가 하는 일과 동일. 차이점은 개발자 코드가 아니라 ML 모델이 대상이 된다는 점
- 모델을 계속적으로 빌딩하고 배포하고 성능을 모니터링
-> ML모델 빌딩과 프로덕션 배포를 자동화할 수 있을까? 계속적인 모델 빌딩(CT)과 배포!
: 모델 서빙 환경과 모델의 성능 저하를 모니터링하고 필요시 escalation 프로세스 진행
-> Latency의 중요성 (실행시간의 중요성, 모델이 얼마나 빨리 결과를 return 하는가)
-> Data drift 측정 (피처별 어떤 형태로 분포가 이루어지는지 .. )
< CI & CD & CT >
CI (Continuous Integration )
- Developers frequently merge code changes into a central repo
- Building and testing are automated
: 개발자가 코드를 변경할 때마다 테스트를 돌려 새로 체크인된 코드의 문제가 없음을 확인
CD (Continuous Delivery or Deployment)
- Passing builds (packages) are deployed directly to the production environment
: CI의 발전. CI가 문제없이 끝난 코드를 자동으로 프로덕션에 배포
: 실패없이 실행이 끝나면 자동으로 사용자 서비스에 배포됨 -> 짧은 수정을 짧은 시간안에 배포
CT (Continuous Train)
: 계속해서 자동으로 훈련데이터를 수집하여 모델을 빌딩 & 테스트 & 배포하는 단계를 자동화
-> 실수의 가능성 최소화
(CI/CD의 역할을 데이터과학자가 만든 모델에 적용한 것이 CT)
MLOps 엔지니어가 알아야하는 기술
: 데이터과학자, DevOps 엔지니어, 머신러닝 엔지니어의 교차점!
- 데이터 엔지니어가 알아야 하는 기술
: 파이썬/스칼라/자바
: 데이터 파이프라인과 데이터 웨어하우스
- DevOps 엔지니어가 알아야 하는 기술
: CI/CD, 서비스 모니터링, …
: 컨테이너 기술 (K8S, 도커)
: 클라우드 (AWS, GCP, Azure)
: Infrastructure As Code (Configuration As Code)
- 머신러닝 관련 경험/지식
: 머신러닝 모델 빌딩과 배포
: ML 모델 빌딩 프레임웍 경험
-> SageMaker, Kubeflow, MLflow
3-6. 머신러닝 사용 시 고려할 점
: 머신러닝(AI)을 제대로 사용하는 것은 쉽지 않다. 어떤 고려할 점이 있을까?
데이터 윤리와 주의할 점, MLOps
: 데이터로부터 패턴을 찾아 학습
-> 데이터의 품질, 크기가 중요
-> 데이터로 인한 왜곡 발생 가능 ==> AI 윤리 문제
-> 내부동작 설명 가능 여부 중요 ==> ML Explainability
-> 데이터 권리도 중요한 문제
데이터 기반 AI는 완벽한가?
- 트레이닝셋의 품질은 어떤가?
: 트레이닝셋의 품질이 데이터기반 AI의 성능을 결정짓는 요소 (데이터 양도 중요하지만 품질도 중요, Garbage In Barbage Out)
: 미국 EMR이 아주 좋은 예 - 환자에 대한 의료정보를 나타내는 데이터. 그러나, 시스템의 용도가 법적인 제재를 받지 위해 기록해 둔 데이터이기 때문에 환자의 건강상태, 병력 등을 예측하기 위한 데이터가 아님
==> 좋은 데이터인듯 하지만 용도가 맞지 않는 데이터. 신뢰도 작업을 통해 판단 후 사용 필요
- AI 도입 시 가능한 문제들을 어떻게 해결할 것인가?
: 왜 어떤 결과가 나왔는지 설명이 가능한가?
: 알고리즘 자체에 인종이나 특정 편향성이 있지는 않은가?
- 많은 시도와 실패가 필요 -> 혁신을 만들어 낼 생태계와 법률이 필요
: 이러한 모든 것들이 처음부터 잘 되지는 않으므로, 다양한 시도 필요!
- EU의 관련 법규는 많은 시사점을 줌: Trustworthly AI
-> AI와 머신러닝의 발전으로 인해 생기는 이슈들을 해결할 법을 만들 때 사용할 수 있는 가이드라인!
- 감독 (human agency and oversight)
- 관리감독없이 모델 개발을 맡기면 어떤 일이 일어날지 모름!
- 견고성과 안전성 (robustness and safety)
- 개인 정보 보호 및 데이터 거버넌스 (privacy and data governance)
- 모델에서 사용한 데이터 중 개인정보가 있는지 확인 필요
- 투명성 (Transparency)
- 모델이 어떻게 동작하는지 투명하게 보이면 좋음
- 다양성과 비차별성과 공정성 (Diversity, nondiscrimination and fairness)
- 데이터 수집에 있어 차별이 있으면 안되고 다양성을 존중해야함
- 사회/환경 친화적 (Societal and environmental well-being)
- AI가 사회/환경에 친화적이여야함. 많은 전기, 열을 소비하면 지구온난화의 주범이 됨
- 문제 발생시 책임 소재(Accountability)
- 모델을 통해 결정했을 때 문제에 책임 필요
잘못된 개인정보 보존으로 인한 페널티
HIPAA (Health Insurance Portability and Accountability Act)
: 개인 의료 정보 보호를 목적으로 하며1996년부터 효력 발표
: 다음과 같은 전자 의료 정보를 보호하려는 목적: ePHI (electronic Protected Health Information)
: 개인을 식별할 수 있는 정보로 대략 18개가 존재
-> 이름, 주소, 생년월일, 전화번호, 이메일 주소, 주민등록번호, 라이센스 번호, IP 주소 등등
-> MRN (Medical Record Number), 계좌 정보, 바이오메트릭 정보 (지문 등)
--> 개인 식별 정보를 잘 조합하면 개인을 식별할 수 있음 -> 노출 시 법적 제재 필요
GDPR/CCPA
: 각각 유럽연합과 미국 캘리포니아 주의 온라인 상에서 개인정보 보호에 관한 법률
-> 불필요하게 데이터를 저장하면 안된다!
: 꼭 필요할 시 데이터 암호화!
-> 예를 들면 데이터 저장시 암호화, 데이터 송수신시 암호화 (암호화 프로토콜 사용)
+ 기업만의 정보가 아니기에 개인이 원하면 언제든 정보를 삭제해야함.
집단 이기주의: 의료분야 예
- 한국에서는 왜 비디오 진료가 안 될까?
: 1999년에 이미 서울대 병원과 분당 KT가 원격 진료 연결 시범 사업을 했음
: 코로나로 한시 허용된 원격의료, 의사 반발에 또 표류: 의료법이 여전히 개정되지 못함
-> 미국은 50개주 모두 일정 부분 원격 진료 허용 (Telehealth Parity Law)
: 원격진료는 과연 의사들에게 나쁜 영향을 줄까? -> 새로운 시대의 발전에 맞는 개방적인 발전이 필요함
- AI 발전에 영향받는 분야의 교육 방향에 대한 시사점
: AI 시대에 의사의 역할은 무엇인가? 진료시간 확대와 공감 능력을 더 중요시?
: 기존 교육 시스템의 점검 뿐만 아니라 재교육 필요성 증대
-> 일이 없어진다기 보다는 바뀐다는 점이 강조되어야 함 (일을 없애는 것이 아닌 일을 바꾼다는 것에 강조!)
- 세상의 변화를 거스르기 보다는 새로운 역할을 찾는 것이 더 건강하지 않을까?
AI의 발전과 미래 직업의 변화: 예) 의사의 역할
- AI는 의사를 대체하기 보다는 의사의 효율성과 진단/치료의 정확성을 높이는 보조적 역할
: 현재 의사는 다른 잡무로 인해 환자와 충분한 시간을 보내지 못함
: 아무리 경험이 많은 의사라 해도 실수를 할 수 있고 의사마다 굉장히 다른 진료결과를 냄
-> AI는 진단 절차를 체계적으로 만들고 작업을 빠르고 정확하게 하는데 사용가능
--> 일종의 의사결정트리 (Decision Tree) (AI 보조 시스템)
- 중단기적으로 의사의 역할에 대해 재고가 필요
: 그에 따라 교육 시스템도 변경이 필요
: 데이터 관련 교육 (Data Literacy)이 절대적으로 필요
: 환자와의 진료/대화 (공감)에 더 많은 시간을 쏟아야 한다는 새로운 교육 필요!
-> Compassionomics(책 제목)에 따르면 공감을 더 잘하는 의사에게 진료를 받은 환자가 더 좋은 의학적 결과가 보였고 공감을 더 잘하는 의사들이 일을 더 재미있게 하고 번아웃이 덜 되었다고 함
미래의 의사 모습은 어떨까?
- 현대 비행기의 기장 역할이 좋은 예
: 현대 비행기 조종사는 비행 소프트웨어가 보여주는 각종 정보를 대시보드를 통해 제공받음
-> 대부분 운행은 직접 조종하는 것보다 기계의 도움을 받아 비행기를 조종함.
: 조종사들은 소프트웨어가 주는 정보를 따라하는데 거부감이 없음
: 또한 조종사들은 매번 비행마다 안전을 보장하기 위해 반드시 체크해야하는 리스트가 존재
- 미래의 의사도 비슷하지 않을까?
: 인공지능 기반의 각종 진단과 치료 정보를 제공받고 그걸 기반으로 의료 서비스를 제공
-> 이를 통해 효율적이고 오진이 적은 의료 서비스 제공
: 의사들의 진료전 체크리스트
-> 병원에서 발생하는 많은 이차감염은 의사/간호사들의 비위생적인 행동으로 발생
--> 예를 들면 수술전에 손을 씻지 않음
-> 이렇게 간단하지만 필수적인 행동들을 체크리스트로 관리하고 시행
3-7. 실습: 지표 정의하고 차트 만들어보기
Simple ML for Sheets
- 구글 스프레드시트의 무료 확장판
- 시트 상의 데이터를 훈련 데이터로 사용하여 간단한 모델을 만들 수 있음
(컬럼 중 하나를 label or field로 사용 가능! )
* 아래 글에 실습 부분을 정리해두었습니다.
2024.02.21 - [EXCEL] - [Google Sheets] Simple ML for Sheets 사용 방법 및 예제 실습
'STUDY > DevCourse' 카테고리의 다른 글
[데브코스][데이터 분석] Excel을 활용한 다양한 데이터 분석 실습 (1), (2) (0) | 2024.02.26 |
---|---|
[데브코스][데이터 분석] 데이터 활용 시 고려할 점 (1) | 2024.02.23 |
[데브코스][데이터 분석] Gen AI를 이용한 생산성 증대 (0) | 2024.02.22 |
[데브코스][데이터 분석] 데이터 기반 의사 결정 (0) | 2024.02.19 |
[데브코스][데이터 분석] 데이터 문해력이란 (1) | 2024.02.19 |