11. Practical Methodology

심층 학습 기법을 성공적으로 적용하기 위해서는 어떤 알고리즘이 존재하고 그들이 어떻게 동작하는지를 설명하는 원리를 잘 아는 것만으로는 부족하다. 이 장에서는 알고리즘을 제대로 적용하기 위한 실용적 방법들을 다룬다. 이를 위해서는 다음의 실용적 설계 기법들이 필요하다: 목표 설정, 엔드투엔드 파이프라인 수립, 성능 병목이 되는 지점 파악, 데이터 수집/초매개변수 조절/알괼즘 변경 등 점진적 변화.

11.1. Performance Metrics

어떤 오차 지표를 사용할지를 정함으로써 목표를 설정하는 것은 필요한 첫 번째 단계이다. 오차 지표가 그 이후의 모든 동작을 가이드할 것이기 때문이다. 거의 대부분의 적용례에서, 완전한 0의 오차를 얻는 것은 불가능하다. 또한, 학습 데이터의 양도 여러 이유로 인해 제한될 수밖에 없다. 합리적인 수준의 기대 성능을 어떻게 판단할 수 있는가? 학술적으로는 이전 출시된 벤치마크 결과로부터 얻을 수 있는 오차율을 사용한다. 실용적으로는 애플리케이션이 안전하고, 비용 효율적이고, 소비자들에게 매력을 끌 수 있는데 필요한 오차율이 필요하다. 성능 지표의 대상값 이외에도 중요한 고려 사항은 어떤 지표를 사용할 것이냐이다. 많은 적용례는 보다 발전된 지표를 필요로 한다. 어떤 종류의 실수는 다른 실수들보다 치명적이기 때문이다. 또한, 분류기가 어떤 드문 사건을 감지해야 할 필요도 있다. 이를 위해서 재현도정확도, 그리고 이를 활용한 재현도-정확도 곡선, F-점수 등을 사용한다. 다른 적용례에서는 기계 학습 시스템이 결정을 거부할 수도 있다. 이 상황에서는 커버율이라는 지표를 쓴다. 다른 여러 지표도 가능하다. 중요한 것은 어떤 성능 지표를 시간에 따라 발전시킬 것이냐이고 그 지표를 개선시키는 데 집중하는 것이다.

11.2. Default Baseline Methods

성능 지표와 목표를 골랐다면, 실용적인 적용례에서 다음 단계는 합리적인 엔드투엔드 시스템을 가능한 빨리 설립하는 것이다. 문제의 복잡도에 따라, 처음에는 심층 학습을 쓰지 않을 수도 있다. 물체 인식, 음성 인식 등 인공 지능이 정복한 카테고리에 문제가 속한다면 적절한 심층 학습 모델로 시작하는 것이 좋다. 우선, 데이터 구조에 기반한 모델의 일반 카테고리를 선택하라. 최적화 알고리즘의 합리적인 선택은 감소하는 학습율과 모멘텀을 차용한 추계적 경사 하강법이다. 다른 합리적인 대안은 아담이다. 배치 표준화는 성능 최적화에 큰 영향을 끼칠 수 있다. 학습 데이터의 표본 수가 수천 만 이상이 아니라면 처음부터 정규화를 포함하라. 작업이 이미 광범위하게 연구된 분야라면, 이전에 학습된 작업에서 가장 잘 동작하는 것으로 알려진 알고리즘과 모델을 복사하는 것이 좋다. 흔한 질문은 비지도학습을 언제 시작할지에 대한 것인데, 이는 도메인에 따라 다르다.

11.3. Determining Whether to Gather More Data

최초의 엔드투엔드 시스템을 설립하면, 알고리즘의 성능을 측정하고 그를 어떻게 개선시킬지 판정해야 한다. 데이터를 더 모아야 할지는 어떻게 판단하는가? 우선, 학습 집합에서의 성능이 괜찮은지를 본다. 학습 집합에서의 성능이 괜찮다면, 테스트 집합에서의 성능을 본다. 테스트 집합에서의 성능이 좋다면 할 것이 없다. 그렇지 않다면 데이터를 더 모으는 것이 좋다. 모을 때는 얼마나 모아야 하는가? 이 때는 학습 집합 크기와 일반화 오차간 관계를 그리는 곡선이 도움이 된다. 데이터를 더 모을 수 없다면 학습 알고리즘을 개선시키는 것이 좋다.

11.4. Selecting Hyperparameters

대다수의 심층 학습 알고리즘은 알고리즘의 많은 동작을 제어하는 초매개변수와 함께 한다. 이를 선택하는 데는 두 가지 방법이 있는데 직접 선택하는 것과 자동적으로 선택하는 것이다.

11.4.1. Manual Hyperparameter Tuning

초매개변수를 직접 세팅하기 위해서는 초매개변수, 학습 오차, 일반화 오차, 계산량간 관계를 이해할 필요가 있다. 직접적인 초매개변수 탐색의 목표는 동작 시간과 메모리 예산하에 최저 일반화 오차를 찾는 것이다. 우선적인 목표는 모델의 유효 용량을 조절해 작업의 복잡도와 맞추는 것이다. 일반화 오차는 초매개변수 하나의 함수에 대해 U자 곡선을 따른다. 어떤 초매개변수에 대해서는 초매개변수의 값이 커지면 과적합이 생길 수 있다. 또한, 모든 초매개변수가 U자 곡선 전체를 탐색할 수 있는 것은 아니다. 이진 초매개변수나 이산 초매개변수 등이 그렇다. 학습률은 가장 중요한 초매개변수일 것이다. 초매개변수 하나만 조정해야 한다면 학습률을 조정하라. 학습률 이외의 매개변수를 조절하는 것은 모델이 과적합하는지 과소적합하는지를 진단해 학습 오차와 테스트 오차를 모니터링하는 것을 필요로 한다. 학습 집합에서의 오차가 원하는 오차율보다 크다면, 용량을 늘릴 수밖에 없다. 테스트 집합에서의 오차가 원하는 오차율보다 크다면, 정규화 초매개변수를 바꾸는 방법이 있다. 또한, 많은 초매개변수들은 모델의 용량의 증감에 상관없이 세팅될 수 있다. 초매개변수를 직접 세팅하는 동안, 최종 목표를 잊지 말라: 테스트 집합에서 좋은 성능을 내는 것.

11.4.2. Automatic Hyparameter Optimization Algorithm

이상적인 학습 알고리즘은 초매개변수의 직접적인 조정을 요구하지 않고 데이터셋만을 받아 함수를 출력한다. 이를 위해 이론적으로는 학습 알고리즘을 받고 초매개변수를 골라 초매개변수를 사용자로부터 숨기는 초매개변수 최적화 알고리즘을 세울 수 있다.

11.4.3. Grid Search

초매개변수가 여러 개일때 흔한 접근법은 격자 탐색을 하는 것이다. 각각 초매개변수에 대해 작은 크기의 유한집합을 선택한 뒤 이들의 곱집합에 대해서 탐색을 한다. 격자의 선택은 태개 이전의 경험으로부터 보수적으로 이루어진다. 격자 탐색은 반복적으로 수행되었을 때 성능이 좋다. 문제는 초매개면수가 많아질 수록 계산량이 지수함수적으로 증가한다는 것이다.

11.4.4. Random Search

격자 탐색에 대한 대안으로는 무작위 탐색이 있다. 이를 위해서는 각 매개변수에 대한 주변분포를 정의한 뒤 여기서 탐색을 한다. 격자 탐색과 비슷하게, 반복적으로 수행되었을 때 성능이 좋다. 이는 계산량이 지수함수적이지 않기 때문에 훨씬 빠르다.

11.4.5. Model-Based Hyperparameter Optimization

좋은 초매개변수를 찾는 것은 최적화 문제로 변환될 수 있다. 단 경사가 존재하지 않기 때문에, 검증 집합 오차에 대한 모델을 만들고 새로운 초매개변수에 대한 추측은 이 모델 내에서 최적화를 수행함으로써 제안한다. 현재는 개선된 심층 학습 결과를 얻거나 결과를 더 적은 노력으로 얻는 데에는 베이지안 초매개변수 최적화는 추천되지는 않는다. 무작위 탐색보다 더 복잡한 초매개변수 최적화 알고리즘의 단점은 실험으로부터 정보를 추출하는 것이 가능해지기 전에 완전한 학습 환경을 필요로 한다는 것이다.

11.5. Debugging Strategies

기계 학습 시스템의 성능이 안 나오면 문제가 알고리즘에 있는지 알고리즘의 구현에 있는지를 판별하기는 어렵다. 많은 경우, 알고리즘의 예상 동작을 사전에 알기는 어렵다. 또한, 기계 학습 모델은 각각이 적응적인 복수의 부분으로 구성되어 있다는 것이 문제가 된다. 신경망에 대한 대다수의 디버깅 전략은 이 두 가지의 난점을 해결하기 위한 것이다. 이에는 다음이 있다: 모델의 동작을 시각화하기, 모델의 최아그이 실수를 시각화하기, 학습과 테스트 오차를 사용해 소프트웨어시스템의 성능이 안 나오면 문제가 알고리즘에 있는지 알고리즘의 구현에 있는지를 판별하기는 어렵다. 많은 경우, 알고리즘의 예상 동작을 사전에 알기는 어렵다. 또한, 기계 학습 모델은 각각이 적응적인 복수의 부분으로 구성되어 있다는 것이 문제가 된다. 신경망에 대한 대다수의 디버깅 전략은 이 두 가지의 난점을 해결하기 위한 것이다. 이에는 다음이 있다: 모델의 동작을 시각화하기, 모델의 최아그이 실수를 시각화하기, 학습과 테스트 오차를 사용해 소프트웨어를 추론하기, 매우 작은 데이터셋을 피팅하기, 산술적 미분값과 역전파된 미분값을 비교하기, 활성 함수와 경사의 히스토그램을 모니터링하기. 많은 심층 학습 알고리즘은 각 단계의 결과들에 대해 일정 부분의 보장을 필요로 하니 이를 이용하는 것도 좋다.

11.6. Example: Multi-Digit Number Recognition

이를 잘 적용할 수 있는 예로 여러 자릿수 숫자 인식이 있다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중