AI VIDEO BRIEFING
안드레이 카파시 makemore 5편, 웨이브넷 계층 구조로 문자 언어 모델 손실 낮추기
안드레이 카파시가 makemore 5편에서 다층 퍼셉트론을 웨이브넷식 계층 구조로 바꾸고 문맥을 8자로 늘린 뒤 배치 정규화 버그까지 잡아 검증 손실을 2.10에서 1.993으로 낮추는 과정을 정리했다.

핵심 메시지
쉽게 이해하기
안드레이 카파시의 makemore 시리즈 다섯 번째 강의는 앞선 강의에서 만든 문자 단위 언어 모델을 더 깊게 확장하는 작업이다. 기존 모델은 앞 문자 3개를 받아 은닉층 하나로 다음 문자를 맞히는 다층 퍼셉트론이었다. 카파시는 이 구조가 정보를 너무 이른 시점에 한꺼번에 뭉갠다고 보고, 딥마인드가 2016년에 발표한 웨이브넷 논문의 계층적 접근을 문자 모델에 옮겨 온다.
핵심 아이디어는 단순하다. 문자 8개를 한 번에 하나의 은닉층으로 밀어 넣는 대신, 인접한 두 문자를 먼저 합쳐 두 글자 단위 표현을 만들고, 그 결과를 다시 두 개씩 묶어 네 글자 단위로, 또 한 번 묶어 여덟 글자 단위로 천천히 융합한다. 웨이브넷 논문에서는 이 구조를 팽창 인과 합성곱으로 구현하지만, 카파시는 그것이 속도를 위한 구현 세부일 뿐 모델 자체를 바꾸지는 않는다고 설명한다.
구현은 파이토치를 흉내 낸 자체 모듈을 쌓는 방식으로 진행된다. 임베딩과 텐서 펼치기를 각각 별도 레이어로 분리하고, 레이어 목록을 순서대로 통과시키는 Sequential 컨테이너까지 직접 만들어 순전파 코드를 크게 단순화한다. 여기서 핵심은 펼치기 레이어를 고쳐 (4, 8, 10) 형태의 텐서를 (4, 80)이 아니라 (4, 4, 20)으로 보게 만드는 것이다. 파이토치의 행렬 곱이 마지막 차원에만 작용하고 앞쪽 차원은 배치처럼 취급하기 때문에, 이 한 줄의 변경으로 네 개의 두 글자 묶음이 병렬로 처리된다.
성능 기록은 솔직하다. 문맥을 8자로 늘리자 검증 손실은 2.10에서 2.02로 내려갔지만, 파라미터 수를 약 2만 2천 개로 맞춰 평면 구조와 계층 구조를 비교하니 2.027 대 2.029로 사실상 동률이었다. 이어 배치 정규화가 (32, 4, 68) 입력에서 68개가 아니라 4×68개의 평균과 분산을 따로 유지하고 있다는 사실이 드러났고, 0번과 1번 차원을 함께 줄이도록 고치자 2.022로 조금 나아졌다. 임베딩 차원과 은닉 폭을 키워 파라미터를 7만 6천 개로 늘린 뒤에야 1.993이 나왔다.
강의 마지막에서 카파시는 이 수치를 성과로 내세우지 않는다. 실험 관리 체계가 없어 학습 손실만 보며 추측과 확인을 반복했고, 이는 일반적인 딥러닝 작업 방식이 아니라고 못 박는다. 대신 파이토치 문서를 뒤지고 텐서 모양을 맞추느라 씨름하며 주피터 노트북에서 프로토타이핑한 뒤 코드 저장소로 옮기는 실제 개발 흐름을 보여 준 것이 이 강의의 목적이라고 정리한다.
주요 인사이트
- 정보를 한 번에 압축하지 않고 단계적으로 융합한다는 발상 자체는 합성곱이 없어도 구현할 수 있다. 합성곱은 같은 계산을 입력 시퀀스 위로 효율적으로 미끄러뜨리고 중복 계산을 재사용하기 위한 장치라는 점이 분명해진다.
- 구조를 바꾼 직후 성능이 그대로였다는 사실을 숨기지 않고 기록한 대목이 이 강의의 미덕이다. 파라미터 수를 통제하면 아키텍처 변경만으로 이득이 보장되지 않는다.
- 배치 정규화는 학습·평가 모드 상태를 따로 관리해야 하고 입력 차원이 늘면 통계를 어느 축으로 모을지가 달라져 조용한 버그를 만들기 쉽다. 카파시도 모드를 잘못 둔 채 샘플링해 엉뚱한 결과를 얻는 실수를 그대로 보여 준다.
- 카파시는 자신의 배치 정규화 구현이 파이토치와 축 순서 규약이 다르다는 점을 명시한다. 라이브러리를 흉내 내 배울 때도 어디서 의도적으로 갈라섰는지 기록해 두는 습관이 필요하다.
- 실험 관리 체계 없이 감으로 하이퍼파라미터를 고르면 개선이 통계적으로 유의한지조차 판단할 수 없다. 카파시는 1.993을 깨 보라고 시청자에게 숙제처럼 남긴다.
자주 묻는 질문
웨이브넷 구조를 그대로 구현한 것인가요?
아닙니다. 카파시는 정보를 두 개씩 계층적으로 합치는 뼈대만 구현했고, 웨이브넷 논문의 게이트 선형 층이나 잔차·스킵 연결, 팽창 인과 합성곱은 구현하지 않았다고 밝혔습니다. 합성곱은 이후 강의에서 다루겠다고 예고합니다.
계층 구조로 바꾸자 성능이 얼마나 좋아졌나요?
파라미터 수를 약 2만 2천 개로 똑같이 맞춘 상태에서는 평면 구조 2.027, 계층 구조 2.029로 사실상 차이가 없었습니다. 배치 정규화 버그를 고쳐 2.022가 됐고, 임베딩과 은닉 폭을 키워 파라미터를 7만 6천 개로 늘린 뒤 1.993을 기록했습니다.
배치 정규화에서 발견된 버그는 무엇이었나요?
입력이 3차원이 되면서 0번 차원으로만 평균과 분산을 구한 탓에, 채널 68개에 대해 하나씩이 아니라 위치 4개마다 따로 68개씩, 총 4×68개의 통계를 유지하고 있었습니다. 0번과 1번 차원을 함께 줄이도록 고치자 각 채널 통계가 더 많은 표본으로 추정돼 안정성이 조금 높아졌습니다.
이 강의에서 얻어 갈 실무적인 교훈은 무엇인가요?
카파시는 딥러닝 개발의 상당 부분이 문서 확인과 텐서 모양 맞추기라고 말합니다. 그는 주피터 노트북에서 모양이 맞는지 확인하며 프로토타이핑한 뒤 검증된 코드만 저장소로 옮기고 거기서 실험을 돌리는 흐름을 자신의 작업 방식으로 소개합니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗