본문 바로가기

AI/딥러닝기초

[딥러닝개론] 신경망 기초

신경망 기초

 

신경망에서 '층을 쌓는다'는 것

  • 선형회귀 과정을 통해, '이전 층의 특성들의 가중합으로 새로운 특성들을 만들어내는 것'이 층을 쌓는 이유이자 의미라고 할 수 있다.
  • 이 과정을 반복해 여러 층을 쌓고 반복적으로 학습을 진행하면, 처음 입력으로 주어진 특성들의 조합으로부터 생성된 수많은 특징들이 추출(extract)되어 모델이 훨씬 더 상세한 정보를 학습할 수 있게 된다.

 

은닉층(hidden layer)

  • 신경망에서 입력과 출력을 제외한 층들.
은닉층들을 여러 층으로 깊게(deep) 쌓을 때 주의할 점.

새로 만들어지는 특징들, 즉 노드(node)들이 각각 비선형(non-linear) 변환을 거치지 않는다면 아무리 깊게 층을 쌓더라도 단 하나의 은닉층보다 나은 효과를 내지 못한다.

 

비선형변환을 해야 하는 이유

두 개의 선형함수가 있다고 가정.

f(x) = 2x + 1
g(x) = -x + 1

input → f(x) → g(x) → output에서
input = 10일 경우, output = -11.

f(x) → g(x)
이 두 함수(선형함수)를 통과하는 변환은 f와 g의 합성함수 하나로 표현할 수 있다.

f(x) → g(x) = h(x) = -2x + 9

그렇기 때문에, 은닉층을 수십 층 쌓더라도 그 변환이 단지 선형변환이라면 우리는 하나의 층으로 그 변환을 표현할 수 있다.

이렇게 된다면, 은닉층을 깊게 쌓아 모델이 심층적인 학습을 할 수 있게 하려는 목적은 달성되지 못한다.

이를 해결하기 위해서는 바로 이전 층의 선형결합을 통해 새로운 특성이 만들어질 때마다, 그 값을 다음 층으로 전달하기 전에 비선형 변환을 시켜주면 된다. 

 

비선형 변환 과정

1. 선형결합을 통해 새로운 특성노드의 값이 정해진다.

이전층의 출력 = (w1 * 특성 1) + (w2 * 특성 2) + (w3 * 특성 3) + bias

2. 그 값에 비선형 변환을 적용한다.

 

 

대표적인 비선형 함수

  • 시그모이드(sigmoid)
    • X축에 해당하는 입력에 대해서 0~1 사이의 값을 반환한다.
    • 모든 실수를 입력 범위로 가지면, 0에서 1 사이의 값을 반환하는데 이는 일종의 '스위치' 같은 역할을 한다.
신경망 모델의 모티브가 된 실제 인간의 뇌 신경망에서는, 이전 층의 뉴런들의 신호들이 조합되어 일정 임계값(threshold)을 넘을 경우에만 다음 층으로 신호가 전달되는 시스템이 존재한다.

- 이와 마찬가지로, 인공신경망에서도 이전 층의 특성들이 선형결합을 통해 새로운 특성을 생성하는데, 이 값이 임계값을 넘는지 안 넘는지에 따라 0과 1 둘 중 하나에 가까운 값으로 변환하는 시그모이드를 적용하는 것이다.

- 참고할만한 추가 자료.
https://brunch.co.kr/@cookery/103

 

어떤 수가 들어와도 0~1 사이의 값을 반환하는 시그모이드의 특징 때문에, 층이 점점 더 쌓이고 신경망이 깊어질수록 기울기(gradient) 값이 0에 가까워지게 된다.
따라서 시그모이드를 비선형 함수로 사용하는 경우에, 층이 점점 많아지고 신경망이 깊어질 때 학습이 잘 이루어지지 않는 현상이 발생한다.
이를 기울기 소실(gradient vanishing)이라고 한다.


  • 렐루(ReLU)
    • 렐루를 비선형 함수로 사용하는 경우에는 기울기 소실이 발생하지 않는다.
    • 깊은 신경망이 가능해지면서 인기를 얻기 시작했고, 현재 가장 많이 사용되는 활성화 함수로 꼽힌다.

렐루 수식

f(x) = 0 (x <0)
f(x) = x (x>=0)

 


가중치 행렬

 

  • 가중치 행렬의 첫 번째 열벡터가 데이터 1 벡터와 선형결합을 통해 '새 특성 1' 결과값을 만든다.
  • 두 번째 가중치 벡터와 데이터 1 벡터의 선형결합은 '새 특성 2' 결과값을 만든다.
  • 위의 연산은 아래 그림의 연산과 같다.

 

 

[비전공자를 위한 딥러닝] 2.4 신경망 (2) - 가중치 행렬 한방에 이해하기

비전공자를 위한 딥러닝, 신경망, 가중치 행렬, 벡터, 행렬곱, 원핫인코딩, 정규화, deep learning, weight matrix, vector, matrix multiplication, one-hot encoding, normalization

www.philgineer.com