티스토리 뷰

딥러닝을 시작하면 가장 처음 접하는 문제가 XOR구분 문제일 것이다.

AND/OR는 밑에 그림[1-1]처럼 하나의 선을 통해 구분 할 수 있다고 대부분의 사이트에서 말한다.

직관적으로 봐도 한개로 충분히 나눠질 수 있다고 생각한다.

[그림1-1] AND/OR

하지만, [그림1-2]에 XOR을 나누려면 선 두개를 그려 나눌 수 있다고 한다.

이런 언급을 한 뒤 [그림1-2] 오른쪽 그림처럼 hidden layer 한층에 node 2개 생성하고 학습을 통해, XOR의 문제를 풀 수 있다고 한다.

[그림1-2] XOR

여기서 필자는 궁금증이 생겼다...

"그래.. 문제 풀 수 있는건 알겠는데.. 인터넷에 떠돌아 다니는 [그림1-2]처럼 진짜 을 그려서 구별하는거야?"
"그럼 다른거 다 필요없고 파이썬을 통해 시각화 한 것을 보고싶어!" 라는 생각을 하게되었다.

하지만, 모든 그림이 [그림1-2]을 크게 벗어나지 않았다. 그 누구도 필자가 원하는 '파이썬으로 직접 시각화'한 그림이 하나도 없었다.

그래서! 필자가 해보겠다. (XOR만 진행할 예정이다. AND/OR는 XOR을 하면 똑같게 될 것 같기에 생략한다.)

결론부터 봐보자.

[그림3-1] XOR / 값이 0인 초록점

노란색의 y값이 '1' 갈색이 '0'이다.
수많은 초록색의 점들은 x1,x2를 임의로 생성해 [그림 1-2]의 맨 오른쪽 초록색의 노드까지 거쳐 생성된 값 중
해당 값이 '0'인 점들이다.
해당 초록점의 값이 '1'인 값들은 [그림 3-2]가 된다.

[그림 3-2] 값이 1인 초록점

이 그림을 보면 노란색 지점은 1로 구분 된다고 직관적으로 볼 수 있다! (아주 잘 학습을 했구만...)

(필자의 개인적 의견) 즉, [그림 1-2]처럼 정말 눈에 보이는 '선'으로 그릴 수 있는게 아니라, x1,x2의 값에따라 결정되는 y에 따라 '선'을 유추 할 수 있다고 생각한다. ('선'으로 그릴 수 있다면 알려주세요..)

자, 그럼 [그림 3-2]는 [그림 1-2] 마지막 초록색으로 색칠된 노드를 거치면 나온다는건 알았다.
그럼! [그림 1-2]의 hidden layer에 있는 빨간색 노드는 어떻게 생겼을까? 라는 궁금증이 생긴다..
이것도 해보겠다..

[그림 3-3] hidden layer node1

왼쪽 그림을 보면, hidden layer에 맨위 노드(1번노드)는 어떻게 분별하는가를 [그림 3-3] 오른쪽 그림에 넣어놓았다.
파랑은 1값, 빨강은 0값이다.
즉, 해당 노드를 지났을때, 예측값(?)이라 생각하면 된다.
해당 그림을 보면, 뭔가 AND/OR 할때처럼 마치 하나의 선을 그려놓은 것 같다.( 물론 진짜 선은 아님.)

자 이번엔 hidden layer에 맨밑 노드(2번노드)는 어떨까? 이정도면 어느정도 예상이 간다.

[그림 3-4] hidden layer node2

여기서도 파란색 값이 1, 빨강이 0이다.

[그림 3-5] 결정바운딩

즉, [그림 3-5] 처럼 선을 기준으로 True,False라고 생각 할 수 있다.
해석을 시도해보자면...

line1(윗 선) line2(아래 선) result
False(0) False(0) 1
False(0) True(1) 0
True(1) False(0) X
True(1) True(1) 1

위에 테이블 같이 해석 할 수 있겠다.
여기서 주의해야 할 점은, 위에 테이블은, 선을 기준으로 한 진리표지, x1,x2에 대한 XOR의 진리표가 아니다!

결론은...! 인터넷에 다수 돌아다니는 '선'을 직접 그리진 못하지만, 엄청나게 많은 x1,x2를 생성해 그려보면 선을 추정할 수 있었다! (선을 그린다고 봐도 무방하다!!!!!!)

지금은 2D로 그려 선이 그려진듯 보이지만, 3D로 그려보면 더 휘황찬란한 모습을 볼 수 있다... 몇개의 시각화만 올려보겠다!

[그림4-1] XOR 3D 시각화

오... 뭔가 있어보인다..
간단하게 설명하자면, [그림 4-1]의 왼쪽 그림에서 빨간색은 hidden layer에 맨위 노드(1번노드)이고,
파란색은 hidden layer에 맨위 노드(2번노드)이다. (여기선 값(0,1) 기준으로 색을 나누지 않아 모두 색이 같음)

해당 각도만 봐서는 왼쪽 그림은 잘 해석이 불가능할 것 같다.

오른쪽 그림은 [그림 3-1],[그림 3-2]처럼 마지막 노드를 지난 값들의 점이다. 해당 그림은 자세히 보면, [그림 3-1]과
[그림3-2]를 합친 그림이다! 물론, 차원의 증가로 높이가 생겼다. (자세히 보면 똑같다!!!!!!)

2D, 3D 둘다 개인적으로 만족스러운 시각화를 한 것 같다..

여기서 들어와 해당 글을 보신분은 필자처럼 노가다를 하지말고 '아 그렇구나'하고 넘어가길...

끝.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함