GPU 와 학습 — 틀리고 고치기(경사하강)를 그림으로
Article
2강에서 학습을 "예측 → 채점 → 조정"의 고리라 했다. 그리고 이렇게 미뤄뒀다. "그 '조금'을 어느 방향으로 도느냐가 11강의 경사하강이다." 10강 끝에서는 또 하나를 미뤘다 — 늘어난 가중치를 조정하는 계산이 왜 무거운 작업이고, 왜 GPU 가 필요한지.
이번 강이 그 두 가지를 다 갚는다. Part 3 의 마지막 강이기도 하다.
안개 낀 산에서 내려오는 것과 같다
가중치를 조정하는 일을 산에서 내려오는 상황에 비유하면 쉽다. 안개가 잔뜩 껴서 멀리는 안 보이고, 발밑만 느껴진다고 하자. 목표는 가장 낮은 곳을 찾는 것이다. 이 "낮음"이 바로 2강에서 본 "틀린 정도(손실)"다 — 낮을수록 잘 맞힌다는 뜻이다.
- 지금 서 있는 자리지금의 가중치 값 그대로 손실을 재본 상태
- 발밑 기울기를 느낀다어느 방향이 더 낮아지는지(경사)를 계산한다
- 그 방향으로 한 걸음가중치를 그 방향으로 아주 조금 옮긴다
- 다시 발밑을 느낀다새 자리에서 또 기울기를 재고, 다시 한 걸음
멀리 있는 골짜기 전체를 한눈에 보고 찾아가는 게 아니다. 발밑의 기울기, 그 순간의 정보만 보고 한 걸음씩 내려간다. 이 "기울기"를 계산하는 과정을 경사하강(gradient descent)이라 부르고, 한 걸음의 크기를 **학습률(learning rate)**이라 부른다.
보폭이 너무 크면
학습률이 너무 높다
- 골짜기를 훌쩍 지나쳐 반대편으로 넘어간다
- 가장 낮은 곳 근처에서 왔다 갔다 하며 안정되지 못한다
- "틀린 정도"가 줄지 않고 오히려 들쭉날쭉해진다
보폭이 적당하면
노리는 지점
- 한 걸음씩 착실히 낮은 쪽으로 내려간다
- 적당한 횟수 안에 골짜기 근처에 도달한다
보폭이 너무 작으면
학습률이 너무 낮다
- 한 걸음이 너무 짧아 내려가는 데 오래 걸린다
- 정해진 시간 안에 골짜기 근처에도 못 간다
왜 이 계산에 GPU 가 필요한가
이 "한 걸음"이 왜 무거운 계산일까. 9강에서 본 신경망 그림을 다시 떠올리면, 층 하나에도 뉴런이 수백 개, 연결선(가중치)은 그보다 훨씬 많다. 한 걸음을 내딛으려면 이 가중치 하나하나마다 얼마나 움직여야 할지를 전부 따로 계산해야 한다. 그것도 학습 고리를 수만 번 도는 내내.
CPU 는 복잡한 판단이 섞인 작업을 순서대로 빠르게 처리하는 데 강하다. 반면 가중치 갱신은 "곱하고 더하라"는 단순한 연산이 수백만 번 동시에 반복되는 작업이다. 이런 단순 연산을 대량으로 병렬 처리하도록 설계된 게 GPU 다. 같은 계산을 CPU 로도 할 수는 있지만, 병렬로 나눠 처리하지 못해 훨씬 오래 걸린다.
정리하면
경사하강은 발밑 기울기를 느끼며 손실이 낮아지는 방향으로 한 걸음씩 내딛는 일이다. 이 계산이 가중치 수만큼 반복되기 때문에, 단순 연산을 대량 병렬로 처리하는 GPU 가 필요하다.
- 01
경사하강은 산에서 내려오는 것과 같다
발밑 기울기(경사)를 느끼고, 손실이 낮아지는 방향으로 한 걸음씩 옮긴다. 2강 고리의 '조정' 칸의 실체다.
- 02
한 걸음의 크기가 학습률이다
너무 크면 골짜기를 지나치고, 너무 작으면 너무 늦게 도착한다.
- 03
이 계산은 가중치 개수만큼 반복된다
9강에서 본 것처럼 가중치가 수백만~수십억 개면, 한 걸음마다 그만큼 계산이 필요하다.
- 04
그래서 단순 연산을 병렬로 처리하는 GPU 를 쓴다
GPU 없이도 되지만, 감당 가능한 시간 안에 끝내려면 사실상 GPU 가 필요하다.
Part 3이 끝났다. 뉴런·층·가중치로 신경망의 겉모습을 봤고(9강), 층을 깊게 쌓으면 왜 더 나은지를 봤고(10강), 그 가중치를 실제로 조정하는 경사하강과 GPU 이야기까지 왔다(11강).
여기까지가 딥러닝이라는 땅이었다. 다음 강의부터는 지도의 가장 안쪽, 요즘 모두가 이야기하는 생성형 AI 와 LLM 으로 들어간다. ChatGPT 같은 것들이 실제로 하는 일이 "다음 단어를 잘 맞히는 것"뿐이라는, 다소 허탈한 진실부터 본다.