이 포스트는 Coursera Machine Learning 강의(Andrew Ng 교수)를 요약 정리한 것 입니다. 포스트에 사용된 이미지 중 많은 내용은 동영상 강의 자료의 이미지 캡쳐임을 밝힙니다.
Course Home: Coursera Machine Learning
이번 시간에는 Neural Network라고 불리는 학습 알고리즘에 대하여 설명하도록 하겠다.
- Non-linear hypothesis
Neural Network는 꽤 오래 전부터 제시된 방법이지만 한동안 사람들의 관심을 받지 못했다가 최근 들어 다양한 분야에 기계학습을 적용하기 위한 기법으로 사용하면서 다시 각광받게 되었다. 그런데 왜 Neural network(신경망 알고리즘)이 중요하게 되었을까? 이 문제를 알아보기 위해서는 복잡한 비선형 가설(Non-linear Hypothesis) 문제에서부터 시작해보겠다.
아래 그림처럼 복잡한 non-linear classification문제에 지도학습 알고리즘(supervised learning algorithm) 적용하려고 한다면, 많은 다항식으로 구성된 로지스틱 회귀식을 사용할 수 있다. x1, x2 두 가지 변수(feature)만으로 데이터가 주어졌을 때는 알고리즘은 잘 동작한다.
그러나 feature의 개수가 많다면 어떨까? 예를 들어, 우리는 집의 feature(집의 크기, 방의 개수, 연식 등)를 알고 있고, 이것을 통해 이 집이 6개월 이내 팔릴 가능성이 얼마나 될 지 예측하고자 한다. 만약 집의 feature의 개수가 100개라고 하면 단지 이차항(quadratic)만으로 구성된다 해도 5000개(100C2 )가 넘는 식(features)이 생성된다. 식(Feature)의 개수는 O(n2) = nC2 ≒ n2/2까지 증가할 것이다. 삼차항(cubic)까지 포함하게 되면 더 많은 식(features)이 생성되어 O(n3)까지 증가하게 될 것이다. n이 100개라면 조합 가능한 식(feature)는 약 170,000개가 될 것이고, 상당히 많은 계산이 필요하게 된다. 따라서, n(xi의 개수)이 크다면 이와 같은 방법은 효율적이지 않다.
Computer vision 문제를 생각해보자. 아래 보이는 그림은 자동차이다. 우리는 눈으로 보면 이것이 무엇인지 한 눈에 알 수 있지만 컴퓨터는 그림의 한 부분의 픽셀값(0~255)을 숫자 배열형태로만 인식하게 된다. 여기서 픽셀값은 이미지에서 각 픽셀의 밝기를 나타낸다. 컴퓨터는 픽셀 밝기로 이루어진 matrix를 보고 이 숫자들이 특정 자동차의 한 부분(예를 들어 문 손잡이와 같은)을 나타낸다고 우리에게 알려주게 된다.
따라서, 자동차 분류(Car detection)알고리즘을 위해 우리가 해야 할 일은 ‘자동차’라고 표시된 사진들과 ‘자동차’가 아님이라고 표시된 사진들을 입력시키는 것이다. 이 사진들(training set)을 학습 알고리즘에 전달하여 분류기(classifier)를 학습시킨 후, 새로운 사진으로 학습된 알고리즘을 테스트 한다. 아래의 그림처럼 새로운 테스트 사진을 보여주고 이것이 차인지 아닌지 판단하게 하는 것이다.
아래 그림처럼 pixel1과 pixel2를 가지고 자동차 분류 알고리즘을 만든다고 생각해보자. 50×50픽셀 이미지를 사용한다고 하면 총 2,500개의 픽셀 데이터를 가지게 된다. 즉, 데이터의 개수 n은 2,500이다. 여기서 x는 2,500개의 행을 가진 벡터로 각 원소(element)의 값은 픽셀의 밝기(0~255)를 나타낸다. 만약 RGB이미지를 사용한다면 이미지는 적색, 녹색, 청색 값을 각각 가지기 때문에 n은 2,500*3= 7,500개가 된다. 이차항을 포함한 비선형 가설(quadratic hypothesis function)을 학습하려고 한다면, feature의 개수는 약 300만개(3,125,000)까지 증가하게 된다. 따라서 n이 클 경우 비선형 가설을 학습하는데 단순 로지스틱 회귀를 사용하는 것은 좋은 방법이 아니다. 따라서 이것을 해결하기 위한 방법으로 Neural Network에 대하여 알아보도록 하겠다.
- Neurons and the Brain
Neural Network를 알아보기 전 모티브가 되었던 Neurons and the Brain에 대해 먼저 알아보자. Neuron(신경세포)은 크게 input wire인 Dendrite(수상돌기), 실제 processing을 하는 Nucleus(원자핵), 그리고 output wire인 Axon(축삭돌기) 세 부분으로 구성된다. 뉴런은 dendrites 로부터 한 개 이상의 input값을 받아 processing 과정을 거친 후, axon을 통해 output을 밖으로 전달한다.
- Model Representation 1
아래 그림은 뉴런 모델을 나타내고 있다. input값(X1~X3)은 input wire를 통해 뉴런에 입력된다. 뉴런(노란색 원)은 logistic unit형태로 프로세싱(computation) 을 거쳐서 output wire를 통해 결과값을 도출한다. 뉴런 모델은 logistic unit이므로 기존 로지스틱 회귀의 hypothesis 계산 방식과 동일하게 구현될 수 있다. input값에 X0을 포함시키는 것이 좋은데 X0을 “bias unit”이라고 하며 값은 항상 1이다. 뉴런 모델은 sigmoid(logistic) activation function이라고도 한다. Theta(θ) 벡터는 parameters값으로 Neural network에서는 weights라고 부른다.
아래의 그림이Neural Network 이다. 3개의 layer로 구성되어 있는데 Layer1에서는 x1, x2, x3 세 개의 input 값을 받아 들인다. 여기서 input값은 첫 번째 layer의 input activation이라고 부르기도 한다. 다음 layer 2에는 3개의 뉴런이 있다. (a1(2), a2(2), a3(2)) layer 3에는 output을 도출하는 마지막 4번째 뉴런이 있고, 이 뉴런은 a1(3)으로도 표현된다. Layer1은 input layer, Layer3는 output layer, Layer2를 Hidden layer라고 한다.
Neural Network에서 사용되는 a, Θ에 대하여 알아보자.
ai(j) 은 j번째 layer내 i번째 unit(개체)의 activation(activation of unit I in layer j) 이다. 예를 들어, a1(2) 는 두 번째 layer 중 첫 번째 unit의 activation을 말한다. 우리는 activation에 의해 각 node의 output을 계산할 수 있다.
Θ(j) 는 하나의 layer에서 그 다음 layer로 연결해주는 matrix형태의 파라미터 값 이다. j번째 layer에 Sj개의 units이 있고 j+1번쨰 layer 에 Sj+1개의 units이 있다면 Θ(j) 행렬의 크기는 Sj+1 x (Sj + 1) 이 된다. Sj 에 +1를 하는 이유는 bias unit 때문이다. 따라서 모든 input과 activation연결하는 행렬 형태의 파라미터 Ɵjil 는 다음과 같이 표현된다. Ɵjil 에서l은 source layer를 의미하며(l번째 layer à l+1 번째 layer로 연결), j는 l+1번째 layer(target layer)의 unit의 위치, i는 l번째 layer(source layer)의 unit의 위치를 의미한다. 아래그림에서 Ɵ131은 1번째 layer와 2번째 layer를 연결하는 선 중에 2번째 layer의 첫 번째 노드와 첫 번째 layer의 세 번째 노드를 연결해주는 선에 위치하게 된다.
아래 그림에서 첫 번째 hidden unit a1(2) 은logistic activation function으로 input값들의 linear combination으로 계산한다.
a1(2) = g(Θ10(1)x0 + Θ11(1)x1 + Θ12(1)x2 + Θ13(1)x3 )
a2(2). a3(2), hθ(x)도 동일한 방식으로 구할 수 있다. 또한, 3개의 input units(Sj)과 3개의 hidden units((Sj+1)를 가지고 있기 때문에Θ(1) 는3 x 4의 행렬 형태(Sj+1 x (Sj + 1))이다.
(Coursera ML class –week04 Neural Networks : Representation part II로 이어집니다.)
Course Home: Coursera Machine Learning
Andrew Ng 교수님 소개: https://www.coursera.org/instructor/andrewng