상세 컨텐츠

본문 제목

[머신러닝]머신러닝이란 무엇인가? 왜 머신러닝인가?:: 우주를놀라게하자

프로그래밍/머신러닝

by 우주를놀라게하자 2019. 8. 27. 22:41

본문

728x90
반응형
SMALL

개요


 이 내용은 핸즈온 머신러닝의 전체적인 내용을 필자가 요약하고 이해하기 쉽게 한번더 풀어쓴 글이므로, 혹여 내용에 의문이 있다거나 궁금하면 핸즈온 머신러닝을 찾아 보는것을 추천한다.


 이번장에서 학습할 목표는 머신러닝이란 무엇이며, 또 왜 머신러닝이여야 하는지에 대해서 이해하는 것을 목표로 하겠다.


 솔직히...나도 학습하면서 적는것이라 간혹 틀린 설명이 있을수도 있다. 행여 나보다 더 많이 아는 독자가 글을 읽다가 오류가 있다면 피드백을 부탁합니다...



Chater 1: 머신러닝이란?



 알파고, 머신러닝하면 너무 먼~이야기를 떠올리는 사람들이 많이 있다. 말이 어려워서 그렇지 사실 우리 주변에서 상당히 많은 부분을 차지하고 있고 우리가 느끼든 느끼지 못하든 예전부터 사용되왔던 기술이다.(다만 알파고의 영향으로 대중에게 엄청나게 알려지긴했다..)


구체적인 예시로는 우리 주변에서 볼 수 있는 머신러닝 기술은 스팸필터, 자동차 번호판 인식, OCR등이 있다. 사실 스팸필터를 제외하고 자동차 번호판 인식과 OCR은 머신러닝+이미지프로세싱(영상처리)기술이긴 한데... 어쨌든 내부적으로는 머신러닝 모델이 있기 때문에 포함시켰다.


 위의 예시에서 3가지의 특징은 무엇일까? 나도 처음 접근할때는 굉장히 헤맸었는데 간단하게 접근하면 이렇다. 사람의 개입이 아니라 컴퓨터가 스스로 판단하여 분류 혹은 판단을 하는 것이다.


 그렇다면 여기서 컴퓨터가 스스로 판단한다?라는 표현이 와닿지 않을것이다. 생각해 보자 우리가 판단을 하면 어떤 기준으로 하는가? 과거의 어떤 교육이나 혹은 내가 가지고 있는 어떠한 기준으로 판단하지 않는가? 이와 같다. 컴퓨터가 스스로 어떠한 데이터를 받아들이고 이를 근간으로 상황을 판단하는 것이다. 즉,  "학습하는 기계"에서 따와 machine Learning이란 말을 사용하게 된것이다. 


간단하게 용어를 정리해보자

위의 설명에서 스팸필터를 말했는데 스팸필터인지 아닌지를 컴퓨터가 판단한다고 했을때의 아래의 용어에 예시로 사용하겠다. 정확한 정의보다는 어떤 개념이고 어떠한 맥락인지만 이해하고 넘어가면 된다. 어려울것없다!!

 

1. 훈련세트 스팸필터를 구별하는 프로그램이 있다고 가정하에 스팸메일과 일반 메일의 샘플들을 일컷는다. 

2. 훈련사례(샘플) : 각각의 데이터를 훈련 샘플이라고 한다.

3. 정확도 : 프로그램이 얼마나 분류작업에 대해서 자~~알~분류하는 것이다.




1.2 왜 머신러닝을 사용해야하는가?


 기존에 프로그래밍을 조금이라도 해본 사람은 바로 알 수 있을것이다. 스팸메일을 처리하는것이 사람이 하기엔 얼마나 까다로운 작업이 되는지, 일반적으로 스팸메일을 우리가 처리한다고 했을때 ㅇㅇㅇ한 글이 들어가면 스팸이야~라고 판단하고 처리를 할 것이다. 그러면 이러한 조건(ㅇㅇㅇ한 글)이 점차 늘어난다면 어떻게 하겠는가? 하나하나 사람이 조건들을 다~판단해 줄 수는 없을테니...규칙이 점점 길고 복잡해지는 문제를 처리하게끔하는 작업이 탄생한 것이다.  

  

    GOT iT??


여기까지 공감이 가고 고개가 끄덕여지면 다음으로 넘어가도 좋다.





1.3 머신러닝의 종류에는 뭐가 있을까?


머신러닝의 종류는 굉장히 많으므로 아래를 기준으로 해서 기본 베이스를 쌓으면 좋다.


1. 지도학습, 비지도학습


지도학습: 지도 학습은 말 그대로 지도! 알려준다는 것이다. 이름에서 유추해 알 수 있듯 훈련 데이터마다 답을 알려주는 것이다. 위의 예시에 사용하자면 A라는 메일의 훈련데이터에 이것은 스팸이다! 라고 꼬리표를 달아주는것이다.


비지도학습: 비지도학습은 위의 지도학습과 반대다. 우리가 알려주는것이 아니라 컴퓨터가 스스로 훈련세트를 통해서 통계적인 계산을 해서 어떤 조건이면 이것은 스팸이다 아니다를 판단하는것을 말한다. 말이 좀 어렵지만 쉽게 설명하면 문제에 답을 안알려주고 컴퓨터가 혼자서 끙끙대면서 풀면 비지도학습이다.




2. 준지도학습


준지도학습: 위의 지도학습과 비지도학습의 중간정도 단계이다. 일부만 답(전문용어로는 레이블이라고 한다. 같은말이니 겁먹을 필요없다)이 있고 일부는 답이 없는 세트를 훈련시켜서 답을 찾는 과정이다.

 좋은 예시로는 페이스북이나 구글 포토가 있다. 나와 친구들이 나온 사진을 올리게 되면 알아서 내 얼굴을 찾고 그 옆에 누구인지 찾아주는 것이 바로 이 학습법이다.


3. 강화학습


  강화학습: 강화학습은 위의 방법과는 매우 다른 방법이다. 여기서는 학습하는 방식을 에이전트라고 부르며, 환경을 관찰해서 행동을 실행하고 그 결과로 보상(점수를 +1점) 벌점(점수를 -1점) 이런식으로 주게되어 시간이 지나면서 가장 큰 보상을 받은 최상의 전략을 스스로 학습한다. 내가 알기로는 알파고가 이 학습법을 사용했다. 바둑을 두고 수가 불리해지면 -1점 수가 유리해지면 +1점을 주는 식으로 해서 최상의 전략을 뽑아내는 방식이다..말은 이런데 어렵다....이런게 있구나 하고만 넘어가자


4. 배치학습, 온라인 학습


배치학습:  기존의 학습을 할 때 약 10000개 정도 되는 데이터샘플들을 사용한다 했을때, 한번에 이 많은 데이터를 다~훈련시키는 방식을 일컫는다. 때문에 간단하고 잘 작동하지만 훈련시킬때는 상당히 오랜시간이 걸린다..

온라인 학습: 배치학습과 반대로 데이터를 조금씩 나눠서 학습하는 방식이다 작은 묶음단위로 학습하기 때문에 매 학습할때 시간이 적게 소요된다.

주로 주식가격이라든가 빠른 변화가 필요한 사례에 적합하다.




1.4 학습시 주의할점은?


지금까지 머신러닝이 무엇이며, 왜 필요하며, 각각의 훈련방식은 어떤 특징을 갖는지에 배웠다. 그렇다면 마지막으로 주의할점은 무엇일까?


바로 데이터의 품질이다.


어린아이에게 사과를 가르키면서 "이건 사과야~"라고 말해주면 곧잘 학습하여 사과인지 아닌지를 판단한다. 그러나 우리의 컴퓨터는 상당히 멍청(?)하기 때문에 이 정도 수준이 되지 못한다. 때문에 사과와 사과 비스무리한것을 섞어서 학습을 시키면 판단을 할 시 매우 혼란스러워 할것이다. 왜냐? 학습때 사과와 사과비스무리한것을 모두 사과라고 훈련시켰기 때문이다.(비지도학습을 할 경우에만이다...)


 때문에 컴퓨터에게 학습을 시킬때는 사람보다 훠어어어어얼씬 더 많은 데이터를 가지고 학습을 시켜야하고, 당연한 이야기지만 데이터의 품질 또한 얼추 대표성이 있는 데이터를 사용해야한다.


 그러나 실생활에서 매우 유사한 특징을 가진 사물은 보기 드물다 항상 예외의 상황들이 존재하기 때문이다. 사과라고 해도 다 빨간색도 아니고 덜익은 사과도 있을수 있고 유독 많이 익은 사과도 있을 수 있기 때문이다. 이러한 현상을 샘플링 잡음이라고 한다. 

 이러한 문제를 해결하기 위해 많은 시간을 데이터 정제에 힘쓰고 있으며 빅데이터 전문가...뭐 데이터사이언티스트들이 하는 업무 또한 대표성이 있고 특정 현상 혹은 특정 데이터에 편향되지 않는 적절~한 데이터세트를 만드는 작업에 투자한다.




728x90
반응형
LIST

관련글 더보기