2021.04.02

머신러닝 프로젝트를 '레벨 업'시킬 수 있는 8가지 방법

Martin Heller | InfoWorld
데이터를 분류하거나 결과를 예측해야 하는가? 머신러닝(ML) 프로젝트 진행에 어려움을 겪고 있는가? 상황을 호전시킬 수 있는 다양한 기법들이 있다.

아래에서 논의하는 8가지 방법 중 일부는 ML 프로세스를 극적으로 가속화할 것이며, 프로세스를 가속화할 뿐 아니라 더 나은 모델을 구축하는 데 도움이 되는 것들도 있을 것이다. 이 모든 기법이 특정 프로젝트에 적합하지는 않을 것이다. 단, 첫 번째인 탐구 데이터 분석은 거의 모든 프로젝트에 유효하다. ML 또는 딥러닝 프로젝트를 도약시킬 수 있는 8가지 방법을 살펴본다. 
 
Image Credit : Getty Images Bank

탐구 데이터 분석부터 시작하라
데이터를 심층적으로 검토하지 않고 ML 훈련에 바로 뛰어드는 것은 설계 없는 건축과 같다. 많은 노력이 필요하며 큰 보람도 없을 것이다.

탐구 데이터 분석(Exploratory data analysis)은 그래픽 및 통계 방법을 결합한다. 좀더 보편적인 기법으로는 개별적인 변수에 대한 히스토그램 및 상자-수염 플롯, 변수 쌍에 대한 분산 차트, 변수들 사이의 상관관계를 쌍별 상관관계에 대한 히트맵 플롯으로 표시하는 기술통계 플롯 등이 있다.

탐구 데이터 분석에는 또한 PCA(Principal Component Analysis)와 NLDR(Nonlinear Dimensionality Reduction) 등 차원수 감소 기법도 포함될 수 있다. 시간 의존적인 데이터의 경우 시간을 기준으로 미가공 변수와 통계에 대한 선도표를 작성해야 하며, 이를 통해 폭풍과 (에헴) 유행병 등의 외부 효과로부터 발생하는 계절적 및 요일별 변동과 변칙적인 움직임을 파악할 수 있다.

탐구 데이터 분석은 단순한 통계 그래프가 아니다. 이것은 데이터를 모델에 강제로 적용하는 대신에 열림 마음가짐을 유지할 수 있도록 도와주기 위해 고안된 데이터 분석에 대한 철학적인 접근방식이다. 요즈음에는 탐구 데이터 분석에 관한 많은 아이디어가 데이터 마이닝에 통합됐다.

자율 클러스터를 구축하라
클러스터 분석(Cluster analysis)은 모델이 유사한 데이터 포인트 그룹을 찾도록 요청하는 자율 학습(unsupervised learning) 문제이다. 현재 여러 가지 클러스터링 알고리즘이 사용되고 있으며, 저마다 특성이 조금씩 다르다. 일반적으로 클러스터링 알고리즘은 데이터 포인트의 특징 벡터들 사이의 지표 또는 거리 특징을 살펴본 후 서로 ‘가까운’ 것들을 그룹화한다. 클러스터링 알고리즘은 클래스가 중첩되지 않을 때 특히 효과적이다.

보편적인 클러스터링 방법은 각 클러스터 안의 변동(제곱의 합)을 최소화하기 위해 유클리드 거리 척도를 사용하여 n회의 관찰을 k개의 클러스터로 분할하려 시도하는 K-평균이다. 이것은 벡터 양자화 방법이며 특징 학습에 유용하다.

로이드의 알고리즘(중심 업데이트가 적용된 반복적인 클러스터 집합체)은 가장 보편적인 휴리스틱(Heuristic)이며 문제를 해결하는 데 사용되고 상대적으로 효율적이지만 전역 수렴은 보장하지 않는다. 이를 개선하기 위해 사람들은 포지(Forgy) 또는 랜덤 파티션(Random Partition) 방법으로 생성된 초기 클러스터 중심을 사용하여 알고리즘을 여러 번 실행한다.

K-평균은 평균이 클러스터 중심으로 수렴하도록 분리 가능한 구체 클러스터를 가정하며 데이터 포인트의 배치는 상관없다고 가정한다. 가장 가까운 클러스터 중심이 정확한 할당이 되도록 클러스터는 크기가 유사할 것으로 예상한다.

K-평균 클러스터링이 효과가 없다면 계층구조 클러스터 분석, 혼합 모델, DBSCAN 등을 고려하자. 또한 오토인코더(Autoencoder)와 모멘트법 등 다른 종류의 자율 학습도 고려한다.

반자율 학습을 통해 데이터를 태그 처리하라
태그 처리된 데이터는 ML의 필수 요소이다. 태그 된 데이터가 없으면 모델을 훈련시켜 대상 값을 예측할 수 없다.

이에 대한 단순하지만 비용이 높은 해결책은 모든 데이터에 수동으로 태그를 적용하는 것이다. 교수들 사이에서는 이에 대해 대학원생들에게 시키면 된다는 ‘농담’을 한다(대학원생에게는 재미없는 이야기일 것이다).

비용이 덜 드는 해결책은 데이터 중 일부에 수동으로 태그를 적용한 후 1개 이상의 모델로 나머지 대상 값을 예측하는 것이다. 이것을 반자율 학습(semi-supervised learning)이라고 부른다. 자율 훈련 알고리즘(반자율 학습의 일종)을 통해 확률이 일정 한계치 이상이 단일 모델로부터 예상되는 값을 수용하고 더 커진 데이터세트를 사용하여 다듬어진 모델을 구축한다. 

그리고 해당 모델을 다른 예측에 사용하며, 신뢰할 수 있는 예측이 없을 때까지 이를 반복한다. 자율 훈련이 효과가 있을 때도 있지만, 이 모델은 잘못된 예측에 의해 무너진다.

여러 개의 모델을 구축하고 이를 활용하여 서로 확인하는 경우 Tri-트레이닝 등 좀 더 탄탄한 것을 개발할 수 있다. 또 다른 대안은 반자율 학습과 다른 데이터로 구축된 기존 모델의 전이학습(Transfer Learning)을 결합하는 것이다.

이런 스키마를 스스로 구현할 수 있다. 또는, 아마존 세이지메이커 그라운드 트루스(Amazon SageMaker Ground Truth), 하이브 데이터(Hive Data), 라벨박스(Labelbox), 데이터루프(Dataloop), 데이터사우어(Datasaur) 등의 훈련된 라벨러(Labeler)를 통해 웹 서비스를 이용할 수 있다.

보완적인 데이터세트를 추가하라
외부 영향(Externalities)은 데이터세트의 변칙을 드러나게 하는 경우가 많으며, 시계열 데이터세트의 경우 특히 그렇다. 예를 들어, 자전거 대여 데이터세트에 날씨 데이터를 추가하면 폭풍우 중 대여 급감 등 몰랐을 수도 있는 여러 변화를 설명할 수 있게 된다.

소매 매출 예측도 좋은 예이다. 매출, 경쟁력 있는 상품, 광고 변화, 경제적 이벤트, 날씨 등이 모두 매출에 영향을 미칠 수 있다. 쉽게 요약하면, 데이터가 이해가 되지 않는 경우 일부 맥락을 추가하면 모든 것이 더 명확해질 것이다.

자동화된 ML을 훈련시키라 
한 때, 데이터를 위한 최고의 모델을 찾는 유일한 방법이 가능한 모든 모델을 훈련시키고 그 중에서 최고를 찾는 것이었다. 태그가 적용된 표 데이터를 포함한 많은 종류의 데이터에서 AutoML 도구에 데이터세트를 제공하고 나중에 적절한 답을 얻을 수 있다. 

때로는 최고의 모델이 다른 모델을 합친 것이다. 추론에 사용하기에는 비용이 높을 수 있지만 가장 단순한 모델이 그 조합만큼 좋으면서 운영이 비용이 훨씬 낮은 경우가 많다.

AutoML 서비스는 무작정 모든 적절한 모델을 시도해보는 것 이상의 기능을 제공한다. 예를 들어, 일부는 시계열 예측을 위해 자동으로 정규화 되고 가공된 특징 세트를 생성하고 누락된 값을 귀속시키고 상관관계가 있는 특징들을 버리며 뒤떨어지는 칼럼을 추가한다. 

또 다른 옵션 활동은 최고의 모델이 이를 더욱 발전시킬 수 있도록 하이퍼파라미터 최적화를 수행하는 것이다. 할당된 시간 안에 가능한 최고의 결과를 얻기 위해 일부 AutoML 서비스는 크게 개선되지 않는 모델의 훈련을 신속하게 중단하고 가장 전망 있는 것처럼 보이는 모델에 더 많은 사이클을 투입한다.

전이 학습을 통해 훈련된 모델을 사용자 정의하라
대규모 신경망 네트워크를 처음부터 훈련시키려면 일반적으로 많은 데이터(훈련 항목이 수백만 개인 경우도 많음)와 상당한 시간 및 컴퓨팅 리소스(여러 개의 서버 GPU를 몇 주 동안 사용하기)가 필요하다. 

전이 학습(transfer learning)이라는 강력한 지름길은 새로운 데이터로 네트워크상에서 몇 가지 새로운 계층을 훈련시켜 훈련된 신경망 네트워크를 사용자 정의하거나 네트워크에서 특징을 추출한 후 이를 사용하여 단순한 선형적 분류자를 훈련시키는 것이 목적이다. 

이는 애저 커스텀 비전(Azure Custom Vision) 또는 사용자 정의 랭기지 언더스탠딩(Language Understanding) 같은 클라우드 서비스를 사용하거나 텐서플로(TensorFlow) 또는 파이토치(PyTorch) 등으로 생성된 훈련된 신경망 네트워크 라이브러리를 사용하여 수행할 수 있다. 전이 학습 또는 세부 튜닝은 하나의 GPU로 수 분 안에 완료될 수 있는 경우가 많다.

‘모델 주(Model Zoo)’로부터 딥러닝 알고리즘을 시도하라
선호하는 클라우드 서비스 또는 딥러닝 프레임워크를 사용하여 전이 학습을 통해 필요로 하는 모델을 손쉽게 생성할 수 없더라도 여전히 처음부터 심층적인 신경망 네트워크 모델을 설계하고 훈련시키는 것을 방지할 수 있을 수도 있다. 

대부분의 주요 프레임워크는 모델 API보다 더 광범위한 모델 주가 있다. 심지어 여러 개의 프레임워크 또는 ONNX 등 특정 표현을 처리할 수 있는 프레임워크를 위한 모델 주를 유지관리 하는 웹 사이트도 있다.

모델 주에 있는 많은 모델이 훈련을 마치고 사용할 준비가 되어 있다. 하지만 일부는 부분적으로 훈련된 스냅샷(Snapshot)이며, 그 가중치는 자신의 데이터세트를 이용한 훈련의 시작점으로써 유용하다.
 
모델의 하이퍼파라미터를 최적화하라
모델을 훈련한다고 해서 프로세스가 끝나지는 않는다. ML모델은 다양한 하이퍼파라미터를 사용하여 개선할 수 있는 경우가 많으며 가장 좋은 것은 하이퍼파라미터 최적화 또는 튜닝을 통해 찾는다. 도약이라고 볼 수는 없지만 초기의 부실한 모델에서 훨씬 나은 모델로 발전시키는 방법이다.

하이퍼파라미터는 학습 프로세스 관리에 사용되는 모델 외부의 파라미터이다. 노드(Node) 가중치 등 모델 내부의 파라미터는 모델 훈련 중 학습된다. 하이퍼파라미터 최적화는 기본적으로 특정 모델에 대해 최고의 하이퍼파라미터 세트를 찾는 프로세스이다. 최적화의 각 단계에는 모델 재훈련과 손실 함수값 복구 등이 수반된다.

중요한 하이퍼파라미터는 모델 안에서 사용되는 모델과 옵티마이저에 따라 달라진다. 예를 들어, 학습 속도는 신경망 네트워크의 공통적인 하이퍼파라미터이지만 옵티마이저가 시대 간의 학습을 통제할 때는 예외이다. RBF(Radial Basis Function) 커널(Kernel)을 이용한 SVM(Support Vector Machine) 분류자의 경우 하이퍼파라미터가 조직화 상수이자 커널 상수일 수도 있다.

하이퍼파라미터 옵티마이저는 다수의 검색 알고리즘을 사용할 수 있다. 그리드 검색은 전통적인 방식이다. 한편, 그리드 검색은 여러 개의 하이퍼파라미터의 모든 조합을 아우르기 위해 많은 훈련이 필요하지만, 다른 한편으로는 충분한 컴퓨팅 리소스가 있는 경우 모든 훈련을 동시에 실행할 수 있다. 무작위 검색이 더 효율적이면서 비교하기 쉬운 경우가 있다. 다른 대안으로는 베이스(Bayesian) 최적화, 기울기 하상, 진화적 최적화, 조기 중단 알고리즘 등이 있다.

요약하자면 탐구 데이터 분석을 통해 모델 구축 프로세스를 시작하자. 자율 학습을 통해 데이터와 특징에 관해 더욱 자세히 파악하자. AutoML을 사용하여 여러 모델을 신속하게 테스트하자. 심층적인 신경망 네트워크 모델이 필요한 경우, 처음부터 자신만의 네트워크를 설계하여 훈련시키기 전에 전이 학습이나 모델 주를 사용해 보자. 꽤 괜찮아 보이는 모델을 발견하면 하이퍼파라미터 훈련을 통해 발전시켜보자. 그리고 이 모델을 생산에 투입하고 모니터링할 수 있다.

어쨌든, 이것이 끝이 아니다. 시간이 지나면 현실 이벤트에 의해 데이터 또는 개념이 표류하게 되고 모델을 개선하여 다시 훈련시켜야 한다. 심지어 새로운 데이터에 다른 종류의 모델이 더욱 적합하다는 사실을 발견할 수도 있다. 모델을 한 번만 만들어도 된다면 무슨 재미가 있을까?

* 인포월드 기고 편집자이자 리뷰어인 Martin Heller는 웹 및 윈도우 프로그래밍 컨설턴트 경력을 보유자다. 1986년부터 2010년까지는 데이터베이스, 소프트웨어, 웹사이트 개발자로 일했으며 그 이후에는 알파 소프트웨어의 기술 및 교육 부사장, 튜브파이의 의장이자 CEO를 역임했다. ciokr@idg.co.kr



2021.04.02

머신러닝 프로젝트를 '레벨 업'시킬 수 있는 8가지 방법

Martin Heller | InfoWorld
데이터를 분류하거나 결과를 예측해야 하는가? 머신러닝(ML) 프로젝트 진행에 어려움을 겪고 있는가? 상황을 호전시킬 수 있는 다양한 기법들이 있다.

아래에서 논의하는 8가지 방법 중 일부는 ML 프로세스를 극적으로 가속화할 것이며, 프로세스를 가속화할 뿐 아니라 더 나은 모델을 구축하는 데 도움이 되는 것들도 있을 것이다. 이 모든 기법이 특정 프로젝트에 적합하지는 않을 것이다. 단, 첫 번째인 탐구 데이터 분석은 거의 모든 프로젝트에 유효하다. ML 또는 딥러닝 프로젝트를 도약시킬 수 있는 8가지 방법을 살펴본다. 
 
Image Credit : Getty Images Bank

탐구 데이터 분석부터 시작하라
데이터를 심층적으로 검토하지 않고 ML 훈련에 바로 뛰어드는 것은 설계 없는 건축과 같다. 많은 노력이 필요하며 큰 보람도 없을 것이다.

탐구 데이터 분석(Exploratory data analysis)은 그래픽 및 통계 방법을 결합한다. 좀더 보편적인 기법으로는 개별적인 변수에 대한 히스토그램 및 상자-수염 플롯, 변수 쌍에 대한 분산 차트, 변수들 사이의 상관관계를 쌍별 상관관계에 대한 히트맵 플롯으로 표시하는 기술통계 플롯 등이 있다.

탐구 데이터 분석에는 또한 PCA(Principal Component Analysis)와 NLDR(Nonlinear Dimensionality Reduction) 등 차원수 감소 기법도 포함될 수 있다. 시간 의존적인 데이터의 경우 시간을 기준으로 미가공 변수와 통계에 대한 선도표를 작성해야 하며, 이를 통해 폭풍과 (에헴) 유행병 등의 외부 효과로부터 발생하는 계절적 및 요일별 변동과 변칙적인 움직임을 파악할 수 있다.

탐구 데이터 분석은 단순한 통계 그래프가 아니다. 이것은 데이터를 모델에 강제로 적용하는 대신에 열림 마음가짐을 유지할 수 있도록 도와주기 위해 고안된 데이터 분석에 대한 철학적인 접근방식이다. 요즈음에는 탐구 데이터 분석에 관한 많은 아이디어가 데이터 마이닝에 통합됐다.

자율 클러스터를 구축하라
클러스터 분석(Cluster analysis)은 모델이 유사한 데이터 포인트 그룹을 찾도록 요청하는 자율 학습(unsupervised learning) 문제이다. 현재 여러 가지 클러스터링 알고리즘이 사용되고 있으며, 저마다 특성이 조금씩 다르다. 일반적으로 클러스터링 알고리즘은 데이터 포인트의 특징 벡터들 사이의 지표 또는 거리 특징을 살펴본 후 서로 ‘가까운’ 것들을 그룹화한다. 클러스터링 알고리즘은 클래스가 중첩되지 않을 때 특히 효과적이다.

보편적인 클러스터링 방법은 각 클러스터 안의 변동(제곱의 합)을 최소화하기 위해 유클리드 거리 척도를 사용하여 n회의 관찰을 k개의 클러스터로 분할하려 시도하는 K-평균이다. 이것은 벡터 양자화 방법이며 특징 학습에 유용하다.

로이드의 알고리즘(중심 업데이트가 적용된 반복적인 클러스터 집합체)은 가장 보편적인 휴리스틱(Heuristic)이며 문제를 해결하는 데 사용되고 상대적으로 효율적이지만 전역 수렴은 보장하지 않는다. 이를 개선하기 위해 사람들은 포지(Forgy) 또는 랜덤 파티션(Random Partition) 방법으로 생성된 초기 클러스터 중심을 사용하여 알고리즘을 여러 번 실행한다.

K-평균은 평균이 클러스터 중심으로 수렴하도록 분리 가능한 구체 클러스터를 가정하며 데이터 포인트의 배치는 상관없다고 가정한다. 가장 가까운 클러스터 중심이 정확한 할당이 되도록 클러스터는 크기가 유사할 것으로 예상한다.

K-평균 클러스터링이 효과가 없다면 계층구조 클러스터 분석, 혼합 모델, DBSCAN 등을 고려하자. 또한 오토인코더(Autoencoder)와 모멘트법 등 다른 종류의 자율 학습도 고려한다.

반자율 학습을 통해 데이터를 태그 처리하라
태그 처리된 데이터는 ML의 필수 요소이다. 태그 된 데이터가 없으면 모델을 훈련시켜 대상 값을 예측할 수 없다.

이에 대한 단순하지만 비용이 높은 해결책은 모든 데이터에 수동으로 태그를 적용하는 것이다. 교수들 사이에서는 이에 대해 대학원생들에게 시키면 된다는 ‘농담’을 한다(대학원생에게는 재미없는 이야기일 것이다).

비용이 덜 드는 해결책은 데이터 중 일부에 수동으로 태그를 적용한 후 1개 이상의 모델로 나머지 대상 값을 예측하는 것이다. 이것을 반자율 학습(semi-supervised learning)이라고 부른다. 자율 훈련 알고리즘(반자율 학습의 일종)을 통해 확률이 일정 한계치 이상이 단일 모델로부터 예상되는 값을 수용하고 더 커진 데이터세트를 사용하여 다듬어진 모델을 구축한다. 

그리고 해당 모델을 다른 예측에 사용하며, 신뢰할 수 있는 예측이 없을 때까지 이를 반복한다. 자율 훈련이 효과가 있을 때도 있지만, 이 모델은 잘못된 예측에 의해 무너진다.

여러 개의 모델을 구축하고 이를 활용하여 서로 확인하는 경우 Tri-트레이닝 등 좀 더 탄탄한 것을 개발할 수 있다. 또 다른 대안은 반자율 학습과 다른 데이터로 구축된 기존 모델의 전이학습(Transfer Learning)을 결합하는 것이다.

이런 스키마를 스스로 구현할 수 있다. 또는, 아마존 세이지메이커 그라운드 트루스(Amazon SageMaker Ground Truth), 하이브 데이터(Hive Data), 라벨박스(Labelbox), 데이터루프(Dataloop), 데이터사우어(Datasaur) 등의 훈련된 라벨러(Labeler)를 통해 웹 서비스를 이용할 수 있다.

보완적인 데이터세트를 추가하라
외부 영향(Externalities)은 데이터세트의 변칙을 드러나게 하는 경우가 많으며, 시계열 데이터세트의 경우 특히 그렇다. 예를 들어, 자전거 대여 데이터세트에 날씨 데이터를 추가하면 폭풍우 중 대여 급감 등 몰랐을 수도 있는 여러 변화를 설명할 수 있게 된다.

소매 매출 예측도 좋은 예이다. 매출, 경쟁력 있는 상품, 광고 변화, 경제적 이벤트, 날씨 등이 모두 매출에 영향을 미칠 수 있다. 쉽게 요약하면, 데이터가 이해가 되지 않는 경우 일부 맥락을 추가하면 모든 것이 더 명확해질 것이다.

자동화된 ML을 훈련시키라 
한 때, 데이터를 위한 최고의 모델을 찾는 유일한 방법이 가능한 모든 모델을 훈련시키고 그 중에서 최고를 찾는 것이었다. 태그가 적용된 표 데이터를 포함한 많은 종류의 데이터에서 AutoML 도구에 데이터세트를 제공하고 나중에 적절한 답을 얻을 수 있다. 

때로는 최고의 모델이 다른 모델을 합친 것이다. 추론에 사용하기에는 비용이 높을 수 있지만 가장 단순한 모델이 그 조합만큼 좋으면서 운영이 비용이 훨씬 낮은 경우가 많다.

AutoML 서비스는 무작정 모든 적절한 모델을 시도해보는 것 이상의 기능을 제공한다. 예를 들어, 일부는 시계열 예측을 위해 자동으로 정규화 되고 가공된 특징 세트를 생성하고 누락된 값을 귀속시키고 상관관계가 있는 특징들을 버리며 뒤떨어지는 칼럼을 추가한다. 

또 다른 옵션 활동은 최고의 모델이 이를 더욱 발전시킬 수 있도록 하이퍼파라미터 최적화를 수행하는 것이다. 할당된 시간 안에 가능한 최고의 결과를 얻기 위해 일부 AutoML 서비스는 크게 개선되지 않는 모델의 훈련을 신속하게 중단하고 가장 전망 있는 것처럼 보이는 모델에 더 많은 사이클을 투입한다.

전이 학습을 통해 훈련된 모델을 사용자 정의하라
대규모 신경망 네트워크를 처음부터 훈련시키려면 일반적으로 많은 데이터(훈련 항목이 수백만 개인 경우도 많음)와 상당한 시간 및 컴퓨팅 리소스(여러 개의 서버 GPU를 몇 주 동안 사용하기)가 필요하다. 

전이 학습(transfer learning)이라는 강력한 지름길은 새로운 데이터로 네트워크상에서 몇 가지 새로운 계층을 훈련시켜 훈련된 신경망 네트워크를 사용자 정의하거나 네트워크에서 특징을 추출한 후 이를 사용하여 단순한 선형적 분류자를 훈련시키는 것이 목적이다. 

이는 애저 커스텀 비전(Azure Custom Vision) 또는 사용자 정의 랭기지 언더스탠딩(Language Understanding) 같은 클라우드 서비스를 사용하거나 텐서플로(TensorFlow) 또는 파이토치(PyTorch) 등으로 생성된 훈련된 신경망 네트워크 라이브러리를 사용하여 수행할 수 있다. 전이 학습 또는 세부 튜닝은 하나의 GPU로 수 분 안에 완료될 수 있는 경우가 많다.

‘모델 주(Model Zoo)’로부터 딥러닝 알고리즘을 시도하라
선호하는 클라우드 서비스 또는 딥러닝 프레임워크를 사용하여 전이 학습을 통해 필요로 하는 모델을 손쉽게 생성할 수 없더라도 여전히 처음부터 심층적인 신경망 네트워크 모델을 설계하고 훈련시키는 것을 방지할 수 있을 수도 있다. 

대부분의 주요 프레임워크는 모델 API보다 더 광범위한 모델 주가 있다. 심지어 여러 개의 프레임워크 또는 ONNX 등 특정 표현을 처리할 수 있는 프레임워크를 위한 모델 주를 유지관리 하는 웹 사이트도 있다.

모델 주에 있는 많은 모델이 훈련을 마치고 사용할 준비가 되어 있다. 하지만 일부는 부분적으로 훈련된 스냅샷(Snapshot)이며, 그 가중치는 자신의 데이터세트를 이용한 훈련의 시작점으로써 유용하다.
 
모델의 하이퍼파라미터를 최적화하라
모델을 훈련한다고 해서 프로세스가 끝나지는 않는다. ML모델은 다양한 하이퍼파라미터를 사용하여 개선할 수 있는 경우가 많으며 가장 좋은 것은 하이퍼파라미터 최적화 또는 튜닝을 통해 찾는다. 도약이라고 볼 수는 없지만 초기의 부실한 모델에서 훨씬 나은 모델로 발전시키는 방법이다.

하이퍼파라미터는 학습 프로세스 관리에 사용되는 모델 외부의 파라미터이다. 노드(Node) 가중치 등 모델 내부의 파라미터는 모델 훈련 중 학습된다. 하이퍼파라미터 최적화는 기본적으로 특정 모델에 대해 최고의 하이퍼파라미터 세트를 찾는 프로세스이다. 최적화의 각 단계에는 모델 재훈련과 손실 함수값 복구 등이 수반된다.

중요한 하이퍼파라미터는 모델 안에서 사용되는 모델과 옵티마이저에 따라 달라진다. 예를 들어, 학습 속도는 신경망 네트워크의 공통적인 하이퍼파라미터이지만 옵티마이저가 시대 간의 학습을 통제할 때는 예외이다. RBF(Radial Basis Function) 커널(Kernel)을 이용한 SVM(Support Vector Machine) 분류자의 경우 하이퍼파라미터가 조직화 상수이자 커널 상수일 수도 있다.

하이퍼파라미터 옵티마이저는 다수의 검색 알고리즘을 사용할 수 있다. 그리드 검색은 전통적인 방식이다. 한편, 그리드 검색은 여러 개의 하이퍼파라미터의 모든 조합을 아우르기 위해 많은 훈련이 필요하지만, 다른 한편으로는 충분한 컴퓨팅 리소스가 있는 경우 모든 훈련을 동시에 실행할 수 있다. 무작위 검색이 더 효율적이면서 비교하기 쉬운 경우가 있다. 다른 대안으로는 베이스(Bayesian) 최적화, 기울기 하상, 진화적 최적화, 조기 중단 알고리즘 등이 있다.

요약하자면 탐구 데이터 분석을 통해 모델 구축 프로세스를 시작하자. 자율 학습을 통해 데이터와 특징에 관해 더욱 자세히 파악하자. AutoML을 사용하여 여러 모델을 신속하게 테스트하자. 심층적인 신경망 네트워크 모델이 필요한 경우, 처음부터 자신만의 네트워크를 설계하여 훈련시키기 전에 전이 학습이나 모델 주를 사용해 보자. 꽤 괜찮아 보이는 모델을 발견하면 하이퍼파라미터 훈련을 통해 발전시켜보자. 그리고 이 모델을 생산에 투입하고 모니터링할 수 있다.

어쨌든, 이것이 끝이 아니다. 시간이 지나면 현실 이벤트에 의해 데이터 또는 개념이 표류하게 되고 모델을 개선하여 다시 훈련시켜야 한다. 심지어 새로운 데이터에 다른 종류의 모델이 더욱 적합하다는 사실을 발견할 수도 있다. 모델을 한 번만 만들어도 된다면 무슨 재미가 있을까?

* 인포월드 기고 편집자이자 리뷰어인 Martin Heller는 웹 및 윈도우 프로그래밍 컨설턴트 경력을 보유자다. 1986년부터 2010년까지는 데이터베이스, 소프트웨어, 웹사이트 개발자로 일했으며 그 이후에는 알파 소프트웨어의 기술 및 교육 부사장, 튜브파이의 의장이자 CEO를 역임했다. ciokr@idg.co.kr

X