AI한테 '자기 성적표 보고 스스로 개선해'라고 시켰더니 — 3단계 피드백 루프

이런 것도 됩니다··9분 읽기·

AI한테 "자기 성적표 보고 스스로 개선해"라고 시켰더니 — 3단계 피드백 루프

AI 예측 엔진 5개 피드백 루프 자동 학습 시스템

결과부터 — AI가 매주 자기 성적표를 보고 스스로 조정한다

로또 분석 앱에 AI 예측 엔진이 5개 있어요. 매주 번호를 예측하는데, 문제는 엔진마다 잘 맞는 주와 못 맞는 주가 있다는 거예요. 어떤 엔진은 이번 주에 4등을 맞추는데, 다른 엔진은 하나도 못 맞추고.

그래서 이런 생각이 들었어요. 매주 성적표를 자동으로 채점하고, 잘하는 엔진의 비중을 높이면 되지 않을까?

AI한테 시켰더니 진짜 만들어줬습니다. 3단계로:

  • 1단계: 잘 맞춘 엔진의 비중을 높이고 못 맞춘 엔진은 낮춤
  • 2단계: 각 엔진이 빗나간 방향을 감지해서 파라미터를 보정
  • 3단계: 완전히 새로운 "메타 패턴" 엔진을 추가
  • 매주 토요일 추첨 후, 이 3단계가 자동으로 돌아갑니다. 사람이 할 일은 없어요.

    왜 필요했나 — 5개 엔진의 성적이 롤러코스터였다

    예측 엔진 5개가 있는데, 매주 성적이 들쭉날쭉해요:

    엔진 이번 주 지난주 설명
    AlphaGo 평균 0.71개 1.05개 게임 이론 기반
    LSTM 0.60개 0.80개 딥러닝 예측
    Statistical 0.51개 0.90개 통계 분석
    Association 1.05개 0.50개 연관 규칙
    통합 AI 0.21개 0.75개 5개 합친 것
    Association이 이번 주 MVP(평균 1.05개)인데, 지난주에는 꼴찌였어요. 반대로 AlphaGo는 지난주 1등이었는데 이번 주에 떨어졌고. 통합 AI가 오히려 개별 엔진보다 못한 경우도 있었어요. 5개를 합쳤으니 더 좋아야 할 것 같은데, 각 엔진의 비중이 고정되어 있으니까 "잘 맞는 엔진의 목소리가 묻히는" 상황이 발생한 거예요.

    "자동으로 비중 조절해줘" — 프롬프트가 핵심이었다

    Before — 초급 프롬프트:
    AI 엔진들 가중치를 자동으로 바꿔줘

    AI가 "매 예측마다 실시간으로 가중치를 변경하는" 복잡한 구조를 제안했어요. 과도하게 복잡하고, 매번 변경하면 오히려 불안정해질 수 있었습니다.

    After — 중급 프롬프트:
    당신은 앙상블 머신러닝 전문가입니다.
    
    [현재 상태]
    - 5개 AI 예측 엔진이 매주 로또 번호를 예측
    - 각 엔진의 가중치가 고정(각 20%)으로 되어 있음
    - 매주 토요일 추첨 후 "주간 리포트"가 자동 생성됨
      (엔진별 평균 적중 개수, 4등/5등 건수 포함)
    
    [요구사항]
    - 주간 리포트를 기반으로 가중치를 자동 재계산
    - 최근 8주 데이터로 판단 (너무 오래된 건 반영 안 함)
    - 한 엔진이 독점하면 안 됨 (최소 10%, 최대 45%)
    - 매주 토요일 추첨 후 자동 실행 (cron)
    
    [제약]
    기존 weekly_reports 테이블을 그대로 활용해야 합니다.
    새 테이블은 ensemble_weights 하나만 추가 가능합니다.

    "최소 10%, 최대 45%"라는 제약조건이 핵심이었어요. 이걸 안 넣으면 AI가 한 엔진에 90%를 몰아주는 극단적인 구조를 만들어요. 한 주 잘했다고 몰빵하면 다음 주에 망할 수 있거든요.

    1단계 — 잘 맞춘 엔진의 비중을 높여라

    AI가 만든 가중치 계산 공식:

    점수 = (평균 적중률 × 70%) + (4등·5등 건수 × 30%)

    왜 이렇게 나눴냐면, 평균적으로 꾸준히 맞추는 것가끔이라도 대박(4등 이상)을 치는 것 둘 다 중요하거든요. 평균 적중률만 보면 "매번 1개씩 맞추는 엔진"이 높은 점수를 받는데, "평균은 낮지만 가끔 4등을 터뜨리는 엔진"의 가치를 놓치게 돼요.

    실제 1216회 결과에서:

    • Association: 평균 1.05개, 5등 3건 → 점수 가장 높음 → 가중치 상향

    • LSTM: 평균 0.60개, 당첨 없음 → 점수 낮음 → 가중치 하향

    • Statistical: 평균 0.51개인데 4등 1건! → 보너스 점수로 살아남음


    이 계산이 매주 자동으로 돌아갑니다.

    2단계 — "어디서 빗나갔는지" 감지해서 보정

    가중치만 바꾸는 건 "누구 말을 더 듣겠다"를 정하는 거예요. 2단계는 "각 엔진이 어떤 방향으로 틀렸는지"를 찾아서 보정하는 단계입니다.

    당신은 예측 모델 튜닝 전문가입니다.
    
    [요청]
    각 AI 엔진의 예측이 빗나간 방향을 감지하고,
    다음 예측에서 반대 방향으로 보정하는 시스템을 만들어주세요.
    
    [감지할 편향]
    1. 구간별: 30-40번대를 너무 많이 예측했는데 실제는 1-20번대가 많음
    2. 홀짝: 홀수를 너무 많이 예측했는데 실제는 짝수가 많음
    3. 고저: 고번호(23-45)를 너무 많이 예측했는데 실제는 저번호가 많음
    
    [예시]
    지난 8주간 AlphaGo가 30-40번대를 40% 예측했는데
    실제 당첨은 25%만 30-40번대 → "고번호 편향" 감지
    → 다음 주 예측에서 30-40번대 가중치를 0.8배로 낮춤

    이게 비유하면 이래요. 축구 코치가 "너 왼쪽으로만 슛 차는 버릇이 있어. 오른쪽도 연습해"라고 말하는 거예요. AI가 매주 자기가 어느 쪽으로 치우쳤는지 자동으로 감지하고, 반대 방향으로 살짝 보정합니다.

    3단계 — 완전히 새로운 "메타 패턴" 엔진

    1-2단계는 기존 엔진을 튜닝하는 거예요. 3단계는 아예 새로운 관점의 엔진을 추가한 겁니다.

    당신은 데이터 패턴 분석 전문가입니다.
    
    [배경]
    기존 4개 엔진은 각각 개별 번호를 예측합니다.
    하지만 "전체적인 윤곽"을 보는 엔진이 없습니다.
    
    [요청]
    당첨번호의 메타 패턴(전체적 특성)을 학습하는 새 엔진을 만들어주세요.
    
    [학습할 메타 패턴 5가지]
    1. 합계: 6개 번호의 총합 (보통 100-170 사이)
    2. 홀짝비: 홀수 몇 개, 짝수 몇 개 (보통 3:3 근처)
    3. 연번: 연속 번호 쌍이 있는지 (14-15 같은)
    4. 구간분포: 1-10, 11-20, 21-30, 31-40, 41-45 각 구간에 몇 개
    5. 끝자리: 0-9 끝자리가 얼마나 다양한지
    
    [동작 방식]
    최근 200회 데이터에서 메타 패턴 트렌드를 파악하고,
    5000번 시뮬레이션으로 다음 주에 가장 유력한 조합을 찾기

    기존 엔진들은 "이 번호가 나올 확률이 높다"를 예측하는데, 메타 패턴 엔진은 "다음 주 전체 윤곽이 어떤 모양일까"를 예측해요.

    예를 들어, 1216회 당첨번호(3, 10, 14, 15, 23, 24)의 메타 패턴:

    • 합계: 89 (평균보다 매우 낮음)

    • 홀짝: 3:3 (완벽 균형)

    • 연번: 2쌍 (14-15, 23-24) — 드문 패턴

    • 구간: 1-10에 2개, 11-20에 2개, 21-30에 2개


    이런 "윤곽"을 학습해서, "다음 주에는 합계가 올라갈 가능성이 높고, 연번은 줄어들 것"이라고 예측하는 거예요.

    681건 중 338건이 틀려있었다 — 매칭 검증 자동화

    피드백 루프를 만들면서 예측 데이터를 점검했더니, 681건 예측 중 338건(49.6%)의 매칭 결과가 틀려있었어요.

    [피드백]
    예측 아카이브에서 매칭 결과를 재검증했더니
    681건 중 338건이 실제 당첨번호와 다르게 기록되어 있습니다.
    
    [원인 추정]
    예측 저장 시점과 당첨번호 확정 시점 사이의 타이밍 차이
    
    [요청]
    1. 338건 전부 재매칭해주세요
    2. 앞으로 매주 자동으로 재검증하는 로직을 추가해주세요

    AI가 100건씩 배치로 나눠서 재매칭하고, 매주 추첨 후 자동 재검증 로직까지 추가해줬어요. "앞으로 자동으로"라는 한 마디가 재발 방지까지 이어졌습니다.

    전체 파이프라인 — 매주 자동으로 돌아간다

    토요일 추첨
      → 당첨번호 자동 수집
      → 681건 예측 결과 자동 매칭 + 검증
      → 주간 리포트 자동 생성 (엔진별 성적표)
      → [1단계] 앙상블 가중치 자동 재계산
      → [2단계] 각 엔진 편향 감지 → 파라미터 보정
      → [3단계] 메타 패턴 트렌드 업데이트
      → 다음 주 예측에 반영

    사람이 할 일: 없음. 전부 자동.

    솔직한 한계점

    • 8주 데이터로 판단하기엔 짧을 수 있어요. 로또는 랜덤이라 8주 성적이 실력인지 운인지 구분이 어렵습니다
    • 메타 패턴이 실제로 효과가 있는지는 시간이 더 필요해요. 아직 몇 주밖에 안 돌렸으니까
    • 통합 AI(5개 앙상블)가 개별 엔진보다 못한 경우가 여전히 있어요. 가중치 조정으로 개선될 수 있지만, "합치면 무조건 좋다"는 보장은 없습니다

    "피드백을 시스템으로" — 이게 핵심이었다

    매주 "이번 주 어떤 엔진이 잘했지?" 하고 수동으로 확인하는 건 일주일에 한 번이라 해도 귀찮아요. 이걸 시스템으로 만들어서 자동으로 돌아가게 한 게 핵심이었습니다.

    AI한테 시킬 때 효과가 있었던 프롬프트 패턴:

  • "최소/최대 제한"을 넣기 — 가중치 최소 10%, 최대 45%를 명시하지 않으면 AI가 극단적인 구조를 만듦
  • "빗나간 방향"을 감지시키기 — "틀렸다"가 아니라 "어떤 방향으로 틀렸는지"를 찾게 하면 보정이 정확해짐
  • "기존 데이터 활용"을 명시하기 — "weekly_reports 테이블을 그대로 쓰라"고 해야 불필요한 새 구조를 안 만듦
  • AI도 매주 성적표를 받고 피드백을 받으면 개선됩니다. 사람이랑 같아요.

    공유

    댓글