: 다중 클래스 분류 문제에서 주로 사용됨
: 입력된 값들을 확률 분포로 변환함 (0~1 범위), 모든 값들의 합 = 1
: 입력으로 K개의 실수로 이루어진 벡터 z를 받아, 해당 입력 숫자의 지수에 비례하는 K개의 확률로 이루어진 확률 분포로 정규화함



-> 입력값 zi를 각각의 클래스가 선택될 확률로 변환해줌




: 연속적인 target data 값 추정




-> Gradient descent : 오류의 반대 방향으로 가중치를 업데이트함







<Error backpropagation(역전파)의 과정>
- Output layer의 가중치 V ih를 먼저 업데이트
-> Output layer에서 계산된 오차를 바탕으로, Hidden layer에서 Output layer로 가는 가중치 V를 먼저 수정한다.- 업데이트된 V(new)를 사용하여 Hidden layer에서 발생한 오차를 계산하고, 그 오차를 바탕으로 Input layer와 Hidden layer 사이의 가중치 W hj를 업데이트







-> ReLU 미분 시, z>0일 때 1이므로 W의 변화량은 위와 같다!
활성화 함수가 출력층에서 항상 필요한 것은 아니며, 출력층에서 사용되는 활성화 함수는 문제의 종류에 따라 다릅니다.
- 회귀 문제: 출력층에서 활성화 함수를 사용하지 않는 경우가 많음. 회귀 문제에서는 출력값이 연속적인 숫자여야 하므로, 굳이 비선형 변환을 적용하지 않고 그대로 출력함. 이 경우 손실 함수로는 보통 평균 제곱 오차(MSE)가 사용됨.
- 분류 문제: 이 경우에는 출력층에서 활성화 함수가 사용됨. 예를 들어, 이진 분류에서는 시그모이드 함수를, 다중 클래스 분류에서는 소프트맥스 함수를 적용해 각 클래스에 대한 확률을 계산함.
주어진 수식에서, 출력층은 회귀 문제를 해결할 가능성이 높으며, 이 경우 활성화 함수를 적용하지 않고 예측 값을 직접 계산하는 방식으로 이어질 수 있음.



-> 몇 Epoch마다 learning rate을 일정 비율로 감소시키는 방식

-> 지수 감소 함수를 따르는 방식
: Cost function의 최적화 지형에서 기울기(gradient)가 0이지만 그 점이 최소값도 최대값도 아닌 특정 지점


-> 이 점은 Cost function의 표면이 안장 모양을 닮은 지점으로, 일부 차원에서는 위로 휘어지고 다른 차원에서는 아래로 휘어짐
빨간색과 초록색 곡선은 2차원에서 일반적인 안장점에서 교차함
초록색 곡선을 따라 안장점은 local minimum처럼 보이지만, 빨간색 곡선을 따라서는 local maximum처럼 보임
-> Gradient descent는 saddle point에서 매우 느리게 진행됨(기울기가 매우 작아져서)

-> 입력값이 매우 크거나 매우 작을 때, 함수가 이러한 극단적인 값에서 포화(saturate)상태에 이르며, 기울기가 거의 0에 가까워짐
-> 이로 인해, 역전파(back propagation) 과정에서 평탄화 현상(plateau effect)이 발생하며, 가중치와 바이어스가 효과적으로 업데이트되지 X

: 신경망 학습 과정에서 기울기가 점점 작아져서 0에 가까워지는 현상, 주로 Deep neural networks에서 발생
- 원인
-> 역전파(Backpropagation) 과정에서 발생, 역전파는 연쇄 법칙(chain rule)을 사용하여 각 층의 기울기를 계산하므로, 기울기는 출력층에서부터 입력층까지 전달되는데, 신경망의 깊이가 깊어질수록 기울기가 계속 곱해지면서 점점 작아질 수 있기 때문!
-> 특히 Sigmoid나 Tanh 같은 비선형 활성화 함수를 사용할 때
-Sigmoid 함수: 출력 범위가 0에서 1 사이이기 때문에, 입력이 매우 크거나 작을 때 출력이 포화(saturate) 상태에 도달하여 기울기 값이 매우 작아짐
-Tanh 함수: 출력 범위가 −1에서 1 사이이므로, 입력이 극단적인 경우 기울기 값이 작아지는 포화 상태가 발생할 수 있음
1) ReLU (Rectified Linear Unit) 사용: ReLU 함수는 입력이 양수일 때 기울기가 1이므로, 기울기가 소실되지 않고 깊은 네트워크에서도 학습이 잘 이루어짐
2) 가중치 초기화 기법: He 초기화나 Xavier 초기화와 같은 가중치 초기화 기법은 네트워크 초기 단계에서 기울기 소실 문제를 줄이는 데 도움됨
3) 배치 정규화(Batch Normalization): 각 층의 입력을 정규화함. 배치 정규화는 신경망의 각 층에서 입력 값의 분포를 조정해 학습이 안정적이도록 만듦
4) 심층 신경망의 대체 구조: LSTM(Long Short-Term Memory)이나 GRU(Gated Recurrent Unit)와 같은 구조는 기울기 소실 문제를 완화할 수 있는 설계로, 주로 순환 신경망(RNN)에서 사용됨

: 딥러닝 기반의 합성곱 신경망(CNN)
: Convolution Layer (5)+ Fully-Connected Layer (2) + Classification

: CNN은 필터를 왼쪽 위에서 오른쪽 아래로 슬라이딩하며 이미지에서 특징을 추출함

-> 제한점 : Dying ReLU 문제 -> 입력에 대해 0을 출력하기 시작하면, 뉴런이 더 이상 학습하지 않음

: ReLU 기반의 활성화 함수로, 음수 값에 대해 작은 기울기를 가짐
-> Dying ReLU 문제를 완화함!
: 이 작은 기울기의 계수는 훈련 전에 미리 정해지며, 훈련 중에 학습되지 X
: sparse gradients(희소한 기울기) 문제*를 겪을 수 있는 작업에서 많이 사용되는 활성화 함수

: 훈련 중에 신경망의 유닛(노드)와 그 연결을 무작위로 제거함
-> Overfitting을 크게 줄여줌, 다른 정규화 방법들에 비해 큰 성능 향상을 제공함
-> 신경망이 훈련 중 특정 유닛에 과도하게 의존하는 것을 막아서 모델이 더 일반화된 형태로 학습되도록 함

: 신경망을 전체 훈련 데이터로 한 번 훈련시키는 주기
: 하나 이상의 배치(Batch)로 구성됨
-> 전체 데이터셋을 1번 돌면 1 epoch!
역전파 과정은 Batch 단위로 수행됨
평균 제곱 오차(MSE)나 교차 엔트로피(Cross-entrophy)가 역전파 과정에 사용됨
Gradient descent 알고리즘에서는 역전파 과정 중 모든 뉴런의 활성화 결과가 필요하므로, GPU 메모리가 많이 사용됨
-> GPU 메모리가 작기 때문에 training data를 나눠서 시킴(여러 batch로)