DNN (가) 학습의 깊이를 개선하기 위해 실용 수준

1 L의 정규화 층 신경망 :

(1)의 정규화 L2 :

 

정규화 피하기 위해 왜 (2) 오버 피팅?

 람다가 큰만큼, J가 최소화되면, 그래서 w 가중치 행렬은 0에 가까울 것이라고 단순화 신경망 높은 바이어스 상태이다 :

 , Z는 예로서 TANH 함수 작고 * A + B를 승 람다 =는 z, w보다 크다 :

Z는 작은 스테이지에 리니어 함수 g (z)가 확대되면. 선형 접근법 각각의 층은, 상기 네트워크는 선형 네트워크 인 경우, 상황은 관통 맞지 않는다.

 

(3) 드롭 아웃 정규화 (임의 비활성화) :

 다음 뉴럴 네트워크의 각 노드는 비활성화 확률 P를 포함

 

단순화 배선, 노드 이하의 소규모 네트워크를 얻을 :

다음 코드는 다음과 같습니다

제 3 층에 대해서는, 임의의 불 활성화, 0.8 keep_prob = 상이해도 다른 층 keep_prob (숨겨진 유닛의 확률이 0.2 숨겨진 유닛의 가능성을 제거, 즉 유지하기 위해) 일.

D3 = np.random.rand (a3.shape [0] a3.shape [1]) <keep_prob

A3 = np.multiply (A3, D3) # 1 비활성 노드 필터링

A3 = A3 / keep_prob # 상수의 A3의 여과되도록 기대 값의 20 %를 이루는

 

(4) 기타 정규화 방법

데이터 세트를 확장 ①;

반복의 ② 조기 종료 :

 

 

(5) 입력을 정규화 :

① 평균이 0 :

μ = 1 / m * Σx 표본 (I)

X = X - m

 

② 분산 정상화 :

σ² = 1 / m * Σ (X (I) ) ²

X = X / s² 임

③ 왜의 정규화 입력?

비 정규화는 화상 입력 비용 함수는 1000 정도의 값을 X1로 늘어나게되지만, 비용 함수 보이는 더 대칭 입력 값 (X2)의 0-1. 정규화 (regularization) 후에 발생할 수있다.

도는 비 정규화 하강 기울기보다 고통스러운보고, 정규화 구배 급격히 감소 하였다. 

 

도 2는 배니싱 / 그라디언트 분해 (구배 폭발 기울기를 소산)

(1)를 예로 들어 설명 :

 

假设:g(z) = z; b[l] = 0.

y = w[L]w[L-1]w[L-2] ... w[2]w[1]x

 

(2)解决方案:权重初始化

由 z = w1x1 + w2x2 + ... + wnxn

随着 n 的增大,期望的 w[l] 越小,由此设置 Var(w[l]) = 1/n 或者 2/n(效果更好),即:

w[l] = np.random.randn(shape) * np.sqrt(2/n[l-1])

 

3、梯度检验:

(1)梯度的数值逼近:

双边误差公式更准确,可以用来判断 g(θ) 是否实现了函数 f 的偏导.

 

(2)神经网络的梯度检验:

① 将 W[1],b[1],...,W[L],b[L] 从矩阵转为一个向量 θ;

② 将 dW[1],db[1],...,dW[L],db[L] 从矩阵转为一个向量 dθ;

③ J = J(θ1, θ2, ..., θi, ...)

for each i :

  dθapprox[i] = (J(θ1, θ2, ..., θ+ ε, ...) - J(θ1, θ2, ..., θ- ε, ...)) / (2 * ε)

  check dθapprox[i] ≈ dθ[i] by calculate || dθapprox[i] - dθ[i] ||2  / (|| dθapprox[i] ||2 + || dθ[i] ||2)  < 10^-7(或其他误差阈值)

 

(3)梯度检验注意点:

① 检测完关闭梯度检验;

② 检查是否完成了正则化;

③ 不适用于dropout;

④ 检查是否进行了随机初始化.

추천

출처www.cnblogs.com/orangecyh/p/11810840.html