경사소실 문제 해결
1. 경사 소실 문제 출력층으로부터 되돌아가면 각 층의 가중치를 수정하려면 미분 값, 즉 기울기가 필요하다. 그런데 층이 늘어나면서 기울기가 중간에 0이 되어버리는 경사 소실(vanishing gradient) 문제가 발생한다. 이는 시그모이드 함수의 미분 최대치는 0.3, 즉 1보다 작은 값이기 때문이다. 은닉층이 많아질수록 기울기는 점점 0에 가까워지게 된다. 이를 해결하기 위해서 시그모이드 함수를 대체할 수 있는 활성화 함수를 사용하려면 시그모이드 함수와 모양이 비슷하고 경사가 소실되지 않는 함수를 사용한다. 1.1 쌍곡탄젠트 함수(Hyperbolic Tangent Function) tanh(x) tanh(x) 함수 정의와 그래프이다. * 시그모이드 함수 : 입력값 − ∞ <x< ∞에 대하여 함수값의 범위는 0<σ(x)<1 * 쌍곡탄젠트 함수 : 입력값 − ∞ <x< ∞에 대하여 함수값의 범위는 − 1<tanh(x)<1 다음은 쌍곡탄젠트 함수의 경사를 구하기 위해 필요한 tanh(x) 의 도함수를 구하는 과정이다. 아래는 tanh′(x) 와 σ′(x) 의 그래프를 비교한 그림이다. σ′(x) 의 최대값은 σ′(0)=0.3 이고 tanh′(x) 의 최대값은 tanh′(0)=1 이기 때문에 시그모이드 함수와 비교했을 때 경사가 소실되기 힘들다는 것을 알 수 있다 . * TensorFlow에서 구현은 tf.nn.tanh() 이다. 1.2 ReLU(Rectified Linear Unit) 함수 tanh(x) 함수를 사용하면 미분값의 범위가 확장된다. 그러나 고차원 데이터를 다룰 경우에는 값이 커질 수 있어 다시 경사가 소실될 수 있다. 복잡한 데이터일 수록 고차원일 경우가 많은데 이를 회피할 수 있는