[비전공자를 위한 딥러닝] 1.1 - 그래서 '학습'이 뭔데? (1)



이제부터 당신은 기계.
그렇게 생각해보자. 어느 날 눈을 떴더니, 기계가 된 것이다.

당신에게 첫 번째 임무가 주어졌다.
스팸 메일을 골라내는 것이다. 날마다 들어오는 수많은 이메일 중에, 스팸 메일만 골라내고 싶다




가장 쉽게 떠올릴 수 있는 방법은, 특정 단어가 제목에 포함된 메일을 골라내는 것이다.
일단 한 번 시도해보자.
 

문제 1

당신은 다음 명령을 그대로 수행하는 기계다.


명령: 제목에 다음 단어들 중 적어도 하나가 포함된 메일을 체크한다.
           {"초특가", "판매", "무료"}




결과:

 


살펴보면 문제점이 생긴다.

먼저 "판매" 때문에, 일반적인 업무 메일인 (3)이 스팸으로 잘못 분류된다.
그렇다고 "판매"를 지우자니, (2)가 스팸으로 분류되지 않는 문제가 예상된다.

또한 단어 목록에 해당하는 단어가 없기 때문에, (4)는 스팸인데도 스팸으로 분류되지 않는다.


이번엔 조금 더 영리하게 명령을 내려보자.




문제 2

당신은 다음 명령 두 가지를 그대로 수행하는 기계다.


명령1: 제목에 다음 단어들 중 적어도 하나가 포함된 메일을 체크한다.
            {"초특가", "무료", "더블 배당"}


명령2: 제목에 "판매"가 포함된 경우, 다음을 순서대로 실행한다.

         I. 다음과 같은 단어들이 제목에 함께 있는 경우, 체크하지 않는다:
           {"업무", "보고서", "영업"}

        II. I의 조건에 해당하지 않는 경우, 체크한다.




결과:




우선 네 가지 이메일을 제대로 분류하는데 성공했다.
하지만 이 두 가지 명령을 가지고, 다른 수천 개의 이메일을 분류하는데 몇 퍼센트 정도 성공적으로 분류할 수 있을까?
그렇게 높지 않을 것이다.
 

1번 예시에서 "무료"가 아닌 "공짜"로 바뀔 경우 스팸 필터링을 피할 수 있다.

또한 예를 들어, "1분기 판매량 관련 첨부파일 재전송 부탁드립니다" 라는 제목의 메일은,
"판매"는 포함하지만, 명령2-I의 단어 목록과 함께 제시되지 않았으므로, 명령2-II에 따라 스팸으로 분류된다.
 

실제로 스팸을 배포하는 사람들은 스팸 필터링 시스템이 업그레이드됨에 따라, 스팸 필터링에 걸리지 않으면서 스팸 메일을 성공적으로 보낼 수 있는 방법을 연구하고 발전시킨다.
, 조건을 하나하나 붙여가는 방식으로는 제대로 일을 수행할 수 없고, 예측 불가능한 스팸 메일의 변화에 대처할 수 없다.

이건 마치 어벙한 신입사원과도 같다.
일을 시키려면 모든 경우에 대해 일일이 지시를 해줘야 한다. 그러다 지시해준 경우에서 조금 벗어난 상황이 발생하면, 어김없이 상사에게 달려와 해결해달라고 징징댈 것이다.
상사는 속으로 생각한다.


 '이정도면 알아서 좀 할 것이지!'



자, 이번에는 일 잘하는 3년 차 김대리를 보자.

부장님이 그의 어깨를 툭 치며 말한다.
 "이번에도 믿고 맡길게, 김대리!"
일일이 어떻게 하는지 가르쳐주지 않아도, 어떻게든 기한 내에 제대로 된 성과를 들고 나타나는 김대리우리는 이런 능력을 보고 '융통성'이 있다고 한다.
 

다시 스팸 메일 문제로 돌아가 보자.
어떻게 하면 김대리처럼 융통성 있게, 알아서 좀  일 처리를 시킬 수 있을까?
구구절절 모든 상황을 적어 놓고, 문제가 생길 때마다 일일이 수정하고 새로운 조건을 붙여야 하는 조잡한 방식 말고.
 
 
여기서 드디어 학습(learning)이 등장한다.
학습의 원리를 설명하기에 앞서, 잠깐 기계 상태에서 벗어나 인간으로 돌아가자.
그리고 다음 문제를 풀어보자.



문제 3

당신은 인간이다. 당신의 두뇌를 활용해 다음 사항을 처리하라.


Data에 속한 스팸 메일을 찾아서, Label의 해당 번호에 체크하라.


Data
(1) 온라인 게임장 짜릿한 타격감과 96% 환수율 무료머니 5만으로 먼저 체험하세요!
(2) 전상­품 1 + 1 이벤트 총알 배송! 특가 패키지 상품 한정 판매!
(3) 영업1팀 판매실적보고서 수정사항 확인 바랍니다.
(4) 더블 배당 이벤트━가입 즉시 5만━정식인증━모바일 지원

Label


이번 경우에는 당신이 직접 '답지'를 만든 것이기 때문에 채점 되는 결과가 없다.




방금 당신이 한 행위를 레이블링(labeling)이라고 한다. 라벨, 즉 꼬리표를 붙인다는 뜻이다.
정확하게는 4개의 데이터에 대해서, 그 데이터의 정답을 표시했다는 의미다.
다음 표와 같이, 스팸 메일인 데이터에는 '1', 스팸 메일이 아닌 데이터에는 '0'이라는 정답 표기가 있는 '답지'를 오른쪽에 추가한 것이다.

Index
Email title
Label*
1
온라인 게임장 짜릿한 타격...
1
2
전상­1 + 1 이벤트 총알...
1
3
영업1팀 판매실적보고서 수...
0
4
더블 배당 이벤트가입 즉...
1
* 스팸 메일이면 1, 스팸이 아니면 0.
 


답지를 만들었으니, 이제 다른 누군가에게 학습을 시킬 수 있다. 어떤 학생을 시켜서 스팸 메일을 분류하는 법을 학습시켜본다고 하자.
우선 학생에게 답지를 주지 않고, 문제(메일들)만 던져준다. 학생은 자신이 '예측한 답'을 공책에 적어서 제출한 뒤, 답지의 '정답'과 비교하고 채점할 수 있다.
채점을 할 때, 학생은 맞은 답의 경우는 넘기고, 틀린 답의 경우는 왜 틀렸는지 고민하며 앞으로는 틀리지 않도록 그 부분에 대한 본인의 잘못된 생각을 수정한다.
 

      학생의 학습
  1. 답지를 다른 곳에 치워둔다.
  2. 문제를 공책에 푼다(예측한 답을 적는다).
  3. 공책에 적힌 답과 답지의 정답을 비교한다.
  4. 틀린 문제에 대해서 본인의 생각을 정답에 가까워지도록 수정한다.
  5. 이 과정을 반복한다.

이것이 학습의 기본 개념이다.
본인이 예측한 답들을 채점하고, 오답노트를 만들어 가면서 발전해나가는 것.
 


이 과정을 학생 대신 기계가 수행하게 한다면 어떻게 될까?

 
      기계의 학습
  1. 레이블(정답)을 다른 곳에 치워둔다.
  2. 데이터를 바탕으로 예측을 한다.
  3. 기계가 한 예측과 실제 레이블을 비교한다.
  4. 틀린 예측들에 대해서 기계의 예측 방향을 실제 레이블에 가까워지도록 수정한다.
  5. 이 과정을 반복한다.
 
학생이 그랬듯이, 기계는 데이터에 대해 예측을 진행하고, 레이블(정답)으로 채점한 뒤 틀린 문제에 대해 스스로에게 피드백을 진행한다.

이것이 바로 기계학습즉 머신러닝(machine learning)이다.
 
 


 

오늘 당신은 기계가 되어 스팸 메일 문제를 해결하려고 시도했다.
처음에는 어벙한 신참에게 일을 시키듯이, 모든 경우를 일일이 만족시킬 수 있는 조건을 지정해주는 방법을 시도했다. 이것을 '규칙 기반(rule-based)' 방법이라고 한다.
 
그러다가 당신은 여러 가지 문제를 만나고, 도저히 안 될 것 같아서 방법을 바꾸었다. 바로 '학습'이란 방법이다. 이는 일 잘하는 김대리를 만들어내는 걸로 비유할 수 있다.
결과는 물론 '학습', 즉 머신러닝의 압승이다!
이 밖에도 머신러닝이 눈부신 성과를 내는 사례는 셀 수 없이 찾을 수 있다.
 

댓글 쓰기

14 댓글

  1. 다음 레슨이 기대됩니다! 그림도 귀여워용 >.<

    답글삭제
    답글
    1. 감사합니다! 다음 강의도 열심히 준비하겠습니다 :)

      삭제
  2. 생소한 용어들인데 이해하기 쉽게 설명되어있어서 편했습니다. 좋은 정보 얻어갑니다.

    답글삭제
    답글
    1. 감사합니다 :) 앞으로도 쉽고 유용한 내용으로 찾아뵐게요!

      삭제
  3. '머신러닝'에 대해 전혀 모르는 저와 같은 사람도
    이해하기 쉽게 아주 친절하고도 체계적으로 설명이
    잘 되어있어서 무척 좋았습니다.

    답글삭제
    답글
    1. 감사합니다! 생소하셨는데도 잘 이해되었다니 기쁘네요 :)

      삭제
  4. 진위여부를 가리고 예측하여 진행하는 머신러닝의 개념을 한장에 정히해 주네요~~~~^^

    답글삭제
    답글
    1. 감사합니다! 남은 강의도 한방에 정리해주는 강의 만들겠습니다 :)

      삭제
  5. 체계적으로 설명이 잘 되어있네요!
    이모티콘이 너무 귀여워요 ㅠ

    답글삭제
    답글
    1. 감사합니다! 이모티콘 나중에 모아서 카톡 스토어에도 신청해보려구요 :)

      삭제
  6. 설명 쉽고 간명하군요!! good!

    답글삭제
  7. 설명을 너무 잘하시네요. 내용을 떠나 글자체가 재밌어서 읽게 됩니다 :)

    답글삭제
    답글
    1. 감사합니다! 재미있게 읽으셨다니 너무 기쁘네요 :)

      삭제