[인공지능 프로그래밍 수업] Neural Network

이은비·2023년 12월 15일

06) Neural Network
——————————preview——————————————
XOR연산이 되지 않는데 이를 AND 와 OR연산으로 극복하였습니다. 여기서 고안된 아이디어를 이용하는데
입력층과 출력층 사이에 하나 이상의 중간층(은닉층)을 두어 비선형적으로 분리되는 데이터에 대해서도 학습이 가능하도록 다층 퍼셉트론을 고안했습니다. 그리고 이때 은닉층이 여러 개 있는 신경망을 심층 신경망(Deep Neural Nerwork : DNN)이라고 하며, 심층 신경망을 다른 이름으로 딥러닝이라고 합니다.

딥러닝 용어
가중치 : 입력 값이 연산 결과에 미치는 영향력을 조절하는 요소입니다.
가중합: 가중합은 전달 함수라고도 합니다. 각 노드에서 들어오는 신호에 가중치를 곱해서 다음 노드로 전달되는데, 이 값들을 모두 더한 합을 가중합이라고 합니다.
활성화 함수: 전달함수에서 전달 받은 값을 출력할 때 일정 기준에 따라 출력 값을 변화시키는 비선형 함수 입니다. 종류로는 시그모이드 함수,하이퍼볼릭 탄젠트 함수, 렐루 함수, 리키 렐루 함수, 소프트 맥스 함수와 같이 있습니다.
소프트맥스 함수는 입력 값을 0~1 사이에 출력되도록 정규화하여 출력 값들의 총합이 항상 1읻 되도록 합니다. 보통 딥러닝에서 출력 노드의 활성화 함수로 많이 사용됩니다.
손실함수: 경사하강법으로 가중치를 업데이트 하는데 이때 미분의 기울기를 이용하여 오차를 비교하고 최소화하는 방향으로 이동시키는 방법을 사용하는데 이때 오차를 구하는 방법이 손실 함수입니다.
손실함수의 종류로는 평균 제곱 오차, 크로스 엔트로피 오차(classification문제에서 one-hot encoding했을 떄만 사용 가능)
———————————————————————————
Recall for Logistic Regression
NN의 앞서서 Logistic Regression 의 network를 보면 Data의 input은 continuous한 값인 반면에 outputs은 어떤 class에 속하냐 안 속하냐(0이냐 1이냐) 하는 확률 즉, likelihood를 나오게 합니다. 그리고 이때 확률은 sigmoid같은 function을 통과한 후 나오는 결과 값이 되도록 하며, learning자체는 cost함수,즉 cost를 minimize하는 형태로 볼 수 있습니다. 또한 prediction을 보면 probability가 커지도록 prediction하도록 하는 것을 알 수 있습니다.

Linear Regression vs Logistic Regression
Linear Regression과 Logistic Regression의 차이를 보면,
Linear Regression은 각 입력과 각 가중치를 내적하여 합친 값을 output으로 두며, Logistic Regression은 이러한 Linear Regression의 출력에 sigmoid를 걸어서 probability를 내주는 것으로 차이를 알 수 있습니다. 그렇다면 이제 Neural Network를 본격적으로 보면 다음과 같습니다.

Neural Network Model

NN에서는 sigmoid함수를 activation함수로 두는 데 은닉층에서는 non-linear를 주고싶어서 쓰는 목적이 크고, 만약에 이러한 non-linear를 주는 activation함수가 없으면 의미가 없음 마지막 출력층에서 activate 되는 activation함수를 통과하는 것은 predict하여서 probability알게 합니다.최종 출력층에 사용하는 함수는 linear한 함수를 써도 괜찮음.

Activation Functions

일반적인 형태로 쓰는것은 sigmoid[0,1] 그 외에 tanh함수 tanh함수는 RNN과 같은 sequence가 있는 것을 다룰 때 [-1,1]범위에서 사용하고 ReLU는 요즘 많이 쓴다.
sigmoid, tanh, RELU(층이 많이 쌓일때 값이 잘 전달될 수 있음) (-영역에서는 잘 작동하지 않기 때문에 사용할 떄는 Leaky Relu), softplus(전 구간이 미분가능)
Objective Functions for NNs
Regression = Linear Regression
Quadratic loss
Classification = Logistic Regression
Cross-entropy
함수값을 모를때는 likelihood라고 한다. 함수값을 알고 있을때는 probability.
아래 함수를 참고하게 하면 다음과 같습니다.

Multi-Class Output
single-class vs Multi-class

vs

Different Levels of Abstraction
화소->edge에 해당하는 선->features들의 조합에 따라 object의 부분-> objects

A Recipe for Deep Learning
질문 1:
임의의 신경망의 매개변수의 gradient를 계산할 수 있습니까?
질문 2:
gradient 계산을 효율적으로 할 수 있습니까?
주어진 training data
를 이용해서 Dicision function과 loss function을 정하고
loss가 작아지도록 goal을 정의하고
SGD를 이용한 Training을 합니다.

->역전파는 이 기울기를 계산할 수 있습니다
reverse-mode automatic differentiation이라는 좀 더 일반적인 알고리즘의 특수한 경우로, 미분 가능한 함수의 기울기를 효율적으로 계산할 수 있습니다

Key Intuitions Required for BP(BackPropagation)
Gradient Descent:
기울기 방향으로 가중치를 변경하여 오차 함수를 최소화합니다.
Chain Rule: 체인 규칙을 사용하여 중간 가중치의 가중치를 계산합니다
chain rule을 사용할때는 recursive call하는 방식의 DP를 사용합니다.
Dynamic Programming:중간에 발생하는 값들을 기억합니다.
(Memorization)

Backpropagation: the big picture

forward함수 이후 backward step을 이용해서 backward도 계산합니다.

Chain Rule
forward로 지나면서 그 값들을 다 저장 그리고 backward때 저장했던 값들을 recursive call해서 그 값을 update하는 과정을 거치는 것입니다.
Some facts from real analysis

cf)
역전파:
1. 계산을 각 중간 양(Tensor)이 노드인 방향 비순환 그래프로 인스턴스화합니다
2. 각 노드에서 (a) 순방향 패스에서 계산된 양과 (b) 해당 노드의 중간 양(Tensor)에 대한 목표의 부분 도함수를 저장합니다.
3. 모든 편미분을 0으로 초기화합니다.
4. 역위상 순서로 각 노드를 방문합니다. 각 노드에서 부모의 편미분에 대한 기여도를 추가합니다. 이 알고리즘은 automatic differentiation in the reverse-mode라고 합니다.



아래 예시들을 통해 더 알아볼 수 있습니다.
Derivation of Backpropagation

Partial Derivatives for Logistic Regression

profile
cs/ce 전공 재학생입니다.

0개의 댓글