모든 설정값과 설계 내용은 에이전트의 성능 향상과 실험 결과에 따라 언제든지 변경될 수 있습니다.
구현 목표
- 중앙선 침범 방지.
- 인도 ( 위험구역 ) 충돌 방지
- 다른 차량과의 충돌 회피
- 교차로 내 역주행 금지 및 교차로 규칙 학습
자율주행 Agent를 학습할 도심 모델링


교차로 주행을 훈련시키기 위해 아래와 같은 모델링이 적용되었습니다.
전체 맵은 총 2가지 도로 모듈로 구성되어 있으며:
- 직선 도로 모듈 (Straight Module)
- 4방향 교차로 모듈 (4-Way Module)


각각의 모듈은 Collider 을 사용하여 바신의 영역을 나타내 자동차와의 상호작용을 도와줍니다.
- Danger : 도로 외곽 또는 보행자 도로 등
- Line : 일반적인 차선 영역을 나타냄
- CenterLine : 중앙선을 나타냄
- (North|West|South|East)_(Entry|Exit) : 각 방향의 교차로 진입(Entry) 및 탈출(Exit) 지점을 의미 이를 통해 Agent가 어느 방향에서 교차로에 들어오고, 어느 방향으로 나갔는지를 판단할 수 있습니다.
하이퍼 파라미터
behaviors:
Car:
trainer_type: ppo
hyperparameters:
batch_size: 1024
buffer_size: 131072
learning_rate: 0.0007
beta: 0.01
epsilon: 0.2
lambd: 0.95
num_epoch: 5
learning_rate_schedule: constant
network_settings:
normalize: true
hidden_units: 512
num_layers: 3
vis_encode_type: simple
reward_signals:
extrinsic:
gamma: 0.99
strength: 1.0
keep_checkpoints: 25
max_steps: 5.0e7
checkpoint_interval: 50000
threaded: true
time_horizon: 512
summary_freq: 5000
자율주행 학습의 특성상 다양한 환경 변수와 예외 상황이 존재하기 때문에,
보다 안정적이고 빠른 학습을 유도하기 위해 일부 하이퍼파라미터를 기본값보다 높게 설정하였습니다.
특히, learning_rate는 기본값 보다 높은 0.0007로 설정하였으며,
학습 후반부에도 동일한 학습률을 유지할 수 있도록 learning_rate_schedule을 constant로 지정하였습니다.
이는 후반부에 지나치게 학습이 느려지거나 정책이 고착되는 문제를 방지하기 위한 목적입니다.
또한 대규모 학습을 고려하여,
- batch_size
- buffer_size
- num_epoch
이 세 항목 모두 기본값보다 높은 수치로 설정하여, 보다 많은 경험을 바탕으로 한 안정적인 정책 업데이트가 가능하도록 구성하였습니다.
보상 설정 측면에서는,
gamma 값을 0.99로 설정함으로써 에이전트가 단기 보상보다 장기적인 결과를 고려한 판단을 할 수 있도록 유도하였습니다.
Agent 구성

자율주행 Agents는 Unity의 기본 자동차 구축 시스템을 기반으로 제어됩니다.
Agents는 다음과 같은 물리 기반 파라미터를 사용하여 실제 차량과 유사한 방식으로 움직이게 구현 했습니다.
학습을 위해 에이전트에는 총 6개의 Ray Perception Sensor 3D가 장착되어 있습니다.
각 센서는 주변 환경(도로, 차량, 위험 구역 등)을 감지하여 충돌 회피 및 경로 판단에 필요한 정보를 제공합니다.
에이전트는 학습 시 총 12개의 관측값을 입력으로 받아 의사결정을 수행합니다.
이 값들은 다음과 같이 구성되어 있습니다:
- 목표 방향 벡터 (3차원)
- 속도 크기 (1차원)
- 속도의 방향 벡터 (3차원)
- 에이전트의 회전 방향 (1차원)
- 현재 바라보는 정면 벡터 (3차원)
- 목표 지점까지의 거리 (1차원)
이러한 관측 정보는 에이전트가 현재 상태를 파악하게 됩니다.
테스트 결과

Entropy (엔트로피):
학습 초반인 1M~6M 구간에서는 탐험도가 점차 감소하며 에이전트의 정책이 안정화되는 모습을 보였습니다.
하지만 후반으로 갈수록 엔트로피가 다시 증가하는 경향이 나타났는데, 이는 에이전트가 교차로를 지나 목표 지점 근처까지 도달하더라도, 실제로 부여받은 타겟과는 다른 위치로 이동하는 경우가 많아졌기 때문으로 추정됩니다. 이로 인해 환경의 불확실성 또는 변수 증가로 인한 탐험도 상승 현상이 발생한 것으로 보입니다.
Extrinsic Reward (외부 보상) 및 Value Estimate (가치 예측):
두 지표 모두 학습 초반인 약 2M 스텝까지 급격히 상승하며 에이전트의 성능이 향상되는 양상을 보였고, 이후에는 큰 변화 없이 안정적으로 유지되고 있습니다. 이는 학습이 일정 수준 이상으로 진행된 뒤, 정책이 어느 정도 수렴되었음을 보여줍니다.

충돌 관련 지표 (CarCollisionCount, CenterLineCollisionCount, DangerCollisionCount)
학습이 진행될수록 전반적인 충돌 횟수는 감소 추세를 보임
다만, 일부 구간(약 6M, 9M 근처)에서 일시적으로 충돌이 급증하는 양상이 있음
학습 불안 또는 환경 변화 가능성
완전히 충돌이 사라지진 않음, 일부 케이스에선 여전히 리스크 존재함
교차로 관련 지표 (InCrossingCount, CrossingEscapeSuccessCount, CrossingEscapeFailCount)
약 1M부터 교차로 진입이 본격적으로 시작됨 2M 이후에는 성공적으로 교차로를 빠져나오는 확률이 90% 이상으로 유지
실패 지표(CrossingEscapeFailCount)는 거의 0으로 수렴 교차로 행동 학습이 성공적으로 이루어졌음을 나타냄
이동 관련 보상 지표(MoveReward,targetToMoveReward)
MoveReward는 차량이 후진하거나 정지하지 않고 전진하는 보상 약 1.5M까지는 음수로 불안정, 이후에는 전진 행동이 정규화되어 보상이 안정적으로 유지
targetToMoveReward는 목표 지점을 정확하게 향해 가는 정도 초반에는 미미했지만 1.5M 이후부터 꾸준히 상승, 학습이 진전됨에 따라 타겟 정밀도가 향상

총 16개의 에이전트(Agent)를 사용하여 병렬 학습을 진행하였고,
약 1315만 스텝 학습을 수행하는 데 걸린 총 시간은 약 20,000초(약 5시간 33분)였습니다.
문제점
현재까지의 학습 결과를 종합하면, 에이전트가 교차로 규칙을 제대로 학습하는 데는 상당한 학습량과 시간이 요구되는 문제.
현행 도심지 맵 구조에서는 "방향_Entry"로 교차로에 진입한 뒤, 동일 방향 "Exit"으로 나가거나, 다른 방향 "Entry"로 잘못 진입하는 경우에는 감점이 발생합니다.
이러한 조건 아래에서 에이전트는 교차로에 진입할 경우 가능한 모든 경로를 탐색해야 하는데, 현재 테스트에 사용된 맵은 4방향(4-Way) 교차로로 설계되어 있어 3가지 가능한 진행 방향이 존재하게 됩니다.
그러나 에이전트는 학습 과정 중 전진(직진) 시 가장 높은 이동 보상을 받기 때문에, 교차로에서 직진 경로만을 반복 학습하게 되는 경향이 강해졌습니다.
이로 인해 에이전트는 두 개의 교차로를 직진으로 통과한 뒤, 결국 자신이 부여받은 목표 지점이 아닌 다른 목표 지점에 도착하는 상황이 반복되고 있습니다.
이러한 문제를 해결하기 위해, 향후 다음과 같은 개선을 계획하고 있습니다:
1. 도심지 맵 재구성
각 교차로에서 한 방향만 연결되도록 제한된 구조를 도입하여
에이전트가 모든 가능한 경로(총 3가지)를 균형 있게 학습할 수 있도록 유도할 예정입니다.
2.보상 함수 최적화
교차로 내의 선택지와 목표 지점 탐색이 보다 유의미한 보상을 받을 수 있도록
보상 구조를 정밀하게 조정할 계획입니다.
'유니티 > ML-Agents' 카테고리의 다른 글
| 영상 (0) | 2025.04.09 |
|---|---|
| [ 0 ] Ml-Agents 를 활용한 자율 주행 시뮬레이터 - 정보 저장용. (0) | 2025.04.07 |
| [ Unity ] ML-Agent 버전 기록용. (0) | 2024.02.17 |
| [ Unity ] ML-Agent 를 활용한 게임 개발 I - 기록용 (0) | 2023.11.16 |
| [ Unity ] 유니티 ML-agents 예제 실행 방법. (0) | 2023.11.10 |