인공지능재료공학 · 실습 08 · AI 기법: 재현성

같은 명령, 같은 그림

금속 표면의 AFM 높이맵에서 거칠기를 구한다. AFM 원시 데이터는 처리하지 않으면 읽을 수 없다 — 기울기 136 nm와 보우 22 nm가 표면 거칠기(3~16 nm)보다 크다.

그런데 그 처리의 각 단계에 선택이 있고, 선택이 답을 바꾼다. 같은 명령을 두 번 내려도 같은 답이 안 나온다. 오늘은 그걸 직접 확인하고, 나오게 만든다.

마지막 실습이다 — 지금까지와 다른 점

실습 06은 표준시료가 어느 절차를 믿을지 정해줬다. 실습 07은 환산이 방법 간 불일치를 설명했다. 실습 08에서는 아무것도 안 닫아준다. 관문이 대부분을 걸러내지만 전부는 아니고, 남은 것은 없앨 수 없다.

원시 데이터에 무엇이 얹혀 있나

인공물이 신호보다 크다

무엇크기무엇으로 빠지나
기울기약 136 nm평면 맞춤 1차
보우 (스캐너 휨)약 22 nm평면 맞춤 2차 이상
가로 줄무늬약 1 nm라인별 정렬 — 부작용이 있다
느린 드리프트약 3.5 nm평면 맞춤 1차
표면 거칠기 (구하려는 것)3 ~ 16 nm

처리는 선택이 아니라 필수다. 그런데 그 처리에 선택이 있다 — 평면 맞춤 차수, 라인별 정렬 방식, Ra인지 Rq인지, 계산 영역. 어느 조합을 고르느냐에 따라 답이 최대 1.8배 달라진다.


전체 흐름

관문기준 둘
한 번숫자
다시새 대화창
조합9가지 폭
대조90° 회전
못박기사양 + 체크섬
제출재현 패키지

오늘 할 일

01 · 관문

기준이 두 개다

깊이가 인증된 홈을 판 단차 표준물질이다.

패널에 입력
data/standard/step_standard.txt 를 읽어서 아래를 구해줘.

1. 홈의 깊이
2. 평탄면의 P-V (최대 − 최소)

원시 이미지와 처리 후 이미지를 나란히 그려서 보여주고,
data/standard/인증값.md 와 대조해서 results/표준검증.md 에 표로 남겨줘.
| 항목 | 인증값 | 내 결과 | 차이 | 허용범위 | 통과 |
관문 · 둘 다 맞아야 한다

① 홈 깊이 180.0 ± 3.0 nm    ② 평탄면 P-V 12.0 nm 이하

두 기준이 서로 반대로 당긴다. 처리를 세게 할수록 평탄면은 평평해지고, 진짜 구조는 사라진다. 한쪽만 맞추기는 쉽다 — 둘 다 맞추는 지점을 찾는 것이 관문이다.

통과 못 했으면 어느 쪽이 안 맞는지부터 본다. 홈 깊이가 안 맞으면 처리가 너무 센 것이고, P-V가 안 맞으면 덜 센 것이다.

02 · 본 시료

한 번 시켜본다

패널에 입력
data/scans/ 의 S1~S4 에서 표면 거칠기를 구해줘.
관문에서 만든 방법 그대로 쓰고, results/거칠기.csv 에 저장해줘.

숫자가 나왔을 것이다. 이 숫자를 적어 둔다. 곧 다시 쓴다.

03 · 다시 · 오늘의 출발점

같은 명령을 한 번 더

새 대화창을 연다. (Cline이면 새 Task, Claude Code면 /clear)

앞의 대화 내용을 알려주지 말고, 똑같은 문장을 다시 붙여넣는다.

패널에 입력
data/scans/ 의 S1~S4 에서 표면 거칠기를 구해줘.
같은 파일, 같은 명령, 같은 물리량

그런데 답이 다르다. 코드가 틀린 게 아니다. 에이전트가 매번 처리 방법을 다시 고르기 때문이다.

졸업하면 이 문제를 계속 만난다 — 반년 전 내 폴더를 다시 열었을 때, 다른 사람이 내 숫자를 확인하려 할 때.

04 · 방법

무엇을 고른 것인가

패널에 입력
방금 그 거칠기를 어떻게 냈는지 단계별로 알려줘. 특히 —

- 평면 맞춤을 했어? 몇 차로?
- 라인별 정렬을 했어? 어떤 방식으로?
- Ra 야, Rq 야? 다른 지표도 있는데 왜 그걸 골랐어?
- 어느 영역에서 계산했어?

각 단계마다 다른 선택지가 뭐가 있었는지도 같이 적어줘.
확인할 것
모든 단계에 값이 적혀 있는가“적절히 처리했다”는 답이 아니다
기본값도 값으로 적었는가기본값도 선택이다
라이브러리가 알아서 한 것도 적었는가모르면 찾아보고 적어야 한다
05 · 조합

폭이 얼마인가

통째로 복사
처리 조합을 아래처럼 바꿔가며 전부 돌려줘.

  평면 맞춤 차수: 1차 / 2차 / 3차
  라인별 정렬:   안 함 / 줄마다 중앙값 / 줄마다 직선

9가지 조합 × 시료 4개에 대해 Ra 를 표로 만들고,
시료마다 최소 · 최대 · 최대/최소 배수를 적어줘.

같은 표를 표준시료(step_standard)에 대해서도 만들어줘 —
조합마다 홈 깊이와 평탄면 P-V 를 내고, 관문을 통과하는지 표시해줘.
관문이 좁혀준다

통과하지 못한 조합들은 각각 이유가 다르다 — 진짜 구조를 지웠거나, 기기 인공물을 덜 뺐거나. 관문 하나가 대부분을 걸러낸다.

06 · 대조

90° 돌려서 잰 것

시료목록.csv를 본다. S2와 S4는 같은 시료, 같은 자리다. 스캔 방향만 90° 다르다.

패널에 입력
S2 와 S4 의 Ra 를 9가지 조합 각각에 대해 나란히 표로 보여줘.
두 값의 불일치(%)도 같이 적어줘.

표면이 같으니 답도 같아야 한다. 어긋나는 조합이 있는가?

정답을 몰라도 잡힌다

이 대조는 참값이 필요 없다. 같은 자리를 두 번 잰 것뿐이다. 어긋난다면 처리가 방향에 의존한다는 뜻이고, 그건 스캔축과 나란한 진짜 구조를 지우고 있다는 뜻이다.

S2를 원시 이미지로 열어 보면 왜 그런지 보인다.

07 · 사각

그래도 남는 것

패널에 입력
관문을 통과한 조합만으로 S1~S4 의 Ra 를 다시 표로 보여줘.
시료마다 값이 몇 % 벌어지는지 적어줘.

한 시료에서 유독 크게 벌어질 것이다. 그 시료의 원시 이미지를 본다.

패널에 입력
그 시료의 원시 이미지와, 관문을 통과한 두 조합으로 처리한 이미지를
세 개 나란히 그려줘. 색상 범위는 셋 다 같게 맞춰줘.
관문에는 반드시 사각이 있다

표준시료의 평탄면에는 긴 파장의 굴곡이 없다. 그래서 관문은 「굴곡을 지우는 처리」를 볼 수 없다.

그게 어디인지 아는 것까지가 일이다.

08 · 못박기 · 오늘의 기법

남은 자유도는 적어둔다

닫을 수 없다. 그러면 어떻게 하는가 — 적어둔다.

통째로 복사
results/처리사양.md 를 만들어줘. 아래 표를 채우고,
각 칸에 "적절히" 같은 말 대신 값을 넣어줘.

| 단계 | 내가 쓴 값 | 다른 선택지 | 왜 이걸 골랐나 |
| 평면 맞춤 차수 |  |  |  |
| 라인별 정렬 |  |  |  |
| 지표 (Ra/Rq) |  |  |  |
| 계산 영역 |  |  |  |
| 픽셀 크기 |  |  |  |

그리고 results/거칠기.csv 를 이 사양대로 다시 만들고,
파일의 SHA-256 체크섬을 results/처리사양.md 아래에 적어줘.
python·numpy·scipy 버전도 같이 적어줘.
확인 — 사양이 진짜 작동하는가

다시 새 대화창을 연다. 이번에는 사양 파일을 같이 준다.

패널에 입력
results/처리사양.md 에 적힌 대로 data/scans/ 의 거칠기를 구해서
CSV 로 저장하고 SHA-256 을 알려줘.
결과
체크섬이 같다사양이 충분하다
다르다사양에 빠진 칸이 있다. 무엇인지 찾아서 채운다
숫자와 그림은 기준이 다르다

숫자는 바이트 단위로 같아야 한다. 사양이 고정되어 있으면 그렇게 된다.
그림은 그럴 수 없다. 라이브러리 판본이나 폰트가 바뀌면 픽셀이 달라진다.

체크섬은 수치 결과에 걸고, 그림은 눈으로 비교한다. 대신 그림에는 색상 범위를 반드시 명시한다 — 자동 범위로 두면 같은 데이터가 매번 다르게 보인다.


손으로 확인한다

에이전트 없이 한 번은 직접 본다

01

step_standard.txt를 텍스트 편집기로 연다

02

헤더 아래 첫 줄에서 값을 다섯 개 옮겨 적는다

03

같은 줄의 가장 큰 값과 가장 작은 값을 눈으로 찾아 적는다

손글씨 + 사진

그 숫자들을 손으로 적고 사진을 찍어 제출한다.

그 차이가 홈 깊이 180 nm와 비슷한가, 아니면 훨씬 큰가? 훨씬 클 것이다. 왜 그런가? — 처리를 안 했기 때문이다.


제출

3줄 보고서 — results/보고서.md
형식은 학기 내내 같았다
결론:     [숫자] [단위]
불확실성: [값] — 노이즈에서 온 것인지 절차 선택에서 온 것인지 밝힐 것
적용 범위: 이 방법의 가정이 이 시료에서 성립하는가. 확인한 근거는?

첫 줄은 지표 이름을 붙여서 쓴다.
SS316-A 의 Ra = 3.3 nm (평면 맞춤 2차, 라인 정렬 없음, 5 µm 시야)

처리 조건 없는 거칠기 값은 답이 아니다.

검증 로그 — results/검증로그.md
채울 것
에이전트가 낸 주장 (02의 첫 숫자)
같은 명령 두 번의 차이 (03)
조합 9가지의 폭 (05)
관문이 걸러낸 조합과 각각의 이유
손 앵커 — 원시 데이터 첫 줄의 값 5개와 그 범위 (손글씨 + 사진)
90° 대조 결과 — 어긋난 조합과 그 뜻
관문이 못 잡은 것 — 무엇이고, 어떻게 알았나
처리사양.md와 체크섬 — 새 대화에서 재현되었는가
에이전트에게 맡기면 안 되는 단계 1개 + 이유 2줄
최종 결론 — 처리 조건이 붙은 숫자로
이번 실습 기준

results/ 폴더 전체를 압축해서 제출한다. 그 폴더만 받은 사람이 네 숫자를 다시 만들 수 있어야 한다.


막혔을 때

증상해볼 것
두 번 돌렸더니 답이 다르다정상이다. 그게 오늘의 주제다
관문에서 홈 깊이가 안 나온다라인별 정렬을 켰는가? 홈이 가로다
관문에서 P-V가 12를 넘는다평면 맞춤 차수가 낮다. 보우가 남았다
차수를 올렸더니 홈이 얕아진다너무 센 것이다. 두 기준 사이를 찾는다
S2와 S4가 다르게 나온다정상이다. 06이 그 얘기다
체크섬이 매번 다르다사양에 빠진 칸이 있다. 04로 돌아간다
그림 체크섬이 다르다정상이다. 그림에는 체크섬을 걸지 않는다
파일이 커서 느리다256×256 = 65,536점이다. numpy.loadtxt를 쓴다
그림의 한글이 네모(□□□)그래프 한글 폰트를 Malgun Gothic으로 지정해줘
에이전트가 “맞습니다”만 한다질문이 잘못됐다. “맞아?” 대신 “바꾸면?”으로

재현성은 불확실성을 없애는 게 아니라 고정하는 것이다.

일곱 주 동안 표준시료로 절차를 골랐고, 방법을 교차 검증했고, 구속을 걸었고, 답이 얼마나 움직이는지 쟀다. 그런데 마지막에 남는 자유도는 아무것도 닫아주지 않는다. 관문에도 사각이 있고, 대조에도 한계가 있다.

그때 할 수 있는 것은 하나뿐이다 — 무엇을 골랐는지 적어두는 것. 적어두면 남이 확인할 수 있고, 확인할 수 있으면 틀렸을 때 고칠 수 있다. 그게 없으면 맞았는지 틀렸는지조차 알 수 없다.

인공지능재료공학 · 실습 08 · 신소재공학부
데이터: 교육용으로 합성한 AFM 높이맵 — 실제 측정이 아니다