목록코딩로그/모두를 위한 딥러닝 (17)
코딩로그
우리가 사용하는 데이터는 시퀀스의 형태이다. 즉, 음성인식을 예로 들어보았을 때 단순히 하나의 단어를 듣고 각각을 이해하는 것이 아니라, 이전의 단어가 다음의 단어에 영향을 미치고, 또 다음 단어는 앞의 단어에 영향을 받는다. 이런 식으로 데이터가 데이터에 영향을 주기 때문에 하나의 learning set이 다른 예측 결과와 상호작용을 해야할 필요성을 느끼게 되었다. 이를 해결하기 위해 고안된 것이 바로 RNN이다. 다음처럼 하나의 learning set이 다음이 learning set에 영향을 미쳐야 한다. 이는 왼쪽과 같이 하나의 그림으로 나타낼 수 있다. 그렇다면 이걸 어떻게 수식으로 구현할 수 있을까? 알아보자. 이처럼 new state의 입력으로 x만을 받는 것이 아닌, old state도 함께..
1. mnist-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 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 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 import tensorflow as tf i..
CNN은 고양이의 뇌파분석에서 아이디어를 얻어 만들어진 방식이다. 고양이의 뇌가 특정한 형태의 이미지에만 반응을 함. -> 입력을 나누어 받는다 ! 이미지를 잘라서 각각의 입력으로 넘긴다. 5x5 filter를 사용해서 이미지를 잘라낸다. 그리고 하나의 값으로 만들어 내는데, 이값은 바로 Wx+b의 값이다. 같은 weight을 갖고 전체를 훑는다.-> 같은 필터이다. stride의 크기 – 옆으로 움직이는 크기. output size : (N-F)/stride+1 stride가 커질수록 정보가 사라진다 ! 따라서 테두리에 0이라는 값을 한번 두른다. : padding을 한다. -> 이 부분이 모서리라는 것을 알려주고, 그림이 급격하게 작아지는 것을 방지 다른 set을 이용해 또 다른 weight을 구해냄..
계층을 늘려 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가 큰 차이를 보이는 데이터가 있다..