borch

Capstones · 2

무엇으로 측정했는지 말하라

모델이 정확도 0.92 를 보고하면 사실처럼 느껴진다. 아직 사실이 아니다. 숫자는 거의 늘 빠뜨리는 두 가지를 함께 지닐 때에만 측정값이 된다: 무엇으로 측정했는가 — 모델이 배운 이미지인가, 한 번도 보지 못한 이미지인가 — 그리고 얼마나 넓은가. 마흔 장으로 읽은 숫자는 진실에서 열 점 떨어져 있을 수 있으니까. torch.workbench 는 이 탭에서 모델을 학습시키고 둘 다 간직한다. 여기서 그것이 거짓말하게 만든 다음, 진실을 말하게 한다.

모든 정확도에는 폭이 있다

모델에 앞서 산술부터. n 개의 held-out 예제로 측정한 정확도는 표준오차를 지닌다. 95% 신뢰에서 그것은 숫자를 둘러싼 띠이고, 두 모델을 구분하려면 그보다 더 넓은 간격이 필요하다 — 각자 자기 띠를 가진 두 추정치이므로. 이 코드는 GPU 없이 어디서나 돈다. 실제 학습에 대해 workbench.interval 과 workbench.resolution 이 계산하는 바로 그것이다.

이 레슨의 실제 학습은 Python 이고, WebGPU 가 있는 탭에서 돈다. torch.workbench 는 Python 표면의 도구다 — 모델을 학습시키므로, borch.ts 가 아니라 autograd 가 있는 곳에 산다. 어댑터가 없는 기기에서는 아래 블록이 traceback 대신 한 문장으로 그 사실을 말한다. 위의 산술은 어디서나 돈다.

거짓말하게 만든 다음, 진실을 말하게 하라

데이터셋 하나, 모델 하나를 두 번 학습시킨다 — 바뀌는 건 val, 채점을 위해 떼어 두는 이미지 비율뿐이다. val=0 이면 정확도는 모델이 학습한 바로 그 이미지에서 읽고, val=0.3 이면 한 번도 보지 못한 이미지에서 읽는다. 여기 세트는 아무 의미 없는 라벨이 붙은 순수 노이즈라, 배울 것이 없다 — 그래서 두 숫자 사이의 간격이 이 레슨의 전부가 된다.

첫 학습은 암기한 이미지에서 높은 점수를 낸다. 둘째는 한 번도 보지 못한 이미지에서 대략 셋 중 하나로 떨어진다 — 세 클래스에서의 우연이고, 그것이 정직한 보고다: 신호가 없었고, held-out 분할이 그 사실을 말해 준다. 옆에 measured_on 이 없는 숫자는 바로 이 차이를 숨긴다.

그렇다면 정직한 숫자는 얼마나 넓은가?

held-out 정확도 자체도 표본으로 측정한 것이라 폭을 가진다. 분할이 작으면 폭은 넓어진다 — 아래 학습은, 어느 행이 분할에 들어왔는지의 운을 넘어서려면 두 모델이 얼마나 벌어져야 하는지를 보고한다.

기억할 것

위 블록이 에러를 내면, 그것도 알 가치가 있다. 이 페이지의 모든 예제는 테스트가 돌리는 것과 같은 라이브러리에서 돈다 — 여기 어떤 것도 스크린샷이 아니다. Reset 을 누르면 원래 코드로 돌아온다.