Diary - AI training이란 무엇일까 (feat. Claude Code)
06 Mar 2026요즘 “Jack’s AI Center”의 유일한 고객인 아내와 언니의 Claude Code 세팅을 도와주고 있다. 블로그 글 쓰는 봇을 만들어달라는 요청이었는데, 이걸 만들다 보니까 뭔가 묘한 깨달음을 얻었다. AI scientist로서 당연하게 생각해왔던 것들이 흔들리는 느낌이랄까. 그 이야기를 해보려 한다.
글쓰기 봇 만들기
처음에는 어떻게 접근해야 할지 고민이 많았다. 블로그 글이라는 게 사람마다 스타일이 다 다르고, 어투도 다르고, 구조도 다르니까. 그리고 결정적으로, 대강 에이전트를 구성해둬도 완벽히 마음에 들지 않았다. Last mile problem 이 존재했고, 이 부분을 어떻게 개선해야 할 지 고민하다가 아래와 같은 가장 근본적이고 간단한 방법을 택했다.
Step 1: Initial pipeline setting
일단 어떤 글을 쓸 건지 자세히 설명하고, 예시 글 몇 개를 준다. 그러고 나서 Claude Code한테 “이걸 기반으로 글쓰기 파이프라인을 만들어봐”라고 시킨다. 놀랍게도 알아서 프로젝트를 완성한다. CLAUDE.md 파일에 스타일 가이드를 정리하고, 필요한 스크립트들을 만들고.
Step 2: Test pipeline
한 번 테스트 결과물을 만들어보라고 한다. 실제로 글 하나를 써보게 시키는 거다.
Step 3: Feedback by natural language
그 결과를 와이프나 처형한테 보여주고 맘에 안 드는 부분을 Claude code한테 얘기해보라고 한다. “이 부분 어투가 좀 딱딱해”, “여기는 이렇게 바꾸고 싶어” 하면서 직접 고치게 하는 거다.
Step 4: Feedback by giving the ground-truth
여기가 핵심이라고 생각하는데, 정답을 준다. Claude code 한테 계속 말해도 뭔가 완벽하지는 않다. 약 5~10% 정도? 이 부분은 직접 수정해서 정답을 만든다.
Step 5: Training (?)
수정된 정답 다시 Claude Code한테 주고, “너가 쓴 거랑 비교해서 뭐가 달라졌는지 분석하고, 파이프라인 업데이트해”라고 시킨다.
Step 6: Repeat step 2 ~ step 5
1~2회만 반복하면 거의 완벽한 글쓰기 봇이 나온다.
대체 Training 이란 무엇일까?
블랙박스로 돌아가는 “Training”
근데 이 과정에서 신기한 걸 느꼈다. 나는 prompt가 어떻게 구성되는지, 내부가 어떻게 바뀌는지 전혀 안 들여다봤다. 그냥 결과물만 보고 피드백 주고, Claude Code가 알아서 고치게 했다. 그러니까 이게 완전 블랙박스로 도는 것이다.
나한테 있어서 AI 학습이란, 항상 backpropagation이었다. Loss function 정의하고, gradient 계산하고, weight update하고. 근데 난 LLM이 parameter로 구성되어 있다는 사실을 알고 있으니까 그런건데, 사실 비전문가가 바라볼 때는 backprop도 블랙박스다.
이거 그냥 Wrapper 아닌가
사실 이런 생각을 계속 해오고 있었다.
“Agent system이라는 게 결국 뭐야? 프로젝트 안에 파일 좀 바꾸고 프롬프트 변경해서 기본 LLM 성능을 레버리지 삼는 wrapper일 뿐 아님?”
맞는 말이다. 근데 이걸 블랙박스로 보면? 외부에서 보기에는 input 넣으면 output 나오는, 그냥 하나의 AI 시스템이다. 내부에서 프롬프트가 바뀌든, 파일이 수정되든, 밖에서는 알 수가 없다. 그리고 피드백을 주면 다음번에는 더 나은 output이 나온다.
이게… 학습 아닌가?
Backpropagation만이 학습인가?
우리가 neural network를 학습시킬 때 하는 일을 생각해보자.
- Input을 넣는다
- Output을 얻는다
- 정답과 비교해서 틀린 부분을 파악한다
- 그 정보를 기반으로 내부 파라미터를 업데이트한다
- 다음에는 더 나은 output이 나온다
Claude Code로 글쓰기 봇 만들 때 한 일을 다시 살펴보자.
- 주제를 넣는다
- 글을 얻는다
- 사람이 맘에 안 드는 부분을 수정한다
- 그 정보를 기반으로 프롬프트/파일을 업데이트한다
- 다음에는 더 나은 글이 나온다
사실 둘은 구조가 똑같다. 차이점이라면 weight가 아니라 텍스트(프롬프트, 설정 파일)가 업데이트된다는 것. 그리고 gradient descent가 아니라 Claude code의 Claude.md와 프로젝트 내부 파일들로 업데이트가 이뤄진다는 것.
물론 텍스트 업데이트는 수학적 엄밀함은 없다. 따라서 학습을 보장할수는 없는 것이다. 하지만 우리의 뇌는 과연 수학적 엄밀함을 가지고 학습하는가? 어쩌면 나중에는 이것이 “AI 학습”이라고 불리게 될지도 모른다.
LLM이 생성하는 “학습 가능한 시스템”
LLM은 단지 Generative 모델로써 강력할 뿐이라고 생각했다. 텍스트 잘 만들어내는 거. 근데 이번에 느낀 건 다르다. LLM이 생성하는 프로젝트 전체가 하나의 학습 가능한 AI처럼 느껴졌다.
Claude Code가 만들어낸 글쓰기 봇은:
- 피드백을 받으면 개선된다
- 새로운 예시를 주면 스타일을 학습한다
- 점점 더 사용자 취향에 맞는 output을 낸다
이건 더 이상 단순한 “프롬프트 엔지니어링”이 아니다. 자기 자신을 수정할 수 있는 시스템이다.
마무리
생각의 틀에서 벗어나기
솔직히 말하면, 나는 뭔가 생각의 틀에 갇혀 있었던 것 같다. “학습은 backprop이다”, “AI 시스템은 모델 weight로 정의된다”, “프롬프트 엔지니어링은 진짜 AI 개발이 아니다”… 이런 고정관념들. 근데 외부에서 보면 구별이 안 된다. 블랙박스 안에서 gradient가 흐르든, 텍스트가 수정되든, 결과적으로 시스템이 개선되면 그게 학습 아닌가?
결국 중요한 건 “어떻게 작동하는가”가 아니라 “무엇을 할 수 있는가”다.
대 AI 시대에 불필요한 에고
나는 AI scientist로서 모델 아키텍처, 학습 알고리즘, loss function 같은 것들에 익숙하다. 그래서 “진짜 AI”와 “그냥 wrapper”를 구분하려는 습관이 있었던 것 같다. 근데 시대의 변곡점에서 이런 구분이 의미가 있을까? 사용자 입장에서는 Claude Code로 만든 글쓰기 봇이나, 파라미터들을 fine-tuning한 모델이나, 글만 잘 써주면 똑같다. 오히려 전자가 더 빠르게 개인화되고, 더 쉽게 수정할 수 있다.
에고를 좀 내려놔야겠다는 생각이 든다. 넓은 시야를 가져야겠다는 생각.
정리하자면
와이프 글쓰기 봇 만들어주다가 여기까지 생각이 왔다. 요새 너무 빨리 바뀌어서 FOMO가 올 때도 있지만, 가만히 있는 것보다는 변화하는 것이 언제나 옳다고 보기 때문에, 이런 시대에 태어난걸 감사하게 생각하기도 한다.
아무튼 어쩌면 몇 년 뒤에는 “AI training”의 정의 자체가 바뀌어 있을지도 모른다. gradient descent만이 아니라, 자기 수정 가능한 시스템 전체를 학습하는 시대 말이다.