[ML] 머신러닝이란?

Dev StoryTeller·2024년 11월 3일

AI 시리즈

목록 보기
2/5

머신러닝은 데이터를 주어지면 학습을 한다고 했는데, 이 학습의 종류에 따라 다시 3가지로 나눠진다

1. 지도 학습

정답이 있는 입력 데이터(라벨링된 데이터)들을 주고 학습을 시켜 원하는 답을 추론하도록하는 방식을 말한다

  • 라벨링(Labelling)?

    지도학습에서는 입력과 정답의 데이터로 학습을 하기에, 이 둘의 관계가 무엇보다 중요하다
    즉, 원하는 결과를 내기위해 불필요한 입력은 없는지, 정답과 상관관계가 명확한지 등 가능한 잘 엮인 질 좋은 데이터들이 필요하다

    여기서 입력 변수와 반환값을 각각 feature와 label이라고 하며, feature에 대한 적절한 label을 만들어 주는 과정라벨링(Labelling)이라고 한다

그럼 왜 지도(Supervisor)라고 할까?
자, A에 대한 정답은 B야. 그럼 A'는 뭘까? 라는 식으로 정답을 가르쳐주고(지도) 학습을 시키기에 지도 학습이라고 한다
지도학습의 종류에는 다음과 같이 2가지가 있다

  • 분류(Classification)

    이름 그대로 종류에 따라 나뉘는 것을 말한다
    결과가 Yes or No, 봄 / 여름 / 가을 / 겨울 등 이산적으로 나오며,
    해당하는 모델로는 k-NN 알고리즘, 로지스틱 회귀, 의사결정트리 등이 존재한다

    대표적인 예시로는 스팸메일 분류 모델이 있다
    학습에 필요한 데이터들은 모두 스팸인지 아닌지 구분 가능한 메일들이기 때문에, 이는 지도학습에 해당한다고 할 수 있다

  • 회귀(Regression)

    분류와는 달리 값을 예측하고 추정하는 것을 말하며, 결과가 시세, 키 등 연속적인 것이 특징이다

    예측의 예시로는 자전거 대여량 예측 모델이 있다
    계절, 온도 등의 데이터를 이용해서 자전거 대여량을 예측한다고 해보자
    이때 주어지는 데이터들은 "여름에 33도인 날 자전거 대여량은 23대야!"라고 주어질 것이다
    대여량의 수치가 존재하기에 이것도 지도 학습에 해당한다고 할 수 있다

2. 비지도 학습

지도 학습과는 반대로, 정답이 없는 데이터들을 주고 학습시키는 방식을 말한다
즉, 그냥 데이터들을 주고 알아서 결과값을 내라는 방식인 것이다

  • 정답이 없는 데이터?

    그런데 결과값을 내라는데, 정답이 없는 데이터라는 것이 있을까?
    그렇다. 우리가 정답을 내기 어려운 데이터들이나, 오히려 새로운 시각을 보고싶을 때 사용할 수 있다

    에를 들면 A 그룹의 사용자들과 B 그룹 사용자들의 관계성을 보고싶다고 하자
    이럴 경우 어떤 관계성이 있는지 기준을 보고싶은 것이지, 정해진 관계성으로 분류하고 싶은게 아니다
    따라서 비지도 학습이 맞다

    또 다른 예는 우리가 흔히 유튜브 알고리즘이라고 부르는 것이다
    과연 이걸 사람이 수많은 사용자들의 영상을 직접 보면서 "뭘 좋아하는구나!"라고 추천할 수 있을까?
    이는 불가능하다. 때문에 컴퓨터를 시켜 추천을 시킬 수 있으며, 이는 비지도 학습에 속한다


    다만 비지도 특성상 정답 데이터가 주어지지 않기에, 예측값 역시 원하지 않는 값이 나올 수 있다

3. 강화 학습

이는 위의 두 경우처럼 입력이 있고 결과가 나오는 것과는 달리,
임의의 주어진 환경속에서 행동의 결과 보상이 높은 쪽으로 고쳐나가며 학습하는 방법이다
이 경우는 예시를 보면서 알아보자

대표 예시로는 한창 떠들썩했던 알파고가 있겠다. 학습방법은 이러하다

방법 숙지 -> 환경 관찰 -> 행동 -> 보상이 주어짐 -> 보상을 토대로 학습

  • 방법 숙지

    먼저 컴퓨터가 어떻게 바둑을 두는지 모르기에 이를 그간의 바둑 대결 기보를 알려주고 학습시킨다
    바둑의 규칙과 기술 등 다양한 부분을 익히게 된다
    이 과정은 그저 방법을 알려주는 것으로 "강화 학습"은 아니다

  • 환경 관찰

    방법을 모두 숙지했다면 주어진 환경이 어떤지를 파악한다
    바둑판의 현재 상태를 분석한다고 보면 될 것 같다

  • 행동

    파악한 환경을 바탕으로 가장 최적이라고 생각하는 행동을 한다
    이 행동을 통해 바둑판이라는 환경은 다시 변하게 된다

  • 보상이 주어짐

    행동을 통해 새로운 환경으로 바뀌었고, 이것이 가치가 있는 행동이었는지를 보상을 준다

  • 보상을 토대로 학습(강화 학습)

    지금 상황은 환경 E에서 A라는 행동을 하고 환경 E'로 바뀐 셈이다. 그리고 보상 R이 주어졌다
    이것을 하나의 데이터로 보고 이를 토대로 학습을 한다

이 과정을 계속 반복하며 스스로 학습을 해나간다


나머지는 모두 대략 아는 내용이었으나 강화학습은 조금 생소한 부분이었다
나중에 따로 다뤄보기로 하고, 과연 머신러닝 개발은 어떻게 진행되는지에 대해 알아보자


참고

강의
코드잇(https://www.codeit.kr)

지도 / 비지도 학습
https://velog.io/@abrahamkim98/Machine-Learning
https://modulabs.co.kr/blog/machine-learning/
https://thebook.io/080260/0093/
https://m.blog.naver.com/skyjjw79/222477980322
https://www.appier.com/ko-kr/blog/a-simple-guide-to-unsupervised-learning

강화학습
https://brunch.co.kr/@namujini/22
https://m.blog.naver.com/cslee_official/222237836302
https://hiddenbeginner.github.io/rl/others/2022/09/02/what_should_i_do_with_RL.html

profile
개발을 이야기하는 개발자입니다

0개의 댓글