CS 230 - 딥 러닝

딥 러닝 팁과 트릭 치트시트
Star

아프신 아미디셰르빈 아미디


Kwang Hyeok Ahn에 의해 번역됨

데이터 처리

데이터 증가 딥러닝 모델들은 적절한 일반적으로 학습을 위해 많은 양의 데이터를 필요로 합니다. 데이터 증가 기술을 사용하여 기존의 데이터에서 더 많은 데이터를 얻는 것은 종종 유용합니다. 주요 내용은 아래 표에 요약되어 있습니다. 보다 정확하게, 주어진 이미지에 따라 우리가 적용할 수 있는 기술들이 있습니다 :

원본 반전 회전 랜덤 이미지 패치
• 수정 없는 이미지 • 원본 이미지 회손 없이 좌우 반전 • 약간의 각도로 회전
• 부정확 한 수평선 보정을 시뮬레이션합니다
• 이미지의 한 부분을 임의의 초점으로 맞춥니다
• 몇몇 무작위 이미지 패치는 연속으로 나타날 수 있습니다
색상변환 잡음 추가 정보 손실 명암대비 변경
• RGB의 뉘앙스는 약간 변경됩니다
• 빛 노출로 발생할 수 있는 잡음을 포착할 수 있습니다
• 잡음 추가
• 인풋의 품질변동에 대한 허용오차 증대
• 이미지의 일부분 무시
• 손실된 이미지 일부분을 모방할 가능성
• 밝기 변화
• 하루 중 시간에 따른 노출 변화 제어

주석: 데이터는 일반적으로 학습중에 증가 됩니다.


배치 정규화 배치$\{x_i\}$를 정규화하는 하이퍼파라미터 $\gamma, \beta$ 단계입니다. $\mu_B, \sigma_B^2$를 우리가 배치에 정정하고자하는 평균과 분산으로 표기함으로써, 다음과 같이 진행됩니다.

\[\boxed{x_i\longleftarrow\gamma\frac{x_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}}+\beta}\]
일반적으로 완전연결/컨볼루셔널 계층 이후와 비선형 계층 이전에 사용되며 학습률을 높이고 초기화에 대한 의존성을 줄이는 데 그 목적이 있습니다.


신경망 학습

정의

에포크 모델 학습의 맥락에서, 에포크는 모델이 전체 트레이닝 셋의 가중치를 업데이트 하는 한 번의 반복을 뜻하는 용어입니다.


미니-배치 경사하강법 학습 단계에서, 가중치 업데이트는 일반적으로 계산 복잡성이나 잡음 문제로 인한 하나의 데이터 포인트로 인해 전체 트레이닝 셋을 기반으로하지 않습니다 대신에, 업데이트 단계는 배치내에 있는 여러 데이터 포인트들을 튜닝할 수 있는 하이퍼파라미터인 미니 배치에서 진행됩니다.


손실함수 주어진 모델이 어떻게 수행되는지를 정량화하기 위해, 손실 함수 $L$은 보통 실제 출력값 $y$가 예측 모델 출력값 $z$에 의해 정확하게 예측되는 정도를 평가하는 데 사용됩니다.


크로스-엔트로피 손실 신경망 학습에서 이진분류의 맥락으로 접근하면, 크로스-엔트로피 손실 $L(z,y)$는 일반적으로 사용되며 다음과 같이 정의됩니다.

\[\boxed{L(z,y)=-\Big[y\log(z)+(1-y)\log(1-z)\Big]}\]

최적의 가중치 찾기

역전파 역전파는 실제 출력값과 원하는 출력값을 계산하여 신경망의 가중치를 업데이트 하는 방법입니다. 각 가중치 $w$에 대한 미분은 체인규칙을 사용하여 계산됩니다.


이러한 방법을 사용하여, 각각의 가중치는 아래와 같은 규칙에 의해 업데이트 됩니다 :

\[\boxed{w\longleftarrow w-\alpha\frac{\partial L(z,y)}{\partial w}}\]

가중치 업데이트 신경망에서, 다음과 같은 방법으로 가중치는 업데이트 됩니다 :

• 1단계 : 트레이닝 데이터의 배치를 가져와 순전파를 진행하여 손실을 계산합니다.
• 2단계 : 각 가중치와 관련하여 그레디언트 손실값을 얻기 위해 역전파를 하게됩니다.
• 3단계 : 네트워크의 가중치를 업데이트 하기 위해서 그레디언트를 사용합니다.


파라미터 조정

가중치 초기화

Xavier 초기화 완전 무작위 방식으로 가중치 초기화하는 대신, Xavier 초기화는 설계에 고유 한 특성을 고려한 초기 가중치를 가질 수 있습니다.


전이학습 딥 러닝 학습 모델을 학습하기 위해서는 많은 양의 데이터가 필요로하며 무엇 보다도 많은 시간을 필요로 합니다. 학습을 위해 수일,수주의 시간이 걸린 거대한 데이터 셋의 사전 훈련 된 가중치를 활용하며 케이스 활용에 유용합니다. 현재 보유하고있는 데이터의 양에 따라 여러가지 활용 방법이 있습니다.

학습 크기 삽화 설명
작음 모든 층을 고정시키고, softmax에서 가중치 학습
중간 대부분의 층을 고정시키고, 마지막 층과 softmax에서 가중치 학습
사전학습 된 가중치를 초기화 하여 layers 및 softamx에 가중치를 학습합니다

수렴 최적화

학습률 $\alpha$ 또는 때때로 $\eta$로 표기되는 학습률은 가중치가 어느 속도로 업데이트 되는지를 나타내줍니다. 이것은 고정되거나 또는 적응적으로 변화될 수 있습니다. 현재 가장 널리 사용되는 방법은 Adam이며, 학습률을 조정하는 방법입니다.


데이터 맞춤 학습률 모델 학습시 학습 속도가 달라지며 학습 시간이 단축되고 수치적인 최적화 솔루션이 향상 될 수 있습니다. Adam 최적화가 가장 일반적으로 사용되는 기술이지만 이외 방법들도 유용합니다. 아래 표에 요약되어 있습니다 :

방법 설명 $w$ 업데이트 $b$ 업데이트
모멘텀 • 감쇠진동
• 확률적 경사하강법(SGD)을 개선
• 튜닝할 2가지 파라미터
$\displaystyle w-\alpha v_{dw}$ $\displaystyle b-\alpha v_{db}$
RMSprop • 루트평균제곱전파
• 진동제어를 통해 학습 알고리즘 속도를 향상
$\displaystyle w-\alpha\frac{dw}{\sqrt{s_{dw}}}$ $\displaystyle b\longleftarrow b-\alpha\frac{db}{\sqrt{s_{db}}}$
아담 • 적응 모멘트 추정
• 가장 대중적인 방법
• 4개의 파라미터를 조정
$\displaystyle w-\alpha\frac{v_{dw}}{\sqrt{s_{dw}}+\epsilon}$ $\displaystyle b\longleftarrow b-\alpha\frac{v_{db}}{\sqrt{s_{db}}+\epsilon}$

주석 : 이외 방법으로 Adadelta, Adagrad 그리고 SGD가 포함됩니다.


정규화

드랍아웃 드랍아웃은 확률 $p>0$인 뉴런을 제거하여 훈련 데이터의 과적합을 예방하기 위해 신경망에서 사용되는 기술입니다. 모델이 특정 변수 셋에 너무 의존하는것을 피하도록 해야합니다.

주석 : 대부분의 딥러닝 프레임워크에서 $1-p$ '유지'파라미터 변수 통해 드랍아웃의 매개변수화 합니다.


가중치 정규화 가중치가 너무 크지 않고 모델이 트레이닝 셋에 과적합되지 않는것을 확인하기 위해서 정규화 기법이 일반적으로 가중치 모델에 사용됩니다. 주요 내용은 아래 표에 요약되어 있습니다.

라쏘 리지 엘라스틱 넷
• 계수를 0으로 축소합니다
• 변수 선택에 좋습니다
계수를 더 작게 만듭니다 변수 선택과 작은 계수간에 트레이드 오프
Lasso Ridge Elastic Net
$...+\lambda||\theta||_1$
$\lambda\in\mathbb{R}$
$...+\lambda||\theta||_2^2$
$\lambda\in\mathbb{R}$
$...+\lambda\Big[(1-\alpha)||\theta||_1+\alpha||\theta||_2^2\Big]$
$\lambda\in\mathbb{R},\alpha\in[0,1]$

조기정지 해당 정규화 기술은 검증손실이 안정기에 도달하거나 증가하기 시작하는 즉시 트레이닝 과정을 중지합니다.


좋은 습관

과적합 작은 배치 모델 디버깅시, 종종 사용되는 방법으로 빠르게 테스트를 진행하여 모델 구조상 자체의 중대한 문제가 있는지 확인할 수 있습니다. 특히, 모델이 적절히 학습할 수 있는지 확인하기 위해 네트워크 내부에 미니배치가 전달되어 오버핏이 되는지 확입니다. 만약 그럿지 못하다면, 모델이 너무 복잡하거나 미니배치에 충분히 오버핏될 복잡도가 떨어지는것을 의미합니다, 일반 크기의 트레이닝 셋 또한 동일하다고 볼 수 있습니다.


그레디언트 확인 그레디언트 확인은 신경망의 역방향 시행중에 사용되는 방법입니다. 주어진 점에서 분석 그레디언트의 값을 수치 그레디언트와 비교하여 정확성에 대한 민감정도 검사기 역할을 수행합니다.

종류 수치기울기 분석 그레디언트
공식 $\displaystyle\frac{df}{dx}(x) \approx \frac{f(x+h) - f(x-h)}{2h}$ $\displaystyle\frac{df}{dx}(x) = f'(x)$
언급 • 비용; 차원당 두번씩 손실값을 계산해야 합니다
• 분석 구현의 정확성을 확인하는데 사용됩니다
• $h$ 선택에 있어 너무 작지 않으며(수치적 불안정성), 너무 크지않은(약한 그레디언트)상에서 트레이드 오프가 필요로합니다
• '정확한' 결과
• 직접계산
• 최종 수행단계에서 사용