본문 바로가기
C.W.K.
Stream
Lesson 02 of 05 · published

구조를 채점한다, 베낀 솜씨가 아니라

~14 min · procrustes, construction-space, alignment, not-tracing

Level 0빈 종이
0 XP0/35 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"그림을 채점하는 제일 뻔한 방법은 하필 제일 상 주면 안 되는 것에 상을 줘. 베끼기 말이야. 채점기 전체가 그 함정을 피하려고 있어."

함정, 겹친 정도로 채점하기

순진한 채점기는 그럴듯하고 틀렸어. 학생이 그은 선을 사진 가장자리에 대보고 얼마나 겹치는지 재서 점수라고 부르는 거지. 그런데 누가 이기는지 생각해봐. 완벽하게 베낀 사람이야. 레퍼런스 위에 트레이싱지를 얹고 모든 가장자리를 따라 그린 사람이 100 점을 받고 구조에 대해서는 아무것도 안 배워. 겹침 채점은 입체를 이해했는지 재는 게 아니라 실루엣을 정확히 따라 그렸는지 재거든. 엔진 전체가 쓸모없게 만들려던 바로 그 솜씨를 채점하는 거야.

빠져나가는 수, 자세를 걷어낸다

탈출구는 이래. 네 작도를 답과 비교하기 전에 채점기가 Procrustes 정렬을 돌려. 네 작도를 답 위에 제일 잘 포개는 변환을 딱 하나 찾는 거야. 옮기고, 같은 비율로 키우거나 줄이고, 돌리는 것까지만. 그걸 적용한 다음에야 차이를 재. 옮기기가 어디에 그렸는지를 지우고, 크기 조정이 얼마나 크게를 지우고, 회전이 얼마나 기울여를 지워. 셋 다 베낀 사람이 배치를 따라 그리는 것만으로 공짜로 챙기던 것들이지. 그러니까 점수를 매기기도 전에 베낀 사람의 이점이 통째로 사라져.

정렬하고도 남는 게 구조다

Procrustes 를 지나고 나면, 모양이 같은 두 작도는 똑같은 점수를 받아. 구석에 작게 그렸든 가운데 크게 그렸든, 똑바로 그렸든 기울여 그렸든 상관없어. 위치와 크기와 기울기가 이미 빠졌으니까. 그래도 남아서 달라질 수 있는 건 모양 자체야. 눈썹에 대한 턱의 각도, 얼굴에 대한 두개골의 비율, 상자의 먼 모서리가 가까운 모서리에 대해 어디 앉는지. 그 남은 차이가 네 작도 정확도야. 배치로는 못 벌어. 비교 안에 배치라는 게 이제 존재하지 않으니까. Track 2 에서 한 약속이 수학적으로 무슨 뜻이었냐면 바로 이거야. 베낀 솜씨가 아니라 구조를 채점한다.

프로크루스테스의 침대

이름은 그리스 신화에서 왔는데 좀 섬뜩해. 프로크루스테스는 손님을 자기 쇠침대에 맞추려고 짧으면 늘이고 길면 잘랐거든. 이 방법도 그 그림을 빌려 왔어. 네 그림을 답이라는 침대에 제일 잘 맞도록 옮기고 늘이고 돌리니까. 근데 여기서 중요한 건 딱 하나만 허용한다는 거야. 옮기기와 같은 비율 확대축소와 회전까지만 쓰고, 비스듬히 미는 것도 자유롭게 구부리는 것도 절대 안 써. 네 작도를 밀고 키우고 돌릴 수는 있어도, 틀린 모양을 맞는 모양으로 구부릴 수는 없다는 뜻이야. 그래서 중요하지 않은 건 다 봐주면서 정작 중요한 모양에는 하나도 안 봐줘. 정직한 각주를 하나 달자면, 이 정렬은 위치와 크기와 기울기는 지워도 일부러 늘인 건 못 지워. 그 남은 몫이 바로 엔진이 과장이라고 부를 값이고, 두 레슨 뒤에 다룰 거야.

Code

Procrustes 로 배치를 벗겨내고 모양만 채점한다·python
import numpy as np

def construction_score(yours, reference):
    # Procrustes: best translation + uniform scale + rotation mapping yours -> ref.
    # This ALIGNS AWAY position, size, and tilt -- everything a tracer got free.
    aligned = procrustes_similarity(yours, reference)   # translate, scale, rotate only

    # What REMAINS is pure shape difference: angles and proportions, not placement.
    residual = np.linalg.norm(aligned - reference) / scale_of(reference)
    return 1.0 - residual

# A perfect tracer nails placement but may still MIS-SEE the solid.
# Procrustes deletes the placement they copied and scores only the seeing.
# (Similarity removes position/size/tilt but NOT a deliberate stretch --
#  that leftover is 'exaggeration', estimated separately two lessons on.)

External links

Exercise

네 분야에서 관심 없는 변수 때문에 비교가 오염되는 자리를 찾아봐. 기준선이 다른 두 시계열, 위상이 어긋난 두 신호, 단위가 다른 두 데이터, 놓인 자리가 다른 두 도형 같은 거. 비교 전에 그 변수를 어떻게 걷어낼지 적어봐. 평균 빼기든 단위 맞추기든 위치 맞추기든 추세 제거든. 그리고 그러고 나면 남은 차이가 뭘 정직하게 재는지 설명해봐.
Hint
패턴은 이래. 관심 없는 변환 무리를 먼저 정하고, 그 안에서 둘을 제일 잘 포개는 변환을 찾고, 적용하고, 남은 것만 재. 그 남은 게 진짜 차이야. Loomis 판은 2D 에서의 Procrustes 고, 네 것은 평균 빼기나 단위 정규화나 시간축 맞추기일 수 있어. 같은 생각, 다른 오염원이지.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.