Colab 링크:
semmantic 시뮬레이션
Colab notebook
colab.research.google.com
Semantic vs Syntatic
1. 실험 환경
- 난수 시드 설정: np.random.seed(SEED)
- Semantic SNR 리스트 설정: SNR_LIST = [=5, 0, 5, 10, 15, 20]
- Syntactic 에러 확률 설정: CHAR_ERR_PROBS = [0.70, 0.55, 0.40, 0.25, 0.10]
- 각 조건당 반복 횟수: NUM_TRIALS = 400
2. Semantic 임베딩 모델
- SentenceTransformer: "all-MiniLM-L6-v2" 로드
- 4개의 semantic class 정의: GO_HOME, TIRED, RAIN, STUDY
- 각 class마다 3개의 문장 생성, 총 12개의 문장 embedding 계산
"GO_HOME": ["I am going home now.","I am going home soon.","I am on my way home.",]
- 총 12개 문장 embedding 계산
- 모든 embedding을 정규화하여 노이즈 영향 동일하게 받도록, “신호 파워 = 1”로 정규화
3. 채널 모델 설계
A) Semantic Channel
- 입력: 정규화된 문장 embedding (1×D)
- 잡음: awgn_channel()
- 출력: noisy embedding (noise 추가)
- Decoder: 수신 임베딩과의 cosine similarity → 가장 가까운 문장 선택
B) Syntactic Channel
- 입력: 문장 string
- 잡음: 치환 / 삽입/ 삭제 랜덤 적용
- 출력: 원본에서 손상된 문자열
- Decoder: 틀린 문자 개수가 가장 다른 문장 선택
노이즈로 깨진 문장: "It is r&ning a lot todaq"
원래 문장 후보들:
- It is raining outside.
- It is raining a lot today.
- The weather is very rainy today.
문자 단위 거리(Hamming-like distance)를 비교하면:
- dist(noisy, #1) = 15
- dist(noisy, #2) = 4 ← 가장 작음
- dist(noisy, #3) = 12
따라서 Syntactic Decoder 출력: "It is raining a lot today."
4. 실험 루틴
설정한 SNR과 문자 에러 확률을 각각 대응시켜 실험 진행:
각 SNR/에러 확률에 대해 400회 반복:
Semantic channel 성능 측정:
- semantic-level 정확도: label이 맞는지
- exact-level 정확도: 문장 자체가 동일함
Syntactic channel 성능 측정:
- semantic-level 정확도
- exact-level 정확도
각 채널/정확도 결과를 딕셔너리에 저장:
sem_sem_acc, sem_exact_acc,
syn_sem_acc, syn_exact_acc
4개의 성능곡선 그리기:
- Semantic channel – Semantic accuracy
- Semantic channel – Exact accuracy
- Syntactic channel – Semantic accuracy
- Syntactic channel – Exact accuracy

- semantic 통신이 노이즈에 더 강인한 것을 확인할 수 있다
- 정확한 정보보다 의미 정보를 복원하는 것이 정확도가 더 높다
- semantic 채널에서도 정확한 문장 복원은 SNR이 높아야 가능하다
t-SNE 시각화
Target index: 9
Target sentence: I am studying for the exam.
Target label: STUDY
Noisy embeddings shape: (120, 384)

t-SNE 시각화의 의미
이 실험은 문장을 임베딩한 뒤, AWGN 잡음을 여러 SNR 조건에서 추가하여
“노이즈가 임베딩 공간에서 어떻게 나타나는지"를 시각화한 것이다.
t-SNE 결과에서 다음이 관찰된다:
- 원래 문장들(semantic class)끼리는 명확한 클러스터를 형성한다.
→ 임베딩이 의미 구조를 잘 반영한다는 뜻. - 특정 문장의 noisy embedding들은 같은 semantic cluster 내부에서만 흔들린다.
→ 노이즈가 커도 의미 공간에서 벗어나지 않음
→ semantic decoder가 의미를 정확히 복구할 수 있는 이유 - 이는 논문에서 말하는 “semantic robustness”를 직관적으로 증명한다.
Syntactic 채널과 달리, semantic channel은 잡음이 있어도 의미 정보를 안정적으로 보존한다.