1. BallControl 입력 표현과 출력 정의
이 글에서는 BallControl 과제의 위치와 무게 조건을 회로 입력으로 표현하고, 네 방향 출력을 정의한 과정을 설명합니다. 보드는 11×9 격자로 나누어 one-hot 신호로 표현했고, 무게는 일정한 시간 창 안의 spike 빈도에 반영했습니다. 구체적인 좌표 예시를 통해 두 입력 방식의 역할과 출력까지 이어지는 흐름을 살펴봅니다.
입력·출력 사양
회로 입력으로는 디지털 값으로 주어진 공의 현재 좌표와 무게를 사용했다. 30×30cm 보드를 X축 11개, Y축 9개의 좌표로 나누고 99개 위치 가운데 하나를 활성화했다. 무게는 선택된 위치 입력이 시간축에서 spike를 내는 빈도를 조절한다. 회로 출력은 +X·−X·+Y·−Y 네 방향의 spike 이벤트로 정의했다.
- 보드
- 30×30cm
- 공 무게
- 1~30g
- 목표
- 중앙 반경 1cm
- 출력
- +X · −X · +Y · −Y
과제 조건과 좌표 모델
좌표계의 중심은 (0, 0)이며, X축은 −5부터 +5, Y축은 −4부터 +4까지의 격자로 모델링된다. 11×9 격자는 99개 입력 뉴런에 대응한다. 중앙 반경 1cm는 제어 목표의 물리 기준으로 사용된다.
먼저 좌표가 주어졌을 때 SNN이 어떤 방향으로 반응하는지 확인하기 위해 이산 좌표 모델을 사용했다. 실제 위치를 추정하는 앞단과 SNN 계산을 분리하고, 실험에서는 좌표를 직접 입력했다. 11×9 격자는 이 제어 모델에서 위치를 표현하는 단위이다.
| 물리 조건 | 회로에서의 표현 | 설계 의미 |
|---|---|---|
| 30×30cm 보드 | 11×9 위치 격자 | 연속 좌표를 99개 이산 위치로 단순화 |
| 중앙 목표 | (0, 0) | 부호가 방향, 절댓값이 중앙과의 거리 |
| 중앙 반경 1cm | 출력 종료 조건의 물리 기준 | 중앙에 도달했는지 판단할 목표 영역 |
| 공 무게 1~30g | digital weight와 spike rate | 무거운 공에 더 큰 시간축 자극 부여 |
| 보드 기울임 | 네 방향 출력 뉴런 | +X·−X·+Y·−Y 제어 이벤트로 분리 |
위치 one-hot 부호화
X축 11개와 Y축 9개의 조합은 99개 위치를 만든다. 현재 좌표에 해당하는 입력 뉴런 하나만 활성화되며, 네트워크는 활성 위치를 one-hot 벡터로 수신한다. 위치별 흥분·억제 가중치는 이 입력 벡터에 연결된다.
one-hot 표현은 숫자 좌표를 이진수로 직접 넣는 방식보다 입력선 수가 많지만, 각 위치와 가중치 행을 일대일로 연결할 수 있다는 장점이 있다. 예를 들어 같은 X값을 가진 좌표라도 Y값이 다르면 서로 다른 입력 뉴런이 선택되므로, 위치별로 다른 흥분성·억제성 연결을 줄 수 있다. 반대로 격자 해상도가 높아질수록 입력 뉴런과 weight 저장량이 빠르게 늘어난다는 점은 이 표현이 지니는 구조적 비용이다.
예를 들어 공이 (+3, +4)에 있으면 해당 위치의 입력 뉴런이 활성화된다. 이 spike는 은닉층과 출력층을 거쳐 중앙 방향인 −X와 −Y 채널의 막전위 누적에 기여한다. 이렇게 위치별 연결을 통해 공간상의 좌표를 방향 이벤트로 바꾼다.
무게 rate encoding
one-shot 입력은 위치 정보만 전달한다. 무게 조건은 정해진 시간 창에서
counter < weight일 때 spike를 발생시키는 rate encoding으로
표현된다. digital weight가 클수록 입력 이벤트 수가 증가한다.
첫 번째 실험의 Input_Neuron_SingleShot은 enable 시점에 한 번의
spike를 내보낸다. 이 구조에서는 같은 위치라면 공이 가볍든 무겁든
네트워크가 받는 입력이 같다. 두 번째 실험의
Input_Neuron_RateEncoder는 ball_weight를 입력으로
받아 시간 창 안에서 digital weight만큼 반복 spike를 만든다. 위치는
어느 weight 행을 읽을지 결정하고, 무게는 그 행이 시간축에서 얼마나
강하게 자극될지를 결정하므로 두 정보의 역할이 분리된다.
현재 위치의 공간 표현
99개 중 하나가 활성화되어 현재 공이 어느 격자에 있는지를 나타낸다.
무게에 따른 시간축 자극
15g에는 digital weight 123, 30g에는 255를 적용한다.
| 구분 | 실험 1 | 실험 2 |
|---|---|---|
| 입력 뉴런 | Input_Neuron_SingleShot | Input_Neuron_RateEncoder |
| Top 입력 | ball_x, ball_y, start | 기존 입력 + ball_weight |
| 무게 반영 | 없음 | 시간 창의 spike rate로 반영 |
| 뉴런 설정 | THRESHOLD 40 · LEAK_SHIFT 4 | THRESHOLD 300 · LEAK_SHIFT 6 |
| 검증 목적 | 좌표–방향 연결 확인 | 위치와 무게를 함께 넣은 반응 비교 |
예시: (+3, +4), 15g 입력을 회로가 읽는 방법
공이 중앙의 오른쪽 위인 (+3, +4)에 있다고 가정한다. 먼저 11×9 좌표표에서 이 위치에 해당하는 입력 뉴런 하나가 선택된다. X와 Y가 모두 양수이므로 중앙으로 가려면 −X와 −Y 방향의 반응이 필요하다. 선택된 위치 뉴런의 흥분·억제 가중치는 이 두 방향의 막전위가 증가하도록 구성되고, 반대 방향인 +X와 +Y는 상대적으로 억제된다.
15g 조건에서는 digital weight 123을 rate encoder에 넣는다. 정해진 시간 창에서 반복되는 입력 spike가 은닉 뉴런과 출력 뉴런의 막전위에 누적되고, 임계값을 넘은 횟수가 방향별 spike count가 된다. 시뮬레이션에서는 −X spike 수를 X에서 빼고 −Y spike 수를 Y에서 빼는 규칙으로 다음 좌표를 계산했다. 이 규칙을 사용해 출력 방향과 반응량을 좌표 변화로 확인했다.
방향 출력 정의
출력 계층은 +X, −X, +Y, −Y 네 채널로 구성된다. 같은 시간 창의 방향별 spike 수를 집계하고, 서로 반대인 채널의 차이를 X축과 Y축 제어량으로 변환한다. 파형에서는 출력 채널과 제어 방향의 대응을 직접 확인할 수 있다.
중앙이 (0, 0)이므로 현재 X가 양수이면 −X 채널이, 음수이면 +X 채널이 중앙 복귀 방향이다. Y축도 같은 원리로 동작한다. 시뮬레이션에서는 spike 하나를 한 칸의 이동으로 대응시켰다. 따라서 (+3, +4)에서 각 축의 오차를 없애려면 −X 방향 3회, −Y 방향 4회의 출력이 필요하다. 이 기준으로 실제 spike count와 목표 이동량을 비교했다.
| 출력 뉴런 | 의미 | 중앙으로 복귀하는 예 |
|---|---|---|
| +X | X축 양의 방향 제어 이벤트 | 공이 중앙의 왼쪽에 있을 때 증가 |
| −X | X축 음의 방향 제어 이벤트 | 공이 중앙의 오른쪽에 있을 때 증가 |
| +Y | Y축 양의 방향 제어 이벤트 | 공이 중앙의 아래쪽에 있을 때 증가 |
| −Y | Y축 음의 방향 제어 이벤트 | 공이 중앙의 위쪽에 있을 때 증가 |
이렇게 정의된 입력과 출력 사이에는 hidden/output LIF 뉴런의 막전위 누적과 시간 단계 제어가 놓인다. 다음 문서는 한 번의 입력 spike가 가중합, leak, threshold, reset을 거쳐 네 방향 출력으로 변환되는 RTL 구조를 다룬다.