신경망·연습 문제

Masked Max Pooling

문제 설명PROBLEM

preview

Masked Max Pooling

masked-mean-pool-v1 의 max 버전. 문장 임베딩, pointer network, 일부 분류 헤드에서 mean 대신 max 로 풀링하기도 함.

pool(x,m)b,k=maxl:mb,l=1  xb,l,k\text{pool}(x, m)_{b, k} = \max_{l: m_{b,l}=1}\; x_{b, l, k}

마스킹 트릭

pad 위치를 −∞ 로 채워 max 가 무시되게 만듬:

neg = -np.inf
x_masked = np.where(mask[..., None], x, neg)
return x_masked.max(axis=1)

mask[..., None](B, L)(B, L, 1) 브로드캐스트 → (B, L, d) 와 결합.

과제

함수 masked_max_pool(x, mask) 를 완성하세요.

  • x: shape (B, L, d).
  • mask: shape (B, L) bool (True = 유효).
  • 반환: (B, d).

테스트 케이스

#이름검증
1shape (B, d)
2mask 전부 True → 평범한 max
3pad 값 무관pad 에 큰 수 넣어도 출력 불변
4차원별 max각 dim 에 다른 위치 max 가능
5서로 다른 유효 길이배치마다 올바른 후보 집합
개념 노트와 실수 포인트

신경망

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