본문 바로가기
  • 데이터에 가치를 더하다, 서영석입니다.
가치를 창출하는 데이터 분석/개인 프로젝트

#공부일지 2_1. Introduction to Machine Learning in Production (Coursera)

by 꿀먹은데이터 2022. 11. 30.

프로덕션 배포에 적합한 기계 학습 모델을 구축하기 위한 몇 가지 모범 사례

Selecting and Training a Model

Key challenges

기계 학습 시스템을 개발할 때 명심했으면 하는 한 가지 프레임워크는 기계 학습 시스템의 AI 시스템이 데이터뿐만 아니라 알고리즘 또는 모델을 의미하는 코드를 모두 포함한다는 것이다.

 

많은 연구는 데이터 세트를 다운로드하고 데이터 세트에서 잘 작동하는 전체 모델을 찾으려고 노력하는 연구원들에 의해 성장했다. 그러나 많은 애플리케이션의 경우 데이터가 마음에 들지 않으면 데이터를 변경할 수 있는 유연성이 있다. 따라서 알고리즘이나 모델이 기본적으로 해결된 문제인 프로젝트가 많이 있다.

모델 개발은 매우 반복적인 프로세스

일반적으로 일부 모델과 하이퍼파라미터 및 데이터 교육 모델로 시작한 다음 모델을 사용하여 오류 분석을 수행하고 모델이나 하이퍼파라미터 또는 데이터를 개선하는 방법을 결정하는 데 사용한다.

기계 학습은 매우 경험적인 프로세스이기 때문에 이 루프를 매우 빠르게 여러 번 통과할 수 있는 것이 성능 향상의 핵심

루프를 통해 매번 데이터를 수정하는 방법이나 모델을 수정하는 방법 또는 하이퍼파라미터를 수정하는 방법에 대해 좋은 선택을 할 수 있다는 것이다.

 

모델을 구축할 때 대부분의 프로젝트가 달성하고자 하는 세 가지 주요 이정표

첫 번째는 적어도 train set에서 잘하고 있는지

두 번째는 Train set에서 잘 수행한 후에는 알고리즘이 dev set 또는 홀드아웃 교차 검증 set에서 잘 작동하는지 묻고 test set에서도 잘 작동하는지

세 번째는 비즈니스 지표 또는 프로젝트의 목표에 부합하는지

Why low average error isn't good enough

생산 기계 학습 프로젝트를 위해 해결해야 할 몇 가지 추가 과제가 있다.

첫째, 기계 학습 시스템은 평균 테스트 세트 오류가 낮을 수 있지만 불균형적으로 중요한 예제 세트에 대한 성능이 충분하지 않은 경우 기계 학습 시스템은 여전히 ​​프로덕션 배포에 적합하지 않다.

웹 검색의 예

Informational and Transactional queries

애플 파이 레시피, 최신 영화, 무선 데이터 요금제, 디왈리 페스티벌에 대해 알고 싶다. 이러한 유형의 쿼리는 정보 또는 트랜잭션 쿼리라고 한다.

아마 이 과정에서 웹 검색은 좋은 결과를 제공하지 않을 것이다.

인터넷에 좋은 사과 파이 요리법이 많이 있기 때문에 사과 파이 요리법. 정보 및 트랜잭션 쿼리의 경우

웹 검색 엔진은 가장 관련성이 높은 결과를 반환하기를 원하지만

사용자는 최고의 결과인 2위 또는 3위 순위로 나오더라도 크게 상관은 없을 것이다.

 

Navigational queries

Stanford, Reddit 또는 YouTube와 같은 다른 유형의 웹 검색 쿼리가 있다.

사용자가 Stanford.edu, Reddit.com 또는 YouTube.com으로 이동하려는 매우 명확한 의도와 욕구가 있는 탐색 쿼리라고 한다. 사용자가 매우 명확한 탐색 의도를 가지고 있을 때 웹 검색 엔진이 Stanford.edu를 1위 순위 결과로 반환하는 것 외에 다른 작업을 수행하면 올바른 결과를 제공하지 않는 검색 엔진은 빠르게 사용자의 신뢰를 잃는다.

데이터 세트의 핵심 조각에 대한 성능 문제

예를 들어 대출 승인을 위한 기계 학습 알고리즘을 구축하여 대출금을 상환할 가능성이 있는 사람을 결정하고 승인을 위해 특정 대출 승인을 권장한다고 가정한다. 그러한 시스템의 경우 시스템이 인종, 성별, 위치, 언어 또는 기타 보호되는 속성에 따라 대출 신청자를 부당하게 차별하지 않도록 해야 한다.

또한 많은 국가에는 금융 시스템 및 대출 승인 프로세스가 보호 속성이라고도 하는 특정 속성 세트를 기준으로 차별하지 않도록 규정하는 법률 또는 규정이 있다.

대출 승인을 위한 학습 알고리즘이 높은 평균 테스트 세트 정확도를 달성하더라도 허용할 수 없는 수준의 편향이나 차별을 나타내는 경우 프로덕션 배포에 허용되지 않는다.

 

키 슬라이스의 공정성 또는 성능 문제는 다른 설정에서도 발생

예를 들어 기계 학습 시스템의 평균 테스트 세트 정확도가 높더라도 평균적으로 더 나은 제품을 추천할 수 있다.

한 민족의 모든 사용자에게 관련 없는 추천을 제공하는 경우 용납될 수 없거나 항상 대형 소매업체의 제품을 밀고 소규모 브랜드를 무시하는 경우 모든 소규모 소매업체를 잃을 수 있으므로 비즈니스에 해로울 수 있다.

또한 대형 브랜드의 제품만 추천하고 중소기업을 무시하는 추천 시스템을 구축하는 것도 불공평하게 느껴질 것이다.

또는 관련성이 높은 추천을 제공하는 제품 추천자가 있었지만 어떤 이유로 전자 제품은 절대 추천하지 않을 것이다.

전자 제품을 판매하는 소매업체는 꽤 합리적으로 화를 낼 것이며 이는 소매업체에게 옳지 않을 수 있다.

희귀 클래스, 특히 왜곡된 데이터 분포 문제

인구의 99%가 특정 질병을 가지고 있지 않고 1%가 양성이기 때문에 99%가 부정적인 예인 데이터 세트가 있는 경우다. "0"을 인쇄하는 프로그램을 작성하여 매우 우수한 테스트 세트 정확도를 얻을 수 있다. 학습 알고리즘이 필요하지 않습니다. 이 한 줄의 코드만 작성하면 데이터 세트에서 99%의 정확도를 얻을 수 있다. 그러나 분명히 "0"을 인쇄하는 것은 질병 진단에 그다지 유용한 알고리즘이 아니다.

 

긍정과 부정에 대한 논의인 왜곡된 데이터 분포 문제와 밀접한 관련이 있는 것은 희귀 클래스에 대한 정확도이다.

훌륭하다고 생각하지만 테스트 세트에서 잘 수행하는 것만으로는 많은 프로덕션 애플리케이션에 충분하지 않기 때문에 종종 그 이상을 수행해야한다.

Establish a baseline

기계 학습 프로젝트에서 작업을 시작할 때 취해야 할 가장 유용한 첫 번째 단계 중 하나는 기준선을 설정하는 것이다.

일반적으로 성능 기준선 수준을 설정한 후에야 해당 기준선 수준에서 효율적으로 개선할 수 있는 도구를 가질 수 있다.

음성 인식 예제를 사용하겠습니다. 데이터에 음성의 네 가지 주요 범주가 있음을 확인했다고 가정해 보자.

배경 소음이 많지 않은 사람이 말할 때 명확한 음성이다. 음성 인식 시스템을 사용할 때 자동차에 있는 것처럼 배경에 자동차 소음이 있는 음성이다. 백그라운드에서 사람들의 소음이 있는 음성이 배경에 있는 다른 사람들과 함께 야외에 있거나 낮은 대역폭 연결에서 음성이 들리는 경우, 휴대폰 연결이 매우 나쁜 휴대폰을 사용하는 경우 들리는 것과 같다.

이전에 인간 수준의 성능이 없다고 말했지만 낮은 대역폭 오디오 작업이 가장 유망하다고 생각했을 수 있다. 이 분석을 통해 낮은 대역폭 오디오가 왜곡되었을 수 있음을 깨달았다. 심지어 사람, 인간은 무슨 말을 했는지 알아차리지 못하며, 그것에 노력하는 것이 그다지 유익하지 않을 수 있다. 대신 자동차 소음을 배경으로 음성 인식을 개선하는 데 관심을 집중하는 것이 더 유익할 수 있다.

 

비정형 데이터 또는 정형 데이터에서 작업하는지 여부에 따라 기준선을 설정하는 모범 사례가 상당히 다른 것으로 나타났다.

비정형 데이터는 고양이 사진과 같은 이미지, 음성 인식 예제와 같은 오디오 또는 레스토랑 리뷰의 텍스트와 같은 자연어와 같은 데이터 세트를 나타낸다. 비정형 데이터는 인간이 해석을 매우 잘하는 데이터인 경향이 있다.

\

기계 학습 프로젝트를 시작하기 위한 몇 가지 팁

모델 도입의 첫 번째 단계를 시작하기 위해 몇 가지 제안 사항이 있다.

루프의 첫 번째 단계에서 시작할 수 있기 때문에 더 많은 시간을 반복하는 데 더 효율적일 수 있고 더 빨리 좋은 성능을 얻는 데 도움이 될 것이다.

목표가 시스템을 구축하고 배포하는 것이라면 컴퓨팅 제약과 같은 배포 제약을 고려해야 한다.

고려하는 것이 나쁠 것은 없지만 먼저 기준선을 보다 효율적으로 설정하는 데 집중하지 않고 집중하는 경우에도 괜찮을 수 있다.

마지막으로 학습 알고리즘을 처음 시도할 때 모든 데이터에서 실행하기 전에 코드와 알고리즘에 대해 몇 가지 빠른 온전성 검사를 실행할 것을 촉구한다.

 

예를 들어, 저는 일반적으로 큰 데이터 세트에서 알고리즘을 훈련하기 위해 몇 시간 또는 때로는 밤새 또는 며칠을 소비하기 전에 아주 작은 훈련 데이터 세트를 과대적합하려고 한다. 특히 출력이 복잡한 출력인 경우 하나의 교육 예제에 맞출 수 있는지 확인하려고 할 수도 있다.

이미지 분할의 경우 목표가 이와 같은 입력 사진을 가져와 이미지의 고양이를 분할하는 것이라면 수백 또는 수천 개의 이미지에 대해 시스템을 교육하는 데 몇 시간을 소비하기 전에 가치 있는 온전성 검사는 단 하나의 피드를 제공하는 것이다.

단 몇 분 또는 몇 초 만에 하나 또는 소수의 예제에 대해 알고리즘을 훈련할 수 있으며 이를 통해 버그를 훨씬 더 빨리 찾을 수 있다. 마지막으로 이미지 분류 문제의 경우 훈련 세트에 10,000개의 이미지가 있거나 100,000개의 이미지가 있거나 백만 개의 이미지가 있더라도 알고리즘을 매우 빠르게 훈련시키는 것이 좋다.

알고리즘이 100개의 이미지에서도 제대로 작동하지 않는 경우 10,000개의 이미지에서 잘 작동하지 않을 것이 분명하므로 이것은 코드에 대한 또 다른 유용한 온전성 검사가 될 것이다.

이제 기계 학습 모델을 교육한 후 첫 번째 모델을 교육한 후 가장 중요한 것 중 하나는 알고리즘의 성능을 개선하는 방법을 결정하는 데 도움이 되는 오류 분석을 어떻게 수행하는가이다.