영어 사전에서 "evolutionary algorithm" 뜻
인공 지능에서 진화 알고리즘은 진화론 적 계산의 하위 집합으로 일반 모집단 기반의 메타 휴리스틱 최적화 알고리즘입니다. EA는 생식, 돌연변이, 재조합 및 선택과 같은 생물학적 진화에서 영감을받은 메커니즘을 사용합니다. 최적화 문제에 대한 후보 솔루션은 모집단에서 개인의 역할을하며 피트니스 기능은 솔루션의 품질을 결정합니다. 인구의 진화는 위의 연산자를 반복적으로 적용한 후에 발생합니다. 인공 진화는 개개의 진화 알고리즘을 포함하는 과정을 기술한다. EA는 AE에 참여하는 개별 구성 요소입니다. 진화 알고리즘은 근본적인 피트니스 환경에 대해 아무런 가정을하지 않기 때문에 모든 유형의 문제에 대해 근사적인 솔루션을 수행하는 경우가 많습니다. 이 일반성은 공학, 예술, 생물학, 경제학, 마케팅, 유전학, 운영 연구, 로봇 공학, 사회 과학, 물리학, 정치 및 화학과 같은 다양한 분야에서 성공에 의해 입증됩니다. In artificial intelligence, an evolutionary algorithm is a subset of evolutionary computation, a generic population-based metaheuristic optimization algorithm. An EA uses mechanisms inspired by biological evolution, such as reproduction, mutation, recombination, and selection. Candidate solutions to the optimization problem play the role of individuals in a population, and the fitness function determines the quality of the solutions. Evolution of the population then takes place after the repeated application of the above operators. Artificial evolution describes a process involving individual evolutionary algorithms; EAs are individual components that participate in an AE. Evolutionary algorithms often perform well approximating solutions to all types of problems because they ideally do not make any assumption about the underlying fitness landscape; this generality is shown by successes in fields as diverse as engineering, art, biology, economics, marketing, genetics, operations research, robotics, social sciences, physics, politics and chemistry.
영어 사전에서 evolutionary algorithm 의 정의
The definition of evolutionary algorithm in the dictionary is a computer program that is designed to evolve and improve in response to input.
EVOLUTIONARY ALGORITHM 처럼 시작하는 영어 단어
EVOLUTIONARY ALGORITHM 처럼 끝나는 영어 단어
영어 사전에서 evolutionary algorithm 의 동의어와 반의어
«EVOLUTIONARY ALGORITHM» 관련 영어 단어
evolutionary algorithm evolutionary algorithm java tutorial example matlab game algorithms theory practice artificial intelligence subset computation generic population based metaheuristic optimization uses mechanisms inspired biological evolution such reproduction mutation recombination what candidates select next generation general scheme pseudo code genetic introduction frontline learn used solve rosetta weasel note comparison ensure variables functions mentioned task outline watchmaker framework software normally developed very precise deterministic behaviour computer governed strict logical rules invariably does geatbx documentation toolbox start page with overview sections analysis called performed linear proved optimized expected time nlnn only rates size merelo guervós
25개국어로 «evolutionary algorithm» 번역
EVOLUTIONARY ALGORITHM 의 번역
자동 통계기반 번역을 통해 영어 에서 이 항목에 표시된 다른 언어로 evolutionary algorithm 번역 이 이루어집니다. 이 항목의 기본적인 번역 단위는 영어 단어 «evolutionary algorithm» 입니다.
UCCX 장애 조치 시나리오에서 마스터를 결정하는 알고리즘 이해
본 제품에 대한 문서 세트는 편견 없는 언어를 사용하기 위해 노력합니다. 본 설명서 세트의 목적상, 편견 없는 언어는 나이, 장애, 성별, 인종 정체성, 민족 정체성, 성적 지향성, 사회 경제적 지위 및 교차성에 기초한 차별을 의미하지 않는 언어로 정의됩니다. 제품 소프트웨어의 사용자 인터페이스에서 하드코딩된 언어, RFP 설명서에 기초한 언어 또는 참조된 서드파티 제품에서 사용하는 언어로 인해 설명서에 예외가 있을 수 있습니다. 시스코에서 어떤 방식으로 포용적인 언어를 사용하고 있는지 자세히 알아보세요.
이 번역에 관하여
Cisco는 전 세계 사용자에게 다양한 언어로 지원 콘텐츠를 제공하기 위해 기계 번역 기술과 수작업 번역을 병행하여 이 문서를 번역했습니다. 아무리 품질이 높은 기계 번역이라도 전문 번역가의 번역 결과물만큼 정확하지는 않습니다. Cisco Systems, Inc.는 이 같은 번역에 대해 어떠한 책임도 지지 않으며 항상 원본 영문 문서(링크 제공됨)를 참조할 것을 권장합니다.
이 문서에서는 UCCX(Unified Contact Center Express)에서 장애 조치 또는 섬 모드에서 복구가 시작된 후 마스터를 확인하는 데 사용되는 알고리즘에 대해 설명합니다.
사전 요구 사항
요구 사항
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
사용되는 구성 요소
이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다.이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다.네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 이해해야 합니다.
배경 정보
마스터를 선택해야 하는 두 가지 시나리오가 가능하며, 두 노드 간의 마스터를 결정하는 데 사용되는 알고리즘은 각 시나리오에 대해 서로 다릅니다.
일반 엔진 장애 조치
이 시나리오는 마스터가 없거나(예: 클러스터가 시작된 경우) 마스터가 하나 있는 경우, 섬 모드가 없는 HAoLAN 또는 HAoWAN 환경에서 노드가 페일오버되는 경우 발생합니다.
마스터를 결정하기 위한 알고리즘 폭포(예: Try 1, else 2 Try 3, 그렇지 않으면 Try 4(경합 시)):
1단계. 두 노드의 UCCX 엔진 상태 중 더 나은 상태(새 마스터인 상태)를 확인합니다.둘 다 같으면 2단계로 이동합니다.
2단계. 두 노드의 하드웨어 모델을 확인합니다.새 마스터는 더 나은 하드웨어입니다.둘 다 같으면 단계로 이동합니다.이제 많은 UCCX 설치가 가상화되었으므로 이 단계는 자주 사용되지 않습니다.
3단계. 노드 1(예: Publisher(첫 번째 UCCX 노드가 설치됨)을 확인합니다. 새 마스터는 게시자 노드입니다.CVD는 노드 1을 기본 마스터로 만들도록 프로그래밍됩니다.이는 CET의 클러스터 구성(ClusterSpecificConfig)에 있는 PrimaryEngineComputerName 매개 변수에서 가져온 것입니다.이 값이 올바르지 않으면 Node2는 항상 마스터를 사용합니다.참조:CSCuw95068.
4단계. 3단계에서 Publisher의 올바른 호스트 이름을 확인할 수 없는 경우 노드 2를 마스터(가입자)로 설정합니다.
1단계. 노드의 서비스 상태를 확인합니다.UCCX 장애 조치 시나리오에서 마스터를 결정하는 알고리즘 이해 - Cisco UCCX 장애 조치 시나리오에서 마스터를 결정하는 알고리즘 이해 - Cisco 노드 1이 IN_SERVICE이고 노드 2가 PARTIAL_SERVICE에 있으면 노드 1이 마스터가 됩니다.상태가 동일한 경우(IN_SERVICE 또는 PARTIAL_SERVICE) 2단계로 이동합니다.
2단계. 2 UCCX 노드의 하드웨어 사양이 선택되어 있습니다.더 나은 사양을 가진 서버는 마스터를 전달합니다.하드웨어 사양이 동일한 경우 3단계로 이동합니다.
3단계. PUBLISHER의 호스트 이름이 CET(ClusterSpecificConfig)의 PrimaryEngineComputerName과 일치하면 PUBLISHER가 MASTER가 됩니다. MATCH가 없으면 4단계로 이동합니다.
4단계. 위 단계가 실패할 경우 가입자 마스터로 설정합니다.
아일랜드 모드 복구
이 시나리오는 두 마스터가 있을 때 섬 모드에서 복구하는 동안 발생합니다.이 경우 위의 알고리즘은 실행되지 않습니다.대신 UCCX 게시자 노드(설치된 첫 번째 UCCX 노드)는 마스터를 유지하고 가입자가 마스터를 삭제합니다.
참고:중요한 점은 기본 노드의 호스트 이름이 ClusterSpecificConfig 개체의 PrimaryEngineComputerNam 항목과 일치해야 한다는 것입니다.그렇지 않으면 보조 노드가 마스터로 선택됩니다.CET 툴을 사용하여 기본 노드에 연결하여 항목이 올바른지 확인하고 필요한 경우 변경합니다.
또한 1단계에서 설명한 것처럼 시스템에서 어떤 노드가 더 나은 서비스 상태에 있는지 확인할 때 이는 선택된 특정 서비스를 확인하는 방법입니다
- 엔진 서비스
- 엔진 내의 Manager Manager 구성 요소
이 두 서비스가 모두 IN_SERVICE인 경우 이 노드는 mastership으로 간주됩니다.
시나리오를 설명하는 데 알고리즘을 사용하는 로그의 조각입니다.이 시나리오에서는 WAN 중단 전에 노드 1이 마스터가 되도록 했습니다.WAN이 돌아왔을 때 노드 2가 MASTER가 되었습니다.
첫째, 두 노드는 모두 마스터였습니다.노드 1은 마스터였습니다.노드 2도 마스터가 되었습니다.
노드 2의 Cisco Unified CCX Engine은 마스터를 false에서 true로 변경합니다.
또한 노드가 다른 노드의 충돌을 의심하는 시간입니다.
WAN 링크가 다시 시작되고 CONVERGENCE가 시작된 경우:
컨버전스가 시작된 때입니다.따라서 앞에서 설명한 알고리즘은 마스터를 선택하는 데 사용됩니다.여기에서 두 노드의 상태를 확인합니다.
따라서 알고리즘을 통해 마스터는 노드 2(알고리즘의 포인트 1)에 전달됩니다. 통합 후 UCCX 노드 2가 마스터가 된 이유를 설명합니다.
- SHA-1은 암호학적 해시 함수(cryptographic hash function)로서 임의의 길이 (2) 의 입력값을 받아 160비트의 해시값으로 매핑
- 예를 들어,‘ 소프트웨어정책연구소’라는 한글 유니코드 메시지 (3) 의 SHA-1 해시값은 항상‘ 67 09 4F B8 94 0E 9F EA 83 64 A2 76 C0 96 CB FD AE E4 5B 70’(16진수)으로 매핑
- 암호학적 해시 함수로는 MD-SHA 패밀리가 대표적
- 1990년 MD4의 등장으로 MD-SHA 패밀리 시작, 그러나 보안 취약점 발견으로 2년 만에 MD5로 대체
- 그 후 MD5는 10년 이상 널리 사용되었으나, 2004년 중국의 대학 연구팀에 의해 깨져 (6) 퇴출
- MD5를 대체할‘ 안전한 해시 표준(Secure Hash Standard)’이라는 구호 아래 1993년 美 국립표준기술연구소(NIST)는 SHA-0 공개, 그러나 보안 문제 발생으로 바로 폐기하고 1995년 SHA-1 발표
- SHA-1은 2 80 정도의 계산 복잡도를 갖기 때문에 쉽게 깨지지 않을 것으로 믿어왔으나, 2005년부터 SHA-1의 복잡도를 낮추어 공격하는 방법이 줄지어 발표되고 컴퓨팅 성능이 빠르게 발전함에 따라, 결국 2011년 NIST는 공식적으로 SHA-1 사용 제한(DEPRECATED)
- 2017년 Google 연구팀과 CWI 암스테르담 연구소에 의해 SHA-1 충돌 공격 첫 성공
- SHA-1의 취약성을 보완하여 SHA-224, SHA-256, SHA-384, SHA-512 등이 발표되고 이를 SHA- 2라 부름
- NIST는 SHA-2보다 좀 더 안전한 SHA-3를 공모, 2012년 기존 알고리즘과는 전혀 다른‘ Keccak’이라는 알고리즘을 SHA-3의 해시 알고리즘으로 선정하였고, 2015년 SHA-3를 공식 발표 (7)
- 표 1 MD-SHA 패밀리 알고리즘 비교
- 연구팀은 SHA-1 충돌 공격 성공을‘ SHAttered’라고 명명
- ‘ SHAttered’는‘ 박살난’ 또는‘ 엄청나게 충격받은’이라는 사전적 의미를 가지는 동시에‘ SHA-’로 시작되는 단어를 선택한 재치 있는 중의적 표현
- SHA-1 충돌 공격 성공은 기존 연구들과 Google의 고성능 분산 컴퓨팅 인프라 때문에 가능
- 연구팀은 이론 기반의 기존 충돌 공격 연구들을 바탕으로 분산 컴퓨팅 환경에서 실제 공격을 구현하기 위해 새로운 알고리즘 제시
- SHA-1 충돌 공격은 이론적으로는 261의 계산이 필요(9) 하지만 실제 분산컴퓨팅 환경에서 구현하기 위해 263.1의 계산 필요, 그런데도 SHAttered 방식이 무차별 대입 탐색(brute-force search) 공격 방식보다 약 10만 배 빠름
- SHAttered 방식은 무려 9,223,372,036,854,775,808의 SHA-1 계산이 필요하므로 일반적인 컴퓨팅 환경에서 수행하기는 힘들지만, Google의 고성능 분산 컴퓨팅 환경에서는 비교적 단시일 만에 충돌 공격 성공
- 연구팀은 효율적인 계산을 위해 알고리즘을 두 단계로 나누었고, 첫 번째 단계는 CPU 기반의 분산 컴퓨팅 환경에서 수행되었으며, 많은 컴퓨팅 성능이 필요한 두 번째 단계를 위해서는 여러 개의 고성능 GPU로 구성된 컴퓨팅 환경에서 수행
- 연구팀은 SHA-1 충돌 공격 여부를 확인할 수 있는 서비스(10)를 제공하고 있으며, GitHub에 해당 알고리즘을 공개(11) 하여 누구나 자유롭게 사용 가능
- 그림 4 SHAttered 방식은 110개의 GPU를 사용하여 대략 1년 안에 SHA-1을 깰 수 있지만, 무차별 대입 탐색(brute-force search) 공격의 경우 1년 안에 깨려면 1.2천만 개의 GPU 필요
텐서 플로우 블로그 (Tensor ≈ Blog)
머신러닝(Machine Learning), 딥러닝(Deep Learning) 그리고 텐서(Tensor) 또 파이썬(Python)
머신 러닝의 모델 평가와 모델 선택, 알고리즘 선택 – 1장. 기초
머신 러닝 machine learning 은 소비자나 고객으로서 또 연구자나 기술자 입장에서도 우리 생활의 중심이 되었습니다. 예측 모델을 연구나 비즈니스에 적용할 때 공통으로 원하는 한가지는 바로 “좋은” 예측입니다. 훈련 데이터에 모델을 학습시키는 것도 중요하지만 이 모델이 이전에 본 적이 없는 데이터에도 잘 일반화 될지 어떻게 알 수 있을까요? 입력한 훈련 데이터를 단순히 기억하는 것이 아니라 미래의 데이터, 즉 한 번도 본 적이 없는 데이터에 대해 좋은 예측을 만들 것이라고 어떻게 알 수 있을까요? 어떻게 한번에 좋은 모델을 선택할 수 있을까요? 혹시 문제에 더 잘 맞는 다른 머신 러닝 알고리즘이 있는 건 아닐까요?
모델 평가가 머신 러닝 파이프라인 pipeline 의 종착지는 아닙니다. 어떤 데이터를 다루던지 사전에 계획을 세우고 목적에 맞는 방법을 사용해야 합니다. 이 글에서는 이런 방법들 중 하나를 선택해서, 좀 더 큰 그림의 전형적인 머신 러닝 워크플로우 workflow 에 적용하는 방법을 살펴 보겠습니다.
성능 추정: 일반화 성능 vs 모델 선택
간단한 절의 응답으로 시작해 보겠습니다.
Q: “어떻게 머신 러닝 모델의 성능을 추정하나요?”
A: “첫째 모델을 학습시키기 위해 알고리즘에 훈련 데이터를 주입합니다. 둘째 테스트 세트의 레이블을 예측합니다. 셋째 테스트 세트에서 잘못 예측한 수를 카운트해서 모델의 예측 정확도를 계산합니다.”
그리 간단하지 않군요. 목적에 따라서 모델의 성능을 추정하는 일은 그리 쉽지 않습니다. 앞의 질문을 다른 각도로 봐야할지 모릅니다. “왜 성능 추정이 중요한가요?” 이상적으로는 추정된 모델의 성능이 새로운 데이터에 모델이 얼마나 잘 작동하는지를 말해 줍니다. 미래의 데이터에 대해 예측하는 것이 종종 새로운 알고리즘의 개발이나 머신 러닝 애플리케이션에서 우리가 풀려고 하는 주된 문제입니다. 전형적으로 머신 러닝은 많은 실험을 해야 합니다. 예를 들면 알고리즘 내부 설정인 하이퍼파라미터 hyperparameter 를 튜닝하는 일입니다. 훈련 데이터셋에 대해 다른 하이퍼파라미터 설정으로 알고리즘을 학습시키면 다른 모델이 만들어집니다. 이 중에서 가장 잘 작동하는 모델을 선택하고 싶기 때문에 각각의 성능을 추정하여 순위를 매기기는 방법이 필요합니다. 알고리즘을 세세하게 튜닝하는 것에서 더 나아가 주어진 환경에서 최선의 솔루션을 찾기 위해 하나의 알고리즘만 테스트하지 않습니다. 예측 성능과 연산 성능 측면에서 종종 다른 알고리즘들을 서로 비교할 때가 많습니다.
왜 우리가 모델의 예측 성능을 평가해야 하는지 요약해 보겠습니다.
- 모델이 미래의 (처음 본) 데이터에 대한 예측 성능인 일반화 정확도 generalization accuracy 를 추정하고 싶습니다.
- 학습 알고리즘을 튜닝하고 주어진 가설 공간 hypothesis space 안에서 가장 성능 좋은 모델을 골라 예측 성능을 높이고 싶습니다.
- 문제 해결에 가장 적합한 머신 러닝 알고리즘을 찾길 원합니다. 즉 알고리즘의 가설 공간에서 최대 성능의 모델을 찾는 것은 물론 최대 성능을 내는 알고리즘을 선택하기 위해 여러 알고리즘들을 비교하고 싶습니다.
위에 나열한 세 개의 작업은 모두 공통으로 모델의 성능을 추정해야 하지만 각기 다른 접근 방법이 필요합니다. 이 글에서 이 세 가지 작업을 위한 각기 다른 방법에 대해 다루어 보겠습니다.
당연하게 모델의 미래 성능을 가능한 정확하게 예측하고 싶습니다. 그러나 이 글에서 딱 하나를 얻어 갈 것이 있다면, 모델과 알고리즘 선택에서 편향 bias 이 모든 모델에 동일하게 영향을 미친다면 편향된 성능 추정이 아무런 문제가 안된다는 사실입니다. 우리가 가장 높은 성능의 모델을 선택하기 위해 여러가지 모델과 알고리즘의 랭킹을 매길때 필요한 것은 상대적인 성능입니다. 예를 들어 우리의 성능 평가가 매우 편향되어 있어서 10%정도 과소 평가되더라도 순위에는 영향을 미치지 않습니다. 정확히 말해서 세 개 모델의 예측 성능 평가가
M2: 75% > M1: 70% > M3: 65%
이라면 UCCX 장애 조치 시나리오에서 마스터를 결정하는 알고리즘 이해 - Cisco 10% 비관적인 편향을 더하더라도 순위는 같습니다.
M2: 65% > M1: 60% > M3: 55%
하지만 가장 좋은 모델(M2)의 예측 정확도가 65%라고 보고한다면 이는 매우 잘못된 것입니다. 모델의 절대적인 성능을 추정하는 것은 아마도 머신 러닝 분야에서 가장 어려운 과제 중 UCCX 장애 조치 시나리오에서 마스터를 결정하는 알고리즘 이해 - Cisco 하나일 것입니다.
가정과 용어
모델 평가는 진짜 복잡한 주제입니다. 핵심에서 너무 벗어나지 않기 위해 필요한 가정과 이 글에서 사용할 기술 용어를 살펴 보겠습니다.
우리는 샘플이 i.i.d(독립적이고 동일한 확률분포 independent and identically distributed )라고 가정합니다. 즉 모든 샘플은 동일한 확률 분포로 선택되어지고 통계적으로 서로 독립적입니다. 샘플이 독립적이지 않는 경우는 일시적인 데이터나 시계열 데이터를 다룰 때 입니다.
지도 학습과 분류
이 글은 머신 러닝의 하위 분야로서 데이터셋에 타깃 값이 들어 있는 지도 학습 supervised learning 에 촛점을 맞출 것입니다. 여러가지 개념이 회귀 regression 에도 적용될 수 있지만, 범주형의 타깃 레이블을 샘플에 할당하는 분류 classification 문제에 집중하겠습니다.
0-1 손실과 예측 정확도
다음으로 예측 정확도에 대해 알아 보겠습니다. 예측 정확도는 예측이 맞는 샘플 수를 전체 샘플 수 n 으로 나눈 것입니다. 또는 수식으로는 예측 정확도 ACC를 다음과 같이 정의합니다
예측 오차 ERR 은 데이터셋 S 에서 샘플 n 에 대해 0-1 손실의 기대값입니다:
0-1 손실 L(·) 은 아래와 같이 정의 됩니다
여기서 는 i 번째 샘플의 정답 클래스 레이블이며 는 i 번째 샘플에 대해 예측한 클래스 레이블입니다.
우리의 목적은 일반화 성능이 좋은 모델 h 를 학습시키는 것입니다. 그 모델은 예측 성능을 극대화하거나 반대로 잘못된 예측 가능성 C(h) 를 최소화합니다.
D 는 데이터를 구성하는 분포를 나타내고 x 는 샘플의 특성 벡터, y 는 클래스 레이블입니다.
마지막으로 우리는 대부분 이 글에서 (에러 대신) 예측 정확도를 언급하기 때문에 디렉 델타 함수 Dirac Delta function 를 사용하겠습니다. 1
이 글에서 편향 bias 이란 용어를 사용할 땐 (머신 러닝 시스템에서의 편향이 아니라) 통계적인 편향을 의미합니다. 일반적인 용어로 추정량 estimator 의 편향은 기대값 과 추정되어야할 진짜 사이의 차이입니다.
그래서 만약 이면 는 의 편향되지 않은 추정량입니다. 좀 더 명확하게 말하면 모델의 예측 정확도 기대값과 진짜 예측 정확도 값 사이의 차이인 예측 편향을 계산합니다. 예를 들어 훈련 세트를 사용하여 예측 정확도를 계산하면 진짜 정확도보다 과대 추정되기 때문에 모델의 정확도 값을 낙관적으로 편향된 추정을 하게 됩니다.
분산 variance 은 추정량 와 기대값 2 의 단순한 통계적 분산입니다.
분산은 우리가 훈련 세트를 조금씩 변화시키면서 학습 과정을 반복할 때 모델의 예측의 변화량을 측정한 것입니다. 모델 구축 프로세스가 데이터의 변화에 민감할수록 분산은 더 커집니다.
마지막으로 모델, 가설, 분류기, 학습 알고리즘, 파라미터 용어를 정리하겠습니다:
- 목적 함수 target function : 예측 모델링에서는 전형적으로 특정 프로세스를 모델링하게 됩니다. 즉 어떤 알려지지 않은 함수를 학습 또는 근사하는 것입니다. 목적 함수 f(x) = y 는 우리가 모델링 하려고 하는 진짜 함수 f(·) 입니다.
- 가설 hypothesis : 가설은 우리가 모델링하려는 타깃 함수, 즉 진짜 함수와 비슷할거라 믿는 (혹은 희망하는) 어떤 함수입니다. 스팸 분류에서라면 스팸 이메일을 구분하는 분류 규칙이 됩니다.
- 모델: 머신 러닝 분야에서는 가설과 모델이 종종 혼용되어 사용됩니다. 다른 과학 분야에서는 이 둘이 다른 의미를 가지기도 합니다. 가설은 과학자에 의해 성립된 추측이고 모델은 이 가설을 테스트하기 위한 추측의 구현체입니다.
- 학습 알고리즘: 우리의 목표는 목적 함수를 찾거나 근사하는 것이고, 학습 알고리즘은 훈련 데이터셋을 사용해 목적 함수를 모델링하려는 일련의 명령 집합입니다. 학습 알고리즘은 가설 공간을 동반하며 미지의 목적 함수를 모델링하기 위해 가능한 가설들을 탐색하여 최종 가설을 만듭니다.
- 분류기 classifier : 분류기는 가설의 (요즘엔 종종 머신 러닝 알고리즘으로 학습된) 특별한 경우입니다. 하나의 개개의 데이터 포인트에 (범주형) 클래스 레이블을 지정하는 가설 또는 이산값 discrete value 을 출력하는 함수입니다. 이메일 분류의 경우 스팸 또는 스팸이 아닌 것으로 이메일을 분류하기 위한 하나의 가설이 분류기가 될 수 있습니다. 그러나 가설이 분류기와 동의로 사용되어서는 안됩니다. 다른 애플리케이션의 경우엔 가설이 학생의 학습시간과 교육 이력을 (연속형이므로 회귀에 적합한) 앞으로 받을 SAT 점수와 매핑하는 하나의 함수일 수 있습니다.
- 하이퍼파라미터: 하이퍼파라미터는 머신 러닝 알고리즘의 튜닝 파라미터입니다. 예를 들면, 회귀 분석의 평균 제곱 오차 mean squared error 비용 함수 cost function 에서 L2 페널티 penalty 의 규제 regularization 강도나 결정 트리의 최대 깊이 설정 값입니다. 반대로 모델 파라미터는 학습 알고리즘이 훈련 데이터에서 학습하는 파라미터입니다. 즉 모델 자체가 가지고 있는 파라미터입니다. 예를 들어 선형 회귀의 가중치 계수 coefficient (또는 기울기)와 편향 3 (또는 y 축의 절편)이 모델 파라미터입니다.
재치환 검증과 홀드아웃 방법
홀드아웃 holdout 방법은 아주 단순한 모델 평가 방법입니다. 레이블된 데이터셋을 훈련 세트와 테스트 세트 두 부분으로 나눕니다. 그런 다음 훈련 데이터에서 모델을 학습시키고 테스트 세트의 레이블을 예측합니다. 정확한 예측의 비율이 예측 정확도에 대한 추정치가 됩니다. 물론 예측하는 동안 테스트 레이블은 감추어져 있습니다. 우리는 같은 훈련 데이터셋으로 모델을 훈련하고 평가하고 싶지 않습니다(이를 재치환 평가 resubstitution evaluation 라고 부릅니다). 왜냐하면 과대적합 overfitting 으로 인해 편향이 매우 감소하기 때문입니다. 다른 말로하면 모델이 단순히 훈련 데이터를 모두 외워버린게 아닌지 또는 새로 처음 본 데이터에 잘 일반화 되었는지를 말할 수 없습니다.(다시말해 훈련 정확도와 테스트 정확도의 차이인 편향을 낙관적으로 추정하게 됩니다)
전형적으로 데이터셋을 훈련 세트와 테스트 세트로 나누는 것은 간단한 랜덤 서브샘플링 random subsampling 입니다. 모든 데이터는 동일한 확률 분포(각 클래스에 대해)로 부터 추출된다고 가정합니다. 이 샘플의 2/3 정도를 훈련 세트로 하고 1/3을 테스트 세트로 합니다. 그런데 여기에 두 가지 문제가 있습니다.
계층 샘플링
우리가 가진 데이터셋은 어떤 확률 분포에서 추출한 랜덤 샘플이라는 것을 기억하세요. 즉 이 샘플이 진짜 분포를 어느정도 대표한다고 가정합니다. 이 데이터셋을 중복없이 다시 샘플링 4 하면 샘플의 통계(평균, 비율, 분산)가 변경됩니다. 중복없는 서브샘플링 subsampling 이 통계에 미치는 정도는 샘플의 사이즈에 반비례합니다. Iris 데이터셋을 이용해 예를 들어 보겠습니다. 랜덤하게 2/3 은 훈련 데이터로 1/3 은 테스트 데이터로 나눕니다.
(소스 코드는 여기에서 확인할 수 있습니다)
데이터셋을 훈련 세트와 테스트 세트로 랜덤하게 나눌 때 통계적 독립성 statistical independence 의 가정을 위반하고 있습니다. Iris 데이터셋은 50개의 Setosa, 50개의 Versicolor, 50개의 Virginica 품종으로 구성되어 있습니다. 즉 꽃의 품종이 균일하게 분포되어 있습니다.
- 33.3% Setosa
- 33.3% Versicolor
- 33.3% Virginica
랜덤 함수가 붓꽃의 2/3을 (100개) 훈련 세트로 1/3을 (50개) 테스트 세트로 나눌 때 아래와 같은 분포를 만들었습니다.
- 훈련 세트 → 38 × Setosa, 28 × Versicolor, 34 × Virginica
- 테스트 세트 → 12 × Setosa, 22 × Versicolor, 16 × Virginica
Iris 데이터셋이 진짜 분포를 대변한다고 가정하면 (예를 들어 자연에서 이 세 품종이 균일하게 분포되어 있다고 가정하면), 우리는 불균형한, 즉 균일하지 않은 클래스 분포를 가진 데이터를 만든 셈입니다. 학습 알고리즘이 모델을 학습시키기 위해 사용할 클래스 비율은 “38% / 28% / 34%” 입니다. 그런 다음 모델을 평가할 때에 사용할 데이터셋은 거꾸로 불균형한 “24% / 44% / 32%” 의 클래스 비율을 가집니다. 학습 알고리즘이 이런 불균형에 완전히 무감하지 않는한 바람직한 상황이 아닙니다. 데이터셋의 클래스 불균형이 커지면 문제는 더 심각해 집니다. 최악의 경우 테스트 세트에는 소수 클래스의 샘플이 하나도 들어 있지 않을 수도 있습니다. 그러므로 데이터셋을 나눌때 계층적 stratified 방식이 일반적인 관례입니다. 계층 샘플링 stratification 은 각 클래스가 훈련 세트와 테스트 세트에 정확하게 분포되도록 데이터셋을 랜덤하게 나눕니다.
아주 크고 균형있는 데이터셋에서 비계층적 non-stratified 방식을 사용해 랜덤 서브샘플링 random subsampling 하는 것은 큰 문제되지 않습니다. 그러나 개인적으로 계층 샘플링은 머신 러닝 애플리케이션에 일반적으로 도움이 됩니다. 더군다나 계층 샘플링은 매우 쉽게 구현할 수 있습니다. Ron Kohavi는 계층 샘플링이 이 글의 뒷 부분에 설명할 k-겹 교차 검증 k-fold cross validation 에서 추정치의 분산과 편향에 긍정적인 효과를 준다는 것을 입증하였습니다.(Kohavi 1995)
홀드아웃 검증 방법의 장단점으로 들어가기 전에 전체 과정을 그림으로 요약해 보겠습니다.
① 첫번째 단계에서, 가용 데이터를 훈련 세트와 테스트 세트 두 부분으로 랜덤하게 나눕니다. 테스트 데이터를 따로 두는 것은 데이터나 리소스 부족같은 현실적인 문제와 더 많은 데이터를 모을 수 없을 때를 위한 해결책입니다. 테스트 세트는 학습 알고리즘을 위한 새로운, 본 적이 없는 데이터의 역할을 합니다. 일반화 정확도를 추정할 때 어떤 편향도 만들지 않도록 테스트 세트는 한 번만 사용해야 합니다. 보통 2/3을 훈련 세트로, 1/3을 테스트 세트로 만듭니다. 다른 경우엔 훈련/테스트 비율을 60/40, 70/30, 80/20 또는 90/10으로 할 때도 있습니다.
② 테스트 샘플을 떼어 놓은 후에 주어진 문제에 적합한 학습 알고리즘을 고릅니다. 위 그림에 나타난 Hyperparameter Values 가 무엇일까요? 간단하게 소개하면 하이퍼파라미터는 학습 알고리즘의 파라미터 또는 메타 파라미터입니다. 하이퍼파라미터는 수동으로 지정해야 합니다. 학습 알고리즘은 모델 파라미터와는 달리 훈련 데이터로부터 하이퍼파라미터를 학습할 수 없습니다.
하이퍼파라미터는 모델이 학습하는 동안 학습되지 않기 때문에 이들을 별도로 최적화하기 위한 추가적인 과정 또는 외부 루프 5 가 필요합니다. 홀드아웃 방식은 이 작업에는 적합하지 않습니다. 여기서는 어떤 고정된 하이퍼파라미터를 사용해 진행합니다. 직관에 따라 정할 수도 있고 또는 머신 러닝 라이브러리를 사용한다면 알고리즘에 내장된 기본값을 사용할 수도 있습니다.
③ 학습 알고리즘이 이전 단계에서 모델을 학습시켰습니다. 다음 질문은 “이 모델이 얼마나 좋은가?”입니다. 이제 테스트셋이 사용될 차례입니다. 알고리즘은 이전에 테스트 세트를 본 적이 없으므로 새로운 처음 본 데이터에 대해 편향되지 않는 성능 추정을 합니다. 그러므로 해야 할 일은 모델을 사용해 테스트 세트의 클래스 레이블을 예측하는 것입니다. 그런 다음 일반화 성능을 추정하기 위해 예측된 클래스 레이블과 진짜 레이블을 비교를 합니다.
④ 결국 우리는 새로운 데이터에 대해 모델이 얼마나 잘 작동하는지 추정했습니다. 그러므로 더 이상 테스트 데이터를 따로 떼어 놓을 필요가 없습니다.
우리는 샘플이 독립적이고 동일한 분포를 가진다고 가정했으므로 가용한 모든 데이터를 주입한다고 해서 모델의 성능이 더 나빠질 이유가 없습니다. 통상적으로 모델의 성능이 한계치에 이르기 전에는 알고리즘에 유용한 데이터를 더 제공할수록 일반화 성능은 좋아집니다.
비관적인 편향
훈련 세트와 테스트 세트를 나누는 것에 대해 이야기할 때 언급한 두가지 문제를 기억하나요? 첫번째 문제는 독립성의 위반과 서브샘플링으로 인한 클래스 비율의 변화입니다. 두번째 문제는 홀드아웃 그림을 살펴 보면서 다루었습니다. 네번째 단계에서 모델의 성능 한계에 대해 이야기했고 추가 데이터가 유용할지 안할지 이야기했습니다. 성능 한계 이슈를 따라가 보면, 우리 모델이 성능 한계에 도달하지 않았을 경우 성능 추정은 비관적으로 편향되어 있을 수 있습니다. 알고리즘이 더 많은 데이터로 나은 모델을 학습시킬 수 있다고 가정하면, 일반화 성능을 재기위해 떼어 놓았던 (예를 들면 테스트 데이터) 가용한 데이터를 가로막고 있던 셈입니다. 네번째 단계에서 완전한 데이터셋으로 모델을 학습시킵니다. 그러나 테스트 데이터셋을 사용했기 때문에 일반화 성능을 추정할 수 없습니다. 실제 애플리케이션에서는 피할 수 없는 딜레마로 일반화 성능의 추정은 비관적으로 편향되어 있다는 것을 인지해야 합니다.
위에서 사용한 홀드아웃 방법을 사용하면 모델의 일반화 정확도에 대한 점추정 point estimate 를 계산한 것입니다. 어떤 애플리케이션에서는 이 추정치 근방의 신뢰 구간 confidence interval 이 더 유용하고 필요할 뿐만 아니라 특정한 훈련/테스트 세트 묶음에 점추정이 민감할 수도 있습니다(즉 분산이 큰 경우).
실전에서 자주 사용되는 (하지만 저는 추천하지 않습니다) 다른 간단한 방법은 정규 분포 Normal Distribution 를 가정한 친숙한 공식을 사용하여 중심 극한 정리 central limit theorem 로 하나의 훈련, 테스트 분할로 만든 평균의 신뢰 구간을 계산하는 것입니다.
확률 이론에서 중심 극한 정리(CLT)란 주어진 조건하에서 잘 정의된 기대값, 분산으로 독립 확률 변수를 충분히 많이 반복하여 계산한 산술 평균은 실제 데이터 분포에 상관없이 정규 분포에 가깝다는 것을 말합니다. [https://en.wikipedia.org/wiki/Central_limit_theorem]
이 단순한 방식을 정규 근사 구간 normal approximation interval 이라고 부릅니다. 어떻게 작동하는 것일까요? 예측 정확도는 다음과 같이 계산합니다.
여기서 L(·) 은 0-1 손실 함수이고 n 은 테스트 세트에 있는 샘플의 수, 는 예측된 클래스 레이블, y 는 i 번째 샘플의 진짜 클래스 레이블입니다. 그래서 각 예측은 베르누이 시행 Bernoulli trial 으로 볼 수 있으므로 올바른 예측 수 X 는 이항 분포 binomial distribution X ~ B(n, p) 가 되고 n 은 샘플, k 는 시도 횟수이며 n ∈ N, p ∈ [0, 1] 입니다. 6
(p 는 성공 확률이고 (1 – p) 는 실패 확률-잘 못된 예측-입니다)
이제 예상되는 성공 횟수는 μ = np 로 계산되므로 예측기가 50% 성공 확률을 가진다면 40개의 예측에서 20개를 맞출 것입니다. 성공 횟수에 대한 추정은 σ 2 = np(1 – p) = 10 분산을 가지고, 표준 편차는
입니다. 그런데 우리는 정확한 값이 아니라 성공의 평균 횟수에 관심이 있으므로 정확도 추정의 분산을 다음과 같이 계산합니다. 7
정규 분포로 근사하면 신뢰 구간을 아래와 같이 쓸 수 있습니다.
여기에서 α 는 에러의 분위 quantile 를 나타내고 z 는 표준 정규 분포의 분위를 나타냅니다. 전형적인 신뢰 구간인 95%(alpha=5%)에서 z=1.96 입니다. 8
그러나 실제적으로 훈련-테스트 세트를 여러번 분할해서 만든 평균 추정치(각 반복 결과의 평균)로 신뢰 구간을 계산하는 것을 추천합니다. 여기에서 기억해야 할 것은 테스트 세트에 샘플 수가 적으면 분산이 커지고(n 이 분수의 분모이므로) 따라서 신뢰 구간의 폭이 넓어진다는 것입니다.
0 개 댓글