연구 질문과 가설

먼저 읽을 장 1.3 문제를 수학적으로 정의하기23.2 논문 읽는 법

연구를 시작하는 흔한 방식은 "요즘 주목받는 방법 X를 우리 데이터에 써 보자"다. 방법을 정하고, 데이터를 넣고, 결과가 좋으면 그 결과가 무엇을 보여 주는지 나중에 생각한다. 이렇게 시작한 연구는 결과가 좋아도 설명할 말이 없고, 결과가 나쁘면 왜 나쁜지, 그래서 다음에 무엇을 해야 하는지 알 수 없다. 결과를 본 뒤 그럴듯한 가설을 붙이면 결론은 우연에 기대게 된다.

이 장은 연구를 질문에서 시작하는 방법을 다룬다. 좋은 연구 문제의 조건, 재현과 실패 분석에서 관찰한 것을 검증 가능한 가설로 바꾸는 과정, 연구 기여의 종류, 그리고 실험 전에 정해야 하는 것(성공 기준, 결과에 따른 결론, 중단 기준)을 정리한다. 1.1장 생애주기의 1–2단계(현실의 문제 → 연구 질문)를 구체적인 작업으로 만드는 장이고, 여기서 쓴 질문 문서는 23.5장의 실험 계획서로 이어진다.

학습 목표

  • 관찰에서 검증 가능한 가설을 만든다
  • 연구 기여의 종류를 구분한다
  • 연구의 중단·전환 기준을 세운다

좋은 연구 문제

왜 문제부터인가. 방법은 문제를 푸는 도구다. 문제가 정해지지 않으면 방법이 좋은지 판단할 기준이 없다. 반대로 문제가 분명하면, 어떤 방법이 필요한지, 어떤 데이터와 평가가 필요한지, 무엇과 비교해야 하는지가 거의 정해진다(1.3장).

네 가지 조건. 좋은 연구 문제는 다음 넷을 함께 만족한다. 하나라도 빠지면 연구가 막힌다.

조건 묻는 질문 빠졌을 때
실제 필요성 이 문제가 풀리면 누구의 어떤 결정이 나아지는가 결과가 좋아도 쓰는 사람이 없다
기존 방법의 한계 지금의 방법은 정확히 어디서, 왜 부족한가 이미 풀린 문제를 다시 풀거나, 개선의 근거가 없다
검증 가능성 어떤 실험 결과가 나오면 답이 '예' 또는 '아니요'인가 결과가 무엇이든 해석할 수 있어 아무것도 배우지 못한다
실현 가능성 가진 데이터·계산·시간으로 답할 수 있는가 연구가 끝나지 않는다

두 번째 조건이 가장 자주 약하다. "기존 방법은 정확도가 낮다"는 한계가 아니라 관찰이다. 한계는 어디서(어떤 입력, 어떤 조건, 어떤 분할에서) 왜(어떤 가정이 깨져서) 부족한지를 말해야 한다. 23.1장의 관련 연구 지도에서 "시험되지 않은 것" 열과 23.3장의 재현 보고서가 이 조건을 채우는 재료다.

관찰에서 가설로

왜 관찰에서 시작하는가. 좋은 가설은 머릿속에서 바로 나오지 않는다. 대개 무언가가 예상과 다르게 움직이는 것을 관찰한 데서 나온다. 재현이 실패한 곳, 모델이 체계적으로 틀리는 입력, 조건을 바꿨을 때 순위가 뒤집히는 곳이 그런 관찰이다. 23.3장의 재현 사례에서 "셀 단위 분할에서는 셀 설명 변수의 개선이 사라진다"는 관찰이 바로 연구 질문의 씨앗이다.

관찰 → 원인 가설 → 예측 → 반증 조건. 관찰을 가설로 바꾸는 과정은 네 단계로 쓴다.

  1. 관찰: 무엇이, 어떤 조건에서, 얼마나 예상과 달랐는가. 수치와 seed 변동을 함께 적는다.
  2. 원인 가설: 왜 그런 일이 생겼는가에 대한 후보. 하나가 아니라 여럿을 적는다.
  3. 예측: 그 원인이 맞다면, 무엇을 바꿨을 때 어떤 조건에서 결과가 어떻게 달라져야 하는가.
  4. 반증 조건: 어떤 결과가 나오면 그 원인 가설이 틀렸다고 판단하는가.

예를 들어 23.3장의 관찰에서 출발하면 다음과 같다.

  • 관찰: 셀 설명 변수 12개를 더한 모델은 무작위 분할에서 RMSE를 0.16 줄이지만, 셀 단위 분할에서는 개선이 없다(−0.028±0.034-0.028 \pm 0.034, seed 10개).
  • 원인 가설 A: 설명 변수는 새 셀의 성능과 관련이 없고, 무작위 분할에서는 셀을 알아보는 데만 쓰였다.
  • 원인 가설 B: 설명 변수는 관련이 있지만, 학습 셀 30개로 계수 12개를 추정하기에는 데이터가 부족하다.
  • 예측: B가 맞다면 학습 셀 수를 늘릴수록(또는 설명 변수를 물리적으로 의미 있는 몇 개로 줄이면) 셀 단위 분할에서도 개선이 나타나야 한다. A가 맞다면 셀 수를 늘려도 개선이 0 근처에 머문다.
  • 반증 조건: 셀 수를 두 배로 늘린 셀 단위 교차검증에서 개선의 95% 구간 상한이 사전에 정한 의미 있는 크기보다 작으면 B를 버린다.

두 원인 가설이 서로 다른 예측을 내는 실험을 고르는 것이 핵심이다. 두 가설이 같은 결과를 예측하는 실험은 아무것도 구별하지 못한다.

결과를 본 뒤 고른 가설. 관찰에서 가설을 만드는 것과, 결과를 본 뒤 그 결과에 맞는 가설을 처음부터 세웠던 것처럼 보고하는 것은 다르다. 후자를 HARKing(hypothesizing after the results are known)이라 한다(Kerr, 1998). 앞의 것은 탐색이고, 탐색에서 나온 가설은 새 데이터로 검증해야 한다. 뒤의 것은 탐색의 결과를 검증된 결과처럼 보이게 만든다.

얼마나 위험한지 계산해 본다. 참 효과가 전혀 없는 두 방법을 하위 그룹 10개(예: 물질 계열 10개)에서 비교하는 가상 연구를 4000번 반복한다. 사전에 정한 하위 그룹 하나만 검정하는 경우와, 결과를 보고 가장 좋아 보이는 하위 그룹을 골라 "이 계열에서 제안 방법이 낫다"는 가설로 보고하는 경우를 비교한다.

import numpy as np
from scipy import stats

rng = np.random.default_rng(0)
S, K, n = 4000, 10, 20                  # 가상 연구 4000번, 하위 그룹 10개, 그룹당 실행 20개
a = rng.normal(size=(S, K, n))          # baseline 점수 (효과 없음), (S, K, n)
b = rng.normal(size=(S, K, n))          # 제안 방법 점수 (효과 없음), (S, K, n)
diff = b.mean(-1) - a.mean(-1)          # (S, K)
se = np.sqrt(a.var(-1, ddof=1) / n + b.var(-1, ddof=1) / n)
p = stats.t.sf(diff / se, df=2 * n - 2)    # 단측 p-value: "제안 방법이 낫다", (S, K)

pre = p[:, 0] < 0.05                    # 사전에 정한 하위 그룹 하나만 검정
post = p.min(axis=1) < 0.05             # 결과를 보고 가장 좋은 하위 그룹을 가설로
best = diff[np.arange(S), p.argmin(axis=1)]
print(f"참 효과 0에서 '유의한 개선'을 보고할 확률: 사전 가설 {pre.mean():.3f}, 사후 가설 {post.mean():.3f}")
print(f"사후 가설로 보고된 효과의 평균 크기 |차이| = {np.abs(best[post]).mean():.2f} (참값 0, 단위: 실행 간 표준편차)")
참 효과 0에서 '유의한 개선'을 보고할 확률: 사전 가설 0.047, 사후 가설 0.399
사후 가설로 보고된 효과의 평균 크기 |차이| = 0.65 (참값 0, 단위: 실행 간 표준편차)

사전에 정한 가설은 명목 유의수준대로 약 5%만 거짓 양성을 낸다. 결과를 보고 고른 가설은 40%가 "유의한 개선"을 보고한다. 하위 그룹 10개가 독립이면 1−0.9510≈0.401 - 0.95^{10} \approx 0.40이다. 더 나쁜 것은 효과의 크기다. 참 효과는 0인데, 사후 가설로 보고된 개선은 평균적으로 실행 간 표준편차의 0.65배나 된다. 우연히 크게 나온 그룹만 골랐기 때문이다. 분석의 선택지가 많을수록 거짓 양성이 늘어난다는 점은 실험 설계와 분석의 유연성 전반에 대해 체계적으로 보고되었다(Simmons et al., 2011). 다중 비교의 보정 방법은 12.4장에서 다룬다.

기여의 종류

왜 종류를 구분하는가. 1.1장에서 연구의 종류(알고리즘·응용·시스템·데이터·분석)를 구분했다. 같은 구분을 한 논문의 기여 단위로 내리면, 무엇을 증명해야 하는지가 정해진다. 기여의 종류마다 필요한 근거가 다르기 때문이다. 새 구조를 제안하면서 근거로 SOTA 숫자 하나만 내면, 구조가 효과의 원인이라는 근거(ablation)가 빠진다.

기여 무엇이 새로운가 필요한 근거
새로운 구조 모델의 구성(층, 연산, 귀납적 편향) 같은 학습 recipe에서의 비교, 구성요소별 ablation, 여러 데이터에서의 일관성
학습법 손실, 최적화, 정규화, 학습 절차 여러 구조에 적용했을 때의 효과, 계산 비용, 하이퍼파라미터 민감도
데이터 새 측정·시뮬레이션 데이터, label, 데이터 생성 방법 데이터 품질, 문서화(15.5장), 기존 방법들의 성능 분포
분석 현상에 대한 이해(왜 되고 왜 안 되는가) 통제된 실험, 경쟁 가설의 배제, 반례
시스템 같은 결과를 더 빠르고 싸게, 더 크게 같은 정확도에서의 시간·메모리·비용, 확장성 측정
벤치마크 문제를 정의하는 데이터·분할·지표 분할과 지표가 일반화 대상·현실의 비용과 맞는다는 근거, 순위의 견고성

한 연구가 여러 기여를 겸할 수 있지만, 질문 문서에는 주된 기여 하나를 적는다. 그래야 실험 설계(23.5장)에서 무엇에 계산을 집중할지 정해진다.

복잡성과 기여

왜 따로 다루는가. ML 연구에서는 모델에 구성요소를 더할수록 기여가 커 보이는 착시가 있다. 새 모듈 세 개를 더한 방법이 한 줄을 바꾼 방법보다 "더 많이 한" 것처럼 보인다. 그러나 기여의 크기는 무엇을 새로 알게 되었는가와 다른 사람이 얼마나 쓸 수 있는가로 정해진다.

  • 같은 개선이면 단순한 쪽이 기여가 크다. 단순한 방법은 다른 연구자가 바로 쓰고, 다른 문제로 옮기고, 이해할 수 있다. 복잡한 방법은 구현과 튜닝 비용이 크고, 어느 부분이 효과를 냈는지 모르면 옮길 수도 없다.
  • 설명되지 않은 개선은 약한 기여다. 구성요소 세 개를 더해 개선했는데 ablation이 없다면, 개선이 구성요소 때문인지, 늘어난 파라미터 수 때문인지, 더 공들인 튜닝 때문인지 모른다(23.5장).
  • "안 된다"를 보인 것도 기여다. 널리 쓰이는 방법이 어떤 조건에서 실패하는지, 그 이유가 무엇인지 보인 분석은 그 방법을 쓰는 모든 연구에 영향을 준다.

복잡성이 필요한 경우도 물론 있다. 문제의 구조(대칭성, 다중 척도, 보존 법칙)가 복잡하면 모델도 그것을 반영해야 한다(24부). 그때도 각 복잡성이 문제의 어떤 구조에 대응하는지, 그것을 빼면 무엇이 무너지는지를 보여야 한다.

사전에 정하는 것

왜 사전에 정하는가. 결과를 본 뒤에는 무엇이든 정당화할 수 있다. 개선이 0.004면 "일관된 개선", 오차가 커지면 "흥미로운 실패 모드", 구간이 0을 걸치면 "개선 경향"이라 쓰게 된다. 의도하지 않아도 그렇게 된다. 실험 전에 판단 기준을 적어 두면 결과가 그 기준을 대신 판정한다. 연구 질문과 분석 계획을 결과를 보기 전에 정해 기록하는 것을 사전 등록(preregistration)이라 하고, 과학 분야 전반에서 사후 설명과 사전 예측의 경계가 흐려지는 문제의 해결책으로 제안되었다(Nosek et al., 2018).

세 가지를 적는다.

  1. 성공 기준: 무엇을 어떤 단위로 측정해, 얼마 이상이면 성공인가. "의미 있는 최소 개선" Δ\Delta를 도메인 기준(측정 장비의 분해능, 공정 허용오차, 기존 방법과 실제 결정이 달라지는 차이)으로 정한다. seed 변동만으로 정하지 않는다.
  2. 성공·실패 시 각각 내릴 결론: 성공하면 무엇을 주장하고 다음에 무엇을 하는가. 실패하면 무엇을 배웠다고 쓰고, 어디로 전환하는가. 실패 시의 결론을 쓸 수 없다면 그 실험은 가설을 검증하지 못한다.
  3. 중단 기준: 어떤 결과가 나오면, 혹은 어떤 시점까지 무엇이 안 되면 이 방향을 멈추는가. 계산 예산과 날짜를 함께 적는다.

판정은 둘이 아니라 넷이다. 개선의 구간(12.4장)으로 판정하면, 결과는 성공과 실패 둘로만 나뉘지 않는다. 짝지은 차이의 단측 95% 하한을 LL, 상한을 UU라 하자.

판정 조건 결론
성공 L>0L > 0이고 U≥ΔU \ge \Delta 개선이 있고, 의미 있는 크기일 수 있다
작은 개선 L>0L > 0이고 U<ΔU < \Delta 개선은 있지만 의미 있는 크기보다 작다
중단 L≤0L \le 0이고 U<ΔU < \Delta 의미 있는 개선을 배제한다
보류 L≤0L \le 0이고 U≥ΔU \ge \Delta 어느 쪽도 말할 수 없다

"유의하지 않다"는 판정만으로는 중단할 수 없다. 의미 있는 개선을 배제하려면 상한이 Δ\Delta보다 작아야 하고, 그러려면 seed가 충분해야 한다. 의미 있는 최소 개선을 Δ=0.02\Delta = 0.02, seed 간 짝지은 차이의 표준편차를 0.015로 두고, 참 효과와 seed 수에 따라 각 판정이 나올 확률을 계산한다.

delta, sd = 0.02, 0.015                 # 의미 있는 최소 개선, seed 간 짝지은 차이의 표준편차
def decide(true_effect, n_seed, trials=4000, seed=1):
    r = np.random.default_rng(seed)
    d = r.normal(true_effect, sd, size=(trials, n_seed))    # 짝지은 차이, (trials, n_seed)
    half = stats.t.ppf(0.95, n_seed - 1) * d.std(1, ddof=1) / np.sqrt(n_seed)
    lo, hi = d.mean(1) - half, d.mean(1) + half             # 단측 95% 하한·상한, (trials,)
    return [np.mean(c) for c in ((lo > 0) & (hi >= delta),   # 성공: 개선이 있고 의미 있는 크기일 수 있다
                                 (lo > 0) & (hi < delta),    # 작은 개선: 있지만 delta보다 작다
                                 (lo <= 0) & (hi < delta),   # 중단: 의미 있는 개선을 배제한다
                                 (lo <= 0) & (hi >= delta))] # 보류: 어느 쪽도 말할 수 없다

print("참 효과  seed 수 |  성공  작은개선  중단   보류")
for eff in (0.0, 0.01, 0.03):
    for n_seed in (3, 10, 30):
        print(f"  {eff:.2f}    {n_seed:>3}   | " + "   ".join(f"{v:.2f}" for v in decide(eff, n_seed)))
참 효과  seed 수 |  성공  작은개선  중단   보류
  0.00      3   | 0.03   0.02   0.44   0.51
  0.00     10   | 0.01   0.04   0.95   0.01
  0.00     30   | 0.00   0.05   0.95   0.00
  0.01      3   | 0.16   0.04   0.16   0.64
  0.01     10   | 0.32   0.30   0.34   0.05
  0.01     30   | 0.02   0.95   0.03   0.00
  0.03      3   | 0.71   0.00   0.00   0.28
  0.03     10   | 1.00   0.00   0.00   0.00
  0.03     30   | 1.00   0.00   0.00   0.00

세 가지를 읽는다.

  • seed 3개로는 효과가 없어도 절반이 보류다. 참 효과가 0일 때 seed 3개로는 51%가 판정을 내리지 못한다. 이때 "유의하지 않으니 효과 없음"이라 쓰고 중단하면 사전 규칙을 어긴 것이다. 보류일 때 seed를 몇 개로 늘릴지도 미리 적는다.
  • seed 10개면 효과가 없을 때 95%가 중단 판정을 받는다. 실패 시의 결론("의미 있는 개선은 없다")을 근거 있게 쓰려면 이 정도의 seed가 필요하다. 필요한 seed 수를 미리 계산하는 방법은 23.5장의 검정력 분석이다.
  • 참 효과가 Δ\Delta보다 작을 때(0.01)는 seed를 늘리면 "작은 개선"으로 수렴한다. 이 결과에서 내릴 결론(작은 개선을 보고하고 방향을 바꾸는가, 다른 조건에서 더 큰 효과를 찾는가)도 미리 정해야 한다. seed 10개에서는 네 판정이 고르게 섞여 나온다. 경계 근처의 효과는 판정이 가장 불안정하다.

중단과 전환. 중단 기준은 실패를 인정하는 장치가 아니라 시간을 지키는 장치다. 몇 달을 쓴 방향을 결과가 나쁘다고 포기하기는 어렵다. 이미 들인 비용 때문에 "조금만 더"를 반복하게 된다. 사전에 적은 기준은 이 판단을 미리, 이해관계 없이 내려 둔 것이다. 중단 판정이 나면 그 결과를 기록하고(23.3장의 부정적 결과처럼), 질문 문서의 "실패 시 결론"에 적어 둔 다음 방향으로 전환한다. 전환은 처음부터 다시 시작하는 것이 아니다. 실패에서 얻은 관찰이 다음 가설의 출발점이 된다.

실습

자신의 연구 주제를 한 장짜리 연구 질문 문서로 쓴다. 23.1장의 관련 연구 지도에서 출발한다. 23.3장의 재현 보고서가 있으면 함께 쓴다.

# 연구 질문 문서: <제목>                     작성일 / 수정 이력
## 문제
- 누구의 어떤 결정이 나아지는가 (실제 필요성)
- 입력 → 출력, 일반화 대상, 평가 단위 (1.3장의 명세 요약)
## 기존 한계
- 어떤 방법이, 어떤 조건에서, 얼마나, 왜 부족한가 (근거: 문헌 위치, 재현 보고서)
## 가설
- 관찰 → 원인 가설(경쟁 가설 포함) → 예측
- 주된 기여의 종류
## 검증 방법
- 비교 대상, 분할, metric, seed 수, 경쟁 가설을 구별하는 실험 (상세는 23.5장 실험 계획서)
## 성공 기준
- 의미 있는 최소 개선 Δ와 그 근거, 판정 규칙(성공·작은 개선·중단·보류)
## 결과별 결론
- 성공 시: 주장할 내용과 다음 단계
- 작은 개선·보류 시: 추가 실험의 범위
- 실패(중단) 시: 배운 것과 전환할 방향
## 중단 기준
- 계산 예산, 날짜, 그때까지 확인되지 않으면 멈출 조건

작성 순서가 중요하다. "결과별 결론"을 "검증 방법"보다 먼저 쓴다고 생각하고, 실패 시의 결론을 쓸 수 없으면 가설이나 검증 방법을 다시 고친다.

실패 사례

  • 방법을 먼저 정하고 문제를 나중에 찾는 것. "X를 써 보자"로 시작하면 문제와 비교 기준이 방법에 맞춰진다. 결과가 좋아도 무엇을 보였는지 말할 수 없고, 나쁘면 다음에 할 일을 정할 수 없다. 질문 문서의 "기존 한계" 절을 먼저 채운다.
  • 결과를 본 뒤 가설을 세우고 처음부터 그 가설이었던 것처럼 쓰는 것. 이 장의 시뮬레이션에서 효과가 없을 때도 40%가 "유의한 개선"을 보고했다. 탐색에서 나온 가설은 탐색이라고 밝히고, 새 데이터로 확인한다.
  • 반증 조건이 없는 가설. "물리 지식을 넣으면 좋아질 것"은 어떤 결과로도 틀릴 수 없다. 무엇이, 어떤 조건에서, 얼마나 달라질지와 틀렸다고 볼 결과를 쓴다.
  • "유의하지 않다"를 "효과 없음"으로 읽고 중단하는 것. seed가 적으면 대부분 보류다. 의미 있는 개선을 배제하려면 상한이 Δ\Delta보다 작아야 한다.
  • 복잡성을 기여로 착각하는 것. 구성요소의 수가 아니라 새로 알게 된 것과 재사용 가능성이 기여다.

통과 기준

  • 자신의 연구 주제에 대해 실습 양식의 연구 질문 문서를 작성한다. 문서에는 경쟁하는 원인 가설 두 개 이상과 둘을 구별하는 실험, 근거가 있는 Δ\Delta, 네 갈래 판정 규칙, 결과별 결론, 중단 기준, 그리고 주된 기여의 종류와 그 종류에 필요한 근거(기여의 종류 표)가 들어 있다.
  • 지도교수(또는 동료 연구자)와 문서를 검토하고, 성공 기준과 실패 시 결론에 합의한 날짜를 문서에 기록한다.
  • 문서의 가설 하나에 대해 반증 조건을 한 문장으로 말하고, 그 조건이 어떤 실험 결과에 해당하는지 설명한다.

참고 문헌

  • Kerr (1998). HARKing: Hypothesizing after the results are known. Personality and Social Psychology Review, 2(3), 196–217. — 사후 가설의 정의와 비용
  • Simmons, Nelson, Simonsohn (2011). False-positive psychology: Undisclosed flexibility in data collection and analysis allows presenting anything as significant. Psychological Science, 22(11), 1359–1366. — 분석의 유연성이 거짓 양성을 늘리는 정도
  • Nosek, Ebersole, DeHaven, Mellor (2018). The preregistration revolution. Proceedings of the National Academy of Sciences, 115(11), 2600–2606. — 연구 질문과 분석 계획의 사전 등록