제퍼넷 로고

기계 학습의 디자인 패턴

시간

기계 학습의 디자인 패턴

모범 사례를 실제 디자인 패턴으로 추상화할 수 있습니까?


By 아고스톤 퇴로크, 데이터 과학 이사, AGT International

그것의 정의, 디자인 패턴은 일반적으로 발생하는 문제에 대한 재사용 가능한 솔루션입니다. 소프트웨어 엔지니어링에서 개념은 다음으로 거슬러 올라갑니다. 1987 Beck과 Cunningham이 그것을 프로그래밍에 적용하기 시작했을 때. 2000년대까지 디자인 패턴, 특히 OOP에 대한 SOLID 디자인 원칙은 프로그래머에게 일반적인 지식으로 간주되었습니다. 15년을 빨리 감으면 시대가 도래합니다. 소프트웨어 2.0: 기계 학습 모델은 점점 더 많은 코드 위치에서 기존 기능을 대체하기 시작합니다. 오늘날 우리는 소프트웨어를 전통적인 코드, 기계 학습 모델 및 기본 데이터의 융합으로 봅니다. 이 융합에는 이러한 구성 요소의 원활한 통합이 필요하며, 이는 종종 해당 분야의 이질적인 역사와 진화를 고려할 때 사소한 일이 아닙니다.


오늘날 우리는 소프트웨어를 전통적인 코드, 기계 학습 모델 및 기본 데이터의 융합으로 봅니다.


그러나 디자인 패턴은 이 새로운 시대의 도전을 처리하기 위해 아직 확장되지 않았습니다. 소프트웨어 2.0에서 일반적인 문제는 코드 수준에서 뿐만 아니라 문제 정의, 데이터 표현, 교육 방법, 확장 수준 및 AI 지원 시스템 설계의 윤리적 측면에서 나타납니다. 이것은 머신 러닝의 실행을 위한 비옥한 기반을 만듭니다. 반패턴. 불행히도 오늘날에는 블로그 포스트와 회의에서도 때때로 반패턴을 특징으로 합니다. 즉, 상황을 개선한다고 믿었지만 실제로는 상황을 악화시키는 관행입니다. 안티패턴도 기술을 필요로 하기 때문에 실무자들이 반패턴을 그렇게 인식하지 못하는 경우가 많습니다. 따라서 다음에서는 일반적인 ML 문제의 두 가지 예를 제공하지만 디자인 패턴으로 시작하는 대신 솔루션 안티패턴을 먼저 소개하겠습니다.

모델이 평가 지표에서 나쁜 성능을 보여줍니다.

 
일반적인 시나리오에서 엔지니어는 데이터를 수집, 정리 및 준비한 후 첫 번째 모델을 훈련하고 테스트 데이터에서 나쁜 성능을 보여줍니다. 일반적인 반패턴은 첫 번째 모델을 더 복잡한 모델(예: 종종 그래디언트 부스트 트리)로 교체하고 이를 통해 성능을 향상시키는 것입니다. 이 반패턴의 변형은 예를 들어 모델 평균화에 의해 여러 모델을 결합하여 이 단계를 따를 수 있습니다.



Donald Knuth의 유명한 인용문 "조기 최적화는 모든 악의 근원"은 거의 50년이 지난 지금도 여전히 사실입니다. 허가를 받은 이미지 tddcomics.

 

이러한 방법의 문제점은 문제의 일부, 즉 모델만 보고 모델의 복잡성을 증가시켜 해결하기로 선택한다는 것입니다. 이 단계는 과적합의 높은 위험을 수용하고 추가 예측력을 위해 설명 가능성을 교환하도록 합니다. 이 선택의 부작용(예: LIME)을 완화하는 효율적인 방법이 있지만 완전히 제거할 수는 없습니다.

디자인 패턴은 오류 분석입니다. 이것은 실제로 다른 테스트 세트에 대한 모델 적합성을 평가하거나 모델이 잘못된 개별 사례를 살펴봄으로써 우리 모델이 어디에서 오류를 일으켰는지 살펴보는 것을 의미합니다. 우리 모두는 "쓰레기 인, 가비지 아웃"이라는 말을 들었지만 데이터의 작은 불일치에도 이것이 얼마나 사실인지 인식하는 사람은 여전히 ​​드뭅니다. 라벨은 각기 다른 평가자가 제공하며 라벨 가이드라인에 대한 해석이 약간씩 다를 수 있습니다. 시간이 지나면서 데이터를 수집하는 방식이 바뀌었을 수도 있습니다. 오류 분석의 효과는 작은 데이터 문제에 특히 강력합니다. 그러나 빅 데이터 상황의 상당 부분에서 롱테일 이벤트(예: 입학 시험에서 희귀 인재 식별)도 처리한다는 점도 염두에 두어야 합니다.

오류 분석의 진정한 힘은 설명 가능성이나 과적합 위험을 적용하지 않고 실제로 적용하는 것만으로도 데이터 분포에 대한 중요한 지식을 얻을 수 있다는 사실에서 나옵니다. 또한 오류 분석을 통해 모델 중심(예: 더 복잡한 모델)과 데이터 중심(예: 추가 정리 단계) 솔루션을 모두 선택할 수 있습니다.

배포된 모델에서 시간 경과에 따른 성능 저하

 
이 모델은 광범위한 검증을 거쳐 프로덕션에 배포됩니다. 사용자는 행복하고 긍정적인 피드백을 제공합니다. 그런 다음 한 달/분기/년 후에 예측의 결함에 대한 보고서가 들어옵니다. 이는 일반적으로 모델이 입력과 출력 간에 학습한 연결이 시간이 지남에 따라 변경된 개념 드리프트의 표현입니다. 이러한 개념 드리프트가 일반적으로 알려진 곳이 있지만(단어 의미론, 스팸 감지기) '개념' 드리프트는 모든 분야에서 발생할 수 있습니다. 예를 들어, 마스크와 사회적 거리두기 규정은 이전에 배포된 많은 컴퓨터 비전 모델에도 도전했습니다.



재훈련이 없는 ML 시스템은 입력과 출력 간의 학습된 관계에 변화가 없다고 가정합니다. 허가를 받은 이미지 tddcomics.

 

일반적인 반패턴은 이러한 예를 노이즈에 기인하고 상황이 시간이 지남에 따라 안정화될 것으로 기대하는 것입니다. 이는 행동이 부족할 뿐만 아니라 잘못된 귀속도 의미하며, 이는 일반적으로 데이터 중심 비즈니스에서 권장하지 않습니다. 약간 더 나은 반패턴은 새로운 모델의 빠른 재교육 및 배포로 보고서에 반응하는 것입니다. 이는 팀이 애자일 소프트웨어 개발 원칙을 따르고 변화에 신속하게 대응하기로 선택한 경우에도 반패턴입니다. 문제는 이 솔루션이 증상을 해결하지만 시스템 설계의 결함은 해결하지 못한다는 것입니다.

디자인 패턴은 성능에 대한 지속적인 평가입니다. 즉, 드리프트가 발생할 것으로 예상하고 따라서 가능한 한 빨리 이를 인지하도록 시스템을 설계해야 합니다. 이것은 초점이 반응 속도가 아니라 반응 속도에 있기 때문에 완전히 다른 접근 방식입니다. 검색. 이것은 전체 시스템을 훨씬 더 통제된 과정에 배치하여 모든 반응의 우선 순위를 지정할 수 있는 더 많은 공간을 제공합니다. 지속적인 평가는 새로운 데이터의 일부에 대한 실측을 지속적으로 생성하는 프로세스와 도구를 설정하는 것을 의미합니다. 대부분의 경우 여기에는 수동 레이블이 포함되며 종종 크라우드 소싱 서비스를 사용합니다. 그러나 경우에 따라 더 정교하지만 배포 설정에서 실측 레이블을 생성하기 위해 실현 불가능한 모델 및 장치를 사용할 수 있습니다. 예를 들어, 자율 주행 자동차의 개발에서 한 센서(예: LiDAR)의 입력을 사용하여 다른 센서(예: 카메라)에 대한 실제 정보를 생성할 수 있습니다.

기계 학습의 SOLID 설계 원칙

 
내가 디자인 패턴에 대해 글을 쓰는 이유는 이 분야가 우리의 모범 사례를 공유해야 할 뿐만 아니라 실제 디자인 패턴으로 추상화할 수 있어야 하는 성숙 수준에 도달했기 때문입니다. 운 좋게도 이 작업은 이미 여러 그룹에서 시작되었습니다. 사실 최근에 [1], [2]. 나는 그것들을 읽는 것을 즐겼지만 여전히 우리가 올바른 방향으로 가고 있지만 ML 실무자를 위한 SOLID 설계 원칙을 공식화하는 데 아직 몇 걸음 남지 않았다는 느낌을 받았습니다. 기본 지식이 이미 사용 가능하고 오늘날의 AI 지원 제품을 구축하는 데 사용되지만 디자인 패턴 및 반패턴에 대한 작업은 소프트웨어 2.0 시대를 향한 중요한 단계라고 생각합니다.



디자인 패턴은 기계 학습의 장인 정신의 기초입니다. 허가를 받은 이미지 tddcomics.

 
바이오 : 아고스톤 퇴로크 AGT International의 데이터 과학 이사입니다.

실물. 허가를 받아 다시 게시했습니다.

관련 :


PlatoAi. Web3 재창조. 데이터 인텔리전스 증폭.
액세스하려면 여기를 클릭하십시오.

출처: https://www.kdnuggets.com/2021/07/design-patterns-machine-learning.html

spot_img

최신 인텔리전스

spot_img

우리와 함께 채팅

안녕하세요! 어떻게 도와 드릴까요?