반응형
반응형

#모두를 위한 딥러닝 강좌 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값이 다시 앞까지 가는데, 정보가 소실되고 어렵게 됨..

결국 간단한 알고리즘들이 더 성능이 좋더라!


반응형

#모두를 위한 립러닝 강좌 7-2 : Meet MNIST Dataset

https://www.youtube.com/watch?v=ktd5yrki_KA&index=21&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm


...

반응형

#모두를 위한 립러닝 강좌 7-1 : Training/test dataset, learning rate, normalization

https://www.youtube.com/watch?v=oSJfejG2C3w&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=20



ㅇㅇㅇㅇ

반응형

#모두를 위한 립러닝 강좌 7-2 : Training/Testing 데이타 셋

https://www.youtube.com/watch?v=KVv1nMSlPzY&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=19


*어떠한 모델이 좋은 모델인가?


전체 데이터 중에 70%는 Training Set으로 나머지 30%는 Testing set로 남겨두고 30%는 절대 사용해선 안된다. 그리고 30%의 Training set를 다시 70%는 트레이닝 데이터로 나머지 30%는 Validation 체크를 하기 위한 값으로 남겨둔다. 여기서 Validation 체크란 rate나 람다같은 수를 수정 변경할 경우 쓸 validation 체크용 데이터이다.


*Online learning이란?

100만개의 데이터 세트가 있을 경우, 100만개의 데이터 세트를 10만개씩 나누어서 Model을 학습시키는데 이때, 첫번째 학습한 10만개에 대한 학습 결과가 두번째 학습시키는 10만개의 데이터에 반영 되어야 한다는 방법론이다. 


*MINIST Dataset

사람들이 적어 놓은 숫자들을 컴퓨터가 정확히 알아낼 수 있는지 학습시키는 데이터 세트이다. 미국에서 사람들이 우편번호를 쓸 때, 날려쓰는 경우가 있는데 그 일을 컴퓨터를 통해서 시키기 위해서 나온 방법이다. 이것 역시도, train-inmages-idx3, train-labels 트레이닝 세트와 t10k-images, t10k-labels 테스트 세트가 있을 때 우리는 우리가 가진 모델이 얼마나 정확한 모델을 가졌는지 확인하는 작업은 매우 간단한 일이 될 것이다. y값 (레이블값)과 모델이 예측한 값을 비교하여서 100개 중에 10개 맞으면 10% 정확한 것이고. 100개 중에 90개를 맞췄다면 90%의 정확도를 가졌다고 할 수 있다.


+ Recent posts