딥 러닝은 입력과 출력 사이에 여러 '은닉층'의 노드가 존재하는 네트워크인 다층 인공 신경망(ANN)을 사용합니다.
인공 신경망은 입력의 가중합에 비선형 함수를 적용하여 입력 데이터를 변환합니다. 변환은 신경층이라 하고, 함수는 신경 단위라고 합니다.
한 층의 중간 출력은 특징이라고 하며, 다음 층의 입력으로 사용됩니다. 신경망은 반복적인 변환을 통해 여러 층의 비선형 특징(예: 가장자리와 모양)을 학습한 다음, 최종 층에서 이를 결합하여 (더 복잡한 개체에 대한) 예측을 생성합니다.
오차가 경사 하강이라는 프로세스 내에서 역전파를 통해 다시 신경망 전체로 전달되면 가중치가 조정되고 모델이 개선됩니다. 신경망은 신경망의 예측과 원하는 값 사이의 차이를 최소화하도록 네트워크의 가중치 또는 매개변수를 변경하는 방식으로 학습합니다. 발생하는 오차에 대응하여 모델의 가중치를 조정하는 이 프로세스는 오차를 더 이상 줄일 수 없을 때까지 수천 번 반복됩니다. 인공 신경망이 데이터에서 학습하는 이 단계를 훈련이라고 합니다. 이 과정에서 층들은 모델을 위한 최적의 특징을 학습하므로, 특징을 미리 결정할 필요가 없다는 장점이 있습니다.
GPU: 딥 러닝의 핵심
구조적으로 볼 때, CPU는 단 몇 개의 코어와 많은 캐시 메모리로 구성되어 있어 한 번에 처리할 수 있는 소프트웨어 스레드가 적습니다. 반대로 GPU는 수백 개의 코어로 구성되어 있어 수천 개의 스레드를 동시에 처리할 수 있습니다.
최첨단 딥 러닝 신경망의 경우 역전파를 통해 조정해야 하는 매개변수가 수백만 개에서 10억 개 이상에 이를 수 있습니다. 또한 높은 정확도를 얻기 위해 많은 양의 학습 데이터가 필요합니다. 즉, 수십만에서 수백만 개에 이르는 입력 샘플을 순방향 패스 및 역방향 패스 양쪽으로 실행해야 합니다. 신경망은 수많은 동일 뉴런에서 생성되기 때문에 본질적으로 병렬성이 매우 높습니다. 이러한 병렬성은 자연스럽게 GPU로 매핑됩니다. GPU는 CPU만 사용하는 훈련에 비해 월등히 높은 연산 속도를 제공하므로 복잡한 대규모 신경망 기반 시스템을 훈련시키기 위한 플랫폼으로 선택되어 왔으며, 병렬성이 특징인 추론 작업 또한 GPU에서 실행하기에 매우 알맞습니다.