본문 바로가기

기계학습/ML,DL Backgroud 이론 - [대학원] 전공 수업

[기계학습 7] 4. Neural Network and Backpropagation (1)

# 1 딥러닝의 시작과 Perceptron

1) Image Classification

- Image Classification is a core task in Computer Vision

→ 조금 더 챌린징한 분류 문제를 풀기 위해 라지 모델 등장

- 이미지의 경우 각각의 적합한 클래스로 분류하는 mapping func.이 너무 복잡함

 

2) Deep Learning for Image Classification

 

- 2012 : 딥러닝의 실질적 시작

- IMAGENET : 데이터셋으로, 규모가 매우 크면서 각각의 class가 달려있는 데이터셋 → 알렉스넷에 활용되어 좋은 성능을 냄

- 사람보다 낮은 이미지 분류 error rate을 기록하기 시작

 

3) Perceptron : 딥뉴럴네트워크의 시작

- Frank Rosenblatt에 의해 1954년에 발명

- Inspired by Neurobiology(신경생물학)

- 즉, 위 그림에서 윗부분과 같이 인간의 뉴런을 모방하여 추상화시킨것이 위 그림의 아랫부분에 나와있는, 딥러닝에서 말하는 perceptron이다.

 

Perceptron (단층 퍼셉트론) 예시, 출처 : 딥러닝을 이용한 자연어 처리 입문

 

- Perceptron : 프랑크 로젠블라트(Frank Rosenblatt)가 1957년에 제안한 초기 형태의 인공 신경망으로 다수의 입력으로부터 하나의 결과를 내보내는 알고리즘(단층 퍼셉트론) (https://wikidocs.net/24958)

- 퍼셉트론(Perceptron)은 인공 신경망(Aritificial Neural Network, ANN)의 구성 요소(unit)로서 다수의 값을 입력받아 하나의 값으로 출력하는 알고리즘입니다. (단층 퍼셉트론) Perceptron은 perception과 neuron의 합성어이며 인공 뉴런이라고도 부릅니다. 즉, 퍼셉트론은 생물학적인 신경계(Neual Network)의 기본 단위인 신경세포(=뉴런)의 동작 과정을 통계학적으로 모델링한 알고리즘입니다.(https://heytech.tistory.com/332)

 

- 하단 그림에서 w0x0, w1x1, w2x2를 받아 bias term인 b를 반영하여 output으로 내보내는 일련의 과정이 perceptron에서 일어나는 일이고, 이는 로지스틱회귀와 비슷

 

 

 

 

 

3-1) Single Layer Perceptron

 

- 위처럼 layer가 한 개인 perceptron을 'Single Layer Perceptron'이라고 한다.

 

(AND GATE)

 

 

- input variable x1과 x2에 대해 둘 다 1일때만 y값을 다른 값으로(1) 출력하는 And gate 문제를 Single Layer Perceptron으로 풀 수 있다.

 

(OR GATE)

 

- AND GATE와 마찬가지로 Single Layer Perceptron으로 OR GATE 문제를 풀 수 있다.

 

(XOR GATE)

 

 

- 그러나, XOR GATE 문제는 Single Layer Perceptron으로는 어떻게 나눠도 풀 수 없었으며, 이 때 perceptron과 AI에 대한 회의감이 생겼음

 

3-2) Multi Layer Perceptron

 

 

- Single Layer를 두 개 이상 구성한 Multi-Layer Perceptron으로 XOR GATE을 풀 수 있게됨

 

# 2 Neural Network and Activation Function

1) Neural Network Presentation

 

(Notation)

 

- 1-hidden-layer neural network 또는 2-layer neural network

 

 


(Linear Regression/Logistic Regression과 Multi Layer Neural Network)

 

- Linear Regression 또는 Logistic Regression과 2-Layer Neural Network를 비교해본다.

 

- 좌측 그림에서는 Logistic Regression에 대한 예시가 나와있는데, x1~x3을 기반으로 w1~w3값이 산출되어 Mapping Function이 도출된다. 이는 물론 Linear Regression에서도 마찬가지이다.

- 위와 마찬가지로 우측 그림에서도 x1~x3까지의 input variable들을 기반으로 parameter들이 산출되는데, 이에따라 h1~h4까지의 값이 각각 도출되며, 이 하나하나의 hidden node들을 single layer perceptron으로 볼 수 있고, 이게 잘 조합되어 neural network가 구성된다.

→ h1~h4까지의 값들이 각각 또 다시 또다른 layer의 parameter와 계산되어 최종적인 mapping function이 도출된다.

 

(Neural Network 관련 Notation)

- Neural Network is a very broad term ; these are more accurately called "Fully-Connected Networks(FC)" or sometimes "Multi-Layer Perceptron(MLP)"

 

2) Activation Function

- Answer : We end up with a linear regression again!

 

(Activation Function 종류)

 

(참고) Learning rate, Activation Function, Regularization, Regularization Rate, Problem Type을 UI상에서 조정해가며 Neural Network 구성해보는 사이트

 

http://playground.tensorflow.org/

 

Tensorflow — Neural Network Playground

Tinker with a real neural network right here in your browser.

playground.tensorflow.org

 

# 3 Update the Parameters

1) Gradient Descent for Neural Networks

 

 

위와 같은 neural network의 L(w)를 구하기 위해서는, 여느때와 마찬가지로 아래와 같은 식을 풀면 될 것이다.

 

 

또한 이는 결국 아래와 같이 parameter update를 16번 반복하면 풀리기는 할 것이다.

 

 

그러나 이러한 원초적인 방식은 아래와 같은 문제점을 야기한다.

 

 

이에, 우리는 아래에서 상술할 chain rule을 활용한 parameter update를 시행할 것이다.

 

2) Computation Graph and Backpropagation : A Simple Example 

 

우선 간단한 computation graph 예시를 들어보자.

 

위와 같은 graph에서 궁극적으로 우리가 알고 싶은 것은 partial f / partial x,  partial f / partial y,  partial f / partial z 값이다.

  

우선, 위처럼 주어진 x,y,z값을 각각의 q와 f 연산을 적용시켜 최종 output 값 -12를 도출하는 과정을 'Forward Propagation'이라고 한다. (output 계산)

 

그리고 나서, 위처럼 최종 연산인 f로부터 처음 단계까지 차례로 chain rule을 적용하여 partial f / partial x,  partial f / partial y,  partial f / partial z 값을 구하는 과정을 'Back Propagation'이라고 한다. 이 값들을 기반으로 우리는 gradient descent for neural network를 할 것이고, 이는 곧 parameter를 update한다는 뜻이다. 

 

3) Computation Graph and Backpropagation 

 

- 위의 그림에서 wi와 같은 parameter들을 update해야하며, 이는 chain rule을 통해 금방 풀 수 있음

 

- (ChatGPT) 위 그림의 수식 L(W;xn,yn) : 세미콜론 기준으로 W는 파라미터, xn 및 yn은 input 값을 의미

 

특히, 아래 그림과 같이 예를들어 h1으로 L을 미분한 값은 h21, h22, h23에 대한 편미분 및 chain rule 적용 식들을 모두 더한 값이다.
(분홍색 하이라이트 참조)

(Notation)

- Upstream gradient : 노드의 output에 대한 Loss Function의 gradient(이미 계산).

- Local gradient : 해당 노드내에서만 계산되는 gradient.

- Downstream gradient : 노드의 input에 있는 변수에 대한 Loss Function의 gradient.

 

 


# Reference

- Deep Learning by I.Goodfellow et al.

- Dive into Deep Learning by A.Zhang et al.

- Korea Univ. AAI107, 'Machine Learning' Lecture