Chapter 03. 신경망(1)

Junho_Mun·2025년 6월 24일

Chapter 03. 신경망

신경망은 가중치 매개변수의 적절한 값을 데이터로부터 자동으로 학습하는 능력을 갖추고있다는 것이 가장 중요한 점이다.

3.1 신경망의 구조

신경망은 여려층의 노드의 배열로 주로 입력층, 은닉층, 출력층으로 구분된다.

입력층은 아무 연산이 이루어지지 않으며 입력을 받아서 다음 계층으로 넘기는 역할을 한다. 신경망에 주어지는 초기 데이터(피쳐)의 개수에 따라 노드의 수가 결정된다.

은닉층은 복잡한 문제를 해결하여 학습하는 핵심계층이다. 입력된 데이터에서 패턴을 추출하고 비선형적인 관계를 학습하는 역할을 한다. 은닉층의 개수와 각 은닉층의 노드 수는 신경망의 성능에 큰 영향을 미치며 이를 신경망의 깊이라고한다.

출력층은 은닉층에서의 신호를 외부로 출력하는데 사용된다.

3.2 활성화 함수

활성화 함수는 입력 신호의 총합을 출력신호로 변환하는 함수를 의미한다.
이 함수의 결과에 따라 다음 퍼셉트론으로 신호를 보낼지에 대한 여부와 신호의 강도를 결정하게 하므로 활성화 함수는 신경망의 복잡도를 높이는 아주 중요한 요소이다. 활성화 함수는 신경망에 비선형성을 부여하며, 신경망이 비선형적인 복잡한 문제도 학습할 수 있도록 한다.

3.2.1 시그모이드 함수 Sigmoid function

h(x)=11+exp(x)h(x) = \frac{1} {1 + exp(-x)}

다음 함수는 과거 신경망에서 자주 활성화되는 함수이다.

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

시그모이드 함수의 치역은 (0,1)이며 연속적인 값을 가진다. 이는 출력을 확률처럼 해석할 수 있게 해주어 이진 분류 문제의 출력층에서 사용되기도 한다.

3.2.2 계단 함수

계단함수는 입력값이 0을 넘으면 1을 출력하고 그 이외에는 0을 출력하는 함수이다.

def step_funtion(x):
    y = x > 0 
    return y.astype(int)

이때, y는 bool 배열을 가지고있게 된다.
계단 함수는 0을 경계로 출력이 0에서 1로 바뀌는 형태를 가지고있다.

활성화 함수의 역할과 비선형성

신경망에서 활성화 함수는 각 층의 출력을 비선형적으로 변환하는 핵심적인 역할을 한다.
만약 활성화 함수가 선형 함수라면, 여러 층을 쌀더라도 결국 하나의 선형 함수로 표현되어 신경망 학습의 한계가 생긴다. 비선형 활성화 함수를 사용하여야지만 신경망이 복잡한 비선형 패턴을 학습하고, XOR 문제와 같이 선형적으로 분리 불가능한 문제들을 해결할 수 있게 된다.

3.2.5 시그모이드 함수와 계단 함수의 비교

치역은 [0,1]로 동일하나 '매끄러움'의 차이를 가진다.
sigmoid함수는 부드로운 곡선으로 입력에 따라 출력이 연속적으로 변화하는 반면 step함수는 0을 경계로 출력이 급격하게 바뀌게 된다.
sigmoid함수의 이런 연속적인 매끈함은 신경망 학습에 매우 중요하다.

기울기 소실 문제 (Vanishing Gradient Problem)

시그모이드 함수는 부드러운 곡선 형태를 가지지만, 입력값의 절댓값이 커질수록 기울기가 0개 가까워지는 포화(Saturation)영역이 존재한다. 이 영역에서는 기울기가 매우 작아지므로, 오차역전파 과정에서 여러 층을 거쳐 기울기가 전달될 때에 점차 작아져 결국 0으로 수렴하게 된다. 이를 기울기 소실 문제라고 하며, 이로 인해 특히 깊은 신경망에서 학습이 매우 느려지거나 멈추는 현상이 발생한다.

3.2.7 ReLU 함수

ReLU(Rectified Linear Unit) 함수는 0을 넘으면 그 입력을 그대로 출력하고 0 이하이면 0을 출력하는 함수이다.

def relu(x):
    return np.maximum(0,x)

h(x)={x(x>=0)0(x<=0)h(x) = \left\{\begin{matrix} x ( x >= 0 ) \\ 0 ( x <= 0 ) \end{matrix}\right.

ReLU함수는 양수 입력에 대해 항상 일정한 기울기를 가지므로 시그모이드 함수의 한계였던 기울기 소실 문제를 완화할 수 있다. 그러나 음수 입력에 대해서는 기울기가 0이므로, 한 번 비활성화된 뉴런은 학습중에 다시 활성화 되기 어렵다는 죽은 ReLU 문제가 발생할 수 있다.

profile
Bioinformatics and Data science

0개의 댓글