Andrew Ng[앤드류 응]- Machine Learning(머신러닝) 4주차 강의노트 본문
Andrew Ng[앤드류 응]- Machine Learning(머신러닝) 4주차 강의노트
점핑노루 2021. 7. 12. 10:26Neural Networks: Representation - Non-linear Hypotheses
여태까지 배워왔던 classification은 선형적인 상황에서 이루어졌다. 그러나 위 슬라이드와 같이 non-linear classification(비선형분류)을 진행해야 하는 경우도 발생한다. 만약 선형적으로 decision boundary를 결정해야 한다면, 그 식은 매우 복잡할 것이다. Feature의 개수 또한 증가해야할 것이고 overfitting의 문제가 발생할 소지도 있다.
Neural Networks: Representation - Neurons and the Brain
The "one learning algorithm" hypothesis란 뇌의 각 부분은 하나의 기작만 학습한다는 것이다. 예를 살펴보자. Auditory cortex라는 부분을 잘라서 시신경과 결합하면, 청각을 담당해야 하는 부분이 시각을 담당하는 법을 배운다. 후술할 neural network도 위와 같은 아이디어에 착안하여 만들어졌다.
Neural Networks: Representation - Model Representation1
위의 그림은 인간의 신경세포(neuron) 구조이다. 신경세포는 dendrite라는 부분에서 입력 신호를 받고, axon이라는 부분에서 출력신호를 가지고 다른 신경세포로 해당 정보를 전달한다.
인간의 neuron을 수학적인 형태로 나타내보자. 전에 배웠던 logistic regression할 때의 과정을 예로 들어보자. 신경세포의 dendrite은 각각의 x값 및 bias unit에 해당한다. 다양한 weight(parameter) θ로 곱한 값에다가 sigmoid activation function h(x)를 통해 출력값을 돌려준다. 이 출력값이 axon이다.
Neural Network란, 각각의 뉴런들이 모이고 모여서 하나의 네트워크를 형성하는 것이다. 위 슬라이드 가장 왼쪽 부분은 초기값이 들어가는 부분으로 input layer(입력층)이라 하고 가장 오른쪽 부분은 출력값이 표시되는 부분으로 output layer(출력층)이라고 한다. Input layer과 output layer 사이에 있는 layer들은 hidden layer(은닉층)이라고 한다.
먼저 각 기호의 의미부터 알아보겠다.
ai(j)는 j번째 층에 있는 i번째 "activation"이다. 즉 j번째 층에 있는 i번째 neuron에서 출력될 값이라고 해석해도 좋다.
θ(j)는 행렬 꼴로 나타내는데, j번째 층에서 j+1번째 층까지 있어야 할 모든 θ값들을 보여준다.
슬라이드의 예시를 살펴보자. a1(2)가 출력되려면 bias term인 x0가 있다는 가정 하에 x0, x1, x2, x3의 값에 θ0, θ1, θ2, θ3값이 곱해지면서 sigmoid와 같은 activation function을 통과해야 한다. 이때 a1(2)는 2번째 층에 있는 첫 번째 activation이다. 또한 a2(2), a3(2)이 출력되려면 마찬가지로 각각의 θ0, θ1, θ2, θ3값이 있어야 한다. 이를 합친 것이 바로 θ(2)이며 3*4행렬의 꼴로 나타낼 수 있다. 그리고 j번째 층에 sj개의 unit이 있고, j+1번째 층에 sj+1 개의 unit이 있다면,
θ(j)의 행렬은 sj+1 * (sj+1)의 꼴로 나타난다.
Neural Networks: Representation - Model Representation2
Forward propagation이란 input layer에 값을 대입하여 output layer에서 최종값을 출력하는 총 과정을 의미한다. 그 과정은 슬라이드 오른쪽에 나타나있다. Input X를 하나의 row vector형태로 만든 뒤, θ(j)행렬과 곱하여 z(2)을 생성한다. 그 다음 얻은 z(2)값을 시그모이드 등의 g()함수에 대입하여 a(2) 값을 획득한다. 그 다음 layer에 대한 값을 계산하려면 a0(2)=1라는 bias term을 추가한 다음 첫 번째 layer에서 두 번째 layer을 만들 때 계산했던 방식을 그대로 적용하면 된다.
Neural network의 형태는 앞서 보았던 형태로만 국한되지 않는다. 알고리즘 설계자들이 임의의 architecture을 만들어 각 층마다의 activation 개수를 선정할 수 있다.
Neural Networks: Representation - Examples and Intuitions
여기쯤 왔으면 드는 의문이 있을 것이다. 왜 강의 초반에 non-linear classification에 대한 설명을 하면서 시작했으며, neural network라는 개념은 왜 등장한 것인가? Neural network를 사용하면 non-linear classification을 해결하는 데에 용이하기 때문이다. 대표적인 예가 바로 XOR/XNOR 문제를 해결할 때다. 컴퓨터/전자공학에 익숙한 사람들이라면 위 두 개념이 익숙하겠지만, (필자를 포함한) 그렇지 않은 사람들을 위해 설명을 덧붙이도록 하겠다.
XOR이란 2개의 입력이 같으면 0을 출력하고, 다르면 1을 출력하는 알고리즘이다.
NXOR이란 2개의 입력이 같으면 1을 출력하고, 다르면 0을 출력하는 알고리즘이다. (Not XOR이라고 생각하면 편하다)
슬라이드 왼쪽에는 XOR을 2차원 그래프에 y=1을 X표시로, y=0을 O표시로 그렸는데, X랑 O를 선형적으로 분리하기 불가능하다는 것을 볼 수 있다(슬라이드 오른쪽 그림을 참고해보라).
NXOR함수를 neural network를 활용하여 분류해보자. 결과부터 말하자면 1개의 input layer, 1개의 hidden layer, 1개의 output layer로 NXOR함수를 생성할 수 있다. Hidden layer에는 2개의 activation들이 있다. 빨간색 부분은
x1과 x2의 교집합(AND)을 구하기 위하여 조정된 θ값들이 있는 activation function이고, 하늘색 부분은
x1과 x2의 부정의 교집합(AND)을 구하기 위하여 조정된 θ값들이 있는 activation function이다. Hidden layer에서 output layer으로 가는 초록색 함수는 x1과 x2의 합집합(OR)을 구하기 위하여 조정된 θ값들이 있는 activation function이다. 최종적인 결과물은 슬라이드 오른쪽 아래에 있다. 2개의 입력이 같으면 1을 출력하고 다르면 0을 출력한다.
Neural Networks: Representation - Multi-Class Classification
Linear classification을 할 때도 확인해 보았지만, non-linear classification에서도 여러 항목들을 분류할 수 있다. 대표적인 예가 image classification이다. 사람, 자동차, 오토바이, 트럭이 주어졌을 때 각각의 이미지에 해당되는 벡터형식이 있다. 여기서는 4가지 항목이 있기 때문에 4*1 row vector을 만들었다. 주어진 이미지가 사람일 때는 첫 번째 행이 1, 자동차일 때는 두 번째 행이 1.... 의 형태로 최종 결과물이 나와야 한다.
그래서 training set이 주어졌을 때, 우리는 사진을 픽셀 형태로 변환하여 하나의 긴 vector로 형성된 input x가 있고, 최종 결과물 y가 있다. 그러므로 이미지를 올바르게 분류하기 위해 우리는 θ값들을 조정해야할 것이다. 그 방법이 바로 backpropagation이다. 이에 대한 것은 다음 주 강의노트에 후술할 예정이다.
슬라이드 출처
https://www.coursera.org/learn/machine-learning?
'AI > Machine Learning- Andrew Ng' 카테고리의 다른 글
Andrew Ng[앤드류 응]- Machine Learning(머신러닝) 3주차 강의노트 (0) | 2021.07.05 |
---|---|
Andrew Ng[앤드류 응]- Machine Learning(머신러닝) 2주차 강의노트 (0) | 2021.07.02 |
Andrew Ng[앤드류 응]- Machine Learning(머신러닝) 1주차 강의노트 (0) | 2021.06.30 |
Andrew Ng- Machine Learning 강의 소개 (0) | 2021.06.30 |