uncategorized

Machine Learing - Coursera(week4)

Non-linear Hypothesis

non-linear-cliassification

왼쪽 위 그래프처럼 나타난 비선형 문제의 cost function을 이전에는 n차 다항식의 sigmoid 표현해 봤다. 그런데 몇차까지 가야 잘 표현할 수 있을지, feature 의 개수가 100개정도로 많을때 차수가 많아짐에따라서,

feature간의 곱으로 표현함(위처럼)에 따라서 굉장히 많은 식들이 나올 수가 있고, 어떤 것이 문제를 해결하는데에 적합할지 가려내기가 어렵게 된다.

예를 들어서, 자동차 이미지를 분류하는 학습을 진행한다고 하자.

non-linear-example

50*50 픽셀 이미지 일 경우에 feature의 개수 n은 2500이 나오게 되고 (RGB일 경우에 7500)

단순히 x_i*x_j 의 조합만으로도 만들 수 있는 2차 식이 3 million 개 가까이 나오기 때문에 적합한 모델을 찾기가 쉽지 않고, 이때문에 다른방법을 고민하게 된다.

Non-linear classification example로 대표적인것이 XOR/XNOR 문제인데 이 문제는 linear한 classification을 쓸수가 없고, 오른쪽 아래 그림과 같이 복잡한 함수형태로 이를 표현해야하는데, 이를 추후에 neural network로 표현해 볼수 있다. - (강의의 뒷부분에서)

non_linear_XOR_XNOR

위와 같은 문제를 풀기 위해 사람의 신경망이 아주 단순한 형태로 복잡한 계산을 한다는 것에 착안하여 인공신경망을 만들어서 우리가 풀고자 하는 h(x)를 표현한다.

neural_network_model_rep

a_(j)는 layer j에서 “activation”을 담당하고

theta_(j)는 layer j 에서 layer j+1로 가는데에 weight를 콘트롤하는 행렬이다.

이 행렬은 s_(j+1) (s_j + 1) 의 형태로 나타난다. - 위의 예로는 3 (3+1) 이므로 3 * 4 형렬 이다.

Neural Network가 풀고자하는 XOR/XNOR 문제를 풀기전에 example로 몇가지를 살펴보자.

neural_network_example_AND

위와 같은 2개의 입력 x1, x2를 가지고, input layer에 bias로 “+1”을 추가하자. 그리고 weight를

[-30, 20, 20]으로 하면 g(-30+20x_1+20x_2)를 계산하는 것이 되고 이것에 x1,x2를 대입하여보면 “AND” operation과 유사한 형태가 나오게 된다.

neural_network_example_OR

weight를 조금 조정하여 “OR” function을 구현했다.

neural_network_example_XNOR

XNOR을 봤을때 hidden layer가

a1(2) a2(2)

0 1

0 0

0 0

1 0

이렇게 나오고 이를 OR연산하면 될거같다 라고 생각하고

앞서 구한 각각의 unit을 구하기 위한 function을 가져와보자.

빨간색으로 표시한 AND를 a1_(2)를 구하는 데 사용하고,

파란색으로 표시한 (NOT x1) AND (NOT x2)를 a2_(2)를 구하는데 사용한다.

a1_(2) OR a2(2)를 하면 된다! - network 를 위에 표시하였다.

그러면 우리가 구하고자하는 XNOR function이 나오게 된다. XNOR문제를 풀었다!

Share