본문 바로가기

Deep Learning

[딥러닝] 신경망

인공 신경망은 생물학적 신경망의 중추신경계인 인간의 뇌가 문제를 처리하는 방식을 모방한 모형으로, 그 시작은 1958년 로젠블랫이 선형 분류를 위한 이층 구조의 퍼셉트론을 개발하면서 시작했습니다. 이후 위드로와 호프는 최소 최소평균제곱 알고리즘이라고 불리는 adaline과 학습규칙을 소개를 했습니다. 

 


우선 신경망의 특징을 살펴보면 다음과 같습니다. 

  1. 신경망의 각 노드에 미분 가능한 비선형 활성함수를 적용한다.
  2. 신경망은 하나 이상의 은닉층을 포함한다.
  3. 신경망은 높은 수준의 연결성을 나타낸다. 이때 연결강도는 신경망의 가중치에 의해 결정한다.

그리고 신경망 훈련에서 가장 많이 사용하는 알고리즘은 역전파 알고리즘입니다. 입력 신호는 출력에 도달할 때까지 층별로 전파되며, 반대로 역방향 단계에서는 싱경망 출력을 목표 출력과 비교해서 오차 신호를 생성해냅니다. 오차 신호는 역방향으로 층별로 저파되며, 이 단계에서는 신경망의 가중치가 연속적으로 조정된다 볼 수 있습니다.


 

자 이제 특징을 살펴보았으니, 기본 개념에 대해 말해보겠습니다. 

 

사람의 뇌는 수많은 뉴런이 시냅스를 통해 네트워크를 이루며, 사고 · 판단 · 기억과 학습 등의 고등 기능부터 잠 · 욕구 등과 같은 원초적 기능까지 모든 기능을 관장을 합니다. 이러한 뇌는 뇌 세포로 구성되어 있습니다. 1943년 매컬로크와 피츠는 이러한 생물학적 뉴런의 정보 기능을 추상화해서 간단한 신경망 모델을 개발해냅니다. 

 

이 모형은 노드는 각 입력에 가충지를 곱하고 합해서 임곗값을 적용하고, 계산 결과는 연결된 다른 노드로 전송하는 구조를 가지게 설계되었습니다. 매컬로크-피츠모형은 d개의 입력 에 x1 , x2 , …, xd대한 출력을 o라고 할 때 다음과 같이 일반화됩니다.

여기서 xi는 입력층의 i번째 노드의 입력, Wi는 관련 가중치, b는 편향 또는 상수항, f는 전달함수, o는 출력층 노드의 출력을 나타냅니다.

 

그리고 이 때 o를 만들어내기 전에 활성함수라는 것을 거치게 됩니다. 이 과정에서는 output으로 표현하기 위한 다양한 normalize를 한다고 보면 됩니다. 계단 함수, 시그모이드, 쌍곡탄젠트 그리고 ReLU가 대표적인 활성함수입니다.

매컬로크-피츠모형에선 활성함수로 계단함수가 사용되었으며, 이 함수는 노드에 AND, OR 및 NAND 등과 같은 기본 boolean 함수를 모방하는 기능을 제공합니다.

 

그 외에도 시그모이드 함수는 매우 높거나 매우 낮은 입력값이 출력에 아주 적은 영향을 주도록 만드는 압축 효과가 있=습니다. ReLU 함수는 시그모이드 함수의 단점을 보완하기 위해 직선 조합을 통해 비선형성을 표현하는 함수로, 딥러닝을 위해 많이 사용됩니다.


신경망의 작동원리를 보자면, 위의 예시를 이용해서 설명하겠습니다. 은닉층 두개와 출력층 1개를 가진 신경망의 구조로써, 일반적으로 신경망들은 완전히 연결 되어있습니다. 즉 모든 층의 노드는 이전 층의 모든 노드와 연결되어있다 보시면 됩니다. 

신호는 왼쪽에서 오른쪽으로 그리고 층별로 모든 방향으로 진행됩니다. 이러한 신경망은 다중입력 및 다중출력 문제를 비교적으로 쉽게 해결할 수 있는 장점이 있다고 봅니다.

 

위의 그림은 신경망의 두 가지 왼쪽에서 오른쪽으로 흐르는 기본 신호인 함수 신호, 역으로 흐르는 오차 신호입니다.

이 때 함수 신호는 입력노드로 들어와 신경망을 통해 노드별로 전방향으로 전파되어 신경망의 출력노드에서 출력신호로 나오는 신호입니다.

그리고 오차 신호는 신경망의 출력노드에서 시작하여 신경망을 통해 층별로 역방향으로 전파되어 신경망의 모든 노드에 의한 오차신호 계산에서 오차함수가 포함되는 신호를 말합니다.

 

출력 노드는 신경망의 출력층을 구성하며, 은닉 노드는 신경망의 은닉층을 구성합니다. 은닉 노드는 신경망의 출력이나 입력의 일부가 아니라, 입력노드로 구성된 입력층을 통해 들어온 입력 신호는 첫 번째 은닉층으로 전해집니다.

 

자 이제 은닉층과 출력층을 각각 1개씩 가진 신경망이 있다 가정해봅시다. 먼저 다음과 같이 d개의 입력변수 x 1 , x2 , …, x d의 m개의 선형결합 Zj 1을 계산합니다.

여기서 xi는 i번째 입력노드의 입력을, bj 1은 관련 편향을, m은 은닉층의 노드 개수를, wij 1은 i번째 입력노드와 j번째 은닉노드 사이의 연결강도인 가중치를 나타냅니다. 활성전위 Zj 1은 활성함수 fh를 통해 다음과 같이 변환합니다. 

활성함수 fh로는 주로 시그모이드 함수 또는 쌍곡탄젠트 함수가 사용. hj 1은 다음과 같이 출력층의 활성전위 zk 2를 만들기 위해 사용합니다.

여기서 bk 2는 관련 편향을, c는 출력층의 노드 개수를, wk 2는 j번째 은닉노드와 k번째 출력노드 사이의 연결강도인 가중치를 나타내며, 활성전위 zk 2는 활성함수 fo를 통해 다음과 같이 변환됩니다.

분류를 위한 활성함수 fo로는 시그모이드 함수가 주로 사용되며, 회귀분석을 위한 활성함수 fo로는 선형함수가 주로 사용. 분류와 회귀분석은 지도학습방법에 속합니다.

출력노드의 출력값을 앞으로 편의상 ok로 표현, 따라서 식 (2.2.5)에서는 hk 2를 ok로 표현하는 것이 됩니다.


신경망에는 정말 다양한 모델이 존재합니다.

제일 먼저 선형으로 진행되는 전방 신경망, 마지막에 다시 돌아가는 순환 신경망, 그리고 은닉층이 많이 없는 얉은 신경망과 은닉층이 굉장히 많은 깊은 신경망이 있습니다. 보통 요즘 많이 사용되는 건 깊은 신경망입니다.