[AI부트캠프]신경망의 파라미터 튜닝, 실험추적 시스템 - Keras tuner, wandb

Codincidence·2021년 8월 20일
0

딥러닝

목록 보기
4/13

정규화를 먼저 해주고 데이터를 넣어줌
validation loss추적하는 방법
하이퍼 파라미터 튜닝 방식
1) 사람이 일일히 찾는 방법 - 원초적 방법
2) 범위가 넘 넓으면 random serach로 랜덤하게
같이 튜닝하다보면 어떤 파라미터 때문에 성능 향상이 됐는지 정확하게 알 수 없다. 여러개 보다 순차적으로 한번에 한개씩 튜닝하셈
3) bayesian - 실험들에 의해서 사전 정보를 획득, 그것을 바탕으로 다음의 하이퍼 파라미터를 예측

튜닝가능한 파라미터 옵션
batchsize
epochs
optimization
hidden layer 갯수
momentum

가중치는 처음에 어떻게 정하는 것이냐?
처음에 랜덤하게 정하는데 분포를 어떻게 하느냐에 따라 성능이 달라짐
layer를 거듭할 수록
자비에르 히분포등 여러가징 방법 잇음

어떤 활성화 함수 - 좋은 분포가 잇음
sigmoid - xavier
relu - he

wandb > 하이퍼파라미터 튜닝 기록 해줌

그리드서치cv는 개인의 직관이 포함될 것 같은데 설득력 잇나요?
범위지정함

  1. 의사결정권자에게 설명을 한다면 신경망 모델을 돌려보고 실험해본 결과 이렇게 나왔다고 설득이 안될 것 같아서
    a. 실험기록
    b. hidden layer 32~128
    c. 0.6 -> 0.1

  2. wandb같은 프레임 워크를 랜덤포레스트나 부스트 모델에서도 사용가능한가요?
    a. 주로 딥러닝에서 사용

  3. batch사이즈
    a. 너무 클때: 메모리 많이 머거용. 데이터 병렬처리 하기 때문에 컴퓨터 과부하 걸릴 수 있음. 일반화 성능도 떨어짐. 이터레이션의 횟수가 적어져서 가중치를 업데이트할 횟수가 줄어듬
    b. 너무 작을때: 학습 시간이 너무 오래 걸림.

  4. learning mate
    a. 너무 클 때: 무한히 발산
    b. 너무 작을 때: 최저점 도달 불가> 경사 하강 하다가 조그만 웅덩이에 집중해서 실제 최저점까지 못갈 수도 있음

  5. momentum
    a. 진행중인 방향으로 관성을 더해 최소점에 빠지지 않도록 한다.
    b. 가고자 하는 곳은 가장 낮은 곳임. 산을 내려오다보면 오르막도 있고 내리막도 있다. 공을 굴린다고 했을때, 관성이 없으면 웅덩이에 고여서 더이상 움직이지 않음 (local minimum) 운동 하는 방향으로 관성을 받아서 조그마한 턱을 넘어갈 힘을 받게 됨.
    c. Gradient Descent 이동하는 과정에서 관성을 주어서 이동하는 방향과 별개로 과거 방식 기억하면서 추가적으로 이동하는 방식

  6. weight initialize
    경사하강법에서 시작점을 설정하는 것
    가중치 때문에 시작점을 정하게 됨. 가중치를 설정하다보니까 로컬 미니멈일 경우 관성이 없는 상태애서 맴돌다가 학습이 끝남. 경사에서 학습이 시작하면 성능이 향상됨.
    가중치를 잘 설정해주려고 자비에르, 히분포를 쓰는 거임. 공을 놓는 위치를 잘 설정하려고.

가중치에 의해서 시작점을 정하게 됨.

  1. 하이퍼파라미터 튜닝
    a. 한개씩 하는게 좋아요. > 근데 하나 건드리고 다음거 건드리면 뭐가 최저점인지 어떻게 아는가?
    딥러닝에서 통용되는 하이퍼 파라미터 순서가 있음 그 순서대로 하면 좋음.

  2. sparse categorical cross entropy
    -int

  3. categorical cross entropy
    -one hot

  4. target의 형태
    a. 이미지
    i. cat, dog, frog => 1, 2, 3
    ii. [i, 0, 0]
    iii. [0, 1, 0]
    iv. [0, 0, 1]



오후 개념학습

순전파: 입력값x가중치+바이어스로 얻어지는 출력값
a. 입력층 -> 출력층
b. 가중치, bias학습과정

역전파: 실제값과 예측값의 오류를 최소화하기 위해 가중치를 업데이트하는 방식, 편미분을 사용하는 신경망 학습 알고리즘
a. 실제값과 예측값 사이의 오차를 최소화
b. 가중치와 편항이 학습됨
c. 입력값과 실제값은 고정이 되어 있기 때문에 바뀔 수 없음. 바뀌는 것은 가중치와 편항 뿐이기에 이 둘을 학습할 수 밖에 없음

가중치
a. 입력값의 영향력 비중
b. 입력이 결과 출력에 주는 영향도 조절하는 변수
c. 필터같은 역할. 100 => 전달되는 양 조절

편향(bias)
a. 노드가 얼마나 쉽게 활성화될지 도와주는 역할

뉴런
a. 노드
b. 외부로부터 정보(신호)를 받아서 처리하는 부분
c. 입력값

input layer
a. 입력층
b. 신호를 받아들이기만 한다.
c. 연산 수행
d. 데이터를 받아들이는 역할
e. feature 수

output layer
a. 최종 결과 출력
b. output layer의 노드 수: 클래스, 타겟 수
c. 이진분류: 노드 수 1, sigmoid
d. 클래스가 5개인 다중분류: 5, softmax

hidden layer
a. 사람이 연산이 수행되는 것을 들여다 볼 수 없음
b. 입력층, 출력층 사이에서 연산 수행
c. hyper parameter 정해지지 않았고, 그때그때 다르고, 값을 찾아야 함.

PERCEPTRON
a. 신경망의 최소 단위
b. input 여러개, output 1개

learning rate 학습률
a. 학습결과가 다음 학습에 얼마나 반영될지
b. 크면: 발산, 작으면: 학습이 최저점에 이르지 못하고 종료

batch
a. 1번 학습할 때 사용할 데이터의 개수
b. 크면: 메모리 잡아먹고 속도 느림 (병렬처리방식이라)
c. 작다면: 시간이 오래 걸림. 학습횟수 많아짐

epoch
a. 전체 데이터가 학습되는 횟수
b. 너무 크면? : 과적합, 학습 오래 걸림
c. early stopping
d. 작다면: 과소적합

1000개, batch 100
10번
epoch 2: 20번

손실함수
a. 실제값, 예측값 사이의 차이

  1. overfitting
    a. weigth decay
    i. l1, l2
    ii. 손실함수, 가중치 합
    iii. lambda
    iv: l1 절댓값, 작은 수 = 0에 수렴
    v: l2, 제곱, 작은 수와 큰 수 격차 커짐

dropout
i. 노드의 성능 향상
ii. 랜덤으로 노드 끈다
iii. 일시적

constraint
가중치 값이 일정 수치 이상 커지지 않게 제한
가중치가 가질 수 있는 값의 범위를 정해놓음

활성화 함수, 활성함수
a. 가중치, 입력된 값, 편향 -> 보정 -> 다음 노드로 출력
b. sigmoid, softmax
c. relu, tanh, leaky relu, step, elu

cross validation
과적합 방지
hyper parameter를 찾기 위해
데이터수가 적어도 trai/test

train/test
data leakage
평가 제대로 이뤄지지 않음

하이퍼 파라미터 튜닝 grid search
grid-search
다른 툴을 써서 탐색 공간을 줄인 다음 grid search쓰셈
줄을 정해놓고 거기가 겹치는 부분만 적용함
많이 적용하면 컴이 힘들어함

random search
범위를 지정하면 랜덤하게 서치함

profile
우연도 실력

0개의 댓글

관련 채용 정보