반응형

경사하강법

gradient descent

 

함수 값을 최소화하는 최적화 알고리즘

이론적으로 말해 경사 하강법은 일련의 매개변수로 된 함수가 주어지면 초기 시작점에서 함수의 값이 최소화되는 방향으로 매개변수를 변경하는 것을 반복적으로 최적화를 수행합니다. 

 

함수의 기울기를 음의 방향쪽으로 진행하면서 반복적으로 최적화를 수행합니다.

보통 양의 값을 만들기 위해 거리 값을 제곱하며 , 기울기를 계산해야 하므로 오차함수는 미분 가능해야 합니다.

 

출처 : 텐서플로 첫걸음

반응형

'개념 정리' 카테고리의 다른 글

K-평균 알고리즘_20210914  (0) 2021.10.07
학습률_20210913  (0) 2021.10.07
평균제곱오차_20210911  (0) 2021.10.06
비용함수_20210910  (0) 2021.10.06
텐서플로 서빙 이란 ?_20210905  (0) 2021.09.25
반응형

아래 내용은 Udemy에서 Pytorch: Deep Learning and Artificial Intelligence를 보고 정리한 내용이다.

Gradient Descent

backbone of deep learning 

 

k-means clustering

hidden markov models

matric factorization

 

Big learning rate 

small learning rate

Stochastic Gradient Descent

optimizer = 'sgd'

 

stochastic

 

Momentum

SGD

움직이는 것 

physics momentum

zigzag

momentum이 없으면 엄청 zigzig가 많이 있다. 

momentum이 있으면 빨리 내리온다.

 

 

Variable and Adaptive Learning Rates

momentum is nice: huge performance gains, almost no work. 0.9 is usually fine.

learning rate scheduling

#1. step decay

exponentail decay 

 

leaning rate: 

너무 크게 해도 안좋고 너무 작게 해도 안좋다.

too slow -> increase learning rate

be careful! may hit a plateau temporarily

 

AdaGrad:Adaptive Learning Rete Techniques

everything is element-wise

each scalar parameter and its learning rate is updated independently of the others

It has been observed that AdaGrad decreases learning rate too aggressively

 

RMSProp

Introduced by Geoff Hinton+ team

since cache is growing too fast, let's decrease it on each update:

 

어떤것이 맞는지도 알 수 가 없다.

major packages have implemented both

Tensorflow initializers cache = 1

Kears initializzers cache = 0

 

AdaGrad:

at every batch:

cache+= gradient * 2

param = param- learning_rate * gradient/ sqrt(cache_ epsilon)

 

RMSProp

At every batch:

cache = decay * cache + (1-decay) * gradient ** 2

param = param- learning_rate * gradient/ sqrt(cache_ epsilon)

 

epsilon = 10 ** -8, 10 ** -9, 10 ** -10 ,etc ..., decay = 0.9, 0.99, 0.999, 0.9999, etc...

 

Adam optimizer

go-to default thes days

"RMSprop with momentum"

exponentailly-Smoothed Averages

 

RMS = "root mean square"

 

Adam:

m and v

 

반응형
반응형

학습 추가 진행

train_data, test_Data로 나누어서 하기

 

model.fit() batch_size

batch_size GPU와 관련된 옵션이다.

한번에 GPU에 보내는 데이터의 수이다.

 

batch_size 1일 경우 1개를 보내고, 1개의 결과를 받고, 1번 웨이트를 업데이트 한다.

batch_size 10일 경우 10개를 보내고, 10개의 결과를 한 번에 받고, 1번 웨이트를 업데이트 한다.

batch_size를 키우면, 시간은 줄어들지만 학습이 빠르게 진행되지 않는다.

 

 

batch_size를 키우면, 시간은 줄어들지만 학습이 빠르게 진행되지 않는다.

 

loss 떨어지는 추세라면 조금  학습해도

학습의 진행 판단 여부는 loss 추세를 보고 결정

test loss 그래프 기울기가 양으로 바뀔  overfitting 이므로  학습을 진행하면  

hooking : test loss 어느 정도 발생하는지 스스로 추세 파악, overfitting 발생할  스스로 멈춤

 

model fit

history = model.fit(X_train, y_train, epochs=1000, verbose=1, batch_size=20, validation_data=(X_test, y_test))

모델  안에 들어가는 옵션핏하면서 validation test_x, test_y 데이터로

# (좌측은 train data, 우측은 test data)

따로 validation 데이터를 주지 않고, test 데이터로 준 것의 일부를 validation에 사용.

validation에 사용된 데이터는 학습에 사용되지 않는다.

history = model.fit(X_train, y_train, epochs=1000, verbose=0, batch_size=20, validation_split=0.1)

 

 

epoch가 적어도 데이터 수가 많으면 학습 잘된다.

epoch 수보다 데이터 수 많은 것이 더 중요

데이터 수가 적으면 overfitting 발생 가능성 (overfitting이 빨리 오면 성능이 안 좋음 - 학습은 되나 원하는 성능을 못 얻을 것)

->> 데이터 확보의 중요성

 

학습 시에 데이터를 섞어 주지 않으면 특정 데이터 순서로 학습이 일어나 편향이 생길 수있다.

shuffle=True

 

Normalization/Standardization

입력이 여러 차원일 때 각 차원의 입력을 동일한 스케일로 맞추어주면, 학습이 빠르게 진행된다고 한다.

·       Normalization : 전체 데이터를 0~1로 변환해준다.

·       Standardization : 평균을 0, 표준편차를 1이되도록 변환해 준다.

·       반드시 해야 할 것 : noramlization, 결측치 처리, outlier 처리

·       수렴 속도 차이 발생

Normalization - 데이터  정규화 한다.

 

 

Overfitting 처리

(오버피팅 완화)

  • DropOut
  • BatchNormalization
  • Regularization

model.add(BatchNormalization()) 

 

 

Regression, 회귀

·       임의의 값 출력하도록.

 

classification, 분류

 

normolization을 하는게 좋다. 하지만 정확하게 하는 것이 좋다.

학습이 되며 0~1 normalization했을 보다 살짝 빠르다

 

딥러닝 장단점

        장점 : 대상 함수의 내부를 몰라도 된다.

        단점 : 비싸다

많은 데이터, 많은 연산량

 

ML DL의 선택

        기존의 방법으로 이미 풀린 문제는 ML

        기존의 방법으로 못풀었는데 데이터가 있으면 DL

바둑, 얼굴인식, 물체인식, 음성인식, 번역

 

딥러닝의 큰 단점

        입출력 데이터 쌍을 구하기 어렵다.

        특히 출력 데이터. 레이블링 데이터(labeling data)

 

Cost Function 종류

        MSE(Mean Squared Error)

        CE(Cross Entropy)

        KL-Divergence

        MLE(Maximum Likelihood Estimation)

 

Optimizer 종류

        오차에 대하여 w를 업데이트 시키는 알고리즘들.

        GD(Gradient Descent)

        Batch GD

        Mini-Batch GD

        SGD(Stochastic GD)

        Momentum

        AdaGrad

        AdaDelta

        Adam

        RMSprop

 

Overfitting 방지법 종류

        DropOut

        BN(Batch Normalization)

        Regularization

        Data Augmentation

 

 

학습율

가중치가 변경되는 정도

 

 

SoftMax

        activation function중의 하나.

        최종 출력층에 사용되며, 여러개의 출력 노드의 합 중에 비중의 값으로 나타낸다.

 

Gradient Descent

        함수가 학습될 바를 정의한 비용함수의 값이 최소로 하기 위해 가중치를 업데이트 하기 위한 알고리즘

 

BackPropagation 역전파

        출력된 값과 원하는 값과의 차이를 가지고 그 전의 w 값들을 변경하는 알고리즘.

        뒤에서부터 그 오차의 값이 전파된다는 이름.

        실제 변경되는 값의 크기는 GD로 결정됨.

반응형

'Study > Deep learning' 카테고리의 다른 글

딥러닝-3  (0) 2020.11.26
딥러닝-1  (0) 2020.11.23

+ Recent posts