Data Science/: : Bigdata Analyisis

인공 신경망의 구조

Jay.P Morgan 2024. 3. 11. 10:38

  0. Intro

 

    텐서플로(Tensorlfow) 2.0 기반의 고수준 API인 케라스(Keras)를 중심으로 딥러닝 모델을 구축하고 훈련하는 방법을 소개한다. 케라스는 딥러닝 모델을 간단한 함수 형태로 구현했기 때문에 배우기 쉽고, 대부분의 딥러닝 문제를 해결할 수 있을 만큼 성능도 뛰어난 편이다.

    인공 신경망은 뇌 신경계의 정보 처리 구조를 모방하여 만든 컴퓨터 계산 알고리즘이다. 뇌 신경은 수많은 신경세포(뉴런, neuron)들이 연결되어 정보를 처리하고 전달한다. 신경세포는 신호를 입력받아 다음 신경세포에 출력 형태로 연결한다는 점에서 입력과 출력을 갖는 함수와 비슷하다. 인공 신경망은 이처럼 수많은 신경세포가 연결되는 뇌 신경계와 같이 수많은 함수를 서로 연결하여 복잡한 정보를 처리하는 네트워크 구조로 이해할 수 있다.

    아래 그림은 가장 단순한 형태의 초기 인공 신경망인 퍼셉트론(perceptron) 구조를 신경세포와 비교해 나타낸 것이다. Wi는 함수식의 가중치(함수의 계수)를 말하고, 딥러닝은 입력(Xi )과 출력( y)의 관계를 잘 설명할 수 있는 복잡한 함수식의 가중치를 찾는 과정을 말한다.

※ 신경세포 vs. 인공 신경망

 

 

 

  1. 활성화 함수

 

    위 그림을 보면 인공 신경망은 입력값을 가중치와 곱하고 그 결과를 전부 더한다. 이렇게 가중 합산한 값을 활성화(activation) 함수에 입력하여 최종 출력으로 변환한다. 즉, 입력값들의 수학적 선형 결합을 다양한 형태의 비선형(또는 선형) 결합으로 변환하는 역할을 한다.

    이진 분류에 사용되는 시그모이드(sigmoid) 함수를 예로 들어 보자. 머신러닝을 설명하면서 로지스틱 회귀 모델의 활성화 함수로 다룬 적이 있다. 입력이 0보다 커지면 시그모이드 함수의 출력은 1에 가까워지고, 반대로 입력이 0보다 작아지면 0에 가까워지는 형태이다. 따라서 출력은 0~1 사이의 범위에 존재하고 입력값을 확률로 변환하여 출력한다. 일반적으로 출력이 0.5보다 작으면 0으로 분류하고, 0.5보다 크면 1로 분류한다.

※ 시그모이드(Sigmoid) 함수

    인공 신경망이 복잡한 문제를 잘 설명하는데 활성화 함수를 이용한 비선형 변환이 상당한 중요한 역할을 한다고 볼 수 있다. 실제로 어떤 활성화 함수를 적용하는지에 따라 딥러닝의 예측력에 상당한 차이가 발생한다. 문제 유형에 따라 다음과 같이 다른 종류의 활성화 함수를 적용한다.

※ 활성화 함수의 종류

 

  2. 손실 함수

 

    손실 함수(loss function)는 인공 신경망이 출력하는 값과 실제 정답과의 차이를 말한다. 따라서 손실 함수가 작을수록 좋다. 딥러닝 학습을 통해 인공 신경망의 출력값과 실제값을 비교하여 그 차이를 최소화하는 가중치(W)와 편향의 조합을 찾는다. 일반적으로 문제 유형에 따라 다음과 같은 손실 함수를 적용한다.

※ 손실 함수의 종류

 

  3. 옵티마이저 (최적화 알고리즘)

 

    딥러닝 학습은 손실 함수를 최소화하는 인공신경망의 가중치와 편향을 찾는 과정이라고 정의한 바 있다. 손실 함수는 일반적으로 J(W)와 같이 가중치(W)의 함수로 나타낸다. 손실 함수 J(W)가 2차 함수와 같이 볼록 함수의 형태라면 미분으로 손실이 가장 작은 가중치(W* )를 찾을 수 있다.

※ 2차 함수의 최소값

    하지만 딥러닝에서는 손실 함수의 형태가 복잡하므로 계산량이 매우 커지고, 미분이 0이 되는 값이 여러 개 존재하게 되므로 미분만으로 최소값을 찾기 어렵다. 이런 경우 경사하강법(Gradient Desent Method)과 같은 최적화 방법을 이용한다. 경사하강법은 손실 함수의 현재 위치에서 조금씩 손실이 낮아지는 쪽으로 가중치를 이동하면서 최소값을 찾는 방법이다.

※ 경사하강법

    손실 함수를 최소화하는 방향으로 가중치를 갱신하는 알고리즘을 옵티마이저(Optimizer)라고 부른다. 경사하강법에 기반을 둔 옵티마이저로는 SGD, RMSProp, Adagrad, Adam 등이 있다.

※ 신경망의 학습 과정

 

 

 

  4. 다층 신경망(MLP, Multi-Layer Perceptron)

 

    인공 신경망은 일반적으로 여러 층의 레이어(층, layer)를 겹겹이 쌓아서 만든다. 입력 레이어와 출력 레이어가 신경망의 앞과 뒤에 위치하고, 그 사이에 여러 층의 은닉 레이어(hidden layer)를 배치한다. 각 레이어는 여러 개의 유닛(unit)으로 구성되고, 각 유닛은 하나의 퍼셉트론으로 이루어진다. 각 유닛은 입력값과 가중치를 갖고 활성화 함수를 거쳐 출력을 내보낸다. 인접한 두 레이어의 각 유닛은 서로 가중치(weight)를 갖는 연결선을 통해 이어지고 일대일 대응 관계를 갖는다. 이처럼 복잡한 아키텍처를 사용하여 데이터에 내재된 복잡한 관계를 파악할 수 있다.

※ 다층 신경망(MLP) 구조