#모두를 위한 딥러닝 강좌 lec 8-1: 딥러닝의 기본 개념: 시작과 XOR 문제
https://www.youtube.com/watch?v=n7DNueHGkqE&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=22
사람의 뇌는 굉장히 복잡하게 연결되어있는데, 연결된 부분들을 자세히보니(뉴런)을 자세히 보니 단순하게 움직이는 구조더라! input → input이 들어오는 신호의 길이에 따라서 input x* weight 되면서 계속해서 Sum이되고 Bias라는 값이 더해지면서 전달이 되더라!
근데 그 어떤값을 통해서 뇌가 활성화가 되고 활성화가 되지 않기도 하더라! 그래서 나온 컴퓨터로 구현할 수 있지 않을까해서 나온 것이
Activation Functions
값이 어떤 값보다 크면 1을 주고 어떤 값보다 낮으면 0을 주는 형태로 만들면 되겠다! 라는 아이디어가 나왔다.
Logistic regression Units
지난 번 시간에 배웠던 Logistic regression이 여러개가 있따면 이런식으로 네트워크를 형성할 수 있겠다!
= 여러개의 출력을 동시에 낼 수 있다.
False Promises (허황된 약속)
Frank 박사는 당시에 그러한 알고리즘을 통해서 말하고, 걷고, 글을쓰고, 자기자신을 인지할 수 있다고 말을 함...
많은 사람들에게 관심을 끌게 되었고...
근데 성과가 없었던 것은 아니였다고 한다..
AND/OR problem : linearly separable?
그 당시에 AND와 OR라는 로직을 풀 수 있으면, 이것들을 조합해서 인공지능 기계를 만들 수 있겠다고 생각했었다.
OR = x1(가로축 값)과 x2(세로축 값)의 값이 있을 때
x1이 1이고 x2가 1이면 = 1이되고
x1이 0이고 x2가 0이면 = 0이되는 것을 안다면 (왼쪽 or 그림)
x1+x2를 통해서 Y라는 값을 만들 수 있을까?
linear하기 때문에 값을 구분할 수 있다!
AND
x1이 0일때, x2도 0이면은 값이 0이 되고,
x1이 1일때, x2도 1이면은 값이 1이되는 (오른쪽 and 그림)
..... 진짜 인공지능 머신을 만들 수 있겠다 싶었는데!!
XOR라는 이상한게 나옴! 어떻게 나왔느냐
x1 |
x2 |
결과 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
값이 같을 때 0, 값이 다를때 1이되는.. XOR를 가지고 x1과 x2를 더해서 Y값을 나오게 기계에게 시켰는데?
Y가 정확하게 안나오는 것이다..
이유는 +와 -값이 다르기 흩어져있기 때문에 어떻게해도 linear하게 선이 그어질 수 없어서 100프로 맞게 나올 수가 없다.
확률이 아무리해도 50%밖에 안나오더라.. 그래서 많은 사람들이 좌절함
Perceptrons(1969) by Minsky
이런 시기에 Minsky라는 교수가 XOR는 수학적으로 풀 수 없다며 수학적인 증명으로 말했고
[ ] [ ] [ ] MLP를 여러개 합쳐서 XOR를 할 수는 있지만, 각각 [ ]안에 들어가는 weight 과 bias를 학습시킬 수 없다고 했다.
그러다가 74,84년도 쯤에 해결이 된다.
Backpropagation (1974, 1982)
가운데에 네트워크가 연결되어있고 w+b를 통해서 출력을 만들어낼 수 있는데
출력이 원하는 결과가 아닐 경우 w나 b를 조절해야했는데,
나중에 앞에서 w나 b값을 조절하지말고 나중에 w와 b를 조절하면 어떨까?하고 논문을 냄
이것을 통해서 본격적으로 ML에 이 알고리즘이 사용되기 시작함.
그리고 나중에 고양이의 시신경이 어떻게 움직이는지 보려고 했는데
그림을 다르게 줄 때마다 새로운 네트워크를 형성하여가는 것을 발견함
즉, 일부를 인식하고 나중에 합쳐지는 것이 아닐까란 생각을 함
Convolutional Neural Networks
그림을 모두 한번에 읽는 것이 아니라.
A라는 그림을 잘라서 작게 쪼개서 머리로 보내고 나중에 그림을 다 합치는 방법을 발견하였다 => Neural Networks 방법 발견
A Big problem
Backpropagetion을 통해서 몇개는 괜찮던데 네트워크가 여러개로 만들어지는 머신러닝의 경우,
뒤에서 조절된 W와 B값이 다시 앞까지 가는데, 정보가 소실되고 어렵게 됨..
결국 간단한 알고리즘들이 더 성능이 좋더라!