본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 05. 17. 16:55

혼돈이 승리할 때: 노이즈를 추가하여 Snake AI의 안정성을 개선하다

요약

본 글은 노이즈 네트워크(noisy networks)를 사용하는 AI 에이전트의 평가 과정에서 발생한 '평가 격차(Evaluation Gap)' 문제를 다룹니다. 결정론적 정책으로 모델을 평가할 때, 특정 체크포인트에서 점수가 매우 불안정하고 일관되지 않은 현상이 발견되었습니다. 이 문제는 노이즈가 제거된 상태에서 에이전트가 잘못된 행동 루프나 함정에 빠지기 쉬운 '양봉 분포(bimodal distribution)'를 형성했기 때문입니다. 결국, 훈련 과정에서 남겨진 탐험 노이즈는 단순한 아티팩트가 아니라, 결정론적 정책의 취약점을 보완하고 안정성을 높이는 핵심적인 학습된 구성 요소임이 밝혀졌습니다.

핵심 포인트

  • 노이즈 네트워크를 평가할 때는 일반적으로 노이즈를 끕니다. 하지만 이 글에서는 노이즈 제거 시 모델 성능이 급격히 저하되는 현상을 발견했습니다.
  • 결정론적 정책으로 평가했을 때, 에이전트가 특정 상태에서 잘못된 행동 루프(degenerate action loop)에 빠지면서 점수가 매우 불안정한 '양봉 분포'를 형성할 수 있습니다.
  • 노이즈는 단순한 탐험 오버헤드가 아니라, 결정론적 환경의 함정으로부터 에이전트를 벗어나게 하는 필수적인 학습된 정책 구성 요소입니다.
  • 확률적 평가(Stochastic eval)가 결정론적 평가(Deterministic eval)보다 훨씬 높은 일관성과 안정성을 보여주었으며, 이는 노이즈의 중요성을 입증합니다.

모두 반갑습니다! Snake 게임에서 Rainbow DQN을 구성 요소별로 하나씩 구축해 나가는 시리즈를 계속 이어가겠습니다. 첫 번째 포스트에서는 인코딩(encoding)을, 두 번째는 메모리(memory)를, 세 번째는 PER(Prioritized Experience Replay)이 성능을 저하시키는 문제를 다루었습니다. 이번 포스트는 모델을 평가하는 동안 제가 맞닥뜨린 정말 황당한(WTF?!) 순간에 관한 이야기입니다. 노이즈 네트워크(noisy networks)를 사용하는 모델을 평가할 때는 노이즈를 끕니다. 훈련 중이 아니므로 왜 탐험 노이즈(exploration noise)를 활성화 상태로 유지하겠습니까? 여러분은 깨끗하고 결정론적인 정책(deterministic policy)을 원합니다. 무작위성 없는 모델의 최선의 추측 말입니다. 그것이 여러분이 해야 할 일이며, 기본적으로 머신러닝(machine learning)의 공리입니다. 그래서 저도 그렇게 했습니다. 그런데 평가 점수가 훈련 점수보다 현저히 낮았습니다. 약간이 아니라, 현저히 낮았습니다.

노이즈 네트워크가 하는 일 (빠른 요약)
표준 DQN은 epsilon-greedy 탐험을 사용합니다. X%의 확률로 무작위 행동을 선택하고, 훈련 과정에서 그 비율을 감소시킵니다. 단순하고 멍청하지만, 효과는 있습니다. 노이즈 네트워크는 이를 더 똑똑한 방식으로 대체합니다. 네트워크의 각 선형 레이어(linear layer)는 학습 가능한 노이즈 파라미터(sigma weights)를 갖게 됩니다. 훈련 중에 네트워크는 자체 가중치(weights)에 노이즈를 추가하여, 매 순전파(forward pass)마다 약간씩 다른 출력을 생성합니다. 네트워크는 얼마나 많은 노이즈를 적용할지를 학습합니다. 훈련 초기에는 sigma 값이 높아 에이전트가 폭넓게 탐험합니다. 훈련이 진행되고 에이전트가 더 확신을 갖게 되면 sigma 값은 줄어들 수 있습니다. 평가를 위해서는 sigma를 0으로 설정합니다. 깨끗한 출력. 교과서적인 방식입니다.

평가 격차 (The Evaluation Gap)
여러 훈련 체크포인트(checkpoints)를 통해 평가를 실행하던 중, 무언가 잘못되었다는 것을 깨달았습니다. 미묘하게 잘못된 것이 아니었습니다. 결정론적(deterministic) 평가 점수가 매우 일관되지 않았습니다. 어떤 체크포인트는 평균 78점을 기록했습니다. 다른 곳은 평균 18점이었습니다. 그런데 동일한 지점에서의 훈련 곡선은 어땠을까요? 완벽하게 안정적이었습니다. 모델은 내내 일관되게 학습하고 있었지만, 결정론적 평가는 제가 어떤 체크포인트를 평가하느냐에 따라 완전히 다른 이야기를 하고 있었습니다. 첫 번째 본능은 '버그다'였습니다. 평가 파이프라인(eval pipeline)을 확인하고, 체크포인트 로딩을 확인하고, 환경 시딩(environment seeding)을 확인했습니다. 모든 것이 정상적이었습니다.

노이즈를 껐을 때 모델은 정말로 불규칙하게 작동했습니다. 만약 이것이 버그가 아니라면... 대체 무엇일까요?

양봉 분포의 함정 (The Bimodal Trap)

ep450K 체크포인트에서 상황이 제대로 이상해지기 시작했습니다. 결정론적 평가 (Deterministic eval) 결과, 강력한 양봉 분포 (bimodal distribution)가 나타났습니다. 에피소드의 약 25%는 0점에 가까운 점수를 기록한 반면, 75%는 80점 이상의 점수를 기록했습니다. 평균은 59점에 도달했지만, 분포가 두 개의 분리된 정점과 그 사이의 협곡으로 나뉘어 있을 때 그 수치는 완전히 무의미합니다.

도대체 무슨 일이 일어나고 있는 걸까요? 결정론적 정책 (Deterministic policy)에는 함정이 있습니다. 두 개 이상의 행동에 대한 평균 가중치 Q-값 (mean-weight Q-values)이 거의 동일해지는 특정 게임 상태가 존재하는 것입니다. 노이즈가 없다면, 에이전트는 해당 상태에 도달할 때마다 매번 동일한 행동을 선택합니다. 만약 그 행동이 우연히 잘못된 것이라면? 갇히게 됩니다. 루프에 빠지고, 충돌하며, 0점을 기록합니다. 특정 초기 상태에서 시작하는 에피소드의 25%가 매번 이러한 함정에 빠졌습니다.

이제, 동일한 체크포인트, 동일한 평가 시드 (evaluation seeds)에서 노이즈를 다시 켰습니다. 양봉 형태의 실패 모드 (bimodal failure mode)가 사라졌습니다. 완전히 사라졌습니다. p25는 2에서 59로 급등했습니다. 평균은 59에서 73으로 상승했습니다. 표준 편차 (standard deviation)는 42에서 26으로 감소했습니다.

노이즈는 에이전트를 이러한 결정론적 함정에서 밀어냅니다. 무작위로, 혹은 혼란스럽게 밀어내는 것이 아니라, 학습된 노이즈가 Q-값에 충분한 변동성을 제공하여 에이전트가 퇴화된 행동 루프 (degenerate action loop)에 갇히는 것을 막아주기 때문입니다. 노이즈는 훈련 과정에서 남겨진 탐험 (exploration) 오버헤드가 아닙니다. 그것은 학습된 정책 (learned policy)의 핵심적인 구성 요소입니다.

이것은 일회성 현상이 아니었습니다. ep50K부터 ep450K까지 모든 체크포인트에서 동일한 패턴이 유지되었습니다. 확률적 평가 (Stochastic eval)는 모든 지점에서 결정론적 평가를 압도했습니다. 더 낮은 분산 (variance), 더 높은 일관성 (consistency), 그리고 치명적인 0점 에피소드의 감소를 보여주었습니다. 시그마 ($\sigma$) 값들은 0으로 만들어지기를 기다리는 잔여 훈련 아티팩트 (residual training artifacts)가 아닙니다. 그것들은 실제로 제 역할을 수행하고 있습니다.

Snake 게임이 이를 악화시키는 이유

Snake 게임은 결정론적 정책을 함정에 특히 취약하게 만드는 특성을 가지고 있습니다. 단 한 번의 잘못된 회전이 즉각적으로 치명적일 수 있다는 점입니다. 길이가 100 이상인 뱀이 자신의 몸으로 이루어진 좁은 통로를 통과하고 있는 모습을 상상해 보십시오.

최적의 행동 (Optimal action)과 두 번째로 좋은 행동 (Second-best action)은 Q-값 (Q-value)에서 아주 미세한 차이만 날 수 있습니다. 결정론적 정책 (Deterministic policy)은 매번 동일한 행동을 선택합니다. 만약 그 행동이 세 수 뒤에 막다른 길로 이어진다면, 에이전트는 죽게 됩니다. 해당 상태 (State)에서 매번 말이죠. 노이즈 (Noise)는 가끔 두 번째로 좋은 행동을 선택할 수 있을 만큼 충분한 Q-값 섭동 (Q-value perturbation)을 제공하며, 이 행동이 실제로 생존할 수 있는 행동일 수도 있습니다. 여유 공간이 더 많은 환경 (넓게 트인 Atari 레벨, 한 번의 잘못된 움직임이 즉사로 이어지지 않는 게임 등)에서는 결정론적 정책이 이러한 함정을 이토록 심각하게 만들지 않습니다. 뱀의 길이가 길어질수록 더 많은 함정이 존재하게 되며, 노이즈의 중요성은 더욱 커집니다.

실무적 의미: 만약 노이즈 네트워크 (Noisy networks)를 사용하면서 평균 가중치 (Mean weights)로 평가하고 있다면, 평가 점수가 단순히 노이즈가 섞인 것이 아닐 수 있습니다. 구조적으로 오해를 불러일으킬 수 있습니다. 결정론적 정책은 훈련된 확률적 정책 (Stochastic policy)에는 존재하지 않는 실패 모드 (Failure modes)를 가질 수 있습니다. 결정론적 평가가 에이전트의 "진정한" 성능을 보여준다고 가정하기 전에, 확률적 평가 비교를 수행하십시오. 만약 점수가 갈린다면, 당신의 에이전트는 노이즈에 의존하도록 학습된 것입니다.

솔직한 주의사항: 단일 아키텍처, 단일 게임입니다. 이는 Snake 게임에서 C51 + dueling + noisy 조합을 통해 관찰된 결과입니다. 상태 역학 (State dynamics)이 더 관대한 게임에서는 동일한 이봉형 실패 모드 (Bimodal failure mode)가 나타나지 않을 수 있습니다. 노이즈가 너무 커질 수 있습니다. 한 후기 단계의 체크포인트에서는 시그마 (Sigma) 값이 충분히 커져서 확률적 평가가 실제로 결정론적 평가보다 낮게 나타나기도 했습니다. 노이즈가 생산적인 골디락스 존 (Goldilocks zone, 적정 영역)이 존재합니다. 그 영역을 넘어서면 노이즈는 파괴적으로 변합니다. 이 발견의 핵심은 "항상 노이즈를 사용하여 평가하라"가 아닙니다. 이 발견의 핵심은 "결정론적 평가가 자동으로 더 낫다고 가정하지 마라"입니다. 훈련 점수 (Training scores)가 여전히 가장 신뢰할 수 있는 지표입니다. 절제 연구 (Ablation study)를 위해, 모든 실행에서 동일하게 계산된 훈련 윈도우 평균 (Training window averages)을 주요 비교 대상으로 삼아 해당 문제 자체를 완전히 우회했습니다.

만약 여러분도 노이즈가 포함된 네트워크 (noisy networks)에서 이와 유사한 평가 발산 (eval divergence) 현상을 관찰했거나, 결정론적 평가 (deterministic eval)가 훈련 성능과 안정적으로 일치하는 환경을 가지고 있다면, 댓글을 통해 알려주시기 바랍니다. 이 작업은 진행 중인 연구의 일부이며, 연구 결과는 동료 검토 (peer-reviewed) 논문으로 제출될 예정입니다.

참고 문헌
Peer-Reviewed
Fortunato et al. (2018) - "Noisy Networks for Exploration" - ICLR 2018. arXiv: 1706.10295
Hessel et al. (2018) - "Rainbow: Combining Improvements in Deep Reinforcement Learning" - AAAI 2018. DOI: 10.1609/aaai.v32i1.11796
Bellemare et al. (2017) - "A Distributional Perspective on Reinforcement Learning" - ICML 2017. arXiv: 1707.06887

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0