Programmers 인공지능 데브코스 - Week 8 Day 4 - DeepLearning 최적화

donchanee·2021년 1월 28일
0

활성함수

선형 연산의 결과인 활성갑 z에 비선형 활성함수를 적용하는 과정

선형 -> 계단 -> tanh(sigmoid) -> ReLU 함수의 형태로 변천해왔습니다.

ReLU의 변형이 많은데, active된 영역에서만 value가 전달이 되는 특징을 가지고 있습니다. 한번 activation되지 못하면 탐색이 되지 못하는 dead valu가 생기게 되고, 이에 대한 변형으로 Leaky ReLU나 PReLU같은 형태가 생성되었습니다. 0보다 작은 값에 대해서도 기울기를 조금 부여하는 방식입니다.

순서대로, 시그모이드, tanh, ReLU, Leaky ReLU의 형태입니다.

배치 정규화

배치 단위로 정규화를 하겠다는 것 = 배치 노멀라이제이션

공변량 변화 현상 -> 훈련집합과 테스트 집합의 분포가 다름

미니배치 단위로 평균과 분산을 계산하고 이를 통해 정규화를 한다. 이런 과정을 거치면 신경망의 경사도 흐름을 개선하고, 높은 학습률을 허용합니다. 또한 초기화에 대한 의존성이 감소됩니다.

CNN에서는 노드 단위가 아니고, 피쳐 맵(특징 맵) 단위로 배치 정규화가 적용됩니다.

규제

원래 이만큼의 것을 해야하는데 특정 조건을 맞춰서 하는 것
모델 용량에 비해 데이터가 부족한 경우 부족조건문제를 푸는 접근법

(일반화 오류, 오버피팅)을 줄이려는 의도를 가지고 학습 알고리즘을 수정하는 방법 모두를 규제라고 부릅니다. (오버피팅에 도달하기 전에 학습을 멈추는 등)

현대 기계 학습도 매끄러움 가정을 널리 사용합니다.
매끄럽다 라는 뜻은 유사한 데이터는 가깝게 매핑된다. 원래의 공간에서 다른 공간으로 투영될 때도 유사한 데이터는 유사하게 움직인다는 뜻입니다.

대표적인 규제 기법으로는 티호노프의 규제 방법이 있습니다. 기계학습에서는 가중치 감쇄(weight decay) 방법도 있습니다.

또한, 비지도학습에서도 매끄러움 가정을 사용하게 됩니다.

규제 기법

명시적 규제와 암시적 규제가 존재하는데, 가중치 감쇠나 드롭아웃처럼 목적함수나 신경망 구조를 직접 수정하는 방식을 명시적 규제라고 하고 조기 멈춤, 데이터 증대, 잡음 추가, 앙상블 등 간접적으로 영향을 미치는 방식을 암시적 규제라고 합니다.

규제를 적용한 목적함수 = 목적함수 + 규제항 으로 말할 수 있습니다.
10차 매개변수를 가지는 오버피팅 문제를 자유도를 억압하기 위해서 작은 가중치로 만들어 주기 위해 사용하는 것이 규제항입니다. 10개의 매개변수가 다 발현이 되면 오버피팅에 가까워지기 때문에, 몇 개의 매개변수를 발현하지 못하게 눌러주는 방식입니다.

규제항으로는 주로 L2 놈이나 L1 놈을 사용합니다.
가중치들의 L2 놈(제곱의 합의 루트)을 구해서 매개변수의 크기를 조금 줄여주는 방향으로 진행합니다. 가중치가 작아지고, 최종해를 원점으로 가까이 당기는 효과가 납니다.

가중치 감쇄!

조기멈춤

오버피팅이 일어나기 전에 학습을 멈춰서 검증집합의 오류가 최저인 곳에서 학습을 멈추는 방법

손실함수를 누적하다가 확 올라가는 경우가 생기면 멈춰버릴 수 있고, 참을성 버전도 있습니다. 몇번의 올라가는 경우를 기다렸다가 마진을 두고 10번을 반복했을 때 멈추는 방법도 있습니다.

데이터 어그멘테이션 / 확대

모핑 같은 방법도 존재합니다. 공간을 찌그러뜨리는 방법! 가장 흔한 방법은 확대하고, 약간의 노이즈를 넣고 하는 등의 방법으로 데이터를 확대합니다.

드롭아웃

완전연결층의 노드 중 일정 비율을 임의 선택해서 제거하는 방식
(일반적으로 p = 0.5 사용)

부분 신경망을 분해해서 다수 만들고, 앙상블 결합하는 기법으로 볼 수 있습니다.
완전연결이 되면서 오버피팅이 일어나고, 이에 따른 문제로 각각의 가중치들이 동기화되어서 결과가 비슷해질 수 밖에 없는 문제가 있습니다.

이런 연결을 끊어줘서 세분화된 특징을 뽑을 수 있게끔, 연결되어 있는 곳에 대해서 학습을 할 수 있게 해줍니다.

확률분포가 어떻게 되던간에, 배치 노멀라이제이션을 사용하기 때문에 요즘은 드롭아웃을 많이 사용하지 않습니다.

앙상블

여러개의 모델을 결합해서, 입력을 각각의 모델에 넣고 나온 출력을 모두 합쳐서 결과를 얻습니다. 현대 기계학습은 앙상블도 규제로 여깁니다.

모델을 학습시킬 때, 배깅과 부스팅 방법이 존재합니다.

배깅은 복원추출을 사용해서 여러번 샘플링합니다.
부스팅은 i번째 예측기가 틀린 샘플을 i+1번째 예측기가 알려주며 상호 보완적으로 학습하는 방법입니다.

출력을 뽑는 일에는 보통 모델의 평균을 사용하기도 하고, 가중치를 부여하기도 합니다.

[모델 학습 -> 출력값]을 어떻게 머지를 할건지 고려해야합니다.

하이퍼 파라미터 최적화

매개변수라고 하는 것은 신경망의 경우 파라미터 입니다.
하이퍼 파라미터는 사람에 의해서 결정이 되는 은닉층의 개수, 학습률, 필터, 보폭 등의 값들입니다.

이를 선택하는 일은 표준 문헌이 제공하는 기본값을 보통 사용하게 됩니다.
하이퍼 매개변수를 잘 찾아야 하는 것이 중요한 것은 당연합니다.
하이퍼파라미터가 바뀌면 모델이 바뀌는 것과 같기 때문입니다.

하이퍼파라미터를 기계학습으로 결정하겠다는 AutoML도 개발이 진행되고 있습니다.

여기서도 차원의 저주 문제가 발생합니다. 하이퍼 파라미터가 많아질수록 차원이 커졌기 때문에 이를 찾는 것이 어렵다는 생각입니다. 임의탐색 방법이 격자탐색보다 나은 부분이 있습니다. coarse-fine 탐색 방법이 조금 더 좋은 방법을 보여줍니다. 이는 노하우가 많이 필요되는 영역입니다.

2차 미분을 이용한 방법

1차 미분 gradient를 사용하는 방법을 현재 쓰지만,
미래에 가능성을 확인하기 위하여 2차 미분을 사용하는 방법도 있습니다.

경사 하강법 - 1차 미분을 활용해서 동작하는 알고리즘인데, 현재 기계학습의 주류 알고리즘이지만 두 가지의 개선방법을 가지고 있습니다.

  • 경사도의 잡음을 줄임 (saddle point, 1차 미분 그대로 활용)
  • 2차 미분정보를 활용

신경망에서 가능성은 있지만 아직은 효과적으로 보여지는 사례가 없습니다.

2차 미분은 경사도와 헤시안을 사용하여 2차 근사를 사용해 값을 구합니다.
2차 함수 모양으로 곡선의 최소값으로 이동시키는 것이 가능합니다.
뉴턴 방법을 사용해서 가능한데요, 이를 사용하기 위해 테일러 급수를 사용합니다.

하지만 헤시안 행렬에서 연산량이 많이 필요로하기 때문에, 유사 뉴턴 방법으로 점진적으로 근사하는 LFGS 방법을 사용합니다
전체 배치를 통한 갱신을 할 수 있다면 L-BFGS 방법을 사용해봅니다.

현재 널리 활용되지는 않지만 가능성이 있고 여러 연구로 효율화시켜 나가고 있습니다.

0개의 댓글