배타적 논리합(Exclusive or)
두 입력 가운데 정확히 하나만 참일 때 참인 연산. 비트로는 같으면 0, 다르면 1이고, 같은 값으로 두 번 하면 원래대로 돌아온다.
계단 아래와 위에 스위치가 하나씩 있고 전등은 하나인 집을 떠올려 봅시다. 어느 스위치를 눌러도 전등의 상태가 바뀝니다. 스위치의 두 위치를 0과 1로 적고 둘 다 0일 때 전등이 꺼지도록 배선했다면, 전등은 두 스위치의 위치가 서로 다를 때만 켜집니다. 이 규칙이 배타적 논리합이고, 영어 약자로 XOR, 기호로는 ⊕(동그라미 안의 더하기)를 씁니다. 네 경우를 모두 적으면 이렇습니다.
셋째 칸이 XOR이고, 넷째 칸은 비교를 위한 보통의 논리합 OR(기호 ∨)입니다. 둘은 마지막 줄 하나만 다릅니다. OR은 '하나라도 1이면 1'이고, XOR은 '정확히 하나만 1이면 1', 곧 둘 다 1인 경우를 빼는(배타적인) 합입니다. 짧게 말하면 XOR은 같으면 0, 다르면 1입니다. 이런 표를 진리표라 하고, 참과 거짓을 1과 0으로 두고 AND·OR·NOT으로 계산하는 체계가 불 대수(Boolean algebra)입니다. AND를 ∧, NOT을 ¬로 적으면 XOR은
수를 이진법(binary)으로 적으면 XOR을 자리마다 따로 할 수 있습니다. 컴퓨터의 비트 연산(bitwise operation) XOR이 이것입니다.
오른쪽 자리부터 1 ⊕ 0 = 1, 1 ⊕ 1 = 0, 0 ⊕ 1 = 1, 1 ⊕ 0 = 1입니다. 받아올림을 버린 덧셈과 같습니다. 1 + 1 = 2를 2로 나눈 나머지(remainder)는 0이니, XOR은 2를 법으로 하는 덧셈입니다. 그래서 덧셈의 성질이 그대로 따라옵니다. 순서를 바꿔도(
이 마지막 성질에서 '두 번 하면 되돌아온다'가 나옵니다.
1949년 섀넌은 일회용 난수표(one-time pad)가 완벽하게 안전하다는 것, 곧 암호문(ciphertext)을 보아도 평문에 대해 아무것도 알 수 없다는 것을 증명했습니다. 까닭은 XOR의 성질 그대로입니다. 가로챈 암호문이 c일 때, 어떤 평문 p든 열쇠가
남은 것은 두 평문의 XOR뿐이고, 말이 되는 문장 둘을 맞춰 보며 풀어 나갈 수 있습니다. 1941년 8월 한 독일 운영자가 긴 전문을 같은 열쇠로 조금 바꾸어 다시 보냈을 때, 영국의 암호 해독가 존 틸트먼이 두 전문에서 평문과 열쇠를 뽑아낸 것이 이런 경우입니다.
여러 비트를 차례로 XOR하면 1의 개수가 홀수일 때 1, 짝수일 때 0이 나옵니다. 1 ⊕ 1 = 0이라 1이 둘씩 지워지기 때문입니다. 이 값(패리티 비트, parity bit)을 함께 보내면, 오는 도중 비트 하나가 뒤집혔을 때 받은 비트 전체의 XOR이 0이 아니게 되어 알아챌 수 있습니다. 리처드 해밍이 1950년 발표한 해밍 부호(Hamming code)는 이런 검사를 여러 개 겹쳐 뒤집힌 자리까지 찾아냅니다(오류 정정 부호(error-correcting code)). 7비트 해밍 부호에서는 1이 있는 자리의 번호들을 이진수로 적어 모두 XOR하면 됩니다. 올바른 부호어(codeword) 0110011에서 1이 있는 자리는 2, 3, 6, 7이고
XOR은 신경망(neural network)의 역사에서도 이정표입니다. 입력에 가중치(weight)를 곱해 더한 값이 문턱(threshold) θ(세타) 이상이면 1을 내는 퍼셉트론(perceptron) 하나는 AND와 OR은 흉내 내지만 XOR은 흉내 내지 못합니다. 가중치를
1969년 마빈 민스키와 시모어 패퍼트는 책 『퍼셉트론』에서 이런 한계를 훨씬 일반적인 형태로 다루었습니다. 해법은 층을 쌓는 것입니다. XOR은 'OR이면서 NAND(AND의 부정)'이니, OR 뉴런과 NAND 뉴런의 출력을 AND 뉴런에 넣으면 됩니다. 남은 문제는 그렇게 쌓은 여러 층의 가중치를 예에서 배우게 하는 방법이었고, 그 답이 역전파(backpropagation)입니다.
이어지는 곳. AND·OR·NOT과 진리표(truth table), XOR과 AND로 만드는 반가산기(half adder)는 불 대수에, 2로 나눈 나머지의 덧셈은 모듈러 연산(modular arithmetic)에 있습니다. 두 비트열을 XOR해 1의 개수를 세면 해밍 거리(Hamming distance)가 되고, 검사 비트(check bit)로 오류를 고치는 방법은 오류 정정 부호가 이어 갑니다. 돌무더기의 크기를 이진법으로 적어 XOR한 값으로 이기는 수를 찾는 게임은 님입니다. 직선 하나의 한계는 퍼셉트론과 신경망에서 이어집니다. XOR과 인공지능(artificial intelligence)의 겨울은 「배우는 기계」 3절이, 덧셈을 AND와 XOR로 바꾸는 회로는 「기계가 풀 수 없는 문제」 1절이, 버냄의 기계와 일회용 난수표는 「나머지로 지키는 비밀」 7절이, 해밍 부호의 검사 비트는 「짧게 보내기」 7절이 보여 줍니다.
이 개념이 나오는 긴 글
이 개념을 언급하는 페이지
- 모듈러 연산
… 2로 나눈 나머지가 답을 정하는 셈입니다. 2로 나눈 나머지 덧셈, 곧 1 + 1 = 0은 논리의배타적 논리합(XOR)과 같습니다(불 대수). 컴퓨터의 덧셈 회로에서 각 자리의 합 비트가 바로 이 계산이고, 올림 …
- 해밍 거리
… 크기입니다(집합 연산). 0/1 벡터 사이의 맨해튼 거리와도 같습니다. 컴퓨터는 두 비트열을XOR(자리마다 두 비트가 다르면 1, 같으면 0)한 뒤 1의 개수를 세어 구합니다(불 대수). 대칭차의 …
- 불 대수
… 자리 이진수 두 개를 더하는 반가산기는 게이트 두 개로 됩니다. 합의 자리는 S = A \oplus B (배타적 논리합, XOR: 두 입력 가운데 정확히 하나만 1일 때 1), 올림은 C = A \land B 입니다. 지금 …
- 퍼셉트론
… 어떤 직선도 둘을 가르지 못합니다. 퍼셉트론은 끝없이 고치기만 하므로 그림은 60번 고친 뒤 멈춥니다.배타적 논리합(XOR)은 불 대수의 기본 연산인데도 뉴런 하나로는 계산할 수 없습니다(AND와 OR은 됩니다). …
- 신경망
… H = 0이면 숨은 층 없이 출력 단위 하나만 남아 매끄러운 퍼셉트론(로지스틱 회귀)이 되고,XOR자료에서는 어떤 직선도 소용없어 정확도가 절반 근처에 머뭅니다. H = 2로 놓고 학습시켜 보세요. 숨은 …
- 오류 정정 부호
… 이동통신은 LDPC와 극 부호를 씁니다. 해밍 부호처럼 많이 쓰는 부호는 선형입니다. 두 부호어를 자리마다XOR로 더해도 다시 부호어가 된다는 뜻입니다. 비트를 2로 나눈 나머지의 수로 보면 데이터 벡터에 생성 …
- 통로 부호화 정리
… 충분하다는 것을 보였습니다. 선형 부호는 메시지에 행렬을 곱해 만드는 부호로, 두 부호어를 자리마다XOR로 더해도 다시 부호어가 됩니다. 직접 해 봅시다. 메시지 k비트에 무작위로 뽑은 행렬을 곱해 n비트 …
- 결정 트리와 랜덤 포레스트
… 1976년 하이아필과 리베스트가 NP-완전임을 보였습니다(P 대 NP). 탐욕의 한계를 보여 주는 예가XOR입니다. 네 사분면에 노랑과 파랑이 엇갈려 있으면 어떤 첫 질문도 이득이 0에 가깝지만, 깊이 2의 나무는 …
- 인공지능
… 때마다 그 수를 고쳤습니다. 1969년 민스키와 시모어 페이퍼트의 책 『퍼셉트론』은 한 층짜리 퍼셉트론이XOR같은 간단한 함수도 계산하지 못함을 엄밀하게 보였습니다. 이 책이 신경망 연구를 얼어붙게 했다는 이야기가 …
- 모노이드 범주와 끈 그림
… 잇는 일을 하나 넣습니다. h는 '비가 오면 램프 스위치를 한 번 누른다', 곧 (x, y)를 (x, xXORy)로 보내는 일입니다. 아래 그림은 이 계산을 선과 상자로 그린 것입니다. 선은 대상(날씨, 램프), …
- 님과 스프라그–그런디 정리
… \oplus b 로 적습니다. 받아올림 없이 자리마다 2를 법으로 더하는 셈이며, 컴퓨터의 비트 연산XOR과 같습니다. 규칙이 옳은 까닭은 세 가지 사실입니다. (1) 돌이 없는 끝 국면의 님 합은 0입니다. …