목록전체 글 (28)
코딩로그
계층을 늘려 XOR문제를 풀었던 것처럼 신경망이 깊어져야 복잡한 문제를 풀 수 있다. 기존의 방법으로 신경망의 깊이만 깊게하자 문제를 제대로 풀기가 어려웠다. 신경망의 계층을 늘리기가 어려워지자 인공지능의 2차 겨울이 찾아왔다. 오늘은 이를 극복한 방법에 대해 이야기해보겠다. 1. rulu fuction sigmoid함수 ->0~1사이 값이다. 따라서 층이 깊어질수록 값이 점점 작아진다. relu라는 activation function을 만들었다. 0보다 작으면 0이고 그 이상이면 값을 그대로 반환한다. 이외에도 relu함수를 변형한 다양한 함수가 있다. leaky relu함수 : 0이하의 값도 어느정도 value를 갖도록 함. ELU : leaky relu의 경우 최솟값이 0.1x로 정해져 있음. 이걸..
지난시간에 여러개의 logistic regression unit을 통해 xor문제를 풀 수 있다고 했다. 그런데 정말 가능할까? 증명해보자. 그림과 같이 임의로 w와 b의 값을 지정한 3개의 unit이 있다고 할 때, 왼쪽의 unit두개의 출력이 오른쪽 unit의 입력값이 되는 neural net을 구성해보았다. 이를 통해 XOR문제를 해결해보자. - 첫 번째 unit : wx+b에 의해 –8이라는 값이 나오고, sigmoid함수의 경우 값이 작을수록 0에 수렴한다. 따라서 sigmod함수를 거친 결과 첫 번째 unit의 결과값은 대략 0이다. - 두 번째 unit : wx+b에 의해 3이라는 값이 나오고, sigmoid함수의 경우 값이 클수록 1에 수렴한다. 따라서 sigmod함수를 거친 결과 첫 번째..
뉴런의 구조 : 어떠한 input(x*w)가 뉴런에 정해지면 뉴런에서 일정한 가중치(b)가 더해져 일정치를 넘으면 output을 내보내고, 아니면 아무 반응도 하지 않는다. 이를 본따 만든 것이 activation function이다. 사람들은 다이얼과 선을 이용해 이를 물리적으로 구현하기도 했다. 이를 통해 and(전부 1이면 +를, 이외에는 -를 출력)와 or(둘 중 하나라도 1이면 +를 출력)을 예측 할 수 있는 모델을 만들었다. 왼쪽의 그림과 같은 선을 긋는 것이다. 그런데 오른쪽 그림과 같은 경우(xor 문제) 어떻게 선을 그어도 구분을 하기가 힘들다. 문제 : Marvin Minsky는 xor문제를 기존의 방법으로 풀 수 없음을 수학적으로 증명했다. 문제를 해결하기 위해서는 층을 여러개 하는 ..
내용이 많아 mnist 실습은 따로 올렸습니다. mnist dataset : 손으로 쓴 숫자를 판별하는 data set 28X28 픽셀로 shape(?,784)의 특성을 갖는다. -> ?는 트레이닝 데이터의 개수이다. 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 ..
이번 시간에는 효율적인 ML을 위한 몇가지 팁에 대해 알아보겠다. Learning rate : $W := W-\alpha \frac{\partial }{\partial W}cost(W)$ 에서 알파에 해당하는 값이다. 너무 크면 cost의 최저값을 넘어가 버리고, 결국 주변을 맴돌다 외부로 나가버리는 overshooting 문제가 발생한다. 너무 작으면 지역 최소값에 도달하거나, 시간이 너무 오래 걸리는 문제가 발생한다. learning rate를 정하는데 특별한 규칙이 있는 것은 아니다. 그러나 따라서 cost function을 관찰하며 임의대로 값을 바꿔준다. 데이터 전처리 : training 전 데이터를 학습하기 좋게 처리해두는 것이다. 그림 1과 같이 x1과 x2가 큰 차이를 보이는 데이터가 있다..
지난시간에는 두가지의 값으로 분류하는 binary classification에 대해 배웠다. 이번시간에는 여러가지 값으로 분류하는 multinomial classification에 대해 알아보겠다. 이전에는 위의 그림과 같이 하나의 선으로 두종류의 데이터를 분류하는 방법에 대해 배웠다. 이와 같이 세개의 선을 사용함으로써 세개 이상의 값도 분류해낼 수 있다. 세개의 선을 각각 나타내지 않고 위와 같이 행렬로 나타낼 수 있다. hypothesis에 따라 여기에 해당하는 $\bar{y}_{a},\bar{y}_{b}, \bar{y}_{c}$가 나올 것이다. 위 그림의 경우에서는 당연히 a가 답이 될 것이다. 그런데 값을 확률로 나타내고 싶을 수 있다. a가 될 확률, b가 될 확률, c가 될 확률를 합쳐 그 ..
Binary classification : 0과1, pass와 non-pass 같이 특성에 따른 결과값을 두가지로 분류하는 것이다. 공부 시간에 따른 pass 와 fail을 위의 그래프로 나타내었다고 하자. 이걸 분류하려면 어떻게 해야할까? 이전에 배웠던 linear regression을 사용한다고 해보자 그럼 이와 같이 가장 cost를 최소화하는 hypothesis wx를 찾고, 0.5정도를 기준으로 해서 h(hours) 0.5면 pass로 분류할 수 있을 것이다. 그런데 이런 식의 분류에는 두가지 문제점이 있다. 첫째, 예외적인 값에 의해 기준이 너무 쉽게 변한다는 것이다. 둘째, h(x) = wx+b라고 주면 ,값이 0과 1사이가 아닌 너무 크거나 작은 값이..
수 많은 데이터를 모두 코드에 적기는 매우 어려운 일이다. 따라서 이번에는 tensorflow로 파일에서 데이터를 읽어오는 방법에 대해 알아보겠다. xy = np.loadtxt('file', delimiter = ' ', dtype = np.~)로 파일을 읽어오고, 넘파이의 슬라이싱을 활용해 x_data와 y_data를 지정해주는 것만 다르고, 나머지는 이전과 같다. numpy 슬라이싱에 대한 자세한 내용은 본 링크를 참조 https://jumpjump3030.tistory.com/2 Numpy 기초, 기본 정리 jumpjump3030.tistory.com 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..