본문 바로가기

【1】Deep Learning 시작하기/신경망 모형(Neural Networks)

신경망 모형의 기본 구조

 

 

우리는 앞에서 신경망의 구조를 여러 번 언급했었다. 신경망은 다층퍼셉트론의 발전된 형태로 입력층-은닉층-출력층 구조인 다층퍼셉트론에서 은닉층을 두개 이상 쌓은 구조를 가진다. 은닉층의 개수가 많아지면 신경망이 깊어졌다(deep)이라고 하며 이를 심층 신경망(Deep Nerual Network, DNN)이라고 한다. 이번장에서는 딥러닝으로 넘어가기 전 마지막으로 신경망의 구조에 대해서 정리해보는 시간을 가질것이다. 처음 소개하는 내용이 아니므로 질문에 대답해보면서 따라와주기를 바란다!  

 

 

아래의 그림은 가장 기본적인 신경망의 구조라고 할수 있는 은닉층이 2개인 구조의 신경망 그림이다. 몇가지 퀴즈를 통해 여러분이 알고 있는 내용을 확인 해 보겠다. 

 

 

Quiz 1

위 신경망은 ‘4층 신경망’이다. 

O

X

Quiz 2

전체 노드의 수는 8개이다. (바이어스 제외)

O

X

Quiz 3

바이어스를 포함한 가중치는 14개이다.

O

X

 

 문제를 푸는데 전혀 감이 오지 않는 독자는 1.2장의 퍼셉트론과 다층퍼셉트론의 내용으로 돌아갔다가 오길 바란다. 약간의 헷갈리는 부분이 있는 독자라면 아래 풀이를 통해 답을 고른 원리가 맞는지 반드시 확인하길 바란다!

 

 먼저 그림에서 동그라미는 노드라고 부르며(뉴런 혹은 feature라고도 한다) 화살표는 가중치이다. 화살표 방향을 보아하니 순방향으로 흘러가고 있음을 알 수 있다. 이전에 신경망의 층수를 정할 때 가중치의 영향을 받는 층의 개수만을 고려한 것을 기억하는가? 위 신경망에서 가중치에 영향을 받는 층은 은닉층1, 은닉층2, 출력층으로 그림은 3층 신경망의 그림이다(Quiz 1)

 

노드의 개수는 동그라미의 개수로 바이어스를 제외하면 입력층 2개, 은닉층 3개, 은닉층 2개, 출력층 1개로 총 8개이다(Quiz 2). 즉, 두개의 feature를 입력 받아 한 개의 출력 값을 반환하는 신경망이며, 데이터를 분류하는 문제에 사용된다면 이진분류를 해결하는 모델이 될 것이다. 

 

신경망은 한 층의 노드들은 이웃한 층의 다른 노드들과 모두 연결이 되어있다(bias 제외). 그러므로 (입력층 노드 수 x 은닉층1) + (은닉층1 x 은닉층2)+ (은닉층2 x 출력층)으로 계산 할 수 있으며 즉, (2x3)+(3x2)+(2x1)=14개의 가중치가 있다. 만약에 바이어스를 고려한다면 바이어스는 바로 다음 층에만 영향을 주므로 (3x3)+(4x2)+(3x1) = 20로 총 20개의 가중치가 존재한다(Quiz 3).

 

Quiz 답 : X / O / X 

 

 

 

이번에는 다음 그림과 같이 입력값과 가중치 값이 주어졌을 때 출력값을 계산해보자. 계산의 편의를 위해 바이어스는 모두 생략하겠다.

 

 

참고로 나누어진 원은 가중합과 활성화 함수 값을 쓰기 위해 선으로 분리해 놓은 것이며  아래의 그림처럼 값을 채우면 된다. 그리고 활성화 함수는 ReLU를 사용하자.

 

 

 

혹시 힌트가 더 필요한 독자를 위해서 가중합을 구하는 공식을 복습해보겠다. 

 

 

단층 퍼셉트론의 구조를 보면서 하나의 가중합이 도출되는 과정을 살펴보겠다. 입력값과 각 입력에 부여된 가중치를 모두 곱한 후 바이어스까지 더해준 값을 가중합이라고 한다. 구해진 가중합은 활성화 함수의 입력으로 들어가며 활성화 함수의 종류에 따라 다른 출력이 나오게 된다. 바이어스는 편의상 생략을 하고 가중합을 계산할 것이며 활성화함수는 입력이 음수일때 0을,  양수일때 입력 값을 출력하는 ReLU를 사용하겠다. 

 

 

이제 문제를 풀기위한 모든 힌트들이 주어졌다! 답을 찾았다면 아래의 정답을 통해 자신의 답과 맞는지 확인해보자.

 

 

정답은 그림에서 보다시피 11.2 값이 출력된다. 

 

은닉층1의 첫번째 노드를 보며 설명해보자면 입력값 1, 2에 부여된 가중치 1, -4를 각각 곱한 후 더해주면 가중합은 -7이 된다. -7은 ReLU의 입력으로 들어가는데 0보다 작은 입력이기에 활성화 함수 값은 0이 된다. 정답의 그림을 보면 0보다 작은 가중합들은 모두 활성화 함수 값이 0인 것을 볼 수 있다. 이 과정을 모든 노드에 대해 반복 적용해주면 출력값 11.2 가 계산이 된다. 

 

정리해보면 각 층의 노드 값이 계산된 원리는 다음과 같다.

 

 

위 식을 보면 각 층은 서로 연결된 형태로 계산이 된다. 즉 입력 값이 출력 값으로 반환되는 과정에서 활성화 함수가 중첩되어 사용된 것이다. 우리는 3층짜리 신경망을 보며 이해한 바를 통해 더 깊은 신경망을 생각해 볼 수 있다. 신경망이 깊어 진다는 것은 은닉 층의 수 또한 많아졌다는 것이고 이는 활성화 함수가 여러 번 겹쳐서 적용된다는 것을 의미한다. 

 

다층 퍼셉트론의 구조에서 은닉층을 처음 언급할 때 해결하려는 문제의 난이도가 어려울수록 은닉층의 수는 많아진다고 했던 것을 기억하는가? 신경망의 구조를 다 학습한 지금, 이 말을 다시 생각해본다면 복잡한 문제를 풀기 위해 신경망의 구조 또한 복잡 해졌다고 생각되지 않는가?

 

여기까지 신경망의 구조에 대해 정리해보았다! 이제 우리는 깊은 신경망(DNN)을 만나도 문제없을 것이다. 다만 신경망의 깊이가 깊어지면 학습을 시키는데 효율과 정확성을 높이는 도구가 필요하다. 다음 글에서는 딥러닝을 위한 고급 기술을 몇 가지 배울 차례이다.

 

 

 

 


작성자 홍다혜 ghdek11@gmail.com / 이원재 wonway333@gmail.com