Perceptron Rule vs. Gradient Descent vs Stochastic Gradient Descent 구현에 대한 설명


15

다른 Perceptron 구현을 약간 실험 해보고 "반복"을 올바르게 이해하고 있는지 확인하고 싶습니다.

로젠 블랏의 원래 퍼셉트론 규칙

내가 아는 한 Rosenblatt의 고전적인 퍼셉트론 알고리즘에서 가중치는 모든 훈련 예제를 통해 동시에 업데이트됩니다.

Δ(+1)=Δ()+η(아르 자형이자형)엑스나는

여기서 이자형 는 학습 규칙입니다. 목표와 실제는 모두 임계 값입니다 (-1 또는 1). 훈련 샘플을 1 반복 = 1 패스로 구현했지만 가중치 벡터는 각 훈련 샘플 후에 업데이트됩니다.

그리고 "실제"값을 다음과 같이 계산합니다.

에스나는(엑스엑스)=에스나는(0+1엑스1+...+엑스)

확률 적 경사 하강

Δ(+1)=Δ()+η(아르 자형이자형)엑스나는

퍼셉트론 규칙과 동일하지만, targetactual임계 된하지만 실제 값되지 않습니다. 또한 "반복"을 교육 샘플의 경로로 계산합니다.

SGD와 고전적인 퍼셉트론 규칙은이 선형 적으로 분리 가능한 경우에 수렴되지만, 기울기 하강 구현에 문제가 있습니다.

그라데이션 하강

여기서 나는 훈련 샘플을 살펴보고 훈련 샘플에 대한 1 패스의 무게 변화를 요약하고 그 후에 무게를 업데이트했습니다.

각 훈련 샘플에 대해 :

Δ이자형+=Δ()+η(아르 자형이자형)엑스나는

...

훈련 세트를 1 회 통과 한 후 :

Δ+=Δ이자형

이 가정이 올바른지 또는 뭔가 빠졌는지 궁금합니다. 나는 다양한 (최대 무한히) 학습 속도를 시도했지만 결코 수렴의 흔적을 보일 수 없었습니다. 그래서, 내가 sth를 오해했는지 궁금합니다. 여기.

감사합니다, 세바스찬

답변:


20

Δ

퍼셉트론 :

ww(t+1)=ww(t)+ηt(y(i)y^(i))xx(i)

y^(i)=sign(wwxx(i))ith

이것은 다음의 "퍼셉트론 손실"기능 *에서 확률 론적 하강 하강 법으로 볼 수 있습니다.

퍼셉트론 손실 :

Lww(y(i))=max(0,y(i)wwxx(i))

Lww(y(i))={0}, if y(i)wwxx(i)>0{y(i)xx(i)}, if y(i)wwxx(i)<0[1,0]×y(i)xx(i), if wwxx(i)=0

퍼셉트론이 이미 있기 때문에 입니다 SGD의 한 형태, 안 확인 SGD 업데이트가 퍼셉트론 업데이트 다를 수해야하는 이유입니다. 임계 값이 아닌 값으로 SGD 단계를 작성하는 방식은 응답을 너무 정확하게 예측하면 손실을 겪게 됩니다. 그 나쁜.

"="를 사용해야 할 때 "+ ="를 사용하고 있기 때문에 배치 그라디언트 단계가 잘못되었습니다. 현재 가중치는 각 교육 인스턴스에 추가 됩니다 . 다시 말해, 당신이 쓴 방식은

(+1)=()+나는=1{()η()(와이(나는))}

그것은 있어야합니다 :

(+1)=()η나는=1()(와이(나는))

η=η0


엑스엑스(나는)=0=[1,0]×와이(나는)엑스엑스(나는)00=00와이(나는)엑스엑스(나는)

따라서 그것들은 정확히 동일하지는 않지만, 퍼셉트론 알고리즘이 일부 손실 함수에 대해 SGD이고 손실 함수를 리버스 엔지니어링한다는 가정에서 작업하면 퍼셉트론 손실이 끝납니다.


샘 고마워요. 지저분한 질문에 사과드립니다. 델타가 어디에서 왔는지 모르지만 "+ ="가 잘못되었습니다. 나는 그 부분을 완전히 간과했다. 철저한 답변에 감사드립니다!
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.