준비하는 대학생

[자연언어처리] 피드 포워드 신경망(MLP, CNN) 본문

Programming/NLP

[자연언어처리] 피드 포워드 신경망(MLP, CNN)

Bangii 2023. 11. 25. 11:12

피드 포워드 신경망, 특히 다층 퍼셉트론(MLP)은 기계 학습 분야에서 분류와 회귀 문제를 해결하기 위해 널리 사용되고 있습니다. 이러한 신경망은 입력 벡터를 받아 여러 개의 숨겨진 층을 거치면서 변환을 수행하고, 마지막으로 출력 층을 통해 예측을 수행합니다. 각 층은 일련의 노드(또는 뉴런)로 구성되며, 각 노드는 가중치와 활성화 함수를 통해 이전 층으로부터의 신호를 변환합니다.

다층 퍼셉트론의 기본 구조

MLP 기본 모델 구조

MLP의 기본 구성 요소는 다음과 같습니다.

  1. 입력 층: 실제 데이터를 네트워크에 주입하는 레이어입니다.
  2. 숨겨진 층: 하나 이상의 층으로 구성되며, 각 층은 여러 노드로 구성됩니다. 이 노드들은 가중치와 함께 활성화 함수를 통해 입력을 처리합니다.
  3. 출력 층: 최종 예측을 수행합니다. 분류 문제의 경우, 소프트맥스 함수를 사용하여 확률 분포로 결과를 해석할 수 있습니다.

활성화 함수

활성화 함수는 신경망의 비선형성을 도입하는 핵심 요소입니다. 가장 널리 사용되는 활성화 함수 중 일부는 ReLU, 시그모이드, 탄젠트 함수 등입니다. 이 함수들은 신경망이 비선형 문제를 학습할 수 있게 하며, 복잡한 패턴을 인식하도록 돕습니다.

손실 함수와 최적화

신경망의 학습은 손실 함수를 최소화하려는 과정으로 볼 수 있습니다. 손실 함수는 신경망의 예측이 실제 데이터와 얼마나 잘 일치하는지를 측정합니다. 경사 하강법과 같은 최적화 알고리즘을 사용하여 가중치를 조정하면서 손실을 줄여나갑니다.

다층 퍼셉트론(MLP)에서 소프트맥스 활성화 함수는 일반적으로 분류 작업의 마지막 층에서 사용되어 각 클래스에 대한 확률 분포를 생성합니다. 그러나 특정 손실 함수를 사용할 때는 소프트맥스를 직접 적용하지 않는 것이 좋습니다. 대표적인 예로, 손실 함수로 크로스 엔트로피를 사용하는 경우입니다.

크로스 엔트로피 손실 함수와의 결합

크로스 엔트로피 손실 함수는 실제 분포와 예측 분포 사이의 차이를 측정합니다. 이 손실 함수는 소프트맥스 활성화 함수의 출력과 결합되어 자주 사용되지만, 대부분의 딥 러닝 프레임워크는 이 두 연산을 결합한 버전을 제공합니다. 예를 들어, PyTorch는 CrossEntropyLoss라는 함수를 제공하는데, 이는 소프트맥스와 크로스 엔트로피 손실을 결합한 것입니다.

소프트맥스를 사용하지 않아야 하는 이유

  1. 수치 안정성: 소프트맥스 함수는 지수 함수를 사용하며, 이는 큰 입력 값에 대해 매우 큰 출력 값을 생성할 수 있습니다. 이는 컴퓨터의 부동소수점 연산으로 인해 수치적으로 불안정할 수 있습니다. 손실 함수 내에서 직접 소프트맥스를 계산하면, 이러한 수치적 불안정성을 보정하는 기법을 적용할 수 있습니다.
  2. 효율성: 소프트맥스와 크로스 엔트로피를 별도로 계산하면 불필요한 중복 계산이 발생할 수 있습니다. 프레임워크에서 제공하는 결합된 함수는 이러한 중복을 제거하여 연산을 더 효율적으로 만듭니다.
  3. 그라디언트 흐름: 소프트맥스를 직접 적용할 경우, 그라디언트가 매우 작거나 큰 값으로 폭주할 수 있습니다. 이는 학습 과정에서 그라디언트 소실 또는 폭주를 유발하여 최적화 문제를 야기할 수 있습니다. 결합된 손실 함수는 이러한 문제를 완화합니다.

따라서, MLP 모델을 학습할 때 크로스 엔트로피와 같은 특정 손실 함수를 사용한다면, 소프트맥스 활성화 함수를 마지막 층에 별도로 적용하기보다는 손실 함수 내부에서 이를 처리하는 것이 더 좋습니다. 이는 구현을 단순화하고, 학습을 안정화하며, 계산적으로도 더 효율적입니다.

CNN과의 비교

MLP는 기본적으로 데이터의 전체적인 구조를 이해하려고 시도하지만, 합성곱 신경망(CNN)은 데이터의 지역적인 특징을 인식하는 데 더 강력합니다. CNN은 주로 이미지 처리에서 사용되며, 합성곱 층을 통해 이미지의 지역적인 패턴을 인식하고, 이를 여러 층에 걸쳐 학습합니다. CNN은 합성곱 연산을 통해 입력 데이터의 특정 부분 구조를 감지하고, 이를 여러 층에 걸쳐 학습하여 고차원 특징을 인식하는 데 탁월합니다.

하이퍼파라미터와 특성

CNN에는 여러 하이퍼파라미터가 있으며, 이는 네트워크의 학습과 성능에 큰 영향을 미칩니다. 커널 크기, 스트라이드, 패딩, 다일레이션 등은 모두 네트워크가 어떻게 입력 데이터를 처리하고, 결과를 출력하는지 결정합니다.

커널 크기 (Kernel Size)

  • 정의: 커널은 입력 데이터에 적용되는 작은 윈도우입니다. 커널 크기는 이 윈도우의 차원을 정의합니다.
  • 영향: 큰 커널은 더 넓은 영역의 정보를 한 번에 볼 수 있어서, 네트워크가 이미지의 큰 특징을 파악하는 데 도움이 됩니다. 반면, 작은 커널은 더 세밀한 패턴을 감지하는 데 유리합니다.
  • 일반적인 값: 3x3, 5x5 또는 그 이상의 크기가 일반적으로 사용됩니다.
  • 커널의 크기가 작을수록 작고 자주 등장하는 패턴을 감지합니다.
  • 커널의 크기가 커지면 큰 페턴을 감지합니다.
  • 즉 , 작은 커널은 상세한 특성을 추출하고 큰 커널은 *성긴 특성을 만듭니다.

* 성긴 특성이란? 

더보기

커널에서 "성긴 특성"이라는 용어는 일반적으로 커널이나 필터가 데이터에서 추출한 고수준, 추상적인 특징을 지칭합니다. 이러한 특성은 데이터의 큰 패턴이나 구조를 반영하며, 데이터 내에 자주 나타나지 않을 수도 있습니다. 간단히 말해, 성긴 특성은 데이터의 넓은 영역에 걸친 패턴을 감지하는 데 사용되며, 이는 보다 추상적이고 전체적인 정보를 포착하는 데 도움을 줍니다.

 

예를 들어, 이미지 처리에서 커널 크기가 크면 해당 커널은 이미지의 광범위한 부분을 한번에 보게 됩니다. 그 결과, 커널은 이미지의 미세한 세부사항보다는 이미지의 전반적인 구조나 형태 같은 성긴 특성을 감지하게 됩니다. 이는 이미지의 기본적인 형태나 객체의 윤곽과 같은 특징을 인식하는 데 유리합니다.

반면에 작은 커널은 더 상세한 정보를 추출하며, 이미지의 작은 부분을 자세히 보면서 로컬 패턴, 가장자리, 질감 등을 감지하는 데 효과적입니다.

성긴 특성은 주로 심층 신경망의 더 높은 층에서 찾아볼 수 있으며, 네트워크가 계층적으로 데이터의 특징을 학습할 때 중요한 역할을 합니다. 이러한 특성은 종종 이미지 내의 대상이나 음성 신호의 전반적인 패턴을 인식하는 데 사용되는 추상적인 정보를 포함합니다.

스트라이드 (Stride)

  • 정의: 스트라이드는 커널이 입력 데이터 위를 이동하는 거리를 정의합니다.
  • 영향: 스트라이드가 크면 출력 특성 맵(feature map)의 크기가 작아지고, 계산량도 줄어듭니다. 그러나 너무 큰 스트라이드는 중요한 정보를 놓칠 수 있습니다.
  • 일반적인 값: 1, 2 (때로는 3이나 그 이상이지만 드뭅니다).

패딩 (Padding)

  • 정의: 패딩은 입력 데이터의 가장자리 주변을 특정 값(일반적으로 0)으로 채우는 것입니다.
  • 영향: 패딩은 입력 데이터의 공간적 크기를 유지하며, 가장자리 정보의 손실을 방지합니다.
  • 일반적인 값: 'Valid' 패딩(패딩 없음) 또는 'Same' 패딩(출력 크기를 입력과 동일하게 유지).

다일레이션 (Dilation)

  • 정의: 다일레이션은 커널 내의 요소 사이에 공간을 두어 더 넓은 컨텍스트를 보게 하는 기술입니다.
  • 영향: 커널이 더 넓은 영역에 걸쳐 정보를 수집할 수 있으므로 입력 데이터 내의 더 넓은 패턴을 감지할 수 있습니다.
  • 일반적인 값: 일반적으로 1을 사용하지만, 특정 응용 프로그램에서는 2 이상의 값이 사용됩니다.

입력/출력 채널 (In/Out Channels)

  • 정의: 입력 채널은 모델이 입력 데이터에서 기대하는 특성의 수를, 출력 채널은 컨볼루션 연산 후 생성되는 특성 맵의 수를 의미합니다.
  • 영향: 더 많은 출력 채널을 가지는 것은 모델이 더 다양한 특징을 학습할 수 있게 해주지만, 계산량과 모델의 크기를 증가시킵니다.
  • 일반적인 값: 입력 채널은 입력 데이터에 따라 다르며, 출력 채널은 32, 64, 128 등의 2의 배수로 설정됩니다.

학습률 (Learning Rate)

  • 정의: 학습률은 최적화 과정에서 가중치를 업데이트하는 정도를 결정합니다.
  • 영향: 너무 높은 학습률은 학습 과정에서 불안정을 초래할 수 있으며, 너무 낮은 학습률은 학습이 너무 느리거나 지역 최소값에 갇힐 수 있습니다.
  • 일반적인 값: 0.001, 0.01, 0.1 등이며, 종종 학습 과정에서 점진적으로 감소시킵니다 (learning rate decay).

각 하이퍼파라미터의 선택은 데이터와 문제에 따라 달라집니다. 실제 응용에서는 그리드 탐색(grid search), 랜덤 탐색(random search), 베이지안 최적화(bayesian optimization) 등의 방법을 사용하여 최적의 하이퍼파라미터를 결정하는 경우가 많습니다.

MLP와 CNN은 각기 다른 종류의 문제를 해결하기 위해 설계되었습니다. MLP는 전통적인 분류와 회귀 문제에 매우 효과적이며, CNN은 이미지와 같은 고차원 데이터에서 지역적인 특징을 학습하는 데 특히 유용합니다. 신경망을 설계할 때는 문제의 종류를 고려하여 적절한 구조와 하이퍼파라미터를 선택해야 합니다

Comments