2016-09-08 5 views
1

내가 Keras에서 구현 한 피드 포워드 신경망에서 입력 한 내용에 대한 이해가 올바른지 확인하고 싶었습니다.피드 전달 - 신경망 Keras

[[ 25.26000023 26.37000084 24.67000008 23.30999947] 
[ 26.37000084 24.67000008 23.30999947 21.36000061] 
[ 24.67000008 23.30999947 21.36000061 19.77000046]...] 

위 데이터에서 배열의 4 입력 시간 창이 있습니다. 내 입력 층

model.add(Dense(4, input_dim=4, activation='sigmoid')) 

model.fit(trainX, trainY, nb_epoch=10000,verbose=2,batch_size=4) 

내가이 맞는 기능이 기능은 각 nb_epoch에서 모든 입력을 통해 갈 것입니다 호출 할 때 BATCH_SIZE은 이론적으로 4? 이 시간 창이 작동하려면 batch_size가 4 일 필요가 있습니까?

감사합니다 존

답변

1

이고 batch_size는 4입니다. 이론적으로 fit 함수를 호출하면 함수가 각 nb_epoch의 모든 입력에 적용됩니까?

예, 각 시대가 이상 반복 모든 훈련 샘플

가하고 BATCH_SIZE 작업이 시간 창 위해서는 4를해야합니까?

아니요, 이것은 완전히 관련이없는 것입니다. 배치은 비용 기능의 실제 그라디언트을 근사치로 계산하는 데 사용되는 교육 데이터의 일부입니다. 더 큰 배치 - 사실적인 그래디언트 (원래 그래디언트 디센트)에 가까워 지지만 교육 속도가 느려집니다. 1에 가깝게 - 점점 더 확률 적이며 시끄러운 접근이됩니다 (그리고 확률적인 경사 기복). batch_size와 데이터 차원이 일치한다는 사실은 이상한 우연이며 의미가 없습니다.

grad_theta 1/N SUM_i=1^N loss(x_i, pred(x_i), y_i|theta) = 
= 1/N SUM_i=1^N grad_theta loss(x_i, pred(x_i), y_i|theta) 

loss 인 경사에 대한 것입니다 당신이 (신경망은 일반적으로 사용) 첨가제 손실 함수 그라데이션 하강에 무엇을, 좀 더 generall 설정에 넣고하자 일부 손실 함수입니다 pred (예상)보다 y_i에 비해

그리고 배치를 기반으로 scenatio (거친 아이디어)의

는 모든 예를 가서해야하지만 대신에 몇 가지 엄격한 부분 집합, batch = {(x_1, y_1), (x_5, y_5), (x_89, y_89) ... } 같은 및 형태

1/|batch| SUM_(x_i, y_i) in batch: grad_theta loss(x_i, pred(x_i), y_i|theta) 

으로의 기울기의 근사치를 사용하지 않는 것이있다 어떤 의미에서이 공간이 x_i이 사는 공간과 관련이없는 것을 볼 수 있습니다. 따라서 데이터의 차원과 관련이 없습니다.

1

날 예와 이것을 설명하자 : 당신이 32 개 교육 사례가 있고 4의 batch_sizemodel.fit를 호출 할 때, 신경 네트워크는 한 번에 4 개 예제와 함께 표시됩니다

, 하나의 시대는 32 개의 모든 예들에 대해 하나의 완전한 단계로 여전히 정의 될 것이다. 따라서이 경우 네트워크는 한 번에 4 가지 예를 거쳐 이론적으로 적어도 순방향 패스 (및 역방향 패스)를 32/4 = 8 번 호출합니다.

batch_size이 1 인 극단적 인 경우, 그것은 확률 적으로 오래된 확률 적 그래디언트 디센트입니다. batch_size이 1보다 큰 경우 배치 그라디언트 디센트라고합니다.