신경 망 훈련 과정 손실 주의사항
1. 훈련
앞에서 우 리 는 신경 망 의 정태 적 인 부분 에 대해 토론 했다. 신경 망 구조, 신경 원 유형, 데이터 부분, 손실 함수 부분 등 을 포함한다.이 부분 에서 우 리 는 동태 적 인 부분 을 집중 적 으로 이야기 하 는데 주로 훈련 하 는 일이 다. 실제 공정 실천 훈련 과정 에서 주의해 야 할 점 에 집중 하고 가장 적합 한 파 라 메 터 를 어떻게 찾 는 지 하 는 것 이다.
1.1 경사도 검사
앞에서 언급 한 바 와 같이 우 리 는 수치 사다리 와 해석 법 에 대한 사다리 보다 실제 공사 에서 이 과정 은 실수 하기 쉽다. 다음은 작은 기교 와 주의 점 을 제시한다.
중심 화 공식 을 사용 한 다 는 점 은 우리 가 전에 도 말 했 듯 이 다음 과 같은 수치 경도 계산 공식 을 사용한다. d f (x) d x = f (x + h) - f (x - h) 2 h (좋 은 형식) d f (x - h) d x = f (x - h) - f (x - h) 2 h (좋 은 형식) d f (x) d x = f (x - h) - f (x - f) - 2 h (좋 은 형식) df (x - d x) dx = f (x + h) - f (x - h) 2h (좋 은 형식) df(x) dx = f (x + h) − f (x − h) 2h (좋 은 형식) \ \ \ frac {df (x)} {dx} = \ \ frac {f (x + h) - f (x - h) - f (x - h)} {2h} \ \ hspace {0.1 in} \ \ text{(좋 은 형식)} df (x) dx = f (x + h) dx = f (x + h) − f (x (x + h) - f (x - h) - (x - h) 2h (좋 은 형식) df (x x) dx = f (x + h) dx (x + h) dx = f (x + h) x (좋 은 형식) 2f (x (x x x x x - h) 2h) 2h (좋 은 형식) (x x (x) = 2h f (x + h) − f (x − h) (좋 은 형식) ∇ f (x)경사도 하강 에서 보 이 는 것 과 마찬가지 로 경사도 벡터 입 니 다. Hessian 행렬 은 손실 함수 의 곡 도 를 직관 적 으로 이해 하기 때문에 우 리 는 가장 낮은 점 을 더욱 효율적으로 교체 하고 접근 할 수 있 습 니 다. Hessian 행렬 을 곱 하여 매개 변 수 를 교체 하면 곡 도가 느 린 곳 에서 더욱 급진 적 인 보폭 으로 파 라 메 터 를 업데이트 하고 곡 도가 가 파 른 곳 에 서 는 걸음 이 느 려 집 니 다. 왜냐하면이 상대 적 으로 1 단계 의 업데이트 알고리즘 은 이 점 에서 매우 큰 장점 을 가지 고 있다.
어색 한 것 은 실제 딥 러 닝 과정 에서 2 차 교체 방법 을 직접 사용 하 는 것 이 실 용적 이지 않다 는 점 이다. 헤 시안 행렬 을 직접 계산 하 는 것 은 자원 을 소모 하 는 과정 이기 때문이다. 예 를 들 어 100 만 매개 변수의 신경 망 인 헤 시안 행렬 의 차원 은 [1000000 * 1000000] 이다.3725 G 의 메모 리 를 차지 해 야 합 니 다. 물론, 우 리 는 L - BFGS 라 는 Hessian 매트릭스 와 비슷 한 알고리즘 을 가지 고 있 습 니 다. 메모리 문 제 를 해결 할 수 있 습 니 다. 그러나 L - BFGS 는 일반적으로 모든 데이터 세트 에서 계산 합 니 다. 우리 가 사용 하 는 mini - batch SGD 처럼 작은 batch 에서 교체 되 지 않 습 니 다. 현재 많은 사람들 이 이 문 제 를 연구 하고 있 습 니 다. L - BFGS 도 mini - batch 방식 으로 안정 적 으로 교체 업데이트 할 수 있 도록 노력 하고 있 습 니 다.그러나 현재 로 서 는 대규모 데이터 의 깊이 있 는 학습 은 L - BFGS 나 유사 한 2 차 교체 방법 을 사용 하지 않 고 랜 덤 경사도 가 떨 어 지 는 간단 한 알고리즘 이 광범 위 하 게 사용 되 고 있다.
관심 이 있 는 학생 은 다음 과 같은 문헌 을 참고 할 수 있다.
지금까지 여러분 이 본 학 습 률 업데이트 방식 은 모두 전체 국면 에서 같은 학 습 률 을 사용 하 는 것 입 니 다. 학 습 률 을 조정 하 는 것 은 시간 이 많이 걸 리 고 실수 하기 쉬 운 일 입 니 다. 그래서 여러분 들 은 학 습 률 을 자체 적 으로 업데이트 하 는 방식 을 원 했 습 니 다. 심지어 매개 변수 가 더 새 로 워 질 때 까지 세분 화 할 수 있 습 니 다. 지금 은 이런 방법 이 있 습 니 다. 그 중에서 대부분 은 추가 적 인 초 매개 변수 설정 이 필요 합 니 다.장점 은 대부분의 초 매개 변수 설정 에서 죽음 을 쓰 는 학습 율 보다 효과 가 좋다 는 것 이다. 다음은 흔히 볼 수 있 는 적응 방법 (블 로 거들 의 기초 가 약 한 것 을 용서 하고 수학 디 테 일 에 깊이 들 어가 설명 할 수 없다) 을 조금 제시 하 는 것 이다.
Adagrad 는 Duchi 등 이 논문 Adaptive Subgradient Methods for Online Learning and Stochastic Optimization 에서 제시 한 자가 적응 학 습 률 알고리즘 입 니 다. 간단 한 코드 는 다음 과 같 습 니 다.
# dx, x
cache += dx**2
x += - learning_rate * dx / np.sqrt(cache + 1e-8)
cache
경사도 와 같은 차원 을 가지 고 있 습 니 다. 그리고 우 리 는 이 변 수 를 사용 하여 경사도 제곱 을 지속 적 으로 누적 합 니 다. 그 후에 이 값 은 매개 변수 업데이트 절차 의 획일 화 에 사 용 됩 니 다. 이런 방법의 장점 은 높 은 경사도 의 가중치 에 대해 효과 적 인 학습 율 이 낮 아 졌 고 작은 경사도 의 가중치 교체 과정 에서 학습 율 이 높 아 졌 습 니 다. 그러나 분모 뿌리 번 호 는 뿌리 를 열지 않 는 것 이 매우 중요 합 니 다.번호 의 효 과 는 루트 번호 의 경우 보다 훨씬 못 합 니 다. 부 드 러 운 매개 변수 1e-8
는 0 으로 나 누 는 것 을 피 합 니 다.RMSprop 은 매우 효과 적 이지 만 아직 공개 되 지 않 은 자가 적응 학습 율 업데이트 방법 인 것 같 습 니 다. 재 미 있 는 것 은 현재 이 방법 을 사용 하 는 사람들 이 모두 인용 하고 있 는 대신 Geoff Hinton 의 coursera 과정 6 절의 강의 29 페이지 입 니 다. RMSProp 방법 은 Adagrad 계산법 에 대해 간단 한 최적화 를 하여 교체 강 도 를 늦 추 었 습 니 다.부 드 러 운 처리, 대체적인 설명 코드 는 다음 과 같 습 니 다.
cache = decay_rate * cache + (1 - decay_rate) * dx**2
x += - learning_rate * dx / np.sqrt(cache + 1e-8)
decay_rate
는 수 동 으로 정 해진 초 매개 변수 입 니 다. 우 리 는 보통 [0.9, 0.99, 0.999] 에서 값 을 추출 합 니 다. 특히 주의해 야 할 것 은 x+=
이 누적 부분 은 Adagrad 와 똑 같 지만 cache
자 체 는 반복 적 으로 변화 합 니 다.또 다른 방법 은 다음 과 같다.
아래 그림 은 상기 에서 언급 한 여러 가지 매개 변수 업데이트 방법 에서 손실 함수 가 가장 최 적 화 된 설명도 이다.
! [파라미터 업데이트 1] (http://cs231n.github.io/assets/nn3/opt2.gif)! [파라미터 업데이트 2] (http://cs231n.github.io/assets/nn3/opt1.gif)
1.5 초 파라미터 의 설정 과 최적화
신경 망 의 훈련 과정 에서 많은 초 매개 변수 와 접촉 하 는 것 을 피 할 수 없다. 이것 은 우리 가 수 동 으로 설정 해 야 하 는 것 이다. 대체적으로 다음 과 같다.
일반적으로 초 매개 변수 에 대한 시도 와 검색 은 log 필드 에서 이 루어 집 니 다. 예 를 들 어 전형 적 인 학습 율 검색 서열 은
learning_rate = 10 ** uniform(-6, 1)
입 니 다. 우리 선생 은 고 르 게 분 포 된 서열 로 10 을 바탕 으로 지수 연산 을 합 니 다. 사실 우 리 는 정규 화 계수 에서 도 같은 전략 을 했 습 니 다. 예 를 들 어 흔히 볼 수 있 는 검색 서열 은 [0.5, 0.9, 0.95, 0.99] 입 니 다.또한 교차 검증 에서 얻 은 가장 좋 은 초 매개 변수 결과 가 분포 가장자리 에 있다 면 특히 주의해 야 한다. 균일 한 분포 범위 자체 가 불합리 할 수도 있 고 이 검색 범 위 를 넓 히 면 더 좋 은 매개 변수 가 있 을 수도 있다.1.6 모델 융합 과 최적화
실제 공정 에서 마지막 신경 망 효 과 를 효과적으로 향상 시 킬 수 있 는 방식 은 여러 개의 독립 된 모델 을 훈련 시 켜 예측 단계 에서 결 과 를 선택 하 는 중 수 를 선택 하 는 것 이다. 모델 융합 은 어느 정도 의합 현상 을 완화 시 켜 마지막 결과 에 어느 정도 도움 이 되 고 우 리 는 같은 문제 의 서로 다른 독립 모델 을 얻 을 수 있다.
또 하나의 효과 적 인 모델 효 과 를 개선 하 는 방법 은 훈련 후기 에 중간 모델 의 가중치 와 마지막 모델 의 가중치 를 유지 하고 이들 에 게 평균 을 구 한 다음 에 교차 검증 집에 서 테스트 결 과 를 구 하 는 것 이다. 보통 직접 훈련 한 모델 결과 보다 1, 2% 포인트 높다. 그릇 모양 의 구조 에 대해 직관 적 으로 이해 하면 우리 의 가중치 가 많 을 때 가 많다 는 것 이다.모두 최저점 부근 에서 이리 저리 뛰 어 다 니 지만 진정 으로 최저점 에 도달 할 수 없 으 며, 두 최저점 부근의 위 치 는 평균 을 구하 면 더 높 은 확률 로 최저점 에서 더 가 까 운 위치 에 떨 어 질 수 있다.
2. 총화
cs 231 n 신경 망 훈련 및 주의 점
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.