티스토리 뷰
딥러닝을 시작하면 가장 처음 접하는 문제가 XOR구분 문제일 것이다.
AND/OR는 밑에 그림[1-1]처럼 하나의 선을 통해 구분 할 수 있다고 대부분의 사이트에서 말한다.
직관적으로 봐도 한개로 충분히 나눠질 수 있다고 생각한다.
하지만, [그림1-2]에 XOR을 나누려면 선 두개를 그려 나눌 수 있다고 한다.
이런 언급을 한 뒤 [그림1-2] 오른쪽 그림처럼 hidden layer 한층에 node 2개 생성하고 학습을 통해, XOR의 문제를 풀 수 있다고 한다.
여기서 필자는 궁금증이 생겼다...
"그래.. 문제 풀 수 있는건 알겠는데.. 인터넷에 떠돌아 다니는 [그림1-2]처럼 진짜 선을 그려서 구별하는거야?"
"그럼 다른거 다 필요없고 파이썬을 통해 시각화 한 것을 보고싶어!" 라는 생각을 하게되었다.
하지만, 모든 그림이 [그림1-2]을 크게 벗어나지 않았다. 그 누구도 필자가 원하는 '파이썬으로 직접 시각화'한 그림이 하나도 없었다.
그래서! 필자가 해보겠다. (XOR만 진행할 예정이다. AND/OR는 XOR을 하면 똑같게 될 것 같기에 생략한다.)
결론부터 봐보자.
노란색의 y값이 '1' 갈색이 '0'이다.
수많은 초록색의 점들은 x1,x2를 임의로 생성해 [그림 1-2]의 맨 오른쪽 초록색의 노드까지 거쳐 생성된 값 중
해당 값이 '0'인 점들이다.
해당 초록점의 값이 '1'인 값들은 [그림 3-2]가 된다.
이 그림을 보면 노란색 지점은 1로 구분 된다고 직관적으로 볼 수 있다! (아주 잘 학습을 했구만...)
(필자의 개인적 의견) 즉, [그림 1-2]처럼 정말 눈에 보이는 '선'으로 그릴 수 있는게 아니라, x1,x2의 값에따라 결정되는 y에 따라 '선'을 유추 할 수 있다고 생각한다. ('선'으로 그릴 수 있다면 알려주세요..)
자, 그럼 [그림 3-2]는 [그림 1-2] 마지막 초록색으로 색칠된 노드를 거치면 나온다는건 알았다.
그럼! [그림 1-2]의 hidden layer에 있는 빨간색 노드는 어떻게 생겼을까? 라는 궁금증이 생긴다..
이것도 해보겠다..
왼쪽 그림을 보면, hidden layer에 맨위 노드(1번노드)는 어떻게 분별하는가를 [그림 3-3] 오른쪽 그림에 넣어놓았다.
파랑은 1값, 빨강은 0값이다.
즉, 해당 노드를 지났을때, 예측값(?)이라 생각하면 된다.
해당 그림을 보면, 뭔가 AND/OR 할때처럼 마치 하나의 선을 그려놓은 것 같다.( 물론 진짜 선은 아님.)
자 이번엔 hidden layer에 맨밑 노드(2번노드)는 어떨까? 이정도면 어느정도 예상이 간다.
여기서도 파란색 값이 1, 빨강이 0이다.
즉, [그림 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]의 왼쪽 그림에서 빨간색은 hidden layer에 맨위 노드(1번노드)이고,
파란색은 hidden layer에 맨위 노드(2번노드)이다. (여기선 값(0,1) 기준으로 색을 나누지 않아 모두 색이 같음)
해당 각도만 봐서는 왼쪽 그림은 잘 해석이 불가능할 것 같다.
오른쪽 그림은 [그림 3-1],[그림 3-2]처럼 마지막 노드를 지난 값들의 점이다. 해당 그림은 자세히 보면, [그림 3-1]과
[그림3-2]를 합친 그림이다! 물론, 차원의 증가로 높이가 생겼다. (자세히 보면 똑같다!!!!!!)
2D, 3D 둘다 개인적으로 만족스러운 시각화를 한 것 같다..
여기서 들어와 해당 글을 보신분은 필자처럼 노가다를 하지말고 '아 그렇구나'하고 넘어가길...
끝.
'Deep-learning' 카테고리의 다른 글
딥러닝 네트워크 종류 (1) | 2022.09.30 |
---|---|
오차 역전파 정리(개인적 생각) (0) | 2022.09.06 |
[Deep-learning] 6. 오버 피팅(Overfitting)을 막기 위한 발악 (0) | 2020.08.15 |
[Deep-learning] 5. 흙수저의 마지막 희망 Google Colab. (0) | 2020.08.15 |
[Deep-learning] 4. VGG16과 Fine tuning의 결합 (0) | 2020.08.13 |
- Total
- Today
- Yesterday
- 자바
- GNN
- YOLO
- DeepLearning
- 도커
- Tree
- docker
- 어탠션
- yolov11
- 오블완
- YOLOv8
- 정리
- c3k2
- 알고리즘
- V11
- github
- 백준
- 욜로
- 이미지
- GIT
- java
- 딥러닝
- 티스토리챌린지
- 초보자
- python
- 오류
- 깃
- CNN
- 디텍션
- 뜯어보기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |