본문 바로가기

Deep Learning

(11)
Recurrent Neural Network 1. RNN이란? 음성인식, 자연어 : 시퀀스가 있다. NN/CNN으로는 이런 연속성이 있는 데이터를 처리하기 힘들다. 연속성이 있는 데이터를 학습하기 위해 사용하는 것이 RNN(Recurrent Neural Network)이다. 위 그림처럼 계산된 값이 다음 계산에 영향을 미치게 됨으로써 연속성이 있는 데이터 학습이 가능해진다. RNN에서 state를 계산할 때 이전의 state인 h(t-1) 와 입력값 x을 이용한다. 따라서 이전에 계산된 값이 현재의 계산에 영향을 줄 수 있게 된다. 계산 과정은 기본적으로 y = Wx+b 의 틀에서 벗어나지 않는다. h와 x 각각의 Weight를 만들어준다. 이것을 더하여 tanh 함수를 적용하여 현재의 state를 만들어준다. 계산된 h에 Weight를 곱하여 y..
딥러닝의 기본 개념, 역사 딥러닝은 사람의 뇌를 흉내내기 위해 분석하면서부터 만들어지기 시작했다. 뇌를 관찰한 결과, 주요한 특징은 다음과 같았다. 1) 매우 복잡하게 연결되어 있다. 2) 연결되는 사이 뉴런이라는 unit이 굉장히 단순하게 동작한다. 뉴런이 동작하는 순서는 다음과 같았다. 1) input이 있고, input의 길이에 따라 신호의 양이 달라진다. x * w(weight) 비율로 나타낼 수 있다. 2) 모든 input이 다 합쳐지고 bias가 더해져서 어떤 값이 만들어진다. 3) 이 값이 일정 기준 이상이 되면 뇌가 활성화되고, 기준 이하일 때는 활성화되지 않는다. 사람들이 이 과정을 이해하고 비슷하게 만든 것이 Activation function이다. Activation 함수는 뉴런의 동작 과정과 유사하게 신호가 ..
ML의 실용과 몇가지 팁 1) Learning rate 조절 방법 지금까지 Gradient descent를 구현할 때 alpha 값을 임의로 설정하였다. 그러나 alpha 값이 매우 크면, overshooting하는 문제가 발생할 수 있다. (cost 값이 발산하는 현상) 반대로 alpha 값이 매우 작으면 최소값을 찾기까지 너무 오래 걸리는 문제가 발생한다. 데이터마다 다르므로 정답은 없지만, 0.01을 기준으로 cost function의 값을 관찰하면서 변경시키는 것이 적합하다. 2) data 선처리 방법 Data를 선처리해야하는 몇몇 경우가 존재한다. x1 x2 y 1 9000 A 2 -5000 A 4 -2000 B 6 8000 B 9 9000 C 위 데이터처럼 데이터의 차이가 너무 크게 날 때 학습이 되지 않고 cost ..
Multinomial의 개념과 Softmax Classification 구현 이 내용을 학습하기 전에는 Hyperplane, 초평면에 대한 개념이 필요하다. Maximal Margin Classifier는 각 관찰값들을 선형 경계로 구분하는 방법으로, 직관적으로 이해하고 설명하기 쉽다. 하지만 비선형 형태의 데이터에 대해서 적용할 수 없다는 단점이 있다. Maximal Margin Classifier가 선형 경계로 사용하는 선을 초평면(Hyperplane)이라고 하는데, 데이터가 n차원이라면 초평면은 n-1차원을 가진다. x1 (hours) x2 (attendance) y (grade) 10 5 A 9 5 A 3 2 B 2 4 B 11 1 C 위와 같은 데이터가 있다고 하자. x1는 공부한 시간, x2는 참여도, y는 학점이다. 이를 그래프로 나타내면 다음과 같이 나타낼 수 있다..
Logistic Classification의 HCG H : 가설 C : cost 함수 G : Gradient descent, 미니멀 알고리즘 Classification도 Linear Regression과 매우 유사하다. Binary Classification은 둘 중의 한개를 고르는 것으로 ML에서 많이 활용된다. [예시] Spam Detection : spam(1) or ham(0) Facebook feed : show(1) or hide(0) Credit Card Fraudulent Transaction detection : legitimate(0) /fraud(1) 주식 시장에서 살까 말까 : 산다(1), 안산다(0) 시험 공부 : Pass(1), Fail(0) Linear Regression을 이용해 Binary Classification을 구현할..
TensorFlow로 파일에서 데이터 읽어오기 TensorFlow에서는 .csv 형식의 데이터 파일을 주로 사용한다. 파일을 읽는 방식은 다음 코드와 같다. xy = numpy.loadtxt('data-test-score.csv', delimiter=',', dtype=np.float32) x_data = xy[:, 0:-1] y_data = xy[:, [-1]] 여러개의 파일들을 training에 사용하고 싶을 때, TensorFlow에서 제공하는 Queue Runners라는 기능을 사용할 수 있다. 원리는 다음과 같다. 1. 파일들의 리스트를 만들어준다. 2. Reader를 사용하여 파일들을 읽는다. 3. decode_csv를 이용하여 데이터 타입, shape을 정의한다. 4. tf.train.batch(데이터를 펌핑하는 기능)을 사용하여 한 번..
여러 feature의 linear regression 개수가 많은 데이터를 학습시킬 때 다음과 같이 작성할 수 있다. import tensorflow as tf x1_data = [73., 93., 89., 96., 73.] x2_data = [80., 88., 91., 98., 66.] x3_data = [75., 93., 90., 100., 70.] Y_data = [152., 185., 100., 196., 142.] x1 = tf.placeholder(tf.float32) x2 = tf.placeholder(tf.float32) x3 = tf.placeholder(tf.float32) Y = tf.placeholder(tf.float32) w1 = tf.Variable(tf.random_normal([1]), name='weight1') w2 = t..
Linear Regression의 cost 최소화 알고리즘의 원리 Simplified hypothesis 기존 cost function에서 bias를 제거한 것. 수식으로 나타내면 아래와 같다. bias 없이 다음 traning data set에서 W를 구해보았다. x y 1 1 2 2 3 3 W = 1, cost(W) = 0 ( (1*1-1)^2 + (1*2-2)^2 + (1*3-3)^2 ) / 3 = 0+0+0 = 0 W = 0, cost(W) = 4.67 ( (0*1-1)^2 + (0*2-2)^2 + (0*3-3)^2) / 3 = 14 / 3 = 4.67 W = 2, cost(W) = 4.67 ( (2*1-1)^2 + (2*2-2)^2 + (2*3-3)^2) / 3 = 14 / 3 = 4.67 0에서 멀어질수록 cost function의 값이 더 커지는 것을 볼 ..