728x90
1. Gradient Descent
- Training Neural Networks via GD
- 최적화를 하고자 하는 parameter와 학습 data를 neural network에 입력으로 집어넣기
- Ground truth 값과 비교함으로써 차이를 최소화하도록 하는 loss function을 형성
- loss function을 최소화하는 parameter를 찾기
$\theta \: \leftarrow \: \theta - \alpha g$
- Loss function이 굉장히 복잡한 형태일 경우 Gradient Descent 알고리즘은 수렴속도가 상대적으로 굉장히 느리다
- Loss function의 등고선
- 중앙이 가장 낮은 분지
- x축, y축은 neural networ의 weight (parameter)
- x축을 단면으로 잘랐을 때의 접선의 기울기 = gradient_x가 완만 : x축으로 변화되는 양이 적음
- y축을 단면으로 잘랐을 때의 접선의 기울기 = gradient_y가 급하다 : y축으로 변화되는 양이 크다
- 즉 바로 global minimum으로 향하는 것이 아니라, zigzag로 이동하면서 비효율적으로 global minimum에 도달
- Algorithm (Optimizer)
- GD
- $\theta \: \leftarrow \: \theta - \alpha g$
- SGD+Momentum
- $\nu \: \leftarrow \: \rho\nu - \alpha g$
- $\theta \: \leftarrow \: \theta + \nu$
- Nesterov Momentum
- $ \nu \: \leftarrow \: \rho\nu - \alpha \nabla_{\theta}J(\theta + \rho \nu) $
- $\theta \: \leftarrow \: \theta + \nu$
- Adagrad
- $r \leftarrow \: r + g \cdot g$
- $\Delta \theta \leftarrow \: \frac {\alpha} {\sqrt{r + \varepsilon}} \cdot g$
- $\theta \leftarrow \: \theta - \Delta \theta$
- RMSProp
- $r \leftarrow \: \rho r + (1-\rho) g \cdot g$
- $\Delta \theta \leftarrow \: \frac {\alpha} {\sqrt{r + \varepsilon}} \cdot g$
- $\theta \leftarrow \: \theta - \Delta \theta$
- Adam
- First Moment from Momentum : $s \leftarrow \: \rho_{1} s + (1-\rho_{1}) g \cdot g$
- Second Moment from RMSProp : $r \leftarrow \: \rho_{2} r + (1-\rho_{2}) g \cdot g$
- Correct the bias : $s^{'} \leftarrow \: \frac {s} {1-\rho_{1}} $, $r^{'} \leftarrow \: \frac {r} {1-\rho_{2}} $
- $\Delta \theta \leftarrow \: \frac {\alpha} {\sqrt{r^{'} + \varepsilon}} \cdot s^{'}$
- $\theta \leftarrow \: \theta - \Delta \theta$
- GD
2. Back Propagation
- 각 Model Parameter에 대해 Optimization 진행
- Loss function에 대한 partial derivative 으로 해당 parameter를 업데이트
- 학습 Data에 대해 Forward Propagation을 수행
- random initalization에서부터 실행
- ground truth 값과 상이 & 차이를 최소화하는 방향으로 loss function을 정의
- Backpropagation
- output layer에서 input layer로 진행하면서 순차적인 계산을 수행
- $W^{(1)}, W^{(2)}$ 각각의 parameter들의 gradient 혹은 loss function의 편미분 값을 구할 수 있음
- gradient descent algorithm의 수식으로 parameter들이 update: optimization 진행
- Logistic Regression (Backpropagation, Fowardpropagation)
- Binary cross-entropy loss function을 최소화하는 (sigmoid output, logistic regression의 출력값)
- $w_{0}, w_{1}, w_{2}$ 찾기
- By gradient descent
- Partial Derivative: $\frac {dL} {dL} = 1$ 가 1.00으로 시작점
- $1 \times - \frac {1} {(1.37)^{2}} = -0.53$
- $-0.53 \times 1 = -0.53$
- $-0.53 \times \frac {1} {e} = -0.2$
- $-0.2 \times -1 = 0.2$
- $w_{2}$ : $0.2 \times 1 = 0.2$
- $w_{0}$ : $0.2 \times -1 = -0.2$
- $0.2 \times 2 = 0.39$
- $w_{1}$ : $0.2 \times -2 = -0.39$
- $0.2 \times -3 = -0.59$
- Sigmoid Function에서 한번에 Local Gradient 구하기
3. Activation Function (비선형함수)
- Sigmoid function
- 하나의 뉴런 or 퍼셉트론이 입력 신호를 선형 결합하여 만든 값에 hard threshold를 부드러운 형태의 곡선으로 근사
- 실수 전체의 값을 [0,1] 사이의 실수 값으로 mapping
- logistic regression의 경우 positive class에 대응하는 확률 값으로 해석
- Gradient Vanishing Problem
- $\frac{\partial \sigma (x)}{\partial x} = (1-\sigma(x))\sigma(x), 0<\sigma(x) <1 $ 이므로 최댓값이 $\frac {1} {4}$이다
- Backpropagtion 할 때마다 Gradient값이 점차 작아지는 양상을 보임
- multi-layer neural network에서 sigmoid function의 backpropgation을 수행할 때마다 gradient 값이 0에 수렴
- 앞쪽의 layer의 parameter에 도달하는 gradient 값이 굉장히 작음: 앞쪽의 parameter들의 update가 거의 일어나지 않음
- Tanh Activation
- $tahh(x) = 2 \times sigmoid(2x) -1$
- 치역의 범위가 [-1,1]으로 한정
- Strength
- Zero-centered (average = 0)
- Weakness
- gradient의 범위가 $0< \frac{\partial tanh(x)}{\partial x} \leq \frac {1} {2}$
- backpropagation할 때마다 gradient vanishing 문제를 여전히 가지게 됨
- 아래 사진 오타
- RELU Activation (Rectified Linear Unit)
- $f(x) = max(0,x)$
- Strength
- gradient vanishing 문제를 해결 (gradient 값이 계속 1)
- 다른 활성함수에 비해 간단한 연산: computationally efficient
- Weakness
- Not zero-centered output
- 음수 범위에서는 gradient 값이 0: 이후의 gradient가 모두 0이 되는 문제
4. Batch Normalization
- 학습을 용이하게 하는 특별한 형태의 layer or neuron
- gradient가 유의미해지기 위해서 Input(linear combination)을 제한: Normalization
- 평균 = 0: 0을 중심으로 하는 분포 (gradient의 값이 너무 작지 않도록)
- 분산 = 1:
- 값들의 변화 폭이 너무 작으면 서로 다른 data item들 간의 차이가 존재해야 하지 않음
- 분산이 너무 크면 평균이 0이더라도 적절한 영역에 있는 값들로 컨트롤하기 힘듦
- Fully connected layer (linear combination) 이후에 활성함수 들어가기 직전에 batch normalization layer를 추가
- 출력값들이 고유한 평균과 분산을 가지고 있고, neural net이 학습해야 하는 중요한 정보라면 normalization은 neural network가 잘 추출한 정보를 잃어버리는 과정
- Normalize 과정에서 잃어버린 정보를 neural network로 하여금 복원할 수 있도록 하는 단계
- gradient descent를 통한 학습에 의해 최적화하게 되는 Parameter들을 도입해서 선형 변환을 수행
- batch-normalization의 두 번째 단계로 삽입
- Deep Learning 이 생각하는 최적의 평균 분산 값을 스스로 결정할 수 있도록 하고, loss function을 최적화하는 과정에서 도출된 parameter를 사용
- Gradient Vanishing 문제를 효과적으로 해결 가능
728x90