홈
Think
주제
역전파
발행일: 2024년 7월 2일
작성자: 데이브 버그만(Dave Bergmann), 콜 스트라이커(Cole Stryker)
"오차 역전파"의 줄임말인 역전파는 신경망의 가중치 또는 편향에 대한 변경이 모델 예측의 정확도에 어떤 영향을 미치는지 계산하는 효율적인 방법입니다. 지도 학습, 준지도 학습 또는 자기 지도 학습을 사용하여 신경망을 학습시키는 데 필수적입니다.
1960년대부터 다양한 맥락에서 역전파에 상응하는 개념과 그 이전 개념이 독립적으로 제안되었지만, 데이비드 루멜하트(David E. Rumelhart), 제프리 힌튼(Geoffrey Hinton), 로널드 윌리엄스(Ronald J. Williams)가 처음으로 공식 학습 알고리즘을 발표했습니다. 1986년에 발표된 논문 'Learning representations by back-propagating errors'은 현대 머신 러닝 환경에서 사용되고 이해되는 역전파 알고리즘을 제공했습니다.
역전파의 논리는 인공 신경망의 뉴런 계층이 본질적으로 일련의 중첩된 수학적 함수라는 것입니다. 학습하는 동안 이러한 상호 연결된 방정식은 또 다른 함수인 "손실 함수"에 중첩됩니다. 이 함수는 주어진 입력에 대한 원하는 출력(또는 "실제 값")과 신경망의 실제 출력 간의 차이(또는 "손실")를 측정합니다.
이 덕분에 17세기에 만들어진 미적분 원리인 '연쇄 법칙'을 사용하여 각 뉴런이 전체 손실에 기여하는 비율을 계산할 수 있습니다. 이를 통해 뉴런이 나타내는 방정식 내에서 변수, 즉 가중치 또는 편향에 대한 변화의 영향을 계산할 수 있습니다.
수학적으로 말하자면, 역전파는 손실 함수의 "그래디언트"(네트워크의 모든 방정식에 대한 도함수 벡터)를 효율적으로 계산하기 위해 출력에서 역방향으로 작동합니다. 이 그래디언트는 "그래디언트 하강법"과 같은 최적화 알고리즘에 어떤 방정식을 조정하고 어느 방향으로 조정하여 손실을 줄여야 하는지 알려줍니다.
서로 다른 입력에 걸쳐 모델 오류를 추적하는 손실 함수, 네트워크의 여러 부분이 오류에 어떻게 기여하는지 확인하기 위한 해당 오류의 역전파, 그에 따라 모델 가중치를 조정하는 그래디언트 하강법 알고리즘의 이러한 서로 얽힌 세 가지 프로세스가 딥 러닝 모델이 "학습"하는 방식입니다. 따라서 역전파는 가장 기본적인 다층 퍼셉트론부터 생성형 AI에 사용되는 복잡한 심층 신경망 아키텍처에 이르기까지 신경망 모델 학습의 기본입니다.
대부분의 조직이 생성형 AI에 기대하는 결과를 명확하게 알고 있지만, 모델을 잘못 선택하면 비즈니스에 심각한 영향을 미칠 수 있습니다. 이 전자책에서는 성능 요구 사항과 비용, 위험, 배포 요구 사항 및 이해관계자들의 요구 사항 사이에서 균형을 맞추기 위한 모델 선택 프레임워크를 살펴봅니다.
역전파 과정은 신경망이 학습되는 방식에서 아주 중요하므로, 이 과정을 설명하려면 신경망이 예측하는 방식을 실질적으로 이해할 수 있어야 합니다.
가장 중요한 것은 "가중치" 및 "편향", 즉 역전파 및 그래디언트 하강법을 통해 최적화되는 조정 가능한 모델 매개 변수의 목적과 맥락을 이해하는 것이 유용하다는 것입니다.
신경망은 인간의 뇌 구조를 대략적으로 모방하는 것을 목표로 합니다. 신경망은 여러 층으로 배열된 많은 상호 연결된 노드(또는 뉴런)로 구성됩니다. 원본 입력 데이터가 전체 네트워크를 통해 '정방향 패스'되면 신경망이 예측을 합니다.
"입력 계층"의 뉴런은 일반적으로 벡터 임베딩의 형태로 입력 데이터를 받으며, 각 입력 뉴런은 입력 벡터의 개별적인 특징을 받습니다. 예를 들어, 10x10 픽셀 회색조 이미지로 작동하는 모델에는 일반적으로 입력 계층에 100개의 뉴런이 있으며 각 입력 뉴런은 개별 픽셀에 해당합니다. 따라서 신경망은 일반적으로 고정된 크기의 입력을 필요로 하지만 풀링이나 정규화와 같은 기술을 사용하면 어느 정도 유연성을 제공할 수 있습니다.
표준 피드포워드 신경망에서 입력 계층에 있는 각 뉴런은 다음 계층의 각 뉴런에 연결되고, 그 뉴런은 다시 다음 계층의 뉴런에 연결되며, 최종 예측이 이루어지는 출력 계층까지 이런 연결이 계속됩니다. 입력 계층과 출력 계층 사이의 중간 계층들은 네트워크의 은닉 계층이라고 불리며, 이곳에서 대부분의 '학습'이 이루어집니다.
전문가 모델의 혼합 또는 컨볼루션 신경망과 같은 일부 특수 신경망 아키텍처는 이 간단한 배열에 변형, 추가 또는 예외를 수반하지만, 모든 신경망은 이 핵심 구조를 사용합니다.
각 뉴런은 이전 계층의 각 노드로부터 입력을 받지만 모든 입력에 동일한 중요도가 부여되는 것은 아닙니다. 두 뉴런 사이의 각 연결에는 다음 계층의 뉴런에 대한 한 뉴런의 기여도를 증가 또는 감소시키는 승수인 '가중치'가 부여됩니다.
각 뉴런에는 '편향'이 주어질 수도 있습니다. 편향은 이전 계층의 뉴런에서 나온 가중치 입력의 합에 더해지는 상수 값입니다.
역전파 및 경사 하강법의 궁극적인 목표는 최상의 모델 예측을 산출하는 가중치와 편향을 계산하는 것입니다. 정확한 예측과 유의미한 상관관계를 가지는 데이터 특징에 해당하는 뉴런에는 더 큰 가중치가 부여되고, 그 외의 연결에는 0에 가까운 가중치가 부여될 수 있습니다.
계층마다 은닉 계층이 수십 개씩 있고 각 계층에 수많은 신경이 담겨있는 최신 심층 신경망의 경우 수천, 수백만 개의 조정 가능한 매개변수가 있을 수 있습니다. 가장 방대한 대규모 언어 모델(LLM)이라면 이 개수가 경우 수십억을 육박하기도 합니다.
각 뉴런은 이전 계층의 노드에서 받은 다양한 가중치가 부여된 입력의 합에 대해 "활성화 함수"라고 하는 수학적 연산을 수행하도록 구성됩니다. 활성화 함수는 "비선형성"을 도입하여 모델이 입력 데이터에서 복잡한 패턴을 포착하고 최적화 가능한 그래디언트를 생성할 수 있도록 합니다. 선형 활성화 함수만 사용하면 신경망이 본질적으로 선형 회귀 모델로 축소됩니다.
신경망의 일반적인 활성화 함수은 다음과 같습니다.
입력 계층에 3개의 입력 노드 a , b , c가 있는 신경망의 두 번째 계층에서 tanh 활성화 함수와 편향 항 t를 가진 가상의 숨겨 단위 z가 있다고 가정해 보겠습니다. 입력 노드와 노드 z 사이의 각 연결에는 고유한 가중치 w가 있습니다.노드 z가 다음 층의 뉴런에 전달하는 출력값은 단순화된 방정식 z = tanh(waz*a + wbz*b + wcz*c + t)로 설명할 수 있습니다 .
뉴런 z는 다음 계층의 뉴런에 연결됩니다. 따라서 z에 대한 이 방정식은 다음 계층의 활성화 함수의 일부이며, 더 나아가 후속 계층의 모든 뉴런에 대한 모든 활성화 함수의 일부이기도 합니다.
다음 섹션에서 설명하겠지만, 역전파는 신경망에서 상호 연결된 변수와 방정식의 방대한 그물망을 빠르고 효율적으로 풀기 위한 알고리즘입니다.
마이클 닐슨(Michael Nielsen)은 온라인 교재 "Neural Networks and Deep Learning"에서 역전파의 효율성을 설명하기 위해 이를 신경망의 손실 함수 기울기를 계산하는 간단하고 직관적인 대안적 접근 방식과 비교합니다.
Nielsen이 설명한 것처럼, 다른 매개변수를 일체 변경하지 않고 유지하면서 서로 조금씩 다른 두 개의 wj 값에 대한 정방향 패스를 완료하고 그에 따른 각 패스의 손실을 비교하면 네트워크에서 특정 가중치 wj 수정의 영향을 쉽게 추정할 수 있습니다. 이 과정을 간단한 방정식으로 만들고 Python에서 코드를 몇 줄로 구현하면, 네트워크의 각 가중치에 대해 이 과정을 자동화할 수 있습니다.
하지만 이제 모델에 100만 개의 가중치가 있다고 상상해 보세요.이 값은 최신 딥 러닝 모델에서는 상당히 적은 편입니다. 전체 그래디언트를 계산하려면 네트워크를 통한 1,000,001회의 순방향 패스를 완료해야 합니다. 여기서 1번은 기준선을 설정한 다음, 또 다른 패스는 백만 개의 가중치 각각에 대한 변화를 평가합니다.
역전파는 2번의 패스, 즉 순방향 패스 1회, 역방향 패스 1회로 동일한 목표를 달성할 수 있습니다.
역전파의 작동 원리를 간단하게 설명하려면 먼저 몇 가지 핵심 수학적 개념과 용어를 간략하게 살펴보는 것이 도움이 될 것입니다.
연쇄 규칙은 신경망에서 활성화 함수의 도함수를 계산하는 데 필수적이며, 이는 이전 계층에 있는 다른 뉴런의 활성화 함수 출력으로 구성됩니다.
역전파의 논리는 비교적 간단하지만, 변수 미적분에 익숙하지 않은 사람에게는 수학과 표기법이 매우 복잡하게 보일 수 있습니다.
역전파는 모델의 출력에서 역방향으로 작업하면서 '연쇄 법칙'을 적용해 각 개별 신경망 매개변수의 변경이 모델 예측의 전체 오차에 미치는 영향을 계산합니다.
추상적으로 말하자면, 역전파의 목적은 지도 학습을 통해 더 나은 예측을 할 수 있도록 신경망을 훈련시키는 것입니다. 보다 근본적인 측면에서 역전파의 목표는 '손실 함수'로 측정된 오차를 최소화하기 위해 모델 가중치와 편향을 어떻게 조정해야 하는지 결정하는 것입니다.
기술적, 수학적 수준에서 역전파의 목표는 신경망의 각 매개변수에 대한 손실 함수의 기울기를 계산하는 것입니다. 간단히 말해 역전파는 연쇄 법칙을 사용하여 네트워크의 특정 가중치(또는 편향)에 대한 변화에 따라 손실이 변화하는 비율을 계산합니다.
일반적으로 역전파를 사용하여 신경망을 훈련시키려면 다음 단계를 수행해야 합니다.
순전파를 통한 신경망 출력 예측 본질적으로 긴 일련의 중첩 방정식인 정방향 전파는 한 뉴런 계층의 활성화 함수의 출력을 다음 층의 뉴런 활성화 함수에 대한 입력으로 사용합니다.
모델 학습은 일반적으로 가중치와 편향의 무작위 초기화로 시작됩니다. 숨겨진 계층의 수, 각 계층의 노드 수, 특정 뉴런에 대한 활성화 함수와 같은 모델 하이퍼파라미터는 수동으로 구성되며 학습의 대상이 아닙니다.
각 정방향 패스에서, 훈련 데이터 세트로부터 입력을 샘플링합니다. 입력 계층의 노드는 입력 벡터를 수신하고, 각 노드는 자신의 값(임의의 초기 가중치를 곱한 값)을 첫 번째 은닉 계층의 노드로 전달합니다. 숨겨진 단위는 이 출력 값의 가중 합을 활성화 함수에 대한 입력 값으로 사용하며, 이 출력 값(임의의 초기 가중치에 의해 조건화)은 다음 계층의 뉴런에 대한 입력 값 역할을 합니다. 이는 최종 예측이 발생하는 출력 계층까지 계속됩니다.
입력을 5가지 범주 중 하나로 분류하는 신경망의 간단한 예를 생각해 보세요.
잘 학습된 네트워크에서 이 모델은 올바른 분류에 대해서는 일관되게 높은 확률값을 출력하고, 잘못된 분류에 대해서는 낮은 확률값을 출력합니다. 그러나 이 신경망은 아직 학습되지 않았습니다. 이 시점에서 가중치와 편향은 임의의 초기 값을 가지므로 일반적으로 예측은 부정확합니다.
각 순방향 통과 후 "손실 함수"는 주어진 입력에 대한 모델의 예측 출력과 해당 입력에 대한 올바른 예측(또는 "실제 값") 간의 차이(또는 "손실")를 측정합니다. 즉, 모델의 실제 출력이 원하는 출력과 얼마나 다른지 측정합니다.
레이블이 지정된 데이터를 사용하는 지도 학습에서는 수동 주석을 통해 기준값을 제공합니다. 레이블이 지정되지 않은 데이터 샘플과 태스크 모델의 일부를 마스킹하거나 변환하여 재구성하는 자기 지도 학습에서는 원본 샘플 자체가 기준값으로 사용됩니다.
이 손실 함수의 목표는 각 입력에 대한 모델 출력의 오차 특성과 크기를 모두 적절히 반영하는 방식으로 부정확성을 정량화하는 것입니다. 손실에 대한 다양한 수학 공식은 각각 특정 작업에 가장 적합합니다. 예를 들어, 평균 제곱 오차의 변형은 회귀 문제에 잘 작동하는 반면, 교차 엔트로피 손실의 변형은 분류에 적합합니다.
손실 함수는 신경망의 출력을 입력으로 사용하고, 신경망 출력은 개별 뉴런의 여러 중첩된 활성화 함수로 구성된 복합 함수이므로 손실 함수를 미분하는 것은 전체 네트워크를 미분하는 것을 수반합니다. 이를 위해 역전파는 연쇄 법칙을 사용합니다.
"손실 함수", "비용 함수" 또는 "오차 함수?"
일부 상황에서는 비용 함수 또는 오차 함수 라는 용어가 손실 함수 대신 사용되며, '비용' 또는 '오차'가 '손실'을 대신할 수 있다는 점을 간단히 알아두는 것이 좋습니다.
일부 머신 러닝 문헌에서는 각 용어에 고유한 뉘앙스를 부여하지만, 일반적으로 서로 바꿔 사용할 수있습니다.1 목적 함수는 최소화하거나 최대화하려는 모든 평가 함수를 포괄적으로 일컫는 용어입니다. 손실 함수, 비용 함수 또는 오차 함수는 최소화하려는 조건을 구체적으로 나타냅니다.
마지막 계층에서 시작하는 '역방향 패스'는 손실 함수를 미분하여 네트워크의 각 매개변수가 단일 입력에 대한 전체 오차에 어떻게 기여하는지 계산합니다.
분류기 모델의 이전 예로 돌아가서, 최종 계층에 있는 5개의 뉴런으로 시작하여 레이어 L이라고 합니다 . 각 출력 뉴런의 소프트맥스 값은 입력이 해당 범주에 속할 가능성을 1점 만점으로 나타냅니다. 완벽하게 학습된 모델에서 올바른 분류를 나타내는 뉴런은 1에 가까운 출력값을 가지며, 다른 뉴런은 0에 가까운 출력값을 갖습니다.
지금은 Lc라고 부르는, 정확한 예측을 나타내는 출력 단위에 초점을 맞춥니다. Lc의 활성화 함수는 입력 계층에서 출력 계층까지 신경망 전체에 걸쳐 많은 중첩 활성화 함수를 포함하는 복합 함수입니다. 손실 함수를 최소화하려면 Lc의 활성화 함수 출력값을 1에 가깝게 만들도록 네트워크 전체를 조정해야 합니다.
이를 위해 이전 계층의 변경 사항이 Lc 자체 출력을 어떻게 변경하는지 알아야 합니다. 즉, Lc 활성화 함수의 편도함수를 구해야 합니다.
Lc의 활성화 함수의 출력은 L-1이라고 부르는 끝에서 두 번째 계층의 뉴런으로부터 받는 기여도에 따라 달라집니다.Lc의 출력을 변경하는 한 가지 방법은 L-1과 Lc의 뉴런 간 가중치를 변경하는 것입니다. 다른 가중치에 대한 각 L-1 가중치의 편미분을 계산하면, 가중치 하나를 증가 또는 감소시켰을 때 1에 가까운(또는 1에서 먼) Lc의 출력 값을 내는 방법을 알 수 있습니다.
그러나 Lc의 출력을 변경하는 방법은 이뿐만이 아닙니다. Lc가 L-1 뉴런으로부터 받는 기여도는 L-1 의 출력 값에 적용된 가중치만이 아니라 실제(가중치 적용 전) 출력 값 자체에 의해서도 결정됩니다. L-1 뉴런의 출력 값은 결과적으로, L-2에서 받은 입력 값에 적용된 가중치의 영향을 받습니다.따라서 L-1 의 활성화 함수를 미분하여 L-2의 기여도에 적용된 가중치의 편도함수를 찾을 수 있습니다. 이 편도함수는 L-2 가중치에 대한 변화가 L-1의 출력에 어떤 영향을 미치는지 보여주며, 이는 결과적으로 Lc의 출력 값에 영향을 미치고 이에 따라 손실 함수에 영향을 미칩니다.
동일한 논리로 L-2 뉴런이 L-3의 뉴런으로부터 받는 기여도를 조정하여 L-1 뉴런이 L-2 뉴런으로부터 받는 출력 값에도 영향을 줄 수 있습니다. 따라서 L-3에서 편도함수를 구하고, 이런 식으로 입력 계층에 도달할 때까지 이 과정을 재귀적으로 반복합니다. 이 작업이 완료되면 네트워크의 각 가중치와 편향 매개변수에 대한 편도함수의 벡터인 손실 함수의 기울기가 생성됩니다.
이제 한 학습 예제에 대한 정방향 패스와 역방향 패스를 완료했습니다. 하지만 여기서 목표는 모델이 새로운 입력에 잘 일반화되도록 학습시키는 것입니다. 이를 위해서는 모델이 학습 후 예측을 수행해야 할 입력의 다양성과 범위를 반영하는 많은 수의 샘플에 대해 학습해야 합니다.
네트워크의 각 가중치 및 편향 매개변수에 대한 손실 함수의 기울기를 알았으므로 이제 경사 하강법을 사용하여 모델 매개변수를 업데이트함으로써 손실 함수를 최소화하고 모델을 최적화할 수 있습니다.
아래쪽으로 이동(내림차순)하면 손실 함수의 그래디언트가 손실을 줄입니다. 역전파 중에 계산한 그래디언트에는 모든 모델 매개 변수에 대한 편도함수가 포함되어 있기 때문에 손실을 줄이기 위해 각 매개 변수를 "단계화"해야 하는 방향을 알고 있습니다.
각 단계는 모델이 학습 데이터에서 '학습'하는 것을 반영합니다. 목표는 최소 기울기에 도달할 때까지 가중치를 반복적으로 업데이트하는 것입니다. 경사 하강법 알고리즘의 목적은 기울기가 가장 효율적으로 내려갈 수 있는 특정 매개변수 조정을 찾는 것입니다.
학습률
각 단계의 크기는 학습률이라고 하는 조정 가능한 하이퍼매개변수입니다.효율적이고 효과적인 학습을 위해서는 적절한 학습률을 선택하는 것이 중요합니다.
신경망의 활성화 함수는 비선형이라는 점을 기억하세요. 대략 U자형의 기울기도 나올 수 있습니다. 한 방향으로 발걸음을 옮기면 기울기가 내려가지만 해당 방향으로 계속 발걸음을 옮기면 결국 기울기가 올라갑니다.
학습률이 낮으면 항상 올바른 방향으로 나아갈 수 있지만 계산할 변경 사항이 너무 많아져 시간과 계산 비용이 많이 듭니다. 학습률이 높으면 계산 효율성이 높지만 최소값을 초과할 위험이 있습니다.
배치 크기
경사 하강법에서 고려해야 할 또 다른 사항은 가중치를 얼마나 자주 업데이트할 것인가입니다. 한 가지 옵션은 학습 데이터 세트의 모든 예제에 대한 기울기를 계산한 다음, 해당 기울기의 평균을 구하고 이를 사용하여 매개변수를 업데이트하는 것입니다. 이 과정은 오류율이 안정될 때까지 여러 번의 학습 기간에서 반복적으로 수행됩니다. 이 방법은 배치 경사 하강법 입니다.
딥러닝에서 흔히 그렇듯 훈련 데이터 세트가 매우 방대한 경우, 일괄 경사 하강법을 사용하면 처리 시간이 엄청나게 길어집니다. 가중치 업데이트가 반복될 때마다 수백만 개의 예제에 대한 그라데이션을 계산하는 것은 비효율적입니다. 확률적 경사 하강법(SGD)에서는 각 에포크가 단계마다 단일 훈련 예제를 사용합니다. 에포크에 따라 손실에 변동이 있을 수 있지만 많은 업데이트를 거치면서 빠르게 최소로 수렴합니다.
미니 배치 경사 하강은 중간 정도의 접근 방식을 나타냅니다. 학습 예제는 고정된 크기의 배치로 무작위 샘플링된 다음 해당 그래디언트를 계산하고 평균을 냅니다. 이렇게 하면 배치 경사 하강법의 메모리 저장 요구 사항을 완화하는 동시에 SGD의 상대적 불안정성을 줄일 수 있습니다.
생성형 AI, 파운데이션 모델, 머신 러닝 모델을 쉽게 훈련, 검증, 조정 및 배포할 수 있으며 적은 데이터로 짧은 시간 내에 AI 애플리케이션을 구축할 수 있습니다.
AI로 작업하는 방식을 새롭게 상상해 보세요. 20,000여 명의 다양한 글로벌 AI 전문가 팀은 비즈니스 전반에 걸쳐 AI와 자동화를 신속하고 자신 있게 설계하고 확장할 수 있도록 지원하며, 자체 IBM watsonx 기술과 파트너사의 개방형 에코시스템을 통해 윤리와 신뢰를 바탕으로 모든 클라우드에서 모든 AI 모델을 제공할 수 있습니다.
IBM의 차세대 AI 및 데이터 플랫폼으로 AI의 역량을 강화하세요.
신경망을 더 쉽게 사용할 수 있게 만들어주는 프레임워크의 도움 없이 신경망을 구축하는 기본 사항을 알아보세요.
딥 러닝에 대해 자세히 알아보세요. 인간 두뇌의 복잡한 의사 결정 능력을 시뮬레이션하는 데 다층 신경망을 사용하는 머신 러닝의 하위 분야입니다. 딥 러닝은 오늘날 우리 삶에서 대부분의 AI 애플리케이션을 지원합니다.
예측 알고리즘의 시작부터 최신 딥 러닝의 이정표에 이르는 간략한 역사와 기본 개념을 비롯하여 AI와 그 하위 분야의 주요 측면을 살펴보세요.
¹ "Deep Learning", Goodfellow et al, MIT Press, 2016.