기계 학습 알고리즘의 디버깅 - 그라디언트 체크(Gradient Checking)
for(i=1; i<=m; ++i)
에 누락될 수 있다for(i=1; i), 。 ( )。 , , 。 , , 。 , , 。
수학 원리
저희가 최소화를 하고 싶어요.θ인수의 대상 함수 J(θ)(θNumpy의 프로그래밍 환경에서 처리가 같은 벡터와 스칼라 업데이트 공식은 다음과 같습니다.
θ:=θ−αddθJ(θ)
Sigmoid 함수를 예로 들면 다음과 같습니다.
f(z)=11+exp(−z)
도수 형식은
f′(z)=g(z)=f(z)(1−f(z))
, 우리는 쉽게 프로그래밍을 실천할 수 있고, 이어서 우리는 사용할 수 있다
θ:=θ−αddθJ(θ)
사다리꼴 하강 알고리즘을 실현하려면 우리가 어떻게 알아야 하는가
g(z)
사다리의 정확성은요?
회상 도수의 수학적 정의:
ddθJ=limϵ→0J(θ+ϵ)−J(θ−ϵ)2ϵ
이로써 우리는 사다리꼴 검사의 수치 검사 공식을 얻을 수 있다.
g(θ)≈J(θ+ϵ)−J(θ−ϵ)2ϵ
이것이 바로 계단 검사의 원리다.실제 응용에서 우리는 항상ϵ예를 들어 10 ~ 4 수량급을 아주 작은 상량으로 설정하면, 우리는 그것을 너무 작게 설정하지 않을 것이다. 예를 들어 10 ~ 20. 왜냐하면 그것은 수치의 오차를 초래하기 때문이다.사실 상단 양쪽 값의 접근 정도는 J의 구체적인 형식에 달려 있지만 가정하면ϵ=10-4의 경우 보통 좌우 양쪽에서 적어도 네 개의 유효한 숫자가 일치하는 것을 발견할 수 있다(또는 정밀도는 적어도 0.0001급이다).
프로그래밍 실현
import numpy as np
def sigmoid(z):
return 1./(1+np.exp(-z))
def sigmoid_prime(z):
return sigmoid(z)*(1-sigmoid(z))
def check_gradient(f, x0, epsilon):
return (f(x0+epsilon) - f(x0-epsilon))/2/epsilon
if __name__ == '__main__':
x0 = np.array([1, 2, 3])
epsilon = 1e-4
print(sigmoid_prime(x0))
# [ 0.19661193 0.10499359 0.04517666]
print(check_gradient(sigmoid, x0, epsilon))
# [ 0.19661193 0.10499359 0.04517666]
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
nlp 중국어 데이터 사전 처리이 블로그는 중국어 데이터의 사전 처리 과정을 상세하게 소개하고 일정량의 코드를 곁들여 실례로 삼는다 데이터 로드(기본 csv 형식) 빈 행 제거 숫자 제거 문장 형식을 판단하다(단순문 또는 복잡문) 중국어 문장 부...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.