본문 바로가기
딥러닝

신경망 구조 설계: 딥러닝 아키텍처, Layer(층) 수

by 데이널 2024. 1. 10.

이번 포스팅에서는 신경망의 설계 방법에 대해서 알아보겠습니다. 보통 신경망 아키텍처를 설계한다 또는 그린다는 표현을 사용하는데요. 신경망을 구성하는 요소는 무엇이 있고 어떤 점을 고려해야 하는지에 대한 이야기를 해 보겠습니다. 

 

 

신경망 구성

보기에도 신경망은 매우 복잡하게 보입니다. 미리 말씀드리지만 모양은 복잡하지만 원리를 알면 단순한 방식으로 진행됩니다. 신경망은 텐서를 이용해 병렬 계산을 수행합니다. 텐서에 대해 아직 모르신다면 관련 포스팅을 참고하시 바랍니다. 

 

텐서(Tensor)의 개념: 텐서플로우 vs 파이토치 vs 케라스


신경망(network) 구성은 층(Layer)으로 구성합니다. 크게 Input Layer, hidden Layer, Ouput Layer로 구분할 수 있습니다. 어떻게 보면 딥러닝 모델은 층(Layer)으로 구성된 그래프로 볼 수도 있죠. 모델을 만들 때 머릿속에 또는 노트에 그래프를 그려보면서 만들 수 있습니다. 이렇게 그래프를 그리면 프로그램 코드로 재현할 경우 실수를 줄일 수 있습니다. 이런 과정이 신경망을 설계하는 과정입니다. 

 

예를 들어 2층 신경망을 설계한 예시를 보시겠습니다. 입력층(0층)은 3개, 은닉층(1층)은 3개, 출력층(2층)은 2개의 뉴런으로 구성으로 하겠습니다. 은닉층은 입력층, 출력층과 달리 뉴런의 값을 볼수 없어서 은닉층이라고 합니다. 

 

2층 신경망 설계
2층 신경망 설계

 

  • Input Layer: 입력 데이터(feature). 뉴런의 수는 입력 차원에 해당함
  • hidden Layer: 입력과 출력 사이의 중간 레이어. 은닉층의 뉴런은 가중치 연결을 통해 입력 데이터를 처리하고 비선형성을 위한 활성화 함수를 적용함
  • 가중치 및 편향: 훈련 중에 네트워크가 학습하는 매개변수. 가중치는 입력 값을 조정하고 편향은 유연성을 제공함
  • Output Layer: 최종 결과를 생성
    • 회귀: Output Layer에서는 활성화 함수가 없음
    • 이진 분류: 시그모이드 활성화가 있는 단일 뉴런
    • 다중 클래스 분류: 클래스 수와 동일한 뉴런, Softmax 활성화가 포함됨

 

노드(뉴런)의 의미

노드는 각 Layer의 특성들입니다. 은닉층의 노드는 새로운 특성으로 각기 다른 가중치와 곱해져서 더해진 값이 되죠. 가중치가 랭덤하게 적용돼 서로 다른 특성을 만드는 것이 층을 쌓는 이유이자 의미가 됩니다. 신경망의 거미줄 같은 모양이 새로운 특성을 만들기 위한 작업이라 할 수 있습니다. 딥러닝은 신경망을 통해 자동으로 가장 좋은 특성들을 추출하는 방법임을 알 수 있죠. 층을 쌓고 반복적으로 학습을 진행하면, 이런 과정을 통해 수많은 특성들이 추출되어 은닉층이 깊어질수록 훨씬 상세한 정보를 학습할 수 있습니다. 

 

활성화 함수

활성화 함수는 입력 신호의 총합을 출력 신호로 변환하는 함수 입니다. 만약  W1 X1 + W2 X2 + b이라는 수식이 이전 Layer에서 입력된다면 ℎ(𝑥)가 활성함수입니다. 값에 따라 0 또는 1을 출력합니다. 해당 뉴런을 최종적으로 정보를 전달할지 말지를 결정합니다. 

  • y =  ℎ(W1 X1 + W2 X2 + b)
  • ℎ(𝑥)=   𝑥 < 0 이면 0
  • ℎ(𝑥)=   𝑥 ≥ 0 이면 1

 

마무리

신경망 설계는 Layer를 얼마나 쌓을 것인가? 또 뉴런(노드)의 개수는 각각 몇개로 할 것인가? 활성화 함수는 어떤 것을 사용할 것인가?를 생각하는 것입니다. 이 세 가지가 기본적인 신경망 아키텍처 선택사항입니다. 물론 이런 설계는 어떤 것이 효율적인가를 계속 변경하면서 최적화하는 과정이 필요합니다. 이런 기본적인 요소 말고도 손실함수, 옵티마이저, 배치정규화, dropout 등 여러 가지 고려할 것들도 많지만 이번 글에서는 간단한 내용부터 이야기해 보았습니다.