본문 바로가기
멤리스터와 AI 하드웨어

인공신경망의 동작 원리

by 칠월색 2021. 1. 20.

인공신경망은 뉴런의 동작 원리에 기초해 인공적으로 구축한 기계학습을 위한 통계학적 학습 알고리즘을 말한다. 생물 내의 뉴런은 입력을 받아 출력을 만들어 다음 뉴런으로 전달한다. 인공신경망에서는 이를 모방한 노드(node)들이 네트워크를 구성한다. 이 노드를 인공신경망의 단위 연산인 퍼셉트론이라고도 한다. 각 노드는 효과적인 출력값을 만들기 위해 활성화 함수를 사용한다. 이 활성화 함수는 입력값에 가중치를 곱한 뒤 편향(바이어스, bias)을 더한 값과 같다.

다층 신경망의 구조 ( http://www.aistudy.com/neural/theory_oh.htm )

 노드를 연결한 네트워크는 세 계층으로 나뉜다. 입력층, 은닉층, 출력층이다. 입력층은 초기에 데이터가 입력되는 계층, 은닉층은 데이터가 드러나지 않고 가려져 있는 계층, 출력층은 학습된 데이터가 담긴 계층이다. 모든 노드는 각자의 가중치와 바이어스 조합을 가진다. 데이터가 입력층에서 은닉층, 출력층으로 전파되는 과정에서 이 값을 조절하며 최적화가 이뤄진다. 그 합을 바탕으로 뉴런의 출력화가 활성화되어 노드 전체를 합친 것이 하나의 함수처럼 작동하고, 이를 인공신경망이라 칭한다. 은닉층이 많아 단계적으로 학습하는 심층적 은닉층을 갖춘 신경망을 심층 신경망이라 하고, 그런 배경에서 학습시키는 것을 딥 러닝이라고 한다.

초기에는 퍼셉트론을 하드웨어를 이용하여 구현하여 사용하였다. 이 시기의 신경망은 단층 퍼셉트론으로 불렸고, 입력층과 출력층으로만 구분이 되었다. 하지만 이 경우 XOR 논리에 대한 문제 해결이 불가능한 등 한계가 있었고, 이를 다층 퍼셉트론으로 해결하여 현재는 세 계층으로 나뉜 인공신경망을 사용한다.

각 노드의 입력에 가중치를 곱하고 활성화 함수를 적용하는 과정을 효율적으로 진행하기 위해서는 행렬곱이 필요하다. 행렬곱으로 표현하는 방식을 벡터화(vectorize)라고 하고, 이는 아래 그림과 같이 사용된다.

( https://erica-lee.github.io//articles/2017-10/make-your-own-neural-network# 인공- 신경망의- 동작- 원리 )

맨 왼쪽의 행렬은 가중치의 행렬, 그와 곱하는 행렬은 현재 계층의 입력값에 해당하는 행렬, 그 둘을 곱한 결과는 현재 계층의 출력값이자 다음 계층의 활성화 함수에 들어갈 입력값의 행렬이다.

다층 신경망의 학습법 중 위와 같이 초기 입력신호를 가중치와 조합하여 출력계층 쪽으로 전달(feed forward)하는 방식을 전파법(forward propagation, 순전파)라고 한다.

인공신경망에서의 오차 ( https://erica-lee.github.io//articles/2017-10/make-your-own-neural-network# 인공- 신경망의- 동작- 원리 )

순전파 외에도 데이터 최적화를 위해 발생하는 오차값을 다시 직전 계층의 가중치를 수정하는 데 이용할 수 있도록 역방향으로 가중치를 전달하여 가중치를 갱신하는 역전파(back propagation) 또한 사용된다. 위 그림과 같이 이전 노드의 가중치와 결괏값의 오차로 이전 계층의 오차값을 유추할 수 있다는 것을 이용한 방법이다.

역전파 알고리즘 (https://m.blog.naver.com/samsjang/221033626685)  

역전파법 계산 또한 행렬을 이용하여 처리할 수 있다. 이전 계층, 즉 은닉층의 오류는 출력층의 오류에 가중치를 곱한 값이다. 이를 행렬의 곱으로 표현하면 아래와 같다.

( https://erica-lee.github.io//articles/2017-10/make-your-own-neural-network# 인공- 신경망의- 동작- 원리 )

 여기서 왼쪽 행렬의 분모 부분은 일종의 정규화 인자 (normalizing facor), 이를 무시하여 약간 차이가 있는 값이 역전파되어도 다음 학습 단계에서 조정되므로 생략할 수 있다. 이 행렬에서 중요한 부분은 역전파되는 오차와 역전파될 노드의 가중치 크기의 관계이므로 분모를 생략하고 아래와 같이 표시할 수 있다. 이는 전파법 행렬곱의 형태와 비슷하나 가중치 행렬이 전파법 행렬곱의 왼쪽 행렬의 전치행렬이다.

( https://erica-lee.github.io//articles/2017-10/make-your-own-neural-network# 인공- 신경망의- 동작- 원리 )

인공신경망을 통해 최종 출력의 손실함수가 최소화되도록 역전파(backpropagation) 기반의 학습법칙에 따라 가중치를 바꾸는 작업이 학습이며, 학습된 인공신경망 모델을 가지고 입력에 대한 출력을 얻는 과정이 추론이다.

 

추가로 알아본 것

1.     GAN

GAN 의 구조 ( https://untitledtblog.tistory.com/154 )

GAN(Generative Adversarial Networks)은 인공신경망의 종류 중 하나로, 요즘 많이 사용되는 모델이다. Generatordiscriminator, 두 개의 인공신경망이 서로 경쟁하며 학습이 진행된다. Generator는 주어진 데이터를 보고 최대한 데이터와 비슷한 새로운 데이터를 생성하고, discriminator는 진짜 데이터와 generator가 생성한 데이터 중 어떤 것이 진짜 데이터인지 판별한다. 이 둘이 경쟁하여 두 모델의 성능이 모두 향상되는 결과를 얻을 수 있다.

 

2.     인공신경망 구현에서의 하드웨어

인공신경망은 정보를 입력하고 출력하므로 입력을 감지하여 저장이 가능한 형태의 정보로 바꾸고 이를 저장하는 장치가 필요하다.

인공신경망 내부의 네트워크 구현은 각 노드들 간의 내부 함수 구현이다. 신경망 구현 시 장점 중 하나는 해당 노드와 그 연결망의 모델이 매우 단순하다는 것이다. 이러한 모델은 추론과 학습에서 가중치의 곱셈 값을 합산하여 하나의 뉴런에 전달하는 수많은 MAC(multiplier-accumulator) 연산들과 활성화 함수에서의 곱셈을 통해 이루어진다. 이들 MAC 연산들은 인공신경망의 크기에 비례하여 그 크기가 결정되게 된다. 또한, MAC에 필요한 피연산자의 데이터와 출력 데이터는 인공신경망이 구현되는 메모리에 저장된다. 결론적으로 인공신경망 구현에서는 MAC 연산기와 메모리가 하드웨어 형태로 존재한다. 좁은 의미로는 이들 MAC 연산과 메모리가 하드웨어로 매핑되어 병렬 형태로 구현되는 것을 인공신경망의 하드웨어 형태 구현이라고 볼 수 있으나, MAC 연산에 사용되는 곱셈기와 덧셈기의 효율을 높이거나 메모리의 필요량을 줄이는 연구 또한 하드웨어 관련 비용 효율을 높이기 위해 활발하게 진행되는 하드웨어 관련 연구 주제들이다.”  (김현진, "인공신경망 구현의 하드웨어 동향", 주간기술동향 1885 (2019) 중 발췌)

 

질문

퍼셉트론의 개념이 생소해서 잘 이해가 가지 않습니다. 인공신경망에서 뉴런 1개와 대응되는 노드와 같은 것인가요

 

답변

퍼셉트론 = 다수 입력 + 단일 출력. 이렇게 정의가 됩니다. 출력층의 노드 1개에 연결된 입력층과 중간의 가중치를 합쳐서 하나의 퍼셉트론이라고 합니다

 

 

참고 문헌

-      김현진, "인공신경망 구현의 하드웨어 동향", 주간기술동향 1885 (2019)

-      뉴로 컴퓨터 : 오창석내하출판사, 1996, Page 68~114 (http://www.aistudy.com/neural/theory_oh.htm)

-      한국정보화진흥원 송경빈, 인공지능 기술/원리의 이해

-      딥러닝의 역사 – 퍼셉트론(Perceptron)부터 GAN(Generative Adversarial Networks)까지 – 1/2

-      딥러닝의 핵심 개념역전파(backpropagation) 이해하기 1

-      13. 인공 신경망(Artificial Neural Network) 원리