Does not work xor을 단일 퍼셉트론으로 구현하는 것은 불가능하다. 왜냐하면 위 그림과 같이 직선으로 1과 0을 나눌 수 없기 때문이다. 그럼 한번 텐서플로우를 이용하여 단층 퍼셉트론을 구현해 보자123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051import tensorflow as tfimport numpy as np # 07train.txt# # x1 x2 y# 0 0 0# 0 1 1# 1 0 1# 1 1 0 xy = np.loadtxt('07train.txt', unpack=True) x_data = xy[:-1]y_data = xy[-1] X = tf.placeholder..
Neural NetworkHow can we learn W1, W2, B1, B2 from training data?위 그림처럼 여러 개의 입력이 발생할 수 있는데, 이들 입력을 행렬을 이용해 하나로 통합하는 과정을 보여주는 그림이다. 이제 그럼 어떻게 하면 학습을 시킬 수 있을까?앞에서 배웟던 gradient descent 알고리즘을 이용해 학습하면 된다. Backpropagation NN은 여러 개의 layer를 두어서 복잡한 문제도 해결할 수 있도록 구성된다. 첫 번째 layer를 input layer, 가운데에 파란색 층을 hidden layer, 그리고 마지막은 output layer이라고 한다. 인공지능 초기에는 input과 output밖에 없었지만 복잡한 것까지 해내도록 하다보니 은닉층이 생..
Neural Network 위 그림을 보면 각각은 logistic regression으로 두 개 중에서 하나만 선택할 수 있다. logistic regression 한 개만 사용해서는 xor 문제를 해결할 수 없지만, 그림처럼 3개를 연결해서 사용한다면 가능하다. 기존의 방식을 연결하여 사용하는 것이 NN의 핵심일 수 있다. XOR using NN 두 개의 feature x1과 x2가 있고, 이들은 0 도는 1의 값을 갖는 boolean 데이터이다. 이때 XOR 연산은 두 개의 값이 같은 경우에는 False, 다른 경우에는 True가 된다는 것을 보여준다. 그래프를 통해서도 볼 수 있다. 위 그림은 과연 XOR을 풀 수 있을지 실제로 계산해 본 그림이다. 그림을 설명해 보면 3개의 logistic reg..
Mnist dataset- 0 ~9까지 사람이 쓴 손글씨 이미지- 28 x 28(784) pixels- 파일 구조[학습 데이터] - 60,000개 (test : validation = 55,000 : 5,000) train-images-idx3-ubyte.gz train-labels-idx1-ubyte.gz [테스트 데이터] - 10,000 개 t10k-images-idx3-ubyte.gz t10k-labels-idx1-ubyte.gz tensorflow 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374im..
Training and Test data set으로 분류- Training data set : 학습에만 사용- Test data set : 모델이 한번도 본 적 없기에 새로운 데이터 TensorflowTraining data set과 Test data set분류 예제12345678910111213141516171819202122232425262728293031323334353637383940414243444546import tensorflow as tf # 학습 데이터x_data = [[1, 2, 1], [1, 3, 2], [1, 3, 4], [1, 5, 5], [1, 7, 5], [1, 2, 5], [1, 6, 6], [1, 7, 7]]y_data = [[0, 0, 1], [0, 0, 1], [0, 0..
Learning ratelearning rate는 단순하게 보면 숫자에 불과하고 그 숫자는 프로그래밍에서처럼 "크다, 작다, 같다"의 3가지로 나누어질 수 있다.Large learning rate : overshooting and undershooting overshooting은 learning rate가 너무 커서 왼쪽그림과 같이 경사면을 타고 내려오는 것이 아닌 올라가는 현상을 말한다. 오른쪽 그림은 learning rate가 너무 작을 때를 보여준다. 한참을 내려갔음에도 최저점에 도착하지 못했다. 반복 수를 늘려 최저점에 도달할 수도 있겠지만 그럴 경우 3일이면 끝날게 3주가 거릴 수도 있다. 따라서 learning rate가 너무 크거나 너무 작지 않게 조절해 주는 것이 핵심이다. 하지만 그것은 ..
머신러닝의 난제우리가 머신러닝 기법을 통해 학습 데이터로부터 모델을 찾아내면 실제 현장의 데이터를 입력해 사용합니다. 학습된 모델에 실제 데이터를 입력해 결과를 찾는 것을'추론(inference)'이라고 합니다. 이렇게 학습 데이터로 열심히 모델을 구했는데, 실제 데이터를 입력하니 제대로 작동하지 않을 수 있습니다. 그 이유는 학습데이터는 실제데이터의 부분집합이기 때문에 모든 상황에 맞는 모델이 아니기 때문입니다. 머신러닝의 모든 문제는 여기서 발생한다고 볼 수 있습니다. 딥러닝도 머신러닝의 개념을 물려받았기에 머신러닝의 난제도 그대로 물려받았습니다. 따라서 머신러닝 기법을 사용할 때는 실제 데이터의 특성이 잘 반영되어 있고 편향되지 않은 학습 데이터를 확보하는 것이 아주 중요합니다. 학습 데이터와 입력..
Softmax classification Tensorflow- softmax_cross_entropy_with_logits를 사용하여 Softmax classification구현- 동물의 특징에 따라 7가지로 분류 예제- 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061import tensorflow as tfimport numpy as np # 동물 데이터 불러오기xy = np.loadtxt('data-04-zoo.csv', delimiter=',', dtype=np.float32)x_data = xy[:, 0:-1]y_data = xy[:, [-1]..