본문 바로가기

STUDY/인공지능

Machine Learning Basic

오늘부터 ML에 대해서 포스팅하게 되었다.

이번에 졸업과제를 ML관련하게 진행하게 되면서 AI와 ML에 대해서 이제 막 공부하기 시작하게 되었다.

따라서 AI와 ML에 관해 깊이있게 알지 못하고 포스팅에 다소 잘못된 내용이 있을 수 있는데,

이에 대해 자유롭게 피드백을 주면 적극적으로 반영하여 수정하겠다.

 

또한 포스팅은 유투브에 올라온 sung kim의 '모두의 딥러닝 시즌1' 강좌를 참고하므로,

많은 부분이 해당 동영상과 겹칠 수 있음을 양해바란다.

 

What is ML?


몇 년전 알파고 대 이세돌의 바둑경기에서 알파고가 4승 1패로 승리를 거두면서,

사람들이 '인공지능', '머신러닝', '딥러닝'과 같은 키워드에 관심을 가지기 시작했다.

 

사실 인공지능, 머신러닝과 같은 용어들은 최근에 생겨난 것이 아니라, 

알파고가 등장하기 훨씬 오래 전부터 있었던 개념이지만 어려운 분야이기때문에

딱히 큰 성과를 못내고 있다가 알파고의 등장으로 다시 한 번 화제가 된 것이다.

그렇다면, 이 개념은 무엇이며 왜 등장하게 되었을까?

 

프로그램이란 어떤 입력을 넣으면 원하는 출력(결과)이 나오도록 컴퓨터에게 일을 시키는 것이다.

간단한 예를 들면, 다음과 같다.

 

입력: 정수 2개 (1, 4)

출력: 정수 2개의 합 (5)

프로그램: 2개의 숫자를 더하는 동작 (1+4)

 

하지만 이런 프로그램의 한계는 프로그래머가 시키는 대로만 일을 할 수 있다는 것이다.

즉, 다르게 말하면 프로그래머가 컴퓨터에게 시키기 어려운 일들이 있다.

 

예를 들어, 스팸메일을 찾아내서 삭제해주는 프로그램을 작성한다고 생각해보자.

우선, 어떤 메일을 스팸메일이라 판단해서 지워야하는지 하나하나 다 알려줘야한다.

제목에 별(☆,★)이 들어가있으면 스팸이라 판단하고 해당 메일을 삭제하도록 시켰다고 생각해보자.

그런데 제목에 별이 들어가지 않은 스팸메일이 있을 수 있고 별이 들어갔는데 스팸메일이 아닐 수도 있다.

어떤 걸 스팸메일이라 판단해서 지워야하는지를 하나하나 알려주기에는 차라리 직접 지우는 게 낫다는 생각이 든다.

따라서 컴퓨터한테 '스팸메일같은 느낌'이 나는 메일을 지워라고 시키고 싶은 것이다.

 

이렇게 컴퓨터가 학습(어떤 상황을 판단하는 방법을 배우는 것)을 해서 어떤 일을 처리하도록 시키는 것,

이게 바로 Machine Learning이 개념이다.

 

원인) Limitations of explicit programing

- spam filter: many rules

- Automatic driving: too many rules

 

결과) Machine learning: "Field of study taht gives computers the ability to learn without being explicitly programmed" Arthur Samuel(1959)

 

Supervised vs Unsupervised Learning


ML에는 크게 2가지 종류가 있다.

 

1) Supervised Learning

- learning with labeled examples - traning set

 

supervised learning - training set
supervised learning - testset

이처럼 이건 고양이다, 이건 강아지다 이런식으로 가르쳐 준 뒤

새로운 사진에 대하여, '그럼 얘는 고양이일까, 강아지일까?' 이렇게 묻는 방식으로 학습하는 방법이다. 

 

2) Unsupervised Learning

- Google news grouping

- Word clustering

 

unsupervised learning은 supervised learning과 달리, 학습데이터에 결과를 알려주지 않는다.

앞선 예와 함께 생각해보면, 이건 고양이다, 이건 강아지다라는 걸 알려주지 않고 일련의 사진들을 쭉 보여주면

컴퓨터가 고양이인지 강아지인지는 모르지만, 비슷한 특성을 가진 것 끼리 묶어나가게 된다.

 

실제로는 supervised learning에서 적절한 feature를 찾아내기 위한 전처리 방법으로 많이 쓰인다.

예를 들어, 코의 크기가 작으면 A그룹, 크면 B그룹 이라고 판단했더니

A 그룹에는 고양이사진만 들어갔고 B 그룹에는 강아지사진만 들어가게 분류되었다면,

코의 크기를 고양이와 강아지를 분류하는 기준으로 쓰면 되겠다라는 결론에 도달할 수 있다는 것이다.

 

Supervised Learning


이번 포스팅에서는 Supervised Learning에 대해 더 자세히 알아보자.

 

* Most common problem type in ML

- Image labeling: learning from tagged imageds

- Email spam filter: learning from labeled (spam or ham) email

- Predicting exam score: learing from previous exam score and time spent

 

* Traning data set / Test data set

label이 있는 training data set으로 학습을 한 후 test data set을 통해 학습결과를 확인한다.

이 때, training data set의 일부를 미리 떼놓고 나중에 test data set으로 활용하기도 한다.

 

* Types of Supervised learning

1) regression

- predicting finial exam score based on time spent

 

2) binary classification

- pass/non-pass based on time spent

 

3) multi-label classification

- letter grade(A,B,C,D and F) based on time spent

 

마무리


인공지능, 머신러닝 등 용어만 들었을 때는 많이 어려울 것 같아 겁을 먹었었다.

그러나, 모두의 딥러닝 강좌에서 너무 잘 가르쳐주셔서 생각보다 시작이 무난한 편인거 같다.

열심히 해보자.

 

'STUDY > 인공지능' 카테고리의 다른 글

[Coursera / ML] 01_Introduction  (0) 2019.12.05
TensorFlow의 설치 및 기본적인 operations  (0) 2019.07.01