1. 머신러닝이란 무었인가?
"어떤 작업 T에 대한 컴퓨터 프로그램의 성능을 P로 측정하였을 때 경험 E로 인해 성능이 향상됐다면, 이 컴퓨터 프로그램은 작업 T와 성능 측정 P에 대해 경험 E로 학습한 것이다.' - 톰 미첼
머신러닝은 학습을 통하여 명시적인 코딩없이 성능을 향상시키는 프로그램을 말한다. 훈련을 할 수 있는 데이터를 이용하여 성능을 높이는 것이다. 알파고는 기존 바둑의 기보를 통하여 학습하여 대국에서의 승률을 높이는 머신러닝을 통하여 탄생하였다.
2. 머신러닝의 종류
머신러닝의 훈련 데이터의 지도 방식에 따라 지도학습, 비지도 학습, 준지도 학습, 강화 학습으로 나뉜다.
▶ 지도 학습
정답이 있는(lable) 훈련 데이터를 통한 학습한다. 데이터들이 변수와 정답을 통해 새로운 데이터의 답을 예측한다.
대표적인 방법으로 분류와 회귀가 있다.
분류: 데이터의 특정을 바탕으로 카테고리로 구분하는 것
회귀: 예측 변수(X)를 바탕으로 결괏값(Y)를 도출할 수 있는 함수를 만드는 것을 말한다.
ex) 스팸메일 분류, 집값 예측
▶ 비지도 학습
정답이 정해지지 않은(unlable) 훈련 데이터를 통한 학습이다. 알지 못한 패턴을 발견하거나 데이터 값 중 특이한 값을 분리할 때 사용한다.
대표적인 방법으로 클러스터링, 시각화, 차원 축소, 이상치 분석이 있다.
ex) 보험 사기 검증
▶ 준지도 학습
일부만 정답이 있는 훈련 데이터를 통한 학습이다. 모든 데이터가 lable된 경우는 거의 없다. 따라서 이를 보완하기 위한 방법이다.
모든 경우에서 성능향상을 기대하기 어렵다. lable되지 않은 데이터들이 군집의 성격을 가질 때 유효하다.
ex) 심층 신뢰 신경망
▶ 강화 학습
실행 결과에 보상 또는 벌점을 준다. 프로그램은 보상을 극대화하는 전략으로 학습한다. 주어진 상황에서 취해야하는 전략을 제시한다.
ex) 보행 로봇
머신러닝의 점진적 학습 가능 여부에 따라 배치학습과 온라인 학습으로 나뉜다.
▶ 배치학습
프로그램이 훈련한 뒤에 시스탬에 적용되면 더 이상 훈련을 할 수 없는 방식이다.
장점: 간단하고 작동이 원활하다.
단점: 새로운 데이터에 대한 학습이 필요하다면 시스템 적용을 멈추고 처음부터 다시 훈련해야 한다. (변화에 대한 적응이 느리다.)
많은 훈련 데이터 용량과 컴퓨터 자원을 요구한다. (시간이 오래 걸린다.)
자주 훈련시키는 방법을 통하여 단점을 보완한다.
▶ 온라인 학습
훈련 데이터를 지속적으로 이용하여 학습한다. 데이터가 도착하면 바로 학습한다. 학습률을 조정하여 새로운 데이터에 대한 민간도를 조절할수 있다.
장점: 학습한 데이터를 저장할 필요가 없다 빠른 학습이 가능하다. 변화에 빠르게 적응 한다.
단점: 나쁜 데이터가 들어왔을 때 성능 저하가 발생할 수 있다.
데이터가 입력되기 전에 데이터를 평가하여 단점을 보완한다.
학습한 것을 적용하는 방법에 따라 사례기반 학습과 모델기반 학습으로 나눌 수 있다.
▶ 사례 기반 학습
훈련한 데이터를 기억하는 방식이다. 새로운 데이터가 들어왔을 때 기억한 데이터롸 비슷한 정도(유사도)를 비교한다.
▶ 모델 기반 학습
훈련한 데이터에서 패턴을 찾는 방법이다. 가정을 통해 모델을 정하고 훈련 데이터로 모델을 조슴씩 조정해 간다.
새로운 데이터를 모델에 입력하여 결과를 도출한다.
3. 머신러닝의 도전과제(발생할 수 있는 문제들)
머신러닝을 수행하면서 일어날 수 있는 문제들
▶ 충분하지 않은 양의 데이터
데이터를 기반으로 훈련하는 머신러닝에서 데이터가 부족하다면 충분한 학습이 불가능해 원하는 성능을 얻지 못할 수 있다.
▶ 대표성이 없는 훈련 데이터
데이터를 가져오는 과정에서 대표성이 떨어징 수 있다. 우리가 원하는 특성 이외 부분에 영향을 받은 데이터를 가져오거나(샘플링 편향)
우연에 의한 데이터의 영향이 크게 작용할 수 있다.(샘플링 잡음)
▶ 낮은 품질의 데이터
에러, 이상치가 많은 데이터를 사용하면 학습이 잘 이루어지지 않는다.
▶ 관련 없는 특성
데이터에 있는 특성을 바탕으로 우리가 원하는 값을 얻기 위한 과정에서 어떤 특성이 유효한지에 대한 평가와 추출이 필요하다.
▶ 과대적합, 과소적합
훈련데이터에 과도하게 최적화된 것을 과대적합, 반대인 경우를 과소 적합이라 한다.
과대적합: 다른 데이터에 일반화가 어렵다. 복잡한 모델
해결 방법: 파라미터를 줄인다. 훈련 데이터를 늘린다. 규제를 이용한다.
과소적합: 단순한 모델, 부정확한 예측
해결 방법: 파라미터 수를 늘린다. 규제를 줄인다.
테스트와 검증
데이터를 훈련 데이터와 점증 데이터로 나누어 훈련 데이터로 훈련한 모델을 검증 데이터를 이용하녀 오차를 측정한다.
▶ 홀드아웃 검증
1. 훈련 데이터를 통하여 여러 모델을 훈련한다.
2. 검증 데이터를 이용하여 모델 중 가장 오차가 적은 것을 선정한다.
3. 훈련데이터와 검증 데이터를 합쳐 위에서 선정한 모델을 다시 훈련시켜 완성된 모델을 얻는다.
▶ 교차 검증
1. 데이터를 훈련 데이터와 검증 데이터로 나누는 작업을 여러번 한다.(각기 다른 구성)
2. 여러 구성으로 훈련 및 검증 과정을 반복하여 가장 적합한 모델을 찾는다 (시간이 N배로 걸린다.)
▶ 데이터 불일치 문제
훈련에서 사용한 데이터가 실제 프로그램이 사용되었을 때 들어오는 데이터를 대표하지 못할 때 발생한다.
ex) 꼭 사진을 이용해 꽃의 종류를 알려주는 앱에서 룬연에 사용한 웹 사진 데이터는 앱에서 찍은 사진 데이터를 대표할 수 없을 수 있다.
이 때 검증 과정에서 큰 오차가 발생한다. 오차의 원인이 학습과정에서 과대적합인지, 데이터 불일치 문제인지 알 수 없다고 가정하자.
이를 알 수 있는 방법은 훈련-개발 데이터를 이용하는 방법이다. 훈련-개발 데이터는 훈련 데이터를 이용하여 만든 검증 데이터를 말한다.
위 예시에서 웹 사진의 일부를 잘라내어 훈련-개발 데이터를 만들 수 있다. 프로그램이 훈련 대발 제이터에서 잘 작동한다면 과대적합의 문제가 아닌 불일치 문제임을 알 수 있다.
머신러닝으로 할 수 있는것, 하고 싶은 것
▶ 복잡하고 명확한 해결책이 없는 경우
추상적이고 많은 요소들이 관련된 문제를 구체화 할 수 있다.
생명체들은 서로 연관되어 있다. 우리 몸에도 수억 마리의 세균이 함께 살고 있다. 생명체들이 서로 주고받는 모든 변수들에 대한 결과를 알아내기란 전통적인 방법으로 불가능하다. 머신러닝을 통해 이들 간의 관계에 대한 모델을 얻는다면 주변 환경의 변화(바이러스 침투)에 대해 우리의 몸의 반응을 예상할 수 있다. 또한 세포단위에서 머신러닝을 이용한다면 세포간의 관계와 특정 변화로 인해 나타날 수 있는 결과를 예측할 수 있을 것이다.
▶ 변화하는 문제에 대해 빠르게 적응
새로운 데이터에 대한 학습을 통해 정보를 얻을 수 있다.
DNA는 유전정보를 담고 있다. 생명체는 유전정보를 도안으로 만들어진다. 즉, DNA가 달라진다면 생명체는 구조, 기능적으로 변한다.
DNA를 바탕으로 얻을 수 있는 결과를 예측하는 모델을 통하여 질병의 예측, 유전 질병에 대한 치료가 기대된다. 또한 DNA는 외부 자극으로 쉽게 변화한다. 자외선에 의해 망가지기도 하며 복제 시 돌연변이에 의해 달라지기도 한다. 이때 나타나는 대표적인 질병이 암이다. DNA의 변화는 모든 세포에서 실시간으로 빠르게 일어나기 때문에 빠른 예측과 대응이 도움이 될 수 있다.
▶ 새로운 시야를 제공
기존에 생각하지 못했던 특성들과의 관계를 찾을 수 있다.
머니볼은 미국 프로야구팀의 실화를 바탕으로 만든 영화이다. 주요 내용은 야구선수들에 대한 진정한 값어치를 찾는 방식의 변화를 통해 낮은 운영비로 좋은 성적을 거두었다. 야구는 통계의 스포츠라고 불릴 만큼 여러 자료가 많다. 타자에게 타율, 장타율, 출루율, OPS, 삼진/볼넷 비율 등 과거부터 매겨오던 수치에 최근 승리 기여도(WAR), 발사각, 인플레이 타구 대비 안타율 등 너무나 많은 데이터가 있다. 이중 과연 어떤 수치가 중요한 수치이며 팀을 승리로 이끄는 선수의 진짜 값어치일까? 또한 특정 상황에 어떤 작전이 승률을 높이는가?에 대한 정보를 얻기 위해 과거에는 감독의 감이나 전통적인 수치(타율)에 의존했다면 요즘에는 새로운 시각(출루율)이 많이 제시되고 있다.
야구뿐 아니라 미국 프로농구 NBA 팀들도 데이터 분석가를 통해 전력과 전략을 구성하고 있다.
'python > 핸즈온 머신러닝' 카테고리의 다른 글
[핸즈온 머신러닝] 12장. 텐서플로우를 사용한 사용자 정의 모델과 훈련 (0) | 2021.03.31 |
---|---|
[핸즈온 머신러닝] 11장. 심층 신경망 훈련하기 (0) | 2021.03.28 |
[핸즈온 머신러닝] 3장. 분류 (0) | 2021.01.31 |
[핸즈온 머신러닝] 2장. 머신러닝 프로젝트 처음부터 끝까지 (0) | 2021.01.21 |
댓글