*Learning Rate :
큰 Learning Rate 값은 overshooting을 유발하고
값이 너무 작을 경우에는 오래걸린다.
*Data normalization 필요성(표준화 방법):
1 2 | x_data[:,1] = (x_data[:,1] - x_data[:,1].mean()) / x_data[:,1].std() | cs |
*Overfitting :
머신러닝 학습의 가장 큰 문제점 중 하나
- Our model is very good with training data set(with memorization)
- Not good at test dataset or in real use
*Solution for overfitting:
- Data가 많으면 많을 수록 좋다.
- Reduce the number of features
- Regularization
=> let's not have too big numbers in the weight
*Underfit VS Overfit
- Training Data 만 잘 표현하는 모델 : Training Error < test Error
- 새로운 데이터까지 잘 표현할 수 있는가 체크
- 적절한 복잡도까지 무엇인지 체크 -> model selection problem
*Bias(퍼져있는 상태)-Variance Tradeoff
Variance가 큰 모델은 좋은 모델이 아니다:
Low variance와 Low Bias가 가장 좋은 모델
bias : 중앙으로부터 떨어진 에러, hbar는 예측의 평균값
variance : 예측의 펴균값과 예측값들의 분산
Bias는 모델의 복잡도가 높아질 수록 error 발생률이 줄어든다
반면 Variance는 모델의 복잡도가 높아질 수록 error 발생률이 늘어난다.
둘의 에러가 가장 적은 상태(model complexity가 중간쯤인)가 가장 최적화된 모델 상태이다.
*Online Learning :
대량데이터에 대해 부분으로 나누어 학습을 시키거나, 학습이 끝난 후 추가적인 데이터에 대해 학습시키는 방법.
*MNIST Example :
=> 손글씨인 이미지 데이터를 학습시켜 예측하도록 하는 예제
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 | from tensorflow.examples.tutorials.mnist import input_data import tensorflow as tf import random import matplotlib.pylab as plt mnist = input_data.read_data_sets('./MNIST_data/', one_hot=True) sess = tf.InteractiveSession() # Create the model x = tf.placeholder(tf.float32, [None, 784]) y = tf.placeholder(tf.float32, [None, 10]) W = tf.Variable(tf.zeros([784, 10])) b = tf.Variable(tf.zeros([10])) hypothesis = tf.nn.softmax(tf.matmul(x, W) + b) # Define loss and optimizer cross_entropy = tf.reduce_mean(-tf.reduce_sum(y * tf.log(hypothesis), axis=1)) #row train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) # Train tf.global_variables_initializer().run() for i in range(5500): #5500 batch_xs, batch_ys = mnist.train.next_batch(100) train_step.run({x: batch_xs, y: batch_ys}) print ("cost:",cross_entropy.eval({x: batch_xs, y: batch_ys})) # Test trained model correct_prediction = tf.equal(tf.argmax(hypothesis, 1), tf.argmax(y, 1)) accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) print(accuracy.eval({x: mnist.test.images, y: mnist.test.labels})) r = random.randint(0, mnist.test.num_examples -1) print('Label:', sess.run(tf.argmax(mnist.test.labels[r:r+1],1))) print('Prediction:', sess.run(tf.argmax(hypothesis,1),{x:mnist.test.images[r:r+1]})) plt.imshow(mnist.test.images[r:r+1].reshape(28,28) , cmap='Greys', interpolation='nearest') plt.show() | cs |
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 | from tensorflow.examples.tutorials.mnist import input_data import tensorflow as tf import random import matplotlib.pylab as plt mnist = input_data.read_data_sets('./MNIST_data/', one_hot=True) sess = tf.InteractiveSession() # Create the model x = tf.placeholder(tf.float32, [None, 784]) #열만 784개로 맞춰라 y = tf.placeholder(tf.float32, [None, 10]) #열만 10개로 맞춰라 W = tf.Variable(tf.zeros([784, 10])) b = tf.Variable(tf.zeros([10])) hypothesis = tf.nn.softmax(tf.matmul(x, W) + b) # Define loss and optimizer cross_entropy = tf.reduce_mean(-tf.reduce_sum(y * tf.log(hypothesis), axis=1)) #row train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) # Train tf.global_variables_initializer().run() for i in range(5500): #5500 batch_xs, batch_ys = mnist.train.next_batch(100) #100건씩 끊어서 가져오겠다. train_step.run({x: batch_xs, y: batch_ys}) print ("cost:",cross_entropy.eval({x: batch_xs, y: batch_ys})) # Test trained model correct_prediction = tf.equal(tf.argmax(hypothesis, 1), tf.argmax(y, 1)) # hypothesis와 결과와 비교한다. accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) # 평균을 내서 accuracy를 구한다 print(accuracy.eval({x: mnist.test.images, y: mnist.test.labels})) r = random.randint(0, mnist.test.num_examples -1) print('Label:', sess.run(tf.argmax(mnist.test.labels[r:r+1],1))) print('Prediction:', sess.run(tf.argmax(hypothesis,1),{x:mnist.test.images[r:r+1]})) plt.imshow(mnist.test.images[r:r+1].reshape(28,28) , cmap='Greys', interpolation='nearest') plt.show() | cs |
'Python 활용 딥러닝' 카테고리의 다른 글
Deep Learning 학습방법(Layer 구성, Backpropagation, Activation function ReLU) (0) | 2018.12.19 |
---|---|
Neural Nets & Deep learning, Neural Nets for XOR (0) | 2018.12.19 |
Softmax Classification(multinominal classification) (0) | 2018.12.18 |
Logistic Regression 사용법 (0) | 2018.12.18 |
multi-variable linear regression(with matrix multiplication) + tensorflow file load (0) | 2018.12.18 |