[CS229 복습노트 - 1] Machine Learning Intro, Supervised Learning, Unsupervised Learning

Jewon's report·2022년 2월 22일
0

CS229 복습노트

목록 보기
1/1
post-thumbnail

Intro.

시리즈의 첫 글이기에 서론을 좀 적어두겠다.

진로에 대해 수많은 고민을 했었고, 다시 결국엔 Machine Learning이라는 학문으로 돌아온 만큼, 늦은 만큼, 더 열심히 시작할 계획이다. Machine Learning을 다시 처음부터 시작한다는 마음으로, Andrew Ng 교수님의 Machine Learning 강의를 선택했다. 작년 이맘때 공부했던 내용과 매우 비슷할 것으로 예상하기 때문에 최대한 빠르게 정리해 나갈 것이다. 잡설이 길어지면 끝이 없기에 이제 바로 본론으로 들어가겠다.


💾 Machine Learning Intro.

크게 중요하지 않은 부분이기 때문에 강의의 내용을 인용하여 빠르게 넘어가겠다.

Machine Learning에서 두가지 정의가 있었다.

📌 Machine Learning 첫 번째 정의

"The field of study that gives computers the ability to learn without being explicitly programmed."

위는 첫 번째 정의이다. 컴퓨터가 명확하게 프로그래밍 된 것이 아니라 배울 수 있는 능력을 준다는 정의인데 오래되고 추상적인 정의라고 한다.

하지만 여기에서 주목할 만한 단어가 하나 있다. "Explicitly programmed" 인데, 과거 프로그래밍의 개념은 "특정 조건에서 특정 명령을 수행"하는 형식으로 구체적으로 지정하는 것을 의미했다. 그러나 실제 세계에서는 명확하지 않은 문제들이 많이 존재하고, 이를 해결하기 위해 기계가 "스스로 학습"할 수 있는 능력을 준다는 개념이 등장한 것이다.

단순하게 스팸필터를 거른다고 생각해보자.
스팸메일 제목에 "스팸"이라고 정직하게 적어두는 경우가 있을까?
모든 스팸메일 제목에 "스팸"이라는 단어가 포함되면 우리는 "'스팸'이라는 단어가 제목에 포함되면 메일을 차단해주세요." 라고 프로그래밍할 수 있을 것이다.
그러나 스팸메일은 절대로 정직하게 보내지 않고, 오타나 새로운 단어를 이용해 메일을 보낼 것이다. 이 경우에 일일히 필터를 수정할 경우 너무 많고, 복잡해진다.


📌 Machine Learning 두 번째 정의

그래서 새로운 정의가 등장했다.

"A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E."

쉽게 말하자면, P는 성능 측정, E는 학습 경험, T는 수행하는 작업 으로, P로 측정된 T의 작업 성능이 경험 E를 통해 향상되는 경우 학습하였다는 의미이다.
사실 처음 이 말을 접하면 뭔소리인지 잘 모르는게 당연해서 강의에서 사용된 예시를 적어두겠다.

Example : Playing Checkers

E = the experience of playing many games of checkers

T = the task of playing checkers.

P = the probability that the program will win the next game.

Machine Learning 은 크게 두가지로 나뉜다. Supervised Learning 과 Unsupervised Learning이 있다. 아래에서 두 가지에 대해 설명하겠다.


💾 Supervised Learning

📌 정의

Supervised Learning을 번역하면 지도학습이고, 단어 그대로 해석하면 가르친다는 뜻이다.
우리가 평소에 지도를 하기 위해서 정답을 알고있어야 한다. 그렇기 때문에 Supervised Learning에서도 마찬가지로 Input(입력값)에 대해 정답, 즉 Output을 알고 있는 상태에서 학습을 진행하는 것을 의미한다.
Input에 대한 Output을 알고 있는 상태에서 학습을 하면 그 학습된 모델을 통해서 우리가 하고싶은것은 무엇일까?

새로운 Input이 나타났을 때, Output을 예측할 수 있기를 원하는 것이다.

간단한 예시로, 내가 1학기 중간고사에 4시간 공부하니까 80점 맞았고, 기말고사에 6시간 공부하니까 85점을 맞았다는 것을 알고 있다. 그렇다면 내가 2학기 중간고사에 8시간을 공부한다면 몇점을 맞을 지 예측하고 싶을때 이전의 input(공부시간) output(점수)값을 기반으로 90점을 맞을 것이다 라는 예측이 가능하다.
(물론 시험이 이렇게 시간대비해서 정직하게 점수가 나오는 경우는 없지만...)

그리고 이 Supervised Learning에서도 Regression 과 Classification으로 나뉜다.

📌 Regression & Classification

Regression 은 output이 continuous(연속적인) 값을 가질 경우에 해당한다. 예를 들면 집의 크기라는 input과 집의 가격이라는 output이 있을 때 새로운 집 크기에 따른 집 가격을 예측하는 문제를 들 수 있다.

반면 Classification 은 output이 discrete(구별된) 값을 가질 경우에 해당한다. 예를 들면, 종양의 크기라는 input과 악성인지 양성인지에 대한 output이 있을 때 새로운 크기의 종양에 따라서 이 종양이 악성인지, 양성인지에 대한 결과를 예측하는 문제를 들 수 있다.

물론 위의 두 경우 모두 하나의 input만 주어져 있지만, 하나의 input이 아니라 여러개의 input을 가질 수 있다. 종양을 예시로 했을때, 환자의 나이, 종양의 두께 등등 다양한 input을 가질 수 있다.


💾 Unsupervised Learning

📌 정의

Unsupervised Learning은 "un"이 붙어있어서 알 수 있겠지만 Supervised의 반대되는 개념으로 정답, 즉 Output이 없는 경우이다.

정답이 없는데 뭘 학습을 한다는거야? 라는 생각이 정말 당연하게 떠올랐지만, 사실 조금 더 깊게 생각해보면 실 세계에는 정답이 없는 문제는 무수히 많이 존재한다. 단순히 여러가지 특성(input)에 따라 데이터들을 구분짓고자 하는 경우에 이용할 수 있다.

Unsupervised Learning에서는 Clustering과 Non-clustering 으로 나뉜다.

📌 Clustering & Non-clustering

Clustering은 그룹으로 구별하는 것을 의미한다. 뉴스를 예시로 들면 Google에서는 수많은 뉴스를 관련된 뉴스끼리 그룹지어 제공한다. 이것 역시 기사들을 여러 특징을 이용하여 clustering해서 제공하는 것이다.

반면 Non-clustering은 대표적으로 "Cocktail Party Algoritym"이 있다.
두가지의 서로 다른 음원(영어를 하는사람 A, 스페인어를 하는 사람 B) 가 있고, A와 가까운 위치에 마이크1, B와 가까운 위치에 마이크2가 있을 때, 마이크1 에서는 A의 목소리가 더 크게 녹음되고 마이크2 에서는 B의 목소리가 더 크게 녹음 될 것이다. 이때 마이크1과 마이크2를 이용해 A와 B의 독립된 음원을 추출해 내는 것을 의미한다.

profile
아직은 '표류'중인 대학생입니다.

0개의 댓글