TRN02 실습가이드 - 방공·드론 식별 퀴즈 자동채점·오답유형 분석기
구 분 실습가이드 [교육용가상자료]
1. 실습 개요
본 실습은 교육용 가상 문항 은행과 가상 응시자 응답으로 방공·드론 식별 퀴즈의 자동채점·오답유형 분석 시스템을 미션 단위로 구현하는 과정이다. 미션마다 정답 코드(TRN02_정답코드.md)의 해당 코드를 웹 파이썬 실행기에 붙여 넣어 실행하고, 출력된 수치가 평가 기준을 충족하는지 확인한 뒤 파라미터를 바꿔 보는 도전 과제를 수행한다. 미션별 코드는 서로 독립적이어서 어느 미션부터 실행해도 동작한다.
| 과제 |
TRN02 방공·드론 식별 퀴즈 자동채점·오답유형 분석기 |
| 준비물 |
TRN02_정답코드.md, 웹 파이썬 실행기(numpy·pandas·scipy·scikit-learn·matplotlib 사용 가능), 결과 기록용 문서 |
2. 진행 방법
-
정답코드 md에서 해당 미션의 코드 블록 전체를 복사해 실행기에 붙여 넣고 실행한다(부분 복사 시 문항 은행·응답 생성 함수가 빠져 오류가 난다).
-
실행 결과를 md의 '실행 결과 예시'와 비교한다. 난수 시드가 고정되어 같은 값이 나오지만, 처리 시간(ms·건/초)은 실행 환경에 따라 달라진다.
-
도전 과제는 코드 상단의 파라미터(유사도 기준값, 합격선, 경보 기준, 장애율 등)를 바꿔 다시 실행하고 변화와 이유를 기록한다.
-
그래프 글자는 영문, 표·출력은 한글이다. 한글이 깨지면 실행기 글꼴 문제이며 결과에는 영향이 없다.
-
실제 부대원 성적·인적사항은 입력하지 않는다. 교전 통제 문항은 일반 원칙 수준이며 실제 교전 판단은 교전수칙·지휘계통에 따른다.
3. 미션 진행 요약
| 미션 |
난이도·시간 |
핵심 확인 결과 |
| M1. 방공 식별 및 대드론 교전 수칙 퀴즈 문항 데이터베이스 및 평가 기준 수립 |
초급 |
|
| 1.5시간 |
정상 문항·응답 검증 오류 0건, 주입 오류 모두 검출 |
|
| M2. 장병 응답 텍스트/선택지 정제 및 시험 답안 파싱 전처리 모듈 구현 |
초급~중급 |
|
| 2시간 |
처리 속도 1,000건/초 이상(예시 약 18만 건/초), 전처리 오류 0건 |
|
| M3. 선다형 및 단답형 방공 퀴즈 자동 채점 Baseline 로직 구현 |
중급 |
|
| 2.5시간 |
채점 정확도 99.0%(목표 75% 이상), 채점 예외 0건 |
|
| M4. 오답 유형(개념 혼동, 피아 오인, 절차 누락) 자동 분류 및 패턴 분석 엔진 고도화 |
중급 |
|
| 3시간 |
유형별 재현율 85% 이상(예시 0.995~1.0), 건당 0.2초 이하 |
|
| M5. 개인별/부대별 방공 취약 영역 식별 및 맞춤형 보충 학습 추천 알고리즘 개발 |
중급~고급 |
|
| 3시간 |
오경보율 감축 42.6%(목표 40% 이상), 결정 일관성 91.2% |
|
| M6. 부대 방공 지식 수준 통계 및 오답 분포 가시화 교수자 대시보드 구현 |
중급 |
|
| 2.5시간 |
집계 갱신 최대 수십 ms(목표 1초 이내), 필터 조회 최대 수 ms(목표 100ms 이내) |
|
| M7. 이의 제기 문항 및 서술형 답변에 대한 교관 수동 채점(HITL) 검토 인터페이스 설계 |
고급 |
|
| 3시간 |
자동 확정 시도 5건 모두 차단, 로깅 성공률 100%(165건) |
|
| M8. 전 부대원 동시 응시 모의 대규모 트래픽 채점 부하 테스트 및 최적화 |
고급 |
|
| 3.5시간 |
평시 x6(500% 증가)에서 다운 0건, 유실 0건 |
|
| M9. AAR 기반 문항 변별력 분석 및 난이도별 가중치 파라미터 재보정 |
고급 |
|
| 3시간 |
Q11 키 오류·Q08 결함 식별, 정확도 83.3% → 87.5%(+4.2%p, 목표 10%p 미달) |
|
| M10. 방공 퀴즈 자동채점 및 오답분석 시스템 통합 최종 운영 패키지 완성 |
최고급 |
|
| 3.5시간 |
End-to-End 성공률 100%, 자체 점검 16/16 통과 |
|
미션 1. 방공 식별 및 대드론 교전 수칙 퀴즈 문항 데이터베이스 및 평가 기준 수립
| 진행 순서 | 1) M1 코드를 실행해 문항 32개와 응답 샘플 50건의 검증 결과를 확인한다.
2) 오류 주입 결과에서 각 오류가 어떤 규칙에 걸렸는지 표로 정리한다.
| 3) 문항 구성표(영역x유형)와 평가 기준(배점·합격선·미응답 처리)을 명세서로 옮긴다. |
|
| 확인할 결과 | 정상 문항·응답 검증 오류 0건, 주입 오류 모두 검출
| 스키마 필드 14개, 5개 영역 문항 구성과 배점(2/3/5점)·합격선 70% 정리 |
|
| 도전 과제 |
응시 상황 필드에 기상(weather: 맑음·우천·야간) 항목을 추가하고 허용값 밖의 값을 넣어 검출되는지 확인한다. |
| 제출물 |
스키마 정의 코드, 데이터 명세서(필드·규칙·평가 기준표) |
미션 2. 장병 응답 텍스트/선택지 정제 및 시험 답안 파싱 전처리 모듈 구현
| 진행 순서 | 1) M2 코드를 실행해 처리 속도, 중복 제거 건수, 상태 분포를 확인한다.
2) 단위 테스트 5종의 입력과 기대값을 표로 정리한다.
| 3) 전처리 전후 예시에서 원문자·전각·어미가 어떻게 정제되었는지 설명한다. |
|
| 확인할 결과 | 처리 속도 1,000건/초 이상(예시 약 18만 건/초), 전처리 오류 0건
| 단위 테스트 5/5 통과, 중복 115건 제거 후 3,840건 |
|
| 도전 과제 |
TAILS에 '이에요'를 추가하고 '피아식별이에요' 같은 응답이 정상 정제되는지 테스트를 하나 더 만든다. |
| 제출물 |
전처리 코드, 단위 테스트 결과, 전처리 전후 예시표 |
미션 3. 선다형 및 단답형 방공 퀴즈 자동 채점 Baseline 로직 구현
| 진행 순서 | 1) M3 코드를 실행해 채점 정확도와 건당 처리 시간을 확인한다.
2) 정확 일치가 틀린 사례 표를 보고 오탈자 허용 채점이 바로잡은 경우와 못 잡은 경우를 구분한다.
| 3) 유사도 기준값별 정확도를 보고 0.75를 고른 이유를 정리한다. |
|
| 확인할 결과 | 채점 정확도 99.0%(목표 75% 이상), 채점 예외 0건
| 도전 과제 |
grade_fuzzy의 cut을 0.6으로 낮췄을 때 알려진 오답이 정답으로 바뀌는 사례가 생기는지 확인한다. |
| 제출물 |
채점 코드, 기본 채점 결과 보고서(정확도·오류 사례·중대별 점수) |
미션 4. 오답 유형(개념 혼동, 피아 오인, 절차 누락) 자동 분류 및 패턴 분석 엔진 고도화
| 진행 순서 | 1) M4 코드를 실행해 시나리오 10종의 통과 여부와 유형별 재현율을 확인한다.
2) S9(목록에 없는 새 오답)의 오분류 사례를 보고 원인을 적는다.
| 3) 중대별 오답 유형 비율 표로 중대마다 강조할 교육 내용을 정한다. |
|
| 확인할 결과 | 유형별 재현율 85% 이상(예시 0.995~1.0), 건당 0.2초 이하
| 시나리오 10/10 통과, 새 오답 오분류 3건 식별 |
|
| 도전 과제 |
SEED 사전에 오분류된 새 오답 3개를 올바른 유형으로 추가하고 S9 정확도가 오르는지 확인한다. |
| 제출물 |
분류 엔진 코드, 시나리오 테스트 결과표, 오답 패턴 분석 |
미션 5. 개인별/부대별 방공 취약 영역 식별 및 맞춤형 보충 학습 추천 알고리즘 개발
| 진행 순서 | 1) M5 코드를 실행해 기존 방식과 난이도 반영 추정의 추천 수·오경보율을 비교한다.
2) 임계값 민감도 결과로 오경보율과 재현율의 교환 관계를 설명한다.
| 3) 개인 추천 예시와 중대 단위 권고를 확인한다. |
|
| 확인할 결과 | 오경보율 감축 42.6%(목표 40% 이상), 결정 일관성 91.2%
| ROC-AUC 0.898, 중대 단위 보충 교육 권고 5건 |
|
| 도전 과제 |
MEDIUM을 0.3으로 낮췄을 때 오경보율 감축과 재현율이 어떻게 바뀌는지 확인하고 적정 기준을 제안한다. |
| 제출물 |
추천 알고리즘 코드, 추천 전후 비교표, 신뢰도 등급 기준 |
미션 6. 부대 방공 지식 수준 통계 및 오답 분포 가시화 교수자 대시보드 구현
| 진행 순서 | 1) M6 코드를 실행해 4번의 갱신 시간과 필터 조회 시간을 확인한다.
2) 대시보드 4개 그림에서 경보(굵은 글씨) 칸과 고난도 문항을 찾는다.
| 3) 중대별 요약과 경보 하이라이트를 근거로 교관 조치 사항을 적는다. |
|
| 확인할 결과 | 집계 갱신 최대 수십 ms(목표 1초 이내), 필터 조회 최대 수 ms(목표 100ms 이내)
| 구성요소 4종 렌더링, 경보 1건(가상2중대 교전통제 0.50) |
|
| 도전 과제 |
ALERT_AREA를 0.65로 올려 경보 대상이 몇 건으로 늘어나는지 보고, 경보가 너무 많을 때의 문제를 적는다. |
| 제출물 |
대시보드 코드, 대시보드 화면 캡처, 교관 조치 메모 |
미션 7. 이의 제기 문항 및 서술형 답변에 대한 교관 수동 채점(HITL) 검토 인터페이스 설계
| 진행 순서 | 1) M7 코드를 실행해 자동 확정 차단과 사유 없는 결정 차단을 확인한다.
2) 검토 결과 표에서 서술형 승인·수정, 이의 제기 인정·기각 건수를 확인한다.
| 3) 감사 로그 변조 탐지와 교관 검토로 판정이 바뀐 인원 수를 정리한다. |
|
| 확인할 결과 | 자동 확정 시도 5건 모두 차단, 로깅 성공률 100%(165건)
| 변조 탐지(seq 7), 합격/불합격 변경 3명 |
|
| 도전 과제 |
WRONG_SENT에 틀린 진술을 하나 추가하고, 키워드 제안 점수가 틀리는 사례가 늘어나는지 확인한다. |
| 제출물 |
HITL 흐름 코드, 교관 검토 지침(요약), 감사 로그 검증 결과 |
미션 8. 전 부대원 동시 응시 모의 대규모 트래픽 채점 부하 테스트 및 최적화
| 진행 순서 | 1) M8 코드를 실행해 부하 단계별 처리량·보류·유실을 확인한다.
2) 보류 사유(장애·길이 초과·없는 문항)별 처리 방안을 정리한다.
| 3) 병목 프로파일과 캐시 적용 전후 처리량을 비교한다. |
|
| 확인할 결과 | 평시 x6(500% 증가)에서 다운 0건, 유실 0건
| 캐시 적용 후 처리량 수 배 향상(예시 5.3배) |
|
| 도전 과제 |
fail_rate를 0.1로 올려 보류 건수가 어떻게 늘어나는지 보고, 기능 축소 운용 전환 기준을 정한다. |
| 제출물 |
부하 테스트 코드, 부하 테스트 분석 보고서(처리량·보류·최적화) |
미션 9. AAR 기반 문항 변별력 분석 및 난이도별 가중치 파라미터 재보정
| 진행 순서 | 1) M9 코드를 실행해 경고 문항(정답 키 오류 의심·변별력 부족)을 확인한다.
2) 재보정 단계별 합격 판정 정확도 변화를 표로 정리한다.
| 3) 응시 집단 B 검증 결과와 YAML 설정을 AAR 보고서에 옮긴다. |
|
| 확인할 결과 | Q11 키 오류·Q08 결함 식별, 정확도 83.3% → 87.5%(+4.2%p, 목표 10%p 미달)
| 새 응시 집단 재발 오류 0건, 신규 점검 대상 3건 |
|
| 도전 과제 |
응시자 수를 make_responses(80, ...)로 늘려 변별도 추정이 안정되는지, 신규 점검 대상 수가 어떻게 변하는지 확인한다. |
| 제출물 |
AAR 분석 코드, AAR 보고서(원인·조치·효과), 재보정 YAML |
미션 10. 방공 퀴즈 자동채점 및 오답분석 시스템 통합 최종 운영 패키지 완성
| 진행 순서 | 1) M10 코드를 실행해 3개 회차 End-to-End 실행 결과를 확인한다.
2) 자체 점검 통과 수와 함수 커버리지를 확인한다.
| 3) 출력된 브리핑 요약으로 5분 분량 교육훈련 담당관 브리핑 자료를 만든다. |
|
| 확인할 결과 | End-to-End 성공률 100%, 자체 점검 16/16 통과
| 함수 커버리지 100%(22/22), 브리핑 수치가 실행 결과와 일치 |
|
| 도전 과제 |
CONFIG의 fuzzy_cut을 0.9, pass_ratio를 0.6으로 바꿔 실행하고 합격률과 교관 검토 건수 변화를 브리핑에 추가한다. |
| 제출물 |
통합 코드, README(실행 방법), 최종 결과 보고서와 브리핑 자료 |
4. 최종 점검표
| 점검 항목 |
확인 |
| 미션 1~10 코드가 모두 오류 없이 실행되었다 |
( ) |
| 각 미션의 확인할 결과를 기록했다 |
( ) |
| 도전 과제 결과와 이유를 기록했다 |
( ) |
| 목표 미달 항목(M9 정확도 10%p)의 원인을 기록했다 |
( ) |
| 실제 부대원 성적·인적사항을 사용하지 않았다 |
( ) |
| 채점 확정과 이의 판단은 교관이 하도록 설계했다 |
( ) |