본문 바로가기

ML/딥러닝

[딥러닝]ReLU 함수

본 글은 강의를 수강하고 복습을 하며 추가로 공부하고 기록을 남기기 위한 글입니다.

출처 : 인하대학교 김승환 교수 2021-1학기 데이터마이닝 수업

서론

이전에 XOR 문제를 보다 복잡한 신경망으로 꾸리면 어떻게 될 것인지 예측해보고 그에 대한 개선책을 공부해보자.

 

XOR의 확장

xor문제를 노드도 많이 추가하고 히든 레이어도 많이 추가하여 학습시켜보자.

결과를 예측하기로는 더 정확한 모델이 되어야할 것으로 예상된다.

하지만 결과는 학습이 되 지 않았다. 

이유는 gradient vanishing problem인데, 이는 우리가 미분을 할수록 0에 가까워지므로, 가중치가 점점 사라지는 효과가 발생한다. 이는 활성함수가 sigmoid이여서 출력이 0과 1로만 나오기때문에 일어나는 현상이다.

시그모이드 가중치 계산할때 
w = w - lambda(d cost(w)/dW)
sigmoid 포함된 미분이야.
근데 시그모이드 함수의 미분은 (자신)곱(1-자신) => 무조건 0하고 1
그 두개를 곱해 그러면 이값은 무조건 0~1사이인데 좀작아지지
계속 곱하면 점점 작아지겠지.
거꾸로 백프로파게이션하면서 w가 점점 0이돼 그러면서 가중치가 무의미해지면서 업데이트가 안돼.
=>이게 바로 gradient vanishing problem이다.

 

이로인해 뉴럴네트워크의 2번째 빙하기(?)가 찾아오게 되었다.

 

이를 해결해보자.

 

렐루 함수

이를 해결하기 위해서 sigmoid 함수가 아닌 ReLU함수를 사용할 수 있다. 이함수는 아래와 같다.

기울기가 0 혹은 1로 이루어진 함수이다.

딥러닝의 최종 목표치는 0과 1사이에 있으므로 활성함수의 입력을 0~1 사이로 만드는 것이 필요하다 하지만 시그모이드는 많이 하면 0되니깐 , 

렐루는 음수는 0 양수는 패스, 

시그모이드는 음수는 0 양수는 1

렐루가 음수들을 모두 0으로 처리하여 그 노드는 학습이 안되니깐 개선된 여러 함수 또한 존재한다.

기울기 1인 완전 선형인 경우 노드가 수천개가 있어도 하나 있는것과 같으니깐 그런건 필요없어