Wireless Communications

딥러닝으로 무선 신호 복원하기 (BPSK + CNN)

은최 2025. 4. 22. 11:31

 

 

목차

  1. 개요
  2. 신경망 학습 원리
  3. 기존 복원 방식 vs CNN 방식
  4. 실험 데이터 구성
  5. CNN 모델 구성 (1D Conv 기반)
  6. 실험 결과
  7. 고찰
  8. 참고 자료 및 코드 링크

1. 개요

 

통신 채널은 항상 잡음에 노출되어 있다. 이에 따라 수신 신호가 잡음을 포함할 경우 단순한 복원으로는 한계가 있다. 이에 따라 딥러닝을 활용하여 잡음 섞인 신호를 얼마나 더 정확하게 복원할 수 있는지 실험을 통해 확인해보았다. 비교적 간단한 디지털 변조 방식인 BPSK를 통해 실험을 진행하였다. BPSK 신호에 잡음을 섞은 뒤, CNN을 활용해 이를 얼마나 정확하게 복원할 수 있는지 확인하였다. 또한 기존의 복원 방식과 복원 정확도를 비교해보았다. 


2.  신경망 학습 원리

잡음이 추가된 신호와 기존 신호

- 입력

  • AWGN 잡음이 추가된 BPSK 신호 (예: [-0.8, +0.9, -1.2, +0.5, ...])
  • 즉, AWGN 환경에서 왜곡된 신호

- 출력

  • 원래 비트 값에 해당하는 값 (예: [-1, +1, -1, +1, ...])
  • 또는 원래 비트 자체 ([1, 0, 1, 0, ...])

- 학습 과정

  • CNN 신경망은 입력과 출력의 쌍을 통해 패턴을 학습한다. 
  • 노이즈가 낀 신호를 통해 기존의 신호를 추론한다. 

3. 기존 복원 방식 vs CNN 방식

기존 방식 수신 신호 > 0 보다 크면 1, 0보다 작으면 -1 빠르고 단순하나 비교적 낮은 정확도
CNN 방식 학습된 패턴 기반 예측 복원 정확도의 향상

 

CNN 방식

“이전에 이런 패턴이 나오면 보통 이건 +1이었다”
와 같이 경험과 맥락을 기억하는 방식

CNN이란? 

 

CNN (Convolutional Neural Netowrk)에 대한 이

📌 CNN이란? CNN은 위 그림과 같이 여러 계층을 포괄한 신경망이다. 크게 Feature Learning과 Classification의 두 부분으로 구성되어 있다. 입력 데이터는 이렇게 복잡한 계층을 통과하며 CNN이 패턴을 학

chateun.tistory.com

 


4. 실험 데이터 구성

bits = np.random.randint(0, 2, 2000)  # 0과 1로 구성된 랜덤 시퀀스
bpsk = 2 * bits - 1  # BPSK: 0 → -1, 1 → +1

rx = add_awgn_noise(bpsk, snr_db=0) # 생성된 bpsk 신호에 잡음 섞기

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) #test 20%, 80% train
  • SNR 0dB 환경에서 실험
  • 80% 학습용 / 20% 테스트용 분할

5. CNN 모델 구성 (1D Conv 기반)

class CNN1D(nn.Module):
    def __init__(self):
        super().__init__()
        self.conv1 = nn.Conv1d(1, 16, kernel_size=3, padding=1)
        self.relu = nn.ReLU()
        self.fc1 = nn.Linear(16, 1)

    def forward(self, x):
        x = x.unsqueeze(1)         # [B, 1, L] ← 채널 차원 추가 (CNN 입력 형식)
        x = self.conv1(x)          # 합성곱 수행 → [B, 16, L]
        x = self.relu(x)           # 활성화 함수 통과
        x = x.mean(dim=2)          # Global Average Pooling → [B, 16]
        return self.fc1(x)         # 출력층 → [B, 1]
  • MSELoss 사용, Adam optimizer (lr=0.001)
  • 학습 epoch: 500 (overfit되지 않는 선에서 증가시켜 선정)

6. 실험 결과

실험 결과 예시

 
위 그림과 같이 -1, 1의 기존 신호와 근접한 소수점의 숫자로 CNN 모델이 예측하는 것을 확인할 수 있다. 


 

예측 신호 vs 기존 신호

 

Test Accuracy: 93.00% (SNR 0dB)
 

 

7. 마무리

기존의 복원 방식과는 다른 패턴 인식 복원 방식에 대해 학습해볼 수 있었다. 이러한 간단한 복원 방식을 토대로 더욱 복잡한 복원 방식에 대한 이해를 갖는 기반이 될 수 있을 것이다. 다양한 통신 환경, 신경망의 상황에 따른 적합도에 대한 연구가 진행된다면 더욱 높은 정확도를 얻게 될 수 있을 것으로 생각된다. 또한 기존의 방식과의 비교를 추가 실험으로 생각해볼 수 있다. CNN이외의 다른 복원방식 또한 생각해볼 수 있다. CNN에 대한 추가 학습 이후 이미지에 적합한 이것이 BPSK복원에 적합한 것인가 하는 의문이 든다. 
 


8. 참고 자료 및 코드 링크

 

BPSK

BPSK   Binary Phase Shift Keying   2진 PSK, 이진 위상천이변조(2022-07-17) 1. BPSK (Binary Phase Shift Keying) ㅇ 디지털 신호(0,1)에 따라, 위상이 180˚(0,π) 다른, 두 정현파로, 위상편이변조하는 방식 - 정보 신호에

www.ktword.co.kr

 

 

CNN (Convolutional Neural Netowrk)에 대한 이

📌 CNN이란? CNN은 위 그림과 같이 여러 계층을 포괄한 신경망이다. 크게 Feature Learning과 Classification의 두 부분으로 구성되어 있다. 입력 데이터는 이렇게 복잡한 계층을 통과하며 CNN이 패턴을 학

chateun.tistory.com