가지치기Pruning

안 쓰는 연결을 잘라내 모델을 가볍게 하기

핵심 정리
  • 가지치기는 모델 안에서 거의 쓰이지 않는 연결을 아예 없애는 일이에요. 남길 것과 버릴 것을 갈라요.
  • 학습이 끝난 모델에는 값이 0에 가까운 연결이 아주 많아요. 있으나 마나 한 것들이라 지워도 답이 잘 안 바뀌어요.
  • 한 번에 왕창 자르지 않아요. 조금 자르고 다시 익히는 일을 여러 번 되풀이해야 성능이 덜 떨어져요.
  • 여기저기 흩어진 연결을 지우는 방식과 줄이나 뭉치를 통째로 걷어내는 방식이 있어요. 실제로 빨라지는 쪽은 대개 통째로 걷어내는 쪽이에요.
  • 눈금을 성기게 바꾸는 양자화와는 다른 일이에요. 가지치기는 개수 자체를 줄여요.
목차

1비유로 이해하기

분식집 메뉴판에 메뉴가 여든 가지쯤 적혀 있어요. 그런데 주문서를 한 해치 모아 세어 보니 절반은 한 번도 나간 적이 없어요. 이름만 걸려 있고 재료는 냉장고에서 상해 가는 메뉴들이에요.

그래서 주문이 없던 메뉴를 메뉴판에서 지워요. 재료 칸이 비고, 주방 동선이 짧아지고, 주문이 들어왔을 때 손이 헷갈리는 일도 줄어요. 손님이 받는 음식은 거의 그대로예요. 어차피 시키던 것만 시켰으니까요.

다만 한 번에 마흔 가지를 지우면 곤란해요. 어쩌다 한 번씩 찾던 메뉴까지 사라져 단골이 발길을 돌려요. 열 가지쯤 지우고 한 달 지켜보고, 또 열 가지를 지우는 편이 안전해요. 가지치기가 이렇게 안 쓰는 것을 덜어내는 일이에요.

2자세히 알아보기

왜 안 쓰는 연결이 그렇게 많을까요

모델은 처음부터 딱 맞는 크기로 만들어지지 않아요. 넉넉하게 크게 잡아 놓고 학습을 시켜요. 크게 잡아야 학습이 잘 풀리거든요. 그래서 학습이 끝나고 나면 실제로 답에 힘을 보태는 연결과, 값이 0 근처에서 맴돌기만 하는 연결이 섞여 있어요.

값이 0에 가까운 연결은 무엇을 곱해도 결과에 거의 보태지 못해요. 그런데도 계산할 때는 똑같이 자리를 차지하고 똑같이 곱셈을 한 번씩 시켜요. 이런 연결이 전체의 절반을 넘는 일도 드물지 않아요.

가지치기는 이 연결들을 골라 끊어요. 끊긴 자리는 0으로 남아, 계산할 때 아예 건너뛸 수 있는 표시가 돼요.

무엇을 덜어낼지 어떻게 고를까요

가장 흔한 기준은 값의 크기예요. 0에 가까운 순서대로 줄을 세워 아래쪽을 잘라요. 손이 적게 가고 꽤 잘 통해요.

값만 보면 놓치는 것도 있어요. 값이 작아도 하필 중요한 길목에 있으면 끊는 순간 뒤가 무너지거든요. 그래서 이 연결을 지웠을 때 답이 얼마나 흔들리는지 실제로 재 보고 고르기도 해요. 층마다 잘라도 되는 양이 다르다는 점도 중요해요. 앞쪽 층은 대체로 여유가 없고, 뒤쪽 층은 넉넉한 편이에요.

조금 자르고 다시 익혀요

한 번에 크게 자르면 답이 눈에 띄게 나빠져요. 그래서 조금 자르고, 남은 연결로 다시 짧게 학습시켜 빈자리를 메우게 해요. 이 두 단계를 여러 번 되풀이해요.

같은 양을 잘라도 이 방식으로 하면 성능 손실이 훨씬 적어요. 남은 연결들이 사라진 연결이 하던 몫을 조금씩 나눠 맡거든요. 반대로 재학습 없이 잘라 놓고 끝내면, 잘라낸 양에 비례해 답이 무너져요.

흩어진 가지치기와 통째 가지치기

연결을 하나하나 골라 끊으면 남은 연결이 표 여기저기에 흩어져요. 지워진 칸이 많아도 표의 모양은 그대로라, 보통의 계산 장치는 여전히 표 전체를 훑어요. 용량은 줄지만 속도는 기대만큼 안 붙는 일이 흔해요.

그래서 줄이나 뭉치를 통째로 걷어내는 방식을 함께 써요. 안 쓰는 뉴런 하나를 통째로 빼거나, 이미지 모델에서 거의 반응하지 않는 필터를 통째로 빼는 식이에요. 표가 실제로 작아지니 계산도 진짜로 줄어요. 대신 통째로 걷어내는 만큼 성능이 더 크게 흔들려서 잘라내는 양은 더 조심스러워요.

양자화와 무엇이 다를까요

둘 다 모델을 가볍게 만들지만 손대는 곳이 달라요. 양자화는 숫자를 하나도 안 버리고 적는 눈금만 성기게 바꿔요. 가지치기는 눈금은 그대로 두고 숫자의 개수를 줄여요.

메뉴판으로 보면 이렇게 갈려요. 양자화는 모든 메뉴를 그대로 두고 가격표를 백 원 단위로 반올림해 적는 일이고, 가지치기는 안 나가는 메뉴를 판에서 지우는 일이에요. 서로 방해하지 않아서, 먼저 지우고 남은 것을 반올림하는 식으로 함께 쓰기도 해요.

3조금 더 정확하게

가지치기는 학습이 끝난 신경망에서 기여도가 낮은 가중치나 뉴런을 제거해 희소한 구조로 바꾸는 기법이에요. 개별 가중치를 지우는 비정형 방식과 채널이나 층 단위를 없애는 정형 방식으로 나뉘고, 뒤쪽이 실제 속도 이득으로 이어지기 쉬워요. 큰 모델 안에는 처음부터 잘 학습되는 작은 뼈대가 들어 있다는 관점도 널리 논의돼요.

비유가 어긋나는 지점도 있어요. 메뉴판에서 지운 메뉴는 손님이 못 시키니 확실히 사라지지만, 흩어진 방식으로 끊은 연결은 표 안에 0으로 남아 있어서 저장 공간을 알뜰히 줄이려면 따로 정리해야 해요. 또 분식집은 주문 기록이 곧 인기이지만, 모델의 연결은 얼마나 자주 쓰였는지가 아니라 얼마나 결과를 흔드는지로 판단해요. 거의 안 쓰이더라도 한 번 쓰일 때 결정적인 연결이 있어요. 어느 쪽으로 자르든 잘라낸 뒤에는 평가를 다시 돌려 확인해야 해요.

4직접 해보기

5흔한 오해

  • 가지치기가 모델을 아무렇게나 줄이는 것이라고 생각하기 쉽지만, 실제로는 기여도가 낮은 것부터 골라 조금씩 자르고 다시 학습시키는 정교한 과정이에요.

  • 연결을 지우면 그만큼 바로 빨라진다고 여기기 쉽지만, 실제로는 흩어진 채로 지우면 표 모양이 그대로라 속도가 거의 안 붙어요.

  • 가지치기와 양자화가 같은 말이라고 생각하기 쉽지만, 실제로는 하나는 개수를 줄이고 하나는 적는 눈금을 성기게 바꾸는 서로 다른 일이에요.

7한 줄 요약

그러니까가지치기는 답에 거의 보태지 못하는 연결을 골라 덜어내고 남은 것으로 다시 익히며 모델을 가볍게 만드는 일이에요.

잘못된 내용이나 더 좋은 비유가 있나요? 수정 제안 보내기 · 마지막 수정2026-09-02