92는 무엇인가
에이전트에게 SEM 이미지에서 나노입자 크기를 재게 하면 숫자 하나를 내놓는다. 예를 들면 92.
오늘 할 일은 그 숫자를 받는 것이 아니라, 그게 무엇인지 되묻는 것이다.
AI가 낸 숫자가 92일 수도, 96일 수도, 23일 수도 있다. 어느 쪽이든 질문은 같다 — 그래서 그게 무엇의 무엇인가.
A — “어떻게 했어?” 방법이 드러난다.
B — “이게 뭐야?” (단위·정의·표본·산포) 결과의 속성이 드러난다.
A를 먼저 한다. 방법을 알고 나면 B의 절반은 이미 답이 나와 있다.
전체 흐름
초록색 두 칸이 오늘의 중심이다. 그리고 첫 칸을 통과하지 못하면 두 번째 칸으로 넘어가지 않는다.
이번 실습부터 생기는 것 — 관문
앞 실습까지는 데이터를 바로 다뤘다. 이번 실습부터는 그 앞에 하나가 붙는다.
답이 알려진 시료로 파이프라인을 먼저 만들고, 인증값과 대조한다. 통과해야 본 시료로 간다.
어느 실험실이든 장비를 쓰기 전에 표준으로 검증한다. 회사에서도, 대학원에서도. “새 분석 절차를 만들면 답을 아는 것부터 통과시킨다” — 이 습관 하나가 오늘의 절반이다.
“제대로 작동하는 상태”를 먼저 봐야 본 시료의 이상한 값이 무엇을 뜻하는지 판단할 근거가 생긴다. 표준 없이 본 시료부터 하면 모든 이상이 “AI가 원래 좀 이상하다”로 뭉개진다.
오늘 할 일
눈으로 먼저 본다
계산부터 시작하지 않는다. 이미지 두 장을 나란히 놓고 눈으로 먼저 본다.
아무 처리도 하지 않은 원본을 한 장 그려서 results/00_원본.png로 저장한다.
구체적인 프롬프트는 과제.md의 01에 있다.
두 장이 눈에 띄게 다르다. 어느 쪽이 표준시료일지 짐작이 갈 것이다.
오늘 하는 모든 계산이 이 그림에서 시작한다 — 숫자가 이상하면 항상 여기로 돌아온다.
답을 아는 것부터 통과시킨다
본 시료는 아직 건드리지 않는다. data/standard/에 답이 알려진 시료가 있다.
data/standard/calibration.png 에서 입자를 찾아서 개수와 크기를 재줘. data/standard/인증값.md 에 정답이 적혀 있다. results/표준검증.md 에 아래 표를 남겨줘. | 항목 | 인증값 | 내 결과 | 차이 | 허용범위 | 통과 | 허용범위를 벗어나면 본 시료로 넘어가지 마. 무엇이 틀렸는지 먼저 알려줘.
- 입자 개수가 정확히 60개인가
- 세 크기 군(120 / 200 / 300 nm)이 각각 20개씩 나오는가
- 각 군의 평균이 인증값의 ±5 % 안에 드는가
안 맞으면 인증값.md 아래쪽에 흔한 실패 세 가지가 적혀 있다.
세 크기 군 모두 인증값보다 조금 크게 나왔을 것이다. 몇 %인가? 그리고 세 군 모두 같은 방향으로 틀렸는가, 제각각인가?
같은 방향으로 틀렸다면 그건 우연이 아니다. 데이터설명.md 마지막 항목에 이유가 있다.
눈치채고 이유까지 적을 수 있는지 보자.
우연히 흔들리는 오차와 항상 같은 방향으로 생기는 오차는 다른 것이고, 뒤쪽은 알고 있으면 감안할 수 있다. 표준시료가 있어야만 알 수 있는 것이기도 하다.
이 숫자에 네 가지를 붙인다
관문을 통과했으면 같은 파이프라인을 본 시료에 그대로 적용한다. 숫자가 하나 나온다.
좋아. 이제 같은 파이프라인을 data/images/ 의 이미지 8장에 적용해서 입자 크기를 재줘. 결과는 results/ 에 저장. AGENTS.md에 적힌 대로 results/계산근거.md 도 남겨줘.
여기서부터가 오늘의 실습이다. 에이전트에게 하나씩 되묻는다 — 한 번에 다 묻지 말고.
어떻게 했어?
숫자를 받았으면 결과를 따지기 전에 방법부터 듣는다.
방금 그 숫자를 어떻게 냈는지 단계별로 알려줘. - 입자와 배경을 어떻게 갈랐어? 임계값은 어떻게 정했어? - 붙어 있는 입자는 어떻게 처리했어? - "직경"을 픽셀에서 어떻게 계산했어? - 데이터바 영역은 어떻게 뺐어? 각 단계마다 왜 그 방법을 골랐는지도 한 줄씩 적어줘.
“regionprops의 equivalent_diameter를 썼습니다” 같은 답이 오면
아직 방법을 들은 게 아니다. 그 함수가 실제로 무엇을 계산하는지 물어야 한다.
그 함수가 실제로 어떻게 계산하는지 말로 설명해줘. 함수 이름 말고.
방금 말한 각 단계에서, 다른 선택지는 뭐가 있었어? 표로 만들어줘. [단계 | 내가 쓴 방법 | 다른 선택지 | 결과가 달라지나]
AI는 대개 자기가 고른 것만 말하고 대안은 말하지 않는다. 대안을 대게 하는 순간 그 선택이 자유도였다는 것이 드러난다.
기본값을 썼다면 그것도 선택이다 — “라이브러리 기본값을 썼다”라고 적게 한다.
AI가 말한 방법이 그럴듯한가? 그럴듯한 것과 이 시료에 맞는 것은 다르다.
이 시료는 입자가 서로 떨어져 있고 대비가 충분하다. 그러면 어떤 방법이 맞나? 겹쳐 있었다면 답이 달라졌겠는가?
여기서 나온 답이 다음 단계의 질문을 절반쯤 대신해 준다. 방법을 제대로 진술했다면 “무엇의 직경인가”는 이미 답이 나와 있을 것이고, 진술하지 못했다면 그것 자체가 발견이다.
이게 뭐야?
방법을 들었으니 이제 결과 자체에 네 가지를 붙인다. 한 번에 다 묻지 말고, 하나씩.
방금 낸 숫자의 단위가 뭐야? 픽셀 크기를 어디서 읽었는지, 아니면 안 읽었는지 알려줘.
픽셀로 답했다면 그건 길이가 아니다. nm로 답했다면 어디서 픽셀 크기를 얻었는지 —
사이드카 .txt인가, 이미지의 스케일바인가? 둘 다 있으니 서로 맞는지 확인시켜 본다.
단위 하나로 답이 4배 달라진다. 그리고 AI는 묻지 않으면 어느 쪽인지 말해주지 않는다.
이 입자들은 원이 아니다. 타원이다. 그러면 “지름”이 한 가지가 아니다.
지금 쓴 직경 정의가 뭐야? 면적등가직경 / 최대 페렛 지름 / 장축 세 가지로 각각 다시 계산해서 한 표에 나란히 보여줘.
세 값이 얼마나 다른가? 몇 %인가?
③ 표본 — 몇 개 중의 평균인가몇 개를 셌어? - 프레임 경계에 걸린 입자는 포함했어, 제외했어? - 최소 크기 필터를 걸었어? 걸었다면 몇 nm 미만을 뺐어? - 아주 작은 입자들이 있는데, 그것들도 셌어? 경계 입자를 뺐을 때와 안 뺐을 때, 50 nm 미만을 뺐을 때와 안 뺐을 때를 각각 계산해서 표로 보여줘.
둘 중 하나는 거의 안 움직이고 다른 하나는 크게 움직인다. 어느 쪽인가?
그리고 개수평균이 유일한 평균이 아니다.
개수평균 말고 면적가중평균과 중앙값도 계산해줘.
입자 크기 히스토그램을 그려줘. 그리고 이 분포에 "평균 ± 표준편차"가 적절한 요약인지 판단해줘. 아니라면 무엇으로 요약해야 하는지 알려줘.
히스토그램이 좌우 대칭인가? 아니라면 평균은 어느 쪽으로 끌려가 있는가?
흔들어본다
“맞아?”라고 물으면 “맞습니다”가 온다. “바꾸면?”이라고 물어야 답의 폭이 나온다.
두 가지를 각각 바꿔가며 다시 계산해서, 개수와 평균이 몇 % 움직이는지 표로 보여줘. (가) 임계값: 기준 / −10 % / +10 % (나) 최소 직경 필터: 없음 / 30 nm 미만 제외 / 50 nm / 70 nm
어느 쪽인가?
흔들었는데 안 움직였다는 것도 결과다. 그 파라미터는 이 시료에서 답을 좌우하지 않는다는 뜻이다. 반대쪽은 좌우한다.
어느 쪽이 어느 쪽인지는 흔들어봐야 안다 — 미리 알 수 없고, AI는 묻지 않으면 말해주지 않는다.
이게 오늘 배우는 기술이다. 에이전트에게 “이거 맞아?”라고 물으면 “네, 맞습니다”라는 답이 온다 — 아첨할 수 있는 형태의 질문이기 때문이다. “이걸 바꾸면 어떻게 되는데?”라고 물어야 답의 폭이 나온다.
손으로 재본다
AI 없이 한 번은 직접 잰다. 오늘 제출물 중 유일하게 반드시 진짜여야 하는 숫자다.
sample_01.png을 화면에 크게 띄운다
자를 대고 입자 10개의 가장 긴 폭을 잰다
화면에서 mm로. 스케일바(1 um이라고 적힌 그것)도 같이 잰다.
비례식으로 nm로 환산한다
내가 잰 입자(mm) : 스케일바(mm) = 입자(nm) : 1000 nm
이 열 개의 값을 손으로 적고 사진을 찍어 제출한다. AI가 낸 값과 얼마나 다른가? 다르다면 왜 그럴 것 같은가?
내는 것
보고서 한 편으로 낸다
results/보고서.md 한 편으로 낸다. 차례는 아래와 같고,
각 절에 무엇을 넣는지는 과제.md의 「내는 것」에 적혀 있다.
| 절 | 넣을 것 |
|---|---|
| 표지 | 실습 · 이름 · 학번 · 쓴 도구 · 날짜 |
| 1 · 데이터 | 01에서 그린 원본 그림과 거기서 읽은 것 세 줄 |
| 2 · 한 일 | 단계마다 쓴 방법 / 다른 선택지 / 왜 골랐나 |
| 3 · 결과 | 결론 · 불확실성 · 적용 범위 세 줄 + 근거 표 |
| 4 · 확인한 것과 못 한 것 | 손으로 잰 값 포함. 못 한 것도 적는다 |
| 5 · 되돌아보기 | 네 문항 |
다 쓰면 results/ 폴더 전체를 압축해서 낸다.
그 폴더만 받은 사람이 네 숫자를 다시 만들 수 있어야 한다.
막혔을 때
| 증상 | 해볼 것 |
|---|---|
| 관문에서 개수가 60이 아니다 | 데이터바를 같이 셌을 가능성이 크다. 아래 64 px를 빼라고 말한다 |
| 결과에 단위가 없다 | 사이드카 .txt를 읽으라고 시킨다. ①번 질문이 바로 이걸 잡는다 |
| 섭동에서 임계값이 안 움직인다 | 정상이다. 그게 결과다. 최소 직경 쪽을 본다 |
| 그림의 한글이 네모(□□□) | 그래프 한글 폰트를 Malgun Gothic으로 지정해줘 |
| AI가 “맞습니다”만 한다 | 질문이 잘못됐다. “맞아?” 대신 “바꾸면?”으로 묻는다 |
| 뭘 했는지 모르겠다 | 방금 뭘 했는지 한국어로 3줄로 요약해줘 |
| 답이 산으로 간다 | 패널 위쪽 +로 새 대화 |
숫자는 그 자체로 완결되지 않는다. 단위·정의·표본·산포가 붙어야 비로소 값이 된다.
오늘 AI가 낸 하나의 숫자는, 되묻는 것만으로 96 nm에서 130 nm까지 벌어졌다. 단위를 안 물었으면 24였다. 어느 것도 AI가 틀린 것이 아니다. 묻지 않은 것을 AI가 대신 정했을 뿐이다.
인공지능재료공학 · 실습 03 · 신소재공학부
데이터: 교육용으로 합성한 SEM 이미지 — 실제 측정이 아니다