신경망·연습 문제

Sliding Window Causal Mask (Longformer/Mistral) [medium]

문제 설명PROBLEM

preview

Sliding Window Causal Mask [medium]

v1 causal maskO(L2)O(L^2) 전체 하삼각. Longformer (Beltagy 2020), Mistral, Gemma 등은 sliding window: 각 토큰이 과거 ww 개만 참조. 복잡도 O(Lw)O(L \cdot w).

Mij={10ij<w0otherwiseM_{ij} = \begin{cases} 1 & 0 \le i - j < w \\ 0 & \text{otherwise} \end{cases}

causal (j ≤ i) + band (최대 w개 뒤까지).

왜 이게 중요한가

  • 긴 시퀀스 (10K+) 에서 full-attention 은 메모리 터짐.
  • Locality 가 강한 언어 데이터에서는 최근 컨텍스트만으로도 충분.
  • Mistral-7B 는 window=4096, 시퀀스 32K. 멀리 있는 정보는 여러 layer 를 거쳐 점진적으로 전파.

과제

함수 sliding_window_mask(L, window_size) 를 완성하세요.

  • 반환 shape (L, L), dtype bool.
  • mask[i, j] = True iff 0 ≤ i - j < window_size.

힌트: i = np.arange(L)[:, None], j = np.arange(L)[None, :] → 벡터화.

테스트 케이스

#이름검증
1shape (L, L), bool
2대각선 Trueself-attention 허용
3상삼각 Falsecausal 유지
4window=1 → identity대각만 True
5window ≥ L → full trilv1 causal 과 동일
6row i 의 True 개수 = min(i+1, w)
7구체 좌표 검증M[5,2] 등
개념 노트와 실수 포인트

신경망

  • 순전파 → 손실 → 역전파(연쇄법칙) → 갱신.
  • ⚠️ 행렬곱 차원: A(m×n) @ B(n×p) — 안쪽 차원이 같아야 함.
  • 비선형 활성화가 없으면 층을 쌓아도 선형. 가중치 초기화 중요.