유진정의 기록

[KHUDA 5기 CV] 2주차 본문

개인공부/Computer Vision

[KHUDA 5기 CV] 2주차

알파카유진정 2024. 3. 22. 20:38

Chapter 4. Backpropagation and NN part 1 | Chapter 5. Training NN part 1 | Chapter 6. Training NN part 2

* 역전파(Backpropagation)

신경망에서 오차를 각 층의 가중치와 편향으로 되돌리는 과정
모델이 오차를 최소화하는 방향으로 학습

1. Forward Pass: 입력에서 출력 방향으로 계산하여 오차를 계산하고 local gradient를 저장.
2. Backward Pass: 
출력에서 입력 방향으로 오차를 다시 전파하며 전역 그래디언트를 계산
3. Gradient Descent: 
그래디언트를 사용하여 가중치를 업데이트

1. 오차 계산: 출력층에서 실제 값과 예측 값 사이의 오차를 계산
2. 역전파: 오차를 입력층까지 거꾸로 전파하면서 각 층의 가중치와 편향에 대한 미분값을 계산
3. 가중치 업데이트: 이 미분값을 사용하여 가중치와 편향을 조정하여 오차를 최소화하는 방향으로 모델을 학습

 
* Activation Functions (활성화 함수)
활성화 함수는 입력값을 변환하여 출력값을 생성하는 함수입니다. 주로 비선형성을 추가하여 신경망이 복잡한 관계를 학습할 수 있도록 돕습니다.

Neural Network
 구성 요소
- 입력층(Input Layer) 입력을 받는 부분
- 은닉층(Hidden Layer) 중간 계산을 수행하는 층
- 출력층(Output Layer) 최종 결과를 출력하는 층

Weight Initialization
- 초기 가중치를 어떻게 설정할지에 따라 학습이 영향을 받음.
- Xavier Initialization 등의 방법 활용.


다 똑같이 생겼구만 뭐

1.Sigmoid 함수 : 입력값을 0과 1 사이의 값으로 압축하여 출력
   -  출력값이 확률로 해석 가능하여 분류 문제에 자주 사용.
   -  그레이디언트 소실 문제가 발생할 수 있고, 연산 비용이 큼

2. tanh 함수: 입력값을 -1과 1 사이의 값으로 압축하여 출력
   - Sigmoid보다 그레이디언트 소실 문제가 덜 발생하며, zero-centered하여 학습이 빠름.
   - 그레이디언트 소실 문제가 존재하고, 연산 비용이 큼

3. ReLU 함수 (Rectified Linear Unit): 입력값이 0보다 작으면 0으로 출력하고, 0보다 크면 해당 값을 그대로 출력
   -  연산 비용이 작고, 학습 속도가 빠릅니다.
   -  입력값이 음수일 때 그레이디언트가 0이 되어 가중치 업데이트가 멈출 수 있습니다.

4. Leaky ReLU 함수: ReLU의 변형으로, 입력값이 음수일 때 작은 값을 출력하여 그레이디언트가 0이 되는 문제를 완화

5. ELU 함수 (Exponential Linear Unit): 입력값이 음수일 때 지수 함수를 사용하여 그레이디언트 소실 문제를 완화되나 계산비용이 큼

6. Maxout 함수: 두 개의 입력값 중 최대값을 출력
   ReLU 및 Leaky ReLU를 표준화한 활성화 함수이지만 연산량이 많음.

 




 
Batch Normalization
- 학습 과정을 안정화하기 위해 각 층의 입력을 정규화.

Babysitting the Learning Process
- 데이터 전처리, 아키텍처 결정, 작은 데이터셋으로의 학습 등 학습 과정을 안내

Parameter Update
1) Stochastic Gradient Descent (SGD)
- 확률적 경사 하강법(SGD)
: 각 반복 단계에서 무작위로 선택된 하나의 샘플을 사용하여 그래디언트 계산 및 파라미터 업데이트.
: 학습 속도가 느리고 불안정할 수 있음.

2) Momentum Update
- 모멘텀 업데이트
: 그래디언트 업데이트 시 이전 그래디언트 값을  고려하여 파라미터 업데이트
- 관성의 개념을 도입하여 이전에 이동한 방향과 속도를 고려하여 이동하는 방식.
- 속도에 따라 빠르게 움직이며, 골짜기를 벗어나는데 도움을 줌.

3) Nesterov Momentum Update
- 네스테로프 모멘텀 업데이트
모멘텀 업데이트 전에 위치를 모멘텀 방향으로 이동시키는 것.
- 그래디언트 업데이트를 진행하기 전에 현재 위치에서 모멘텀 방향으로 미리 이동하고 그 위치에서 그래디언트를 계산하여 업데이트.
- 모멘텀 방향으로 예측하여 그래디언트 업데이트를 조정하는 것으로 더 안정적인 학습이 가능.

 4) AdamGrad Update
-  매개변수마다 학습률을 개별적으로 조정하는 방식
- 자주 발생하지 않는 매개변수는 큰 학습률을 가지고 자주 발생하는 매개변수는 작은 학습률을 가지도록 조절.
- 과거의 그래디언트 제곱을 누적하여 학습률을 조정.

5) RMSProp Update
- AdaGrad의 문제점을 해결하기 위해 도입된 방식
- 과거의 그래디언트 제곱이 아닌 지수 이동 평균을 사용하여 학습률을 조정.
- 과거의 그래디언트 제곱이 지나치게 커지는 문제를 완화.

6) Adam Update
- 모멘텀과 RMSProp을 결합한 방식.
- 모멘텀 방향으로 파라미터 업데이트를 진행하고 RMSProp의 지수 이동 평균을 사용하여 학습률을 조정.
- 매개변수의 편향 보정이 수행되어 학습 초기에 빠르게 수렴하고 학습 후반에는 안정적으로 수렴하는 특징을 가짐.

 Evaluation (Model Ensembles)

- 단일 모델을 학습시키는 대신, 여러 개의 모델을 병렬로 학습시키고 그 결과를 결합하여 성능을 향상

- 일반적으로 각 모델의 예측을 평균하거나 다수결 투표를 통해 최종 결과를 도출
- 앙상블 모델을 사용함으로써 단일 모델보다 더욱 강력한 일반화 성능을 얻을 수 있음

 Regularization 

- Dropout: 학습 과정에서 신경망의 일부 유닛을 무작위로 비활성화하는 방법.
- 학습 중에만 적용되며, 예측 시에는 모든 유닛을 사용하여 출력을 계산.
- 모델의 복잡도를 줄이고 과적합을 방지하여 일반화 성능을 향상시킴.
- 앙상블 학습의 효과를 얻을 수 있음.



#### Sigmoid Function (시그모이드 함수)
- 시그모이드 함수는 과거에 많이 사용되었으나 현재는 주로 사용되지 않는다.
- 출력 범위가 0과 1 사이이기 때문에 확률로 해석될 수 있어 분류 문제에 적합하다.
- 그러나 큰 단점이 있는데, 함수의 포화(saturation) 문제와 gradient 소실(vanishing gradient) 문제가 있다.
  - 포화 문제: 함수가 포화되면 뉴런이 학습하는 능력을 잃어버리게 되는데, 이는 네트워크의 깊이가 깊어질수록 더 심해진다.
  - gradient 소실 문제: 함수의 미분값이 입력값이 크거나 작을 때 매우 작아지는 문제로, 역전파 과정에서 뉴런들이 제대로 학습되지 않는다.

#### Hyperbolic Tangent (하이퍼볼릭 탄젠트)
- 시그모이드 함수의 포화 문제를 완화하기 위해 제안된 함수이다.
- 출력 범위가 -1과 1 사이이기 때문에 0을 중심으로 대칭되는 특징을 갖는다.
- 하지만 여전히 gradient 소실 문제가 발생할 수 있다.

#### ReLU (Rectified Linear Unit)
- 현재 가장 많이 사용되는 활성화 함수이다.
- 입력값이 양수인 경우 그대로 출력하고 음수인 경우 0을 출력한다.
- 연산이 간단하고, 포화 문제가 없으며 학습이 빠르다는 장점이 있다.
- 하지만 입력값이 음수인 경우 gradient가 0이 되어 뉴런이 죽을 수 있는 문제가 있다.

#### Leaky ReLU
- ReLU의 음수 입력에 대한 문제를 해결하기 위해 제안된 함수이다.
- 입력값이 음수인 경우 작은 기울기를 갖도록 조정하여 gradient 소실 문제를 완화한다.

#### ELU (Exponential Linear Units)
- ReLU의 장점을 유지하면서도 음수 입력에 대한 포화 문제를 해결하기 위해 제안된 함수이다.
- 음수 입력에 대한 함수 값이 더 부드럽게 변화하여 gradient 소실 문제를 완화한다.

#### Maxout
- ReLU와 Leaky ReLU를 일반화한 형태이다.
- 입력값을 두 부분으로 분할하여 각각을 학습하고, 이후에 최대값을 선택하여 출력한다.
- 여러 개의 파라미터를 사용하기 때문에 연산량이 더 많아지지만, 학습 효과를 높일 수 있다.

### Data Preprocessing (데이터 전처리)

- 이미지 데이터를 다룰 때는 평균값을 빼고 중앙 정렬하는 것이 일반적이다.
- 픽셀 값의 범위를 0과 1 사이로 조정하는 정규화(normalization)를 수행하지 않는 이유는 이미지 데이터가 이미 특정 범위(일반적으로 0부터 255까지)에 적절하게 들어있기 때문이다.
- PCA(Principal Component Analysis)와 whitening은 이미지 데이터에 대해 고차원 공간의 데이터를 저차원 공간으로 변환하여 분산을 줄이는 등의 목적으로 사용될 수 있지만, 주로 사용되지 않는다.

### Weight Initialization (가중치 초기화)

- 가중치 초기화는 네트워크의 학습에 매우 중요한 요소이다.
- 초기 가중치를 적절하게 설정하지 않으면 학습이 제대로 이루어지지 않을 수 있다.
- 작은 무작위 숫자로 초기화하는 방법과 Xavier Initialization 등의 방법이 사용된다.

### Batch Normalization

- Batch Normalization은 각 미니배치에서 입력을 평균과 분산으로 정규화하여 학습을 안정화하는 기술이다.
- 각 층에서의 입력을 정규화함으로써 학습 속도를 향상시키고, 초기화에 덜 민감하게 만든다.

### Babysitting the Learning Process

- 학습 과정에서 데이터 전처리, 네트워크 구조 결정, 작은 데이터셋으로의 학습 등을 조정하며 학습을 최적화한다.
- 과적합(Overfitting)이 일어나도록 하고 이를 통해 최적의 하이퍼파라미터를 찾는다.

'개인공부 > Computer Vision' 카테고리의 다른 글

[KHUDA 5기 CV] 3주차  (0) 2024.03.31
[KHUDA 5기 CV] 1주차  (0) 2024.03.15