큰 데이터 세트에 대해 경사 하강이 왜 비효율적인가?


13

데이터 세트에 백만 개의 예 ( )가 포함되어 있으며, 그래디언트 디센트를 사용하여 이러한 데이터 세트에 대해 로지스틱 또는 선형 회귀를 수행하려고합니다.x1,,x106

그라디언트 디센트 방법으로 비효율적 인 것은 무엇입니까?

시간 에서의 경사 하강 단계 는 다음에 의해 주어진다는 것을 상기 하자.t

wt+1=wt+ηtf(x)

여기서 는 손실 함수입니다.f

알고리즘이 비효율적 인 위의 단계에서 평범하지 않은 것을 보지 못했습니다. 의 계산 입니까? 이 연산을 미리 계산할 수 없었습니다. 즉, 각 이미 계산되어 각 데이터 포인트 에서 간단히 평가할 수f(x)fxxi?


1
비효율적 ...? 큰 데이터 세트에는 비 제곱이 비효율적입니다. 이 알고리즘에 수행하는 작업 에 대한 의미있는 아이디어를 얻으려면 큰 O 표기법이 필요 합니다. 모든 GD 알고리즘이 동일한 큰 O를 갖는 것은 아닙니다. (아닙니까?)n
AdamO

답변:


7

그래디언트 디센트가 비효율적이라는 주장에 컨텍스트를 제공하면 도움이됩니다. 무엇에 비해 비효율적입니까?

여기서 누락 된 컨텍스트는 기계 학습의 확률 적 또는 배치 그라디언트 디센트와 비교되는 것 같습니다. 이 문맥에서 질문에 대답하는 방법은 다음과 같습니다. 하이퍼 파라미터까지 모델의 매개 변수를 최적화하고 있습니다. 따라서 비용 함수 , 여기서 데이터, 매개 변수 벡터 및 -손실 함수가 있습니다. 이 비용을 최소화하려면 매개 변수 : i=1nL(xi|Θ)xiΘL() θj

θji=1nL(Θ|xi)

따라서 모든 데이터 대한 합계를 합니다. 이는 그라디언트 하강의 각 단계에 대한 데이터를 계속 반복한다는 의미이므로 불행한 일입니다. 이것이 배치 및 확률 적 경사 하강이 나타나는 방법입니다. 데이터 세트에서 샘플링하고 전체 세트가 아닌 샘플의 경사도를 계산하면 어떻게됩니까? 여기서 는 표본 의 관측치 수입니다 . 따라서 표본이 총 집합의 1/100이면 계산 속도를 100 배 향상시킵니다! 분명히 이것은 학습을 연장시키는 소음을 유발하지만 소음은 비율로 감소합니다.xi=1,,n

θjk=1nsL(Θ|xk)
nssn계산량 이 에서 증가 하므로이 트릭이 작동 할 수 있습니다.n

또는 전체 합계 이 계산 될 때까지 기다리는 대신 이를 일괄 처리로 분할하고 각 일괄 처리에 대해 단계를 수행 할 수 있습니다. . 이렇게하면 전체 데이터 세트에 대한 합계가 계산 될 때까지 M 단계를 수행하게됩니다. 이 단계는 소음이 많지만 시간이 지남에 따라 소음이 사라집니다.i=1ns=1Mis=1ns


19

경사 하강이 비효율적 일 수있는 두 가지 방법이 있습니다. 흥미롭게도, 이들은 각각 자체적으로 고치는 방법으로 이어지며, 이는 거의 반대의 해결책입니다. 두 가지 문제는 다음과 같습니다.

(1) 너무 많은 경사 하강 업데이트가 필요합니다.

(2) 각 경사 하강 단계가 너무 비싸다.

(1)과 관련하여, 구배 하강을 2 차 도함수에 관한 정보를 고려하는 방법과 비교하면, 구배 하강은 각 반복에서 손실을 개선하는 점에서 매우 비효율적 인 경향이있다. 매우 표준적인 방법 인 Newton 's Method 는 일반적으로 수렴되는 반복 횟수가 훨씬 적습니다. 즉, 로지스틱 회귀 분석의 경우 Newton 's Method의 10 회 반복 횟수는 5,000 회 반복되는 경사 하강에서 제공되는 솔루션보다 손실이 적습니다. 선형 회귀 분석의 경우 훨씬 더 극단적입니다. 닫힌 양식 솔루션이 있습니다! 그러나 예측 변수의 수가 매우 많아짐에 따라 (예 : 500+) 선형 회귀 분석을위한 Newton의 방법 / 직접 해결 은 반복마다 너무 비쌀 수 있습니다. 필요한 매트릭스 연산의 양으로 인해 경사 하강은 반복 당 비용이 상당히 적습니다.

(2)와 관련하여, 구배 하강의 각 반복이 계산하기에 너무 비싸도록 큰 데이터 세트를 가질 수있다. 그래디언트를 계산하려면 연산 이 필요 합니다 ( = 표본 크기, = 공변량 수). 반면 의 값 현대 컴퓨터에서 전혀 문제가되지 않는다 , 확실히 같은 일 , 될 것이다. 이 경우 확률 적 경사 하강 과 같이 데이터의 더 작은 하위 집합을 기반으로 미분을 근사화하는 방법이 더 매력적 입니다.O(nk)nkn=106k<100n=1012k=103

필자는 뉴턴의 방법과 같이 업데이트 당 비용이 많이 들지만 더 효율적이지만 (손실의 변화 측면에서) 확률 적 그래디언트 디센트는 실제로는 덜 효율적이지만 업데이트 당 계산적으로 훨씬 저렴하다는 점에서 이러한 수정은 거의 반대라고 말합니다.


놀라운 답변에 감사드립니다. = 공변량의 수는 무엇을 의미 합니까? 나는이 용어에 익숙하지 않다k
카를로스-몽구스-위험

2
@Learningonepageatatime : 공변량 = 예측 변수
Cliff AB

10

먼저 표기법 개선을 제안하겠습니다. 특히, 손실 함수를 대신 표시해 봅시다 . 문자 사용하는 것은 우리가 L oss를 다루고 있음을 상기시키기 때문에 개인적으로 선호하는 것 입니다. 보다 실질적인 변화는 손실이 데이터 보다는 가중치 의 함수라는 것을 분명히하고있다 . 중요하게, 기울기는 아닌 대한 것 입니다. 따라서 여기서 는 데이터.F ( X ) L w X w X L ( w ) = ( LL(w)f(x)LwxwxD

L(w)=(Lw1,,LwD),
D

우리가 손실을 가중치 의 함수로 생각해야한다는 사실에도 불구하고, 합리적인 손실 함수는 여전히 전체 데이터 셋 에 의존합니다 (그렇지 않은 경우 데이터에서 아무것도 배울 수 없습니다! ). 예를 들어 선형 회귀에서는 일반적으로 제곱합 함수 그래서 기울기 평가 가중치의 특정 세트를 모두 위에 합 필요 데이터 세트의 점 . 경우 , 구배 하강 후 최적화의 각 증분 단계는 매우 고가이다 만 개 동작들의 순서에 필요하다.x L ( w ) = N i = 1 ( y i - w T x i ) 2 . L ( w ) w N xwx

L(w)=i=1N(yiwTxi)2.
L(w)wNxN=106

3

짧은 대답 : 그래디언트 계산은 모든 데이터 요소에 대해 합산되어야합니다. 많은 양의 데이터가 있으면 시간이 오래 걸립니다.

여기에 자세한 답변이 있습니다.

확률 적 경사 하강은 어떻게 표준 경사 하강에 비해 시간을 절약 할 수 있습니까?


다른 한편으로, 반복적 인 방법 (그라데이션 디센트) 외에 직접적인 방법이 항상 있다는 것을 명심하십시오. 최소 제곱 문제를 해결하려는 경우 직접 방법이 매우 효율적일 수 있습니다. 예를 들어, QR 분해. 기능이 너무 많지 않으면 매우 빠릅니다.

당신이 그것을 확인할 때, 당신을 놀라게 할 것입니다 : 2 개의 특징을 가진 5 백만 개의 데이터 포인트, 선형 회귀 해결 / 최소 제곱은 몇 초가 걸립니다!

x=matrix(runif(1e7),ncol=2)
y=runif(5e6)
start_time <- Sys.time()
lm(y~x)
end_time <- Sys.time()
end_time - start_time
# Time difference of 4.299081 secs

1

언급 한 두 가지 예가 일반적으로 볼록하지만 비 볼록 문제에 대해 한 가지 요점을 추가합니다. 제 생각에는 (일괄) 그라디언트 디센트가 "비효율적 인"것으로 간주 될 수있는 두 가지 주된 이유가 있습니다. "대형"함수 합의 구배를 계산하는 계산 노력에 대한 첫 번째 요점은 이미 다른 답변에서 매우 명확하게 설명되어 있습니다. 볼록하지 않은 문제의 경우 GD는 일반적으로 "가까운"로컬 최소값에 문제가 있습니다. 이 최소값은 전체 최소값에 비해 매우 나쁠 수 있습니다. SGD 또는 미니 배치 GD는 무작위로 (적어도 부분적으로) 방황하는 "이점"을 가지므로 더 나은 지역 최소값을 찾을 수 있습니다. 이 CV 답변은 여기를 참조 하십시오 . 아니면 이 다른 이력서 게시물 무작위성이 어떻게 유익 할 수 있는지를 설명합니다.

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