모델 파라미터는 학습이 완료된 모델 내부에 저장된 수치로, 입력을 출력으로 변환하는 방식을 결정합니다. 신경망에서는 일반적으로 가중치와 편향이 파라미터에 포함됩니다. 이러한 값은 학습 중에 결정되며 모델이 예측을 수행할 때 재사용됩니다.

유용한 사고방식

모델의 아키텍처를 비어 있는 번호 매겨진 슬롯이 있는 방정식 집합이라고 생각해 보세요. 아키텍처는 슬롯이 어디에 배치되고 어떻게 연결되는지를 결정합니다. 파라미터는 그 슬롯에 들어가는 숫자입니다.

이 구분은 중요합니다. 두 모델이 동일한 아키텍처를 사용하더라도 파라미터 값이 다르면 서로 다르게 동작할 수 있습니다. 학습 전에는 슬롯에 초기화된 값이 들어 있습니다. 학습은 데이터를 사용해 파라미터의 일부 또는 전부를 조정합니다. 추론 중에는 일반적으로 모델이 이러한 값을 고정한 채 새로운 입력에 결과 계산을 적용합니다.

파라미터는 사용자가 요청마다 조정하는 손잡이가 아닙니다. 파라미터는 모델 자체의 일부입니다.

파라미터의 작동 방식

신경망 계층은 일반적으로 다음과 같은 형태의 계산을 수행합니다:

[\n\\text{output} = f(\\text{input} \\times \\text{weight matrix} + \\text{bias vector})\n]

가중치 행렬과 편향 벡터에는 파라미터가 들어 있습니다. 함수 (f)는 아키텍처의 일부이며, 자체적으로 파라미터를 포함하지 않을 수도 있습니다.

아키텍처는 파라미터 텐서의 형태를 결정합니다. 한 계층이 입력값 2개와 출력값 3개를 연결한다면 가중치 행렬에는 스칼라 항목 6개가 필요합니다:

2 inputs ──> [2 × 3 weight matrix] ──> 3 outputs
                       +
              [3-value bias vector]

독립적으로 저장되는 각 스칼라 항목은 파라미터 1개로 계산됩니다. 모델은 처리하는 모든 예제에 동일한 항목을 사용합니다. 하나의 파라미터를 백만 번 적용한다고 해서 파라미터가 백만 개가 되는 것은 아닙니다.

학습 중에는 옵티마이저가 각 학습 가능한 파라미터를 조금 변경했을 때 모델의 오류가 어떻게 달라지는지에 대한 정보를 받습니다. 그런 다음 값을 업데이트합니다. 이 과정을 반복하면 새로운 입력을 유용한 출력으로 매핑하는 파라미터 집합을 얻을 수 있습니다.

‘학습 가능(trainable)’이라는 말은 주의해서 사용해야 합니다. 특정 학습 실행에서 업데이트되지 않도록 파라미터를 동결할 수 있습니다. 그래도 해당 파라미터는 모델의 학습 완료 상태에 포함됩니다. 프레임워크는 계산에 영향을 주지만 파라미터로 취급하지 않는 다른 상태도 저장합니다. PyTorch에서는 이러한 상태를 버퍼(buffer)라고 하며, Keras에서는 더 넓은 의미의 ‘가중치(weights)’ 컬렉션을 사용하고 이를 학습 가능한 가중치와 학습 불가능한 가중치로 나눕니다.

파라미터 수 계산 예시

입력값 2개, 출력값 3개인 은닉 계층 1개, 최종 출력값 1개로 구성된 작은 네트워크를 생각해 보겠습니다.

첫 번째 계층에는 다음이 있습니다:

  • (2 \\times 3 = 6)개의 가중치
  • 3개의 편향
  • 총 9개의 파라미터

최종 계층에는 다음이 있습니다:

  • (3 \\times 1 = 3)개의 가중치
  • 1개의 편향
  • 총 4개의 파라미터

전체 네트워크에는 (9 + 4 = 13)개의 파라미터가 있습니다.

입력값은 예제마다 달라지므로 파라미터에 포함되지 않습니다. 중간 출력값도 포함되지 않습니다. 중간 출력값은 임시 결과이기 때문입니다. 이 예시의 활성화 함수는 파라미터를 추가하지 않습니다. 가중치 행렬과 편향 벡터에 독립적으로 저장된 값만 파라미터 수에 기여합니다.

이 형태 기반 방법은 더 큰 모델에도 적용됩니다. 각 파라미터 텐서의 스칼라 항목 수를 세고 모두 더하면 됩니다. 파라미터가 공유되는 경우에는 모델이 사용하는 위치를 모두 세지 말고 저장된 값을 한 번만 세야 합니다.

파라미터 수가 중요한 이유

파라미터 수는 모델이 학습한 수치 상태의 크기를 나타냅니다. 이는 여러 실용적 특성에 영향을 줍니다.

첫째, 저장된 파라미터는 메모리를 차지합니다. 필요한 메모리 양은 파라미터 수와 각 값의 표현 방식에 따라 달라집니다. 16비트 표현은 파라미터가 아닌 상태와 파일 오버헤드를 고려하기 전에 저장된 스칼라 하나당 2바이트를 사용합니다.

둘째, 파라미터는 계산에 참여합니다. 파라미터가 많으면 산술 연산도 많아지는 경우가 많지만, 아키텍처, 파라미터 공유, 그리고 모델의 어느 부분이 활성화되는지에 따라 이러한 관계는 달라질 수 있습니다.

셋째, 파라미터 수는 모델이 패턴에 맞출 수 있는 용량을 설명하는 데 도움이 됩니다. 하지만 그 용량이 얼마나 잘 활용되었는지를 측정하지는 않습니다. 학습 데이터, 목적 함수, 아키텍처, 최적화, 평가가 모두 중요합니다. 파라미터가 많은 모델이 자동으로 더 정확하거나, 더 많은 지식을 갖추거나, 더 유용한 것은 아닙니다.

파라미터 수에는 산정 기준을 표시해야 합니다. 도구나 논문은 전체 파라미터, 현재 학습 가능으로 표시된 파라미터만의 수, 또는 임베딩을 제외한 수를 보고할 수 있습니다. 이러한 수치는 서로 다른 질문에 답하므로 동일한 것으로 간주해 비교해서는 안 됩니다.

흔한 오해

파라미터는 하이퍼파라미터가 아닙니다

파라미터는 모델의 일부로 학습되어 결정되는 값입니다. 하이퍼파라미터는 모델이나 학습 과정을 설정합니다. 학습률과 배치 크기는 일반적인 하이퍼파라미터입니다. 이러한 값은 학습 진행 방식에 영향을 주지만, 결과 모델 내부에서 학습되는 값은 아닙니다.

파라미터와 가중치는 정확한 동의어가 아닙니다

가중치는 파라미터의 주요 유형이므로 두 용어를 서로 바꿔 쓰는 경우가 많습니다. 하지만 편향도 파라미터이며, 일부 정규화 계층에서 학습되는 스케일 및 오프셋 값도 파라미터입니다. ‘가중치’는 프레임워크에 따라 더 넓은 의미로 사용되기도 합니다. 파라미터 수는 해당 수를 산출한 도구나 모델 제공자가 정의한 기준에 따라 해석하는 것이 가장 안전합니다.

파라미터 하나가 사실 하나를 의미하는 것은 아닙니다

학습된 모델의 동작은 수많은 파라미터 값이 함께 작용한 결과입니다. 하나의 값이 ‘파리는 프랑스의 수도이다’와 같은 일반 언어적 의미를 갖는 경우는 드뭅니다. 정보는 여러 값에 분산될 수 있으며, 하나의 값이 여러 출력에 영향을 줄 수도 있습니다.

파라미터가 많다고 더 나은 모델이 보장되는 것은 아닙니다

파라미터 수는 품질이 아니라 수량을 측정합니다. 아키텍처, 데이터, 학습이 용량을 효과적으로 활용하면 용량 증가가 도움이 될 수 있습니다. 반대로 메모리와 계산을 낭비하거나 원치 않는 패턴에 과적합할 수도 있습니다. 성능은 중요한 작업을 기준으로 측정해야 합니다.

저장된 모든 값이 반드시 파라미터인 것은 아닙니다

모델은 파라미터와 함께 실행 통계, 캐시 또는 기타 상태를 보관할 수 있습니다. 프레임워크마다 이러한 상태를 다르게 분류합니다. 정확한 수를 확인하려면 체크포인트의 모든 텐서 크기를 세기보다 프레임워크의 파라미터 열거 기능을 사용해야 합니다.

파라미터와 모델의 관계

신경망 아키텍처는 연산과 파라미터 텐서의 형태를 결정합니다. 초기화는 이러한 텐서에 시작 값을 부여합니다. 학습은 학습 가능한 값을 변경합니다. 체크포인트는 그 결과로 얻은 값을 저장하며, 추가 상태를 함께 저장하는 경우가 많습니다. 추론은 이러한 값을 불러와 출력 계산에 사용합니다. determines the operations and the shapes of the parameter tensors. Initialization gives those tensors starting values. Training changes the trainable values. A checkpoint saves the resulting values, often with additional state. Inference loads them and uses them to compute outputs.

따라서 파라미터는 모델 전체도 아니고 단순한 모델 사양도 아닙니다. 실제로 사용할 수 있는 학습된 모델은 아키텍처와 특정 파라미터 값이 결합된 것입니다.

다음에 읽을 내용

신경망 파라미터 대부분을 구성하는 곱셈 계수의 역할을 알아보려면 모델 가중치란 무엇인가요?를 읽어 보세요. 그런 다음 두 용어의 정확한 경계를 확인하려면 모델 파라미터와 모델 가중치를 살펴보세요.