손실함수와 BN

YONG·2025년 1월 17일
0

손실함수


활성화 함수(activation function)는 입력 신호의 총합을 출력 신호로 변환하는 함수로, 입력 받은 신호를 얼마나 출력할지 결정하고 네트워크에 층을 쌓아 비선형성을 표현할 수 있도록 해준다.
wx+b가 비선형 연산을 거치도록 함

sigmoid function



이진분류에서 자주 사용
그러나 학습 상 두가지 문제
1) vanishing gradient
시그모이드 함수의 도함수 그래프를 보면 절대값 4 이상이 되면 0에 수렴하는 현상을 볼 수 있다. 이는 쉽게 말해 x의 절대값이 커짐에 따라 기울기가 0에 가까워 진다고 볼 수 있다. 이를 기울기가 소실되는 현상 , 즉 기울기 소실(vanishing gradient) 문제가 발생한다.
2) non zero-centered

Zero-centered란 그래프의 중심 0인 형태로 함숫값이 양수 혹은 음수에만 치우치지 않고 실수 전체에서 나타나는 형태를 의미한다.
Neural networks에서 input은 이전 layer의 결과값
이때 sigmoid 함수는 항상 양수이기에 sigmoid를 한번 거친 이후론 input 값은 항상 양수가 된다.
그렇게 되면 backpropagation을 할 때 문제가 생긴다.

2차원 평면에서 살펴보면 부호가 모두 같은 지점은 1,3 사분면 뿐이다. 따라서 지그재그의 형태로 학습이 될 수 밖에 없고 이는 학습을 오래 걸리게 한다.

중간 매개변수 n의 결정 과정

Tanh (Hyperbolic Tangent function)


1) non zero-centered 해결
값이 [-1,1] 사이->기울기의 방향이 유동적일 수 있게 됨
2) vanishing gradient 문제는 해결하지 못했다.

Relu 함수 (Rectified Linear Unit function)



장점
1)연산 속도 up: 뉴런의 활성화값이 0인 경우, 어차피 다음 레이어로 연결되는 가중치를 곱하더라도 결과값은 0을 나타내게 되서 계산할 필요가 없기에 연산속도가 빨라진다. (sparse한 형태가 dense한 형태보다 더 연산량을 월등히 줄여준다.) + 단순한 max연산(<->지수연산)으로 계산이 매우 빠르다.
2)Vanishing Gradient 해결(어느정도만...): ReLU의 역함수는 1이므로 ReLU의 경우에는 gradient로 상수를 갖게됨 -> 깊은 층에서 gradient가 소실되는 걸 어느정도 막아 줌
문제
1)non zero-centered
2)Dying ReLU
input(이전 뉴런의 출력물)이 0보다 작으면 학습이 안됨
input과 뉴런이 연산하여 0보다 작으면 뉴런은 아무것도 못배운다!
->Dying ReLU는 그렇게 심각한 문제는 아니다!

  • 다양한 input이 들어가기 때문에 어떤 입력에서는 학습이 안되지만 다른 입력으로 학습이 가능하다
  • 역설적이게도 Dying ReLU현상이 오히려 ReLU가 가지는 큰 장점으로 작용할 수 있다. Dying ReLU가 오히려 DropOut의 역할을 할 수 있다.
    그러나 모든 입력에 대하여 은닉층의 출력물이 음수인 경우를 주의해야한다.
    학습률이 너무 높거나 음수 bias가 너무 높은 경우, 가중치 초기화를 잘못한 경우 에 가능
    이는 모든 신경망에 대해 안좋은 상황
    "zero mean이어야 학습이 잘 됨"

Leakly ReLU

Dying ReLu” 현상을 해결하기위해 나온 함수

negative에도 기울기를 살짝 주면서 앞서 두 문제를 거의 해결

  • zero-mean에 가까움
  • negative일때도 학습이 이뤄짐(relu처럼 아예 없애는 것이 아닌 가중치를 작게주는 식)

PReLu


Leakly ReLU에서 negative에 주는 기울기를 alpha라는 학습가능한 파라미터로 조절

ELU


오히려 negative에서 seturation(함수의 기울기가 0에 가까워 짐)을 만들었음
->이를 통해 noise에 더 강인할 수 있다고 함

Softmax function



[x번일 확률/전체확률]
input값을 [0,1] 사이의 값으로 모두 정규화하여 출력하며, 출력값들의 총합은 항상 1이 되는 특성을 가진 함수이다. 다중분류(multi-class classification) 문제에서 사용
분류될 클래스가 n개라고 할 때, n차원의 벡터를 입력받아 각 클래스에 속할 확률을 추정
시그모이드와 차이) 시그모이드 함수를 통과해 얻은 확률값들은 서로 독립적이다. 가령 3개의 클래스가 있다고 하면, 데이터 포인트가 클래스 1에 속할 확률은 다른 두 클래스의 확률을 고려하지 않는다. 따라서 multi-class classification에서 시그모이드 함수는 사용할 수 없고, 대신 소프트맥스 함수를 사용한다.

데이터 전처리

가중치 초기화

배치정규화

진행중,,,

0개의 댓글