Quiz-9 (2026.04.06) // 범위: ~04wk

Author

최규빈

Published

April 6, 2026

import torch

1. 베르누이 MLE

아래는 \(X_i \overset{iid}{\sim} Ber(0.8)\)을 생성하는 코드이다.

torch.manual_seed(43052)
x = torch.bernoulli(torch.tensor([0.8]*10000))

함수 \(l(p)\)를 최소화하는 \(p\)를 경사하강법으로 추정하라.

\[l(p) = -\frac{1}{n}\sum_{i=1}^{n} \log f(x_i), \quad f(x_i) = p^{x_i} (1-p)^{1-x_i}\]

단, 초기값은 \(p=0.5\) 에서 시작할 것

hint: 이론적인 수렴값은 x.mean()임.

def l(p):
    return -torch.mean(torch.log(p**x * (1-p)**(1-x)))
p = torch.tensor(0.5,requires_grad = True)
for dummy in range(15):
    l(p).backward()
    p.data = p.data - 0.1 * p.grad
    p.grad = None
    print(p.data)
tensor(0.6188)
tensor(0.6944)
tensor(0.7428)
tensor(0.7712)
tensor(0.7859)
tensor(0.7926)
tensor(0.7953)
tensor(0.7964)
tensor(0.7968)
tensor(0.7970)
tensor(0.7971)
tensor(0.7971)
tensor(0.7971)
tensor(0.7971)
tensor(0.7971)
x.mean() # 확인
tensor(0.7971)