미니 배치 훈련 신경망을 위해 무작위로 추출 된 훈련 샘플을 교체없이 추출해야합니까?


18

우리는 에포크가 사용 가능한 모든 훈련 샘플 전체를 통과 한 것으로 정의하고, 미니 배치 크기는 그라디언트를 내리는 데 필요한 가중치 / 바이어스에 대한 업데이트를 평균화하는 평균 샘플 수로 정의합니다.

내 질문은 에포크 내에서 각 미니 배치를 생성하기 위해 일련의 교육 예제를 대체하지 않고 끌어 야하는지 여부입니다. 실제로 에포크 종료 요구 사항을 충족하기 위해 "모든 샘플을 추출"하도록하기 위해 교체를 피해야한다고 생각하지만 결정적인 답을 찾는 데 어려움이 있습니다.

인터넷 검색을 시도하고 Ch를 읽었습니다. Nielsen의 신경망 및 딥 러닝 중 하나이지만 명확한 답변을 찾지 못했습니다. 이 텍스트에서 Nielsen은 무작위 샘플링을 대체하지 않고 수행하도록 지정하지는 않았지만 그 의미를 암시하는 것으로 보입니다.

원하는 경우 신 (新) 시대에 교육의 명확한 형식화는 여기에서 찾을 수 있습니다 - /stats//a/141265/131630

편집 :이 질문은 저와 비슷한 듯하지만 기대의 선형성이 상황에 독립 무관심하다는 사실을 적용하는 방법에 불분명 - 해야 샘플링 또는 교체없이 발생


데이터에 특정한 이유가 없다면, 신경망 훈련을위한 미니 배치는 항상 교체없이 도출됩니다. 아이디어는 배치 모드 사이에 있고 전체 데이터 세트의 그라디언트를 계산하는 SGD와 임의의 하나만 사용하는 SGD를 사용하는 것입니다.
horaceT

SGD는 하나의 무작위 샘플을 사용하도록 제한되지 않습니다. 이 과정을 온라인 교육이라고합니다. "구배 강하의 극단적 인 버전은 단지 1의 미니 배치 크기를 사용하는 것입니다 ...이 절차는 온라인, 온라인 또는 증분 학습으로 알려져 있습니다." 또한 확률 론적 경사 하강 (stochastic gradient descent)이라는 아이디어는 학습 속도를 높이는 데 사용될 수 있습니다.이 아이디어는 무작위로 선택된 훈련 입력의 작은 샘플에 대해 [it]을 계산하여 기울기 ∇C를 추정하는 것입니다. "진정한 그래디언트를 빠르게 추정 할 수 있습니다." Nielsen Ch.의 인용문 1.
bobo

답변:


13

랜덤 드로우에 기초한 반복 알고리즘의 맥락에서 대체 스키마를 포함하거나 포함하지 않는 훌륭한 스키마 분석 (여기서 얼마나 많은 차별적 인 딥 뉴럴 네트워크 (DNN)에 대해 훈련되는지)이 여기에 나와 있습니다.

즉,이 샘플링 밝혀 없이 여분 샘플링보다 빠른 수렴 리드 대체.

여기서 제공하는 장난감 예제를 바탕으로 간단한 분석을 해보겠습니다. 다음과 같은 목적 함수를 최적화한다고 가정하겠습니다.

엑스고르다=인수엑스12나는=1(엑스와이나는)2

여기서 목표 yiN(μ,σ2) . 이 예에서는 N 레이블이 주어지면 최적의 를 풀려고합니다.xy나는 분명히.

자, 위 의 최적 엑스 를 직접 풀려면 여기서 손실 함수의 미분을 취하여 0으로 설정하고엑스 . 위의 예에서 손실은

L=12나는=1(엑스와이나는)2

첫 번째 파생 상품은 다음과 같습니다.

δδ엑스=나는=1(엑스와이나는)

δ 설정 0과에 대한 해결X수율 :δLδxx

xopt=1Ni=1Nyi

다시 말해, 최적 해는 y 의 모든 표본의 표본 평균에 지나지 않습니다 .Ny

위의 계산을 한 번에 수행 할 수 없다면 아래의 기울기 하강 업데이트 방정식을 통해 재귀 적으로 수행해야합니다.

xi=xi1λi(f(xi1))

여기에 용어를 삽입하면 다음과 같은 결과가 나타납니다.

xi=xi1λi(xi1yi)

우리는 모든 위의를 실행하면 이면 교체 없이이 업데이트 효과적으로 수행합니다 . 그러면 이런 식 으로 x 의 최적 값을 얻을 수 있습니까? ( x 의 최적 값 은 y 의 표본 평균에 지나지 않습니다 .) 만약 당신이 λ i = 1 / ii1,2,...Nxxyλi=1/i 입니다. 이를 위해 우리는 다음과 같이 확장합니다.

xi=xi1λi(xi1yi) xi=xi11i(xi1yi) xi=ixi1(xi1yi)i xi=(i1)xi1+yii ixi=(i1)xi1+yi 

그러나 마지막 방정식은 평균을 계산하는 공식 일뿐입니다! 따라서에서 세트를 통해 우리 루프로 , = 2 등은 줄곧 내가 = N이 , 우리가 업데이트를 수행 한 것 없이 교체 우리의 갱신 수식 우리에게 최적의 솔루션을 제공 X 는 IS, 표본 평균!i=1i=2i=Nx

NxN=(N1)xN1+yN==>xN=1Ni=1Nyi=μ

xNμ

E{(xNμ)2}

이는 양수 값이 될 것이며,이 간단한 장난감 예제는 더 높은 차원으로 확장 될 수 있습니다. 결과적으로 더 최적의 솔루션으로 교체하지 않고 샘플링을 수행하려고합니다.

이것이 더 명확 해지기를 바랍니다!


이 예제는 상당히 많은 가정, 즉 제곱 오차와 손실 환경의 볼록 함을 사용합니다. 이러한 가정이 충족되지 않으면 결과가 유지됩니까?
bayerj

@bayerj이 특정 장난감 예입니다. 그러나이 논문은 다른 이론적 사례를 위해 계속해서 논문을 확장하고있다. 다른 소스들 (Bouou 생각)은 교체없는 샘플링에 대한 경험적 지원이 우수하다고 생각합니다.
Tarin Ziyaee

@TarinZiyaee이 답변에 감사드립니다-λ_k = 1 / k를 명확히 할 수 있습니까? 위의 방정식에서 k에 대해 이야기하고있는 k는 무엇입니까? 나는 당신을 따르지 않았기 때문에 후속 합산과 결론을 따르는 것이 어려웠습니다. 감사.
bobo

1
@bobo 오늘 밤 게시물을 명확하게하려고 노력할 것입니다.
Tarin Ziyaee

1
@ bobo 나는 내 대답을 많이 업데이트했습니다. 살펴보고 도움이되는지 알려주십시오.
Tarin Ziyaee

5

Nielsen 저장소의 코드에 따르면 미니 배치는 교체없이 작성됩니다.

    def SGD(self, training_data, epochs, mini_batch_size, eta, test_data=None):
    n = len(training_data)
    for j in range(epochs):
            random.shuffle(training_data)
            mini_batches = [
                training_data[k:k+mini_batch_size]
                for k in range(0, n, mini_batch_size)
            ]
            for mini_batch in mini_batches:
                self.update_mini_batch(mini_batch, eta)

우리는 신기원 내에서 훈련 샘플을 대체하지 않는다는 것을 알 수 있습니다. 흥미롭게도 Nielsen이 조정에 대해 걱정하지 않는다는 것을 알 수 있습니다.eta 은 이전 미니 배치보다 많은 훈련 샘플이 없을 수있는 마지막 미니 배치 크기에 대한 학습 속도 . 아마도 이것은 이후의 장을 위해 남겨둔 고급 수정일 것입니다. **

** 편집 : 실제로이 스케일링은 def update_mini_batch기능 에서 발생 합니다. 예를 들어, 가중치와 함께 :

self.weights = [w-(eta/len(mini_batch))*nw for w, nw in zip(self.weights, nabla_w)]     

mini_batch 당 훈련 샘플 수가 사용 가능한 총 훈련 샘플 수로 균등하게 분할되지 않으면 마지막 mini_batch가 이전 mini_batches보다 작을 수 있기 때문에이 작업이 필요합니다.

mylist = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
n = len(mylist)
mini_batch_size = 2
mini_batches = [
    mylist[k:k+mini_batch_size]
    for k in range(0, n, mini_batch_size)
    ]
for mini_batch in mini_batches:
    print(mini_batch)

산출:

['1', '2']
['3', '4']
['5', '6']
['7', '8']
['9', '10']

로 변경 mini_batch_size하여 310 개의 교육 샘플로 균등하게 분할되지 않습니다. 출력을 위해 다음을 얻습니다.

['1', '2', '3']
['4', '5', '6']
['7', '8', '9']
['10']

양식 (뭔가 목록 인덱스를 통해 범위를 평가할 때 [x:y]xy 인덱스 ) 오른쪽 값이리스트 길이를 초과하면 파이썬은 값이 인덱스 범위를 벗어날 때까지 단순히리스트에서 항목을 반환합니다. .

따라서 마지막 미니 배치는 이전 미니 배치보다 작을 수 있지만, 동일한 가중치를 적용하면 eta이러한 훈련 샘플이 다른 더 큰 미니 배치의 샘플보다 학습에 더 많은 기여를합니다. 이것은 마지막 미니 배치이므로 너무 걱정할 필요는 없지만 eta미니 배치의 길이 로 확장 하면 쉽게 해결할 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.