Skip to content

기계학습 #
Find similar titles

Structured data

Category
Programming

기계학습 #

기계학습이란 #

기계학습은 어떠한 문제에 대해 기계(컴퓨터)가 데이터를 학습(훈련)하여 새로운 데이터가 들어왔을 때 원하는 결과를 예측할 수 있는 알고리즘을 말한다.

그러므로 기계학습은 개발자가 직접 어떠한 문제에 대한 원인 및 결과를 예측하여 입력에 대한 결과가 동일하게 나오는 알고리즘을 작성하지 않고 모델로부터 결과를 예측하는 알고리즘과 데이터를 기반하여 수치적 모델을 변경 할 수 있는 알고리즘을 작성하여 입력된 데이터에 따라 기계가 스스로 최적화된 수치 모델을 찾아 나가도록 한다.

No Free Lunch Theorems for Optimization #

기계학습에도 공짜 점심은 없다. 1997년에 DH Wolpert가 발표한 No Free Lunch Theorems for Optimization 논문에서 잘 설명하고 있듯이, 데이터가 편향 없이 모든 결과값이 특정한 확률을 가진다면, 기계학습과 확률 기반으로 출력된 결과가 큰 차이가 없으며, 결국 기계학습은 몇몇 컬럼에 의해 편향된 결과일 때 그 편향을 학습한다. 그러므로 기계학습을 수행할 때에는 그 데이터의 특성에 따라 최적화되며 데이터의 특성에 맞게 수치 모델을 모형화하여야 한다.

기계학습을 진행하다 보면 가장 많이 범하기 쉬운 오류로 학습되지 않은 상황에 대해 같은 결과를 요구하는 경우이다. 극단적인 예로 유전자의 변이를 기반으로 3개의 암 종류 중 하나를 판별하는 기계학습을 만들어두고, 5개의 암을 구분하길 원한다면 사용자는 원하는 결과를 얻을 수 없을 것이다. 마찬가지로 어떤 하나의 질병을 가지고 있는 환자의 투약량에 대해 기계학습을 수행하였을 때, 2개 이상의 복합적인 질병을 가진 환자에게 똑같이 적용할 경우 (당연히도) 문제를 일으킬 수 있다.

기계학습은 마법이 아니다. 기계학습은 학습된 데이터에 맞게 예측 결과를 출력해주는 것이지 학습되지 않은 데이터에 대해서도 동일한 결과를 보장하지는 않는다.

즉 기계학습에도 공짜 점심은 없다.

지도학습/비지도학습/강화학습 #

기계학습은 지도학습비지도학습으로 나뉜다. 지도학습은 사전에 정답 정보 여부에 따라 지도학습과 비지도학습으로 나뉜다. 최근에는 지도학습과 비지도학습을 모두 이용하는 강화학습이 주목받고 있다.

지도학습 (Supervised learning) #

지도학습은 사전에 학습할 데이터에 대하여 정답 정보가 작성된 데이터를 가지고 미리 학습한 다음 이후 시스템에서 활용 시 새로운 정보(=미래정보)가 입력되면 학습된 데이터를 바탕으로 그 결과를 도출한다.

사전에 학습할 정보들은 학습에 사용될 파라미터 값들과 해당 값들에 대한 실제 결과가 적혀져 있다. 기계학습에선 이렇게 결과값들이 적혀져 있는 데이터들을 라벨링 된 데이터라고 부른다. 지도학습은 이 데이터들을 토대로 여러 번의 테스트를 통해 파라미터 값 중 결과에 유의미한 영향을 미치는 파라미터를 추출하고 그 값들을 토대로 기계학습을 수행한다. 위 과정을 거친 후 만족할만한 기계학습 결과가 나온다면, 이 지도학습 결과를 시스템에 반영한다.

기계학습을 수행하다 보면 최적화(Optimization) 과 과잉학습(Over fitting)문제에 자주 부딪치게 되는데, 지도학습을 토대로 이러한 문제들에 대한 충분한 테스트를 거친 후 알맞은 학습 결과를 서비스에 반영할 수 있다. 하지만 지도학습의 경우 학습이 완료된 후 학습된 결과를 서비스에 반영하므로, 새로운 미래 데이터가 들어오더라도 기존 학습 결과를 강화하지 못하는 단점이 있다. 이를 보강하기 위해 최근 강화학습에 대한 관심이 증가하고 있다.

비지도학습 (Unsupervised learining) #

비지도 학습은 사전에 정답 정보가 기록된 학습데이터가 없이 데이터를 학습한다. 데이터에 대한 정답셋, 즉 라벨 정보가 없으므로 주로 입력되는 파라미터의 특성을 통해 데이터를 분류(Classification)하는 알고리즘이 대부분이며, 주로 초기 데이터 결과들의 새로운 특성 혹은 유의미한 상관관계를 찾는 분석 연구에 많이 사용된다.

강화학습 (Rainforced learning) #

지도학습에서 데이터를 학습한다는 것은 어떠한 데이터가 입력되었을 때 입력된 데이터가 예측된 결과가 정답인지 아닌지에 따라 정답이라면 다음부턴 해당 결과가 나타나도록, 아니라면 나타나지 않도록 Weight들을 조정한다. 이를 수많은 데이터에 대하여 수행하여 적절한 weight 값으로 조정한 후 시스템에 반영하고, 시스템에 사용자가 어떠한 값을 입력하면 기존에 학습된 결과에 따라 그 결과를 돌려준다.

하지만 지도 학습된 결과 자체가 잘못되었다던가 시간, 트렌드의 흐름에 따라 결과가 달라지는 경우 매번 이를 재지도해서 바로잡아줘야 하는 한계가 있다. 만약 이때에 새로운 입력에 대해 정답 유무를 바로 알고 weight에 반영할 수 있다면, 즉 피드백(Feedback)을 받을 수 있다면, 기계학습이 조금 부족하더라도 시스템이 많이 사용될수록 학습결과는 강화될 것이다. 이러한 피드백기능이 적용된 알고리즘을 강화학습이라 부른다.

강화학습은 사용자로부터 결과를 피드백 받을수 있으므로 시간 등에 따라 트랜드가 바뀌는 경우 매우 유용하다. 또한, 사용자마다 강화 학습을 따로 수행한다면 개인별로 맞춤 결과를 추천해줄 수 있다는 장점이 있다.

강화학습을 사용하기 위해서는 학습된 결과를 출력하였을 때 이 값이 맞는지 틀렸는지를 사용자로부터 피드백 받을 수 있도록 시스템을 구성하는 것이 중요하다. 또한, 악성 사용자가 잘못된 피드백을 줄 경우도 고려하여 모니터링을 수행하여야 하며 피드백을 통해 기계학습을 강화할 시 과잉학습의 오류에 빠지지 않도록 주의하여야 한다.

Incoming Links #

Related Data Sciences #

Related Articles #

Related Bioinformaticses #

Suggested Pages #

0.0.1_20140628_0