머신러닝

[딥러닝] 딥러닝 1단계: 신경망과 딥러닝 - 4. 얕은 신경망 네트워크 (2/2)

sa_woll 2024. 4. 1. 18:16

https://www.boostcourse.org/ai215/joinLectures/20010?isDesc=false

 

딥러닝 1단계: 신경망과 딥러닝

부스트코스 무료 강의

www.boostcourse.org

 

활성화 함수

tanh 함수: -1과 1 사이의 값을 가지고 (0, 0)를 지난다. -> 평균값이 0에 더 가깝기 때문에, 은닉유닛에서 쓰기 좋다. 데이터의 중심을 0.5(sigmoid의 경우)대신 0으로 만들면, 다음 층의 학습이 쉽다.

단, 출력 단계에서는 확률을 출력해야 하기 때문에 0과 1사이의 값을 가지는 sigmoid를 주로 쓴다.

층마다 다른 활성화 함수를 쓸 수 있다.

sigmoid는 주로 이진 분류의 출력층에 많이 쓴다. 그렇지 않은 경우 ReLU가 기본값으로 많이 쓰인다.

tanh와 sigmoid의 단점: z값이 매우 커지거나 매우 작아져 함숫값이 점근선에 가까워질수록 기울기가 0에 가까워므로 경사 하강법의 속도가 느려질 수 있다.

-> ReLU 활성화 함수 사용

ReLU의 단점: z < 0 일 때의 기울기가 0이다. ->Leaky ReLU는 z < 0일 때에도 약간의 기울기를 부여

ReLU 사용시 함수의 기울기가 0에 가까워지는 것을 막을 수 있기 때문에 타 활성화 함수보다 빠르게 학습 가능

 

왜 비선형 활성화 함수를 써야 할까?

만약 활성화 함수인 g가 g(x) = x 그대로 값을 뱉어내는 함수라고 할 때, 은닉층들을 거쳐도 그 값이 달라지지 않기 때문이다. 이렇게 항등함수 또는 선형함수를 활성화 함수로 쓰면 은닉층의 효과가 없다. (표준 로지스틱 회귀보다 나은 점이 없다.)

은닉층에는 ReLU, sigmoid, tanh와 같은 비선형을 사용해야 한다.

선형함수를 쓸 수 있는 곳은 대부분 출력층이다.

 

활성화 함수의 미분

신경망의 역방향 전파를 구현하기 위해서는 활성화 함수의 도함수를 구해야 한다.

 

시그모이드와 tanh 모두 도함수 식에 원함수 식이 포함된다.

 

Sigmoid: g(z)(1-g(z))

g(z) = a이다.

tanh:1-g(z)^2

ReLU:

이때 z = 0이 되는 경우는 거의 없기에 미분 불가능성에 대해 걱정하지 않아도 된다.

 

신경망 네트워크와 경사 하강법

 

도함수를 계산하는 과정

손으로 다시 정리해볼 것

 

역전파에 대한 이해

위의 backpropagation 수식의 유도과정을 살펴보는 강의.

x는 지도 학습에서 고정값이기 때문에 dx를 계산하지 않는다.

랜덤 초기화

신경망에서 weight을 0으로 초기화하고 학습을 진행할 경우

은닉층의 각 뉴런들이 다 같은 값을 계산하게 된다.(대칭적) 다음 w행렬도 모든 요소가 0이 된다.

-> 은닉층의 뉴런이 1개인 것이 된다.

 

** 이를 break symmetry(대칭성을 파괴하여 은닉층의 각 뉴런들이 다 같은 값을 계산하는 것을 막는 것)라고 하는데, 이는 은닉층이 필요하지 않은 로지스틱 회귀(선형이기 때문이다.)에서는 필요없는 말이다.

 

-> 변수를 random하게 initialize해야 한다.

np.random.randn() 사용