본문 바로가기

Andrew Ng[앤드류 응]- Machine Learning(머신러닝) 1주차 강의노트 본문

AI/Machine Learning- Andrew Ng

Andrew Ng[앤드류 응]- Machine Learning(머신러닝) 1주차 강의노트

점핑노루 2021. 6. 30. 22:25

머신러닝이란?


머신러닝(한국어로 기계학습이라고도 한다)은 AI의 세부분야 중 하나이다. 컴퓨터가 스스로 새로운 능력을 학습하도록 한다.

머신러닝의 예로는

  • 대량의 데이터에서부터의 데이터마이닝
  • 코딩만으로 해결할 수 없는 코딩문제 (자율 헬리콥터, 손글씨 인식, NLP, CV 등)
  • 아마존, 넷플릭스와 같은 개인을 위한 맞춤 프로그램
  • 인간의 학습과정 이해

가 있다.

그렇다면 머신러닝이란 무엇일까?

 


Arthur Samuel(1959)는 머신러닝을 프로그래밍 되지 않아도 컴퓨터가 스스로 학습할 수 있도록 하는 학문이라고 하였다.
조금 구체적으로 Tom Mitchell(1998)은 머신러닝을 경험 E, 작업 T, 성능 P로 나누어 설명한다. 작업 T에 대한 경험 E를 해서 성능 P가 증가한다면, "컴퓨터가 스스로 학습한다" 라고 정의한다.

예를 들어 이메일을 스팸/비스팸으로 분류해야하는 목표는 작업 T이고, 이메일을 스팸/비스팸으로 분류하는 과정은 경험 E이고, 분류 결과에 따라 얼마나 올바르게 스팸/비스팸으로 분류하였는지는 성능 P로 설명한다.


또한 머신러닝의 알고리즘으로는 크게 Supervised learning(지도 학습), Unsupervised learning(비지도 학습)으로 나눌 수 있다.
후술하겠지만 Supervised learning은 컴퓨터에게 무엇을 학습해야하는지 알려주는 방법이고, Unsupervised learning은 컴퓨터에게 데이터에 대한 아무런 정보 없이 스스로 학습하도록 하는 방법이다.
그 외에도 Reinforcement learning, recommender systems가 있다.
이 강의는 머신러닝 알고리즘 종류 뿐만 아니라 이를 효율적으로 활용할 방법들도 설명할 것이다.

Supervised Learning



Superivsed learning에는 "올바른 대답"이 존재한다. 즉 특정한 자료가 주어졌을 때, 컴퓨터는 자료에 대한 정답을 아는 상태로 올바른 결과값을 출력해야 한다. 지도 학습의 종류로는 값을 예측하는 Regression과 올바르게 분류하는 Classification이 있다. Regression의 예시로는 집 크기를 바탕으로 집 값 예측하기, Classification의 예시로는 종양 두께, 세포 크기, 세포 모양으로 유방암이 양성인지, 악성인지 판단하여 (비연속적인)이산값으로 출력하는 것이 있다.

Unsupervised Learning


Unsupervised learning은 Supervised learning과 다르게 자료에 정답(ex: 유방암이 양성인지 악성인지)이 없다. 라벨링이 전혀 되지 않은 자료를 던져 놓고 컴퓨터가 알아서 데이터를 n개의 집단으로 분류한다. 대표적인 방법으로는 Clustering이 있는데, 자료들의 거리에 따라 특정 군집으로 분류한다.

Unsupervised learning의 예로는 컴퓨터 클러스터링, SNS를 활용한 사회적 연결망 분석, 시장 분류, 천문 데이터 분석 등이 있다.

Linear Regression with one variable- Model Representation


Regression은 supervised learning의 한 종류인데, 특정한 값이 주어졌을 때 그 결과값을 알려준다. 조금 통계학적으로 접근하면 "나올 수 있는 모든 결과값들의 평균" 이라고도 하는데, 앞서 언급한 정의로 이해해도 무방하다.

집 값 예측을 위한 training set을 가져온다고 하였을 때,

  • m = training examples의 개수 (총 몇개의 예제가 있는지)
  • x = 입력값의 변수 (독립변수)
  • y = 출력값의 변수 (종속변수)

라고 명명할 것이다.
그리고 (x, y) 한 쌍을 하나의 training example이라고 하고, (x^(i), y^(i))는 i번째 training example이라고 한다.
이를 이해하면 오른쪽 하단의 x^(1), x^(2), y^(1)의 값이 이해될 것이다.

h를 가설이라고 하자.
그 때 우리는 learning algorithm을 통해 x값으로 y값을 지도하고, 예측한 집 값을 알아낼 수 있다.
그렇다면 가설 h를 나타내는 방법은 무엇인가?
오른쪽 상단의

로 나타내고, 줄여서 h(x)라고 표현하기도 한다.

위 식이 익숙해 보이는가?
그렇다. 우리가 중학교 때 배운 일차함수(y=ax+b)와 같은 꼴을 보이고 있다. 단지 a와 b가 θ0이랑 θ1의 꼴로 바뀌었을 뿐. 그래서 우리는 이를 univariate linear regression이라고 한다. h(x)값을 결정하는 변수가 하나뿐이기 때문이다.

Linear Regression with one variable- Cost Function


Univariate linear regression에서 h(x)값을 예측하기 위한 가설함수를 위와 같이 설정하였다.
일차함수를 제대로 배운 사람들이라면, θ0와 θ1의 값을 구해야만 h(x) 값을 알아낼 수 있다는 것을 알고 있을 터이다.
그렇다면 각각의 θ들은 어떻게 정하는 것인가?
그리고 우리는 앞으로 각각의 θ들을 Parameter이라고 명명하기로 한다.

위 슬라이드는 θ0과 θ1에 다양한 값을 넣었을 때 함수의 모양이 어떻게 변하는지 보여준다.

하지만 우리는 θ0과 θ1의 값을 기존 training examples(x,y)를 대표할 수 있는 값으로 설정해야 한다. 달리 말해, h(x)의 값을 최대한 y와 비슷하게 해야하는 것이 목표이다. 그렇기에 h(x)와 y값이 최소가 되도록 θ0과 θ1의 값을 minimize 해야한다. 그 식은 아래에 있다.

Notability앱 사용

이것이 cost function(비용함수)이다. 즉 우리는 h(x)값과 y값의 편차를 최소한으로 줄여서 θ0과 θ1의 값을 최소화 해야한다.
여기서의 m은 앞서 설명하였던 training examples의 개수임을 잊지 말자.
여담으로 1/2로 나누는 이유는 추후에 gradient descent를 활용하여 편미분을 하였을 때, 제곱이 내려와 1/2를 상쇄하기 때문이다. 이에 대한 것은 아래에 더욱 자세하게 이야기할 것이다.

Linear Regression with one variable- Cost Function Intuition 1


왼쪽 식은 우리가 여태까지 배워왔던 식이다. 그러나 오른쪽처럼 편의를 위해 상수항을 제거한다. 그렇게 된다면 θ0의 값은 0이 될 것이고, 함수는 원점을 지나갈 것이다. (y = ax의 개형을 생각해보라)
어쨌든 우리의 목표는 θ0과 θ1의 cost function을 최소화해야하는 것인데, θ0가 없어졌으니 θ1의 cost function만 최소화하면 된다.

예를 들어 θ1을 1이라고 하자. 그리고 붉은색의 X가 training example들이라고 하자. 그 때의 J(θ1) 값을 구하면, h(x)와 y값들이 모두 일치하기 때문에 그 편차가 0이 될 것이고, 0이 제곱은 어차피 0이기 때문에 최종적인 J(θ1) 값은 0이 될 것이다.
그리고 오른쪽에 θ1과 J(θ1)에 대한 그래프를 그린다면, θ1이 1이었을 때의 J(θ1)값은 0이 될 것이기 때문에 해당 위치에 붉은색으로 X를 표기해 놓았다.

이번에는 θ1을 0.5라고 하자. 이 때는 h(x)와 y값이 다르기 때문에, h(x) = 0.5x 에서 x의 값에 1,2,3을 대입하면 각각 0.5, 1, 1.5의 값을 얻을 수 있다. 그 때 그 값과 각각 training example들의 y값의 편차의 제곱을 하면 대략 0.58을 얻을 수 있다. 그리고 다시 오른쪽의 θ1과 J(θ1)의 그래프에서 해당 위치에 값을 파란색 X로 표기한다.

이렇게 계속 다양한 θ1 값을 대입하면(직접 해보아도 좋다), 우리는 오른쪽과 같은 검정색 이차함수를 얻을 수 있다. 그리고 우리의 목표는 J(θ1)을 최소화하는 것이었기 때문에, θ1의 값이 1일 때 J(θ1)의 최소값인 것을 쉽게 알 수 있다. 그러므로 θ1의 값은 1이어야 한다.

Linear Regression with one variable- Cost Function Intuition 2


이제는 θ0과 θ1을 동시에 조정해보자. 변수가 하나뿐(θ1)이었던 Cost Function Intuition1과 달리 여기에서는 변수가 2개(θ0, θ1)이다. 그렇다면 J(θ0, θ1)의 개형은 2개의 독립변수(θ0, θ1)와 하나의 종속변수(J(θ0, θ1))로 이루어져있기 때문에 3차원 그래프의 개형이 나타날 것이다. 그 개형은 아래와 같다.

이 3차원 그래프에서 우리는 J값이 가장 낮은 지점(파란색 부분)을 구해야한다.

3차원 그래프를 조금 더 가시적으로 하기 위해 contour figure을 활용한다. 앞 슬라이드의 색깔들이 서로 대응되는 것을 확인할 수 있다. 그리고 우리는 θ0, θ1의 값을 조정해서 J(θ0, θ1)의 값이 최대한 파란색 안쪽으로 오도록 조정해야 한다.

위는 임의의 θ0, θ1값이 어떻게 contour figure에 plot될지 보여준다.

Linear Regression with one variable- Gradient Descent


이 장에서는 gradient descent(경사하강법)에 대하여 설명할 것이다.
gradient descent를 직역하면 "gradient를 타고 내려온다" 정도로 해석할 수 있겠는데,
말 그대로 3차원 그래프의 임의의 (θ0, θ1)에서 시작해 가장 가파른 경사를 타고 내려와 minimum에 도달하는 과정이다. 그 과정은 아래와 같다.

이 두 슬라이드를 보면 시작점에 따라 다른 곳에서 끝나는 모습을 확인할 수 있다. 첫 번째 슬라이드에서의 끝나는 지점은 local miminum으로서, 고등학교 때 미적분을 공부했다면 극솟값이라고 이해해도 좋다. 우리는 최소점을 구해야하는데, local minimum에 빠지지 않도록 하는 방법은 추후에 살펴본다.

Gradient descent의 알고리즘은 아래와 같다. 기존 θ0 값에서, 비용함수J(θ0, θ1)에서 θ0로 편미분한 값 * 특정 α값을 빼준다. 또한 기존 θ1 값에서, 비용함수J(θ0, θ1)에서 θ1로 편미분한 값 * 특정 α값을 동시에 빼준다. 편미분의 쉬운 예를 들자면... θ0로 편미분한다고 하였을 때 θ0를 변수로 미분하고, 그 외의 변수 및 상수들은 모두 상수취급하는 것이다.
그리고 α값은 learning rate이라고 할 것이며, 뒤에 더욱 상세히 설명할 것이다.
마지막으로 θ0과 θ1의 조정은 동시에 이루어져야하고, 왼쪽 아래와 같이 코딩해야한다는 점 잊지 말자. 오른쪽처럼 코딩하면 θ0을 조정하면서 변해버린 J(θ0, θ1) 값이 θ1을 조정할 때의 값으로 바뀌기 때문에, 동시 조정이 이루어지지 못하기 때문이다.

Linear Regression with one variable- Gradient Descent Intuition

 



앞서 살펴본 gradient descent algorithm이다.


α는 0이상의 양수이다. 0이상의 양수이면 gradient descent를 실시할 때 제대로 하강하지 못할 수 있을 것 같기도 하다. 그러나 아니다. 만약 J(θ1)의 값이 양수라면, 앞의 뺄셈 기호로 인하여 θ1의 값은 줄어들어 왼쪽으로 이동할 것이다. 반면 J(θ1)의 값이 음수라면, 앞의 뺄셈 기호로 인하여 θ1의 값은 증가하여 오른쪽으로 이동할 것이다. 결국 θ1값은 local minimum에 이르게 된다.


Learning rate α는 우리가 얼만큼 경사하강을 할지 조정해준다. 위의 예를 살펴보자. 만약 α가 너무 작다면, gradient descent는 천천히 이루어질 것이며, α가 너무 크다면, gradient descent는 minimum을 지나버려 오히려 overshoot할 가능성이 있다. 그래서 최적의 α를 정하는 것이 중요하다.


α는 한 번 정하면 변경할 필요가 없다. J(θ1)을 편미분한 값이 0에 가까워질수록 편미분값*α값 은 작아지기 때문에, local minimum에 서서히 도달하게 될 것이다.

Linear Regression with one variable- Gradient Descent for Linear Regression



지금까지 이 강의노트를 계속 따라왔다면 정말 고생했다고 말씀드리고 싶다. 왼쪽은 gradient descent algorithm으로, θ0과 θ1이 얼만큼 어떠한 방향으로 나아가야 할지 알려준다. 그리고 그 gradient descent algorithm을 통해 오른쪽의 J(θ0, θ1)이 꾸준히 조정되고, 그 값을 최소화 하도록 해야한다. 최종적인 θ0과 θ1의 값은,

의 결과값이 된다.

앞서 gradient descent의 편미분값을 구한다고 하였는데, J(θ0, θ1)을 θ0, θ1로 편미분한 값은 각각

Notability앱 사용


이다. 아까 설명하였듯이 제곱이 미분되면서 앞의 1/2이 없어진 것을 확인할 수 있다.
Andrew Ng교수님께서 증명은 넘어가셨지만, 머신러닝 스터디에서 했던 증명을 아래에 보여주도록 하겠다. 스터디를 할 때 사용했던 자료라 필체가 더러운 점 양해 부탁한다.

Notability앱 사용
Notability앱 사용


θ0과 θ1은 동시에 조정되는 사실을 잊지 말자.

Linear regression의 J(θ0, θ1)을 구할 때는 항상 이렇게 항아리 모양의 3차원 그래프가 나오고, 하나의 global optimum을 가지고 있다. 이를 convex function이라고도 한다.

위 슬라이드들은 gradient descent로 인한 θ0과 θ1의 값의 변화가 어떻게 univariate linear regression에 영향을 주는지 보여준다.


우리가 배웠던 gradient descent를 "Batch" gradient descent라 하기도 하는데, 이는 우리가 한 번의 gradient descent를 할 때 모든 training example들의 편차의 합을 구했기 때문이다.



선형대수 리뷰는 모두가 이해한다는 가정 하에 스킵하도록 하겠다.

슬라이드 출처
https://www.coursera.org/learn/machine-learning?

 

기계 학습

스탠퍼드 대학교에서 제공합니다. Machine learning is the science of getting computers to act without being explicitly programmed. In the past decade, machine ... 무료로 등록하십시오.

www.coursera.org

 

Comments