반응형
반응형

#모두를 위한 립러닝 강좌 7-2 : Training/Testing 데이타 셋

https://www.youtube.com/watch?v=KVv1nMSlPzY&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=19


*어떠한 모델이 좋은 모델인가?


전체 데이터 중에 70%는 Training Set으로 나머지 30%는 Testing set로 남겨두고 30%는 절대 사용해선 안된다. 그리고 30%의 Training set를 다시 70%는 트레이닝 데이터로 나머지 30%는 Validation 체크를 하기 위한 값으로 남겨둔다. 여기서 Validation 체크란 rate나 람다같은 수를 수정 변경할 경우 쓸 validation 체크용 데이터이다.


*Online learning이란?

100만개의 데이터 세트가 있을 경우, 100만개의 데이터 세트를 10만개씩 나누어서 Model을 학습시키는데 이때, 첫번째 학습한 10만개에 대한 학습 결과가 두번째 학습시키는 10만개의 데이터에 반영 되어야 한다는 방법론이다. 


*MINIST Dataset

사람들이 적어 놓은 숫자들을 컴퓨터가 정확히 알아낼 수 있는지 학습시키는 데이터 세트이다. 미국에서 사람들이 우편번호를 쓸 때, 날려쓰는 경우가 있는데 그 일을 컴퓨터를 통해서 시키기 위해서 나온 방법이다. 이것 역시도, train-inmages-idx3, train-labels 트레이닝 세트와 t10k-images, t10k-labels 테스트 세트가 있을 때 우리는 우리가 가진 모델이 얼마나 정확한 모델을 가졌는지 확인하는 작업은 매우 간단한 일이 될 것이다. y값 (레이블값)과 모델이 예측한 값을 비교하여서 100개 중에 10개 맞으면 10% 정확한 것이고. 100개 중에 90개를 맞췄다면 90%의 정확도를 가졌다고 할 수 있다.


반응형
반응형

#모두를 위한 립러닝 강좌 lec 7-1 : 학습 Learning rate, Overfitting 방지법, 그리고 일반화

https://www.youtube.com/watch?v=1jPjVoDV_uo&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=18



*Gradient descent


cost function을 정의하고 cost 값을 최소화 하기 위해서 사용했던 경사를 타고 내려가는 알고리즘을 구할때

∂값을 임의로 정하였었다. (ex. learning_rate= 0.001)


Learning rate를 잘 정하는게 중요하다. 왜 중요하냐!


1) 이 step을 매우 크게 했을 경우

경사를 내려가는 Step이 매우 크게 된다면, 기울기의 최소값이 아니라 바로 다시 올라갈 수 있다.. (빨강색과 파랑색)

이 rate가 더 크게 된다면, 결국 파랑색 선을 따라서 그래프를 벗어날 수도 있다.

이것을 우리는 overshooting이라고 한다. 

= 값을 구했는데, 굉장히 큰 값을 찍다가 알 수 없는 값이 나올 경우 발견되며 이때 overshooting을 의심 해야한다.


2) 반대로 step을 매우 작게했을 경우

굉장한 시간이 소요되며, 시간 제한이 있을 경우 경사면이 다 돌기도 전에 멈출 것이다.

그래서 미리 cost 함수를 실행하면서 rate의 비율을 찍어보고 테스트 후에 돌리는 것이 좋다! (보통은 0.01을 넣고 돌려보세요)



*Data(X) preprocessing for gradient descent 


어떠한 한 점에서 시작하면, 최고로 낮은 지점에 도착하는 것이 목표이나,

x1값과 x2의 값이 있을 때 값이 크게 차이가 나게 된다면, 그래프는 눌린 타원형으로 그려질 것이다. 


그러므로 데이터의 분포도를 보고, normalization하는 것이 중요하다.

(1) Original Data

(2) zero-centered data

(3) normalized data 


*Standardization 


평균을 분산값으로 나누면 끝이다. = nomalization 종류는 다양하다.



*Overfitting


머신러닝이 학습을 통해서 모델을 만들어 가는데, 그러다 보니까 학습 데이터에 너무 딱 맞는 모델을 만들 수 있다. 

그렇게 되면, 학습데이터를 다시 가지고 물어보면 되지만 실제 테스트 데이터 등을 통해서 돌려보면 제대로 안되더라.


ex) - 와, + 가 석인 경우라면은?

-와 +를 사이로 linear 라인을 그어서 좋은 모델로 만들 수 있지만, 너무 정확하게 만들려고할 경우 모델이 비선형이 될 수 있다.


그래서 일반적이며 좋은 모델은 model1이다. 

그러나 model2는 가지공 있는 데이터에만 정확히 맞아서 정확도가 떨어질 수있다. 이러한 데이터를 overfitting이라고 한다.


*Overfitting을 줄이는 방법

1) 트레이닝 데이터가 많으면 좋다.

2) features 개수를 줄인다. 

3) 정규화(일반화-regularzation)시킨다. 


여기서 그럼 일반화/정규화라는 것은? 

비선형적인 구조들을 선형구조로 만들어내는 것을 말한다. 


빨강색 네모부분이 바로 regularzation strength 라고 한다. 

텐서플로우에서는 l2reg = 0.001 * tf.reduce_sum (tf.square(W)) 로 표현한다. 


반응형
반응형


반응형
반응형

김성 교수님의 딥러닝 git 다운받기


반응형
반응형

파이참(Pycharm)에서 텐서플로우 예제 실행해보기



File > Settings .. 



Project 선택 > Project Intepreter > TensorFlow가 있는지 확인!

없으면, + Install > 



TensorFlow 검색 > Install Package


간단한 예제와 결과

import tensorflow as tf

# https://www.tensorflow.org/get_started/get_started
node1 = tf.constant(3.0, tf.float32)
node2 = tf.constant(4.0) # also tf.float32 implicitly print('result:', node1, node2)

/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 /Users/aileen/PycharmProjects/test_project/TensorFlow/__init__.py result: Tensor("Const:0", shape=(), dtype=float32) Tensor("Const_1:0", shape=(), dtype=float32) Process finished with exit code 0


관련문서


반응형
반응형

파이참(Pycharm)으로 Hello world 찍기



파이참 첫 화면!

Pycharm의 프로젝트 구조 : https://www.jetbrains.com/help/pycharm/2016.3/project-structure-dialog.html



Empty Project에서 마우스 오른쪽 클릭하여 Python File 추가



파일에 Print ("Hello, world") 입력하고 실행하면!


C:\Users\Aileen\AppData\Local\Programs\Python\Python35\python.exe C:/Users/Aileen/PycharmProjects/exam_project/HelloWorld.py

Hello, world!


Process finished with exit code 0


다음편 ☞Pycharm에서 텐서플로우 예제 실행해보기

반응형
반응형

텐서플로우 개발하기 위해 필요한 프로그램들 설치하기

 

1. Python 설치 : 텐서플로우는 파이썬 기반의 언어이므로 파이썬 설치가 필요하지만 Anaconda를 설치할 경우 설치하지 않아도 된다.

 

2. Anaconda 설치하기 

    • 나콘다란? Continuum Analytics 라는 곳에서 만든 파이썬 배포판으로 다양한 형태의 파이썬 관련 패키지를 모두 포함하여 개발을 더 편리하게 해주는 툴!

 

아나콘다 설치 후, 버전확인 및 conda 라이브러리 업데이트 명령어

$python --version
 
$pip --version
 
$conda update --all 

 

[Mac에서 pip 업데이트 하기] ☞ 업데이트 실패시

$pip install -U 

 

[Windows에서 pip 업데이트 하기] ☞ 업데이트 실패시

$python -m pip install -U pip

 

3. 텐서플로우 설치https://www.tensorflow.org/install/

 

다음편 : ☞파이썬 개발을 위한 Pycharm IDE 설치하기편

 

반응형
반응형

#모두를 위한 립러닝 강좌 lec 6-2 : Softmax classifier 의 cost함수

https://www.youtube.com/watch?v=jMU9G5WEtBc&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=14



* Softmax classifier란?


Logistic classification 함수를 사용해서 WX = Y 꼴을 계산해서 벡터값이 나오게 되고 값이 만약에 여러가지로 나왔을 때는 a = 0.7, b= 0.2, c=0.1로 나와서 합이 1이되는 값을 가지는 함수를 만들면 어떨까?라고 이야기가 나왔다. 바로 그렇게 만드는 것이 바로 softmax이다. 


* Softmax classifier


Softmax의 특징

1) 모든 값은 0에서 1 사이의 값을 가진다.

2) 전체의 sum이 1이 된다. 즉, 0.7이 나올 확률, 0.2가 나올 확률, 0.1이 나올 확률을 구할 수 있게 된다. 

3) 그리고 one-hot encoding 을 통해서 제일 확실한 값이 뭐야? 라고 했을 때 0.7을 가지는 값인 A를 1 나머지는 0으로 리턴해줄 수 있다. 


그리고 ML에서는 궁극적으로 cost 함수를 최소화(cost function) 하여서 적용한다.


* Cross-entropy Cost function

S(y) 예측값 L (실제값)을 넣어서 cross-entropy 함수를 통해서 그 차이를 구한다.

x가 0일 땐 1에 가깞게, 1일 때는 0에 가깝게 그려지는 그래프다.


* gradient descent

경사면의 기울기 구하기 - 믜분이 필요하겠구나 ^^




 #실습 

반응형

+ Recent posts