경사하강법 - 2탄 (확률적의 의미)

jaybon·2022년 10월 29일
0

머신러닝 정리

목록 보기
8/9

Stochastic의 뜻

time + probabilistic
시간에 따라 랜덤하게 변해간다는 의미

Stochastic은 영어에서는 random으로 표시되는 경우가 더 많긴합니다.

그런데, 이게 그냥 "임의의"라는 뜻이기 보다는 '확률론적인(probabilistic)'에 해당되는 의미라는 것을 기억할 필요가 있겠군요.

그러니까 어떤 확률분포모델에 따른 어느 수준의 확률을 가지고 발생하는... 이런 뜻으로 봐야할 듯...

게임은 stochastic하다고 볼 수 있다. 카드 셔플, 주사위 굴리기 등에 랜덤 요소가 들어가기 때문이다.

추계학(推計學:stochastic)은 흔히 추측 통계학으로도 불리며, 모집단에서 임의로 추출한 표본에 따라 모집단의 상태를 추측하는 학문이다.

  • 집단 내부를 섞는다
    -> 순차적으로 (표본)샘플을 추출한다
    -> 표본으로 모집단의 상태를 추측한다
    = 표본은 스토캐스틱한 모집단이다
    = 표본으로 모집단의 상태를 추측하였기 때문에 표본을 경사하강한 뒤 비용 함수를 업데이트한다

확률적 경사하강법이 빠른 이유

요점은 업데이트

So you want to fit the linear regression model to that then you need to sum over 300 million records. And that's very expensive.
-> 선형회귀로 학습한다면 (매 업데이트 마다) 3억 건이 넘는 기록을 합산해야한다. 그것은 매우 (연산 비용이) 비싸다.

rather than wait to sum up these gradient terms over all m training examples, what we're doing is we're taking this gradient term using just one single training example and we're starting to make progress in improving the parameters already.
-> (배치처럼) 모든 샘플을 학습한 미분항들을 합산하는 것을 기다리지 않고, (확률적은) 단 하나의 샘플을 사용해서 미분항을 획득하고, 이미 그 때부터 (글로벌 미니멈을 향해) 매개변수를 개선하기 시작한다.
= 각 샘플마다 업데이트 한다.

The first step of Stochastic gradient descent is to randomly shuffle the data set. So by that I just mean randomly shuffle, or randomly reorder your m training examples.
-> 확률적 경사 하강법을 할 때 첫 단계는 데이터 셋을 랜덤하게 섞는 것이다. m개의 훈련 샘플들을 무작위로 정렬한다.

So if we have a you know, truly massive data set like the this US census gave us that example that I've been talking about with 300 million examples, it is possible that by the time you've taken just a single pass through your training set. So, this is for i equals 1 through 300 million. It's possible that by the time you've taken a single pass through your data set you might already have a perfectly good hypothesis.
-> (확률적 경사하강법을 이용할 때) 미국 인구조사 같은 3억건이 넘는 샘플들은 매우 큰 데이터 셋이며 , inner loop를 3억번 하기 때문에 outer loop는 단 한번만해도 완벽하게 좋은 가설을 가질 수 있다. (에포크 - 여기서는 outer loop라고 말함)
= 배치 경사 하강법은 내부루프가 없기 때문에 (업데이트를 하지 않아서) 스텝 사이즈를 줄일 수 없다. 그래서 1회 만으로는 글로벌 미니멈에 도착하지 못한다.
= 확률적 경사 하강법은 내부루프가 3억건이나 되니 업데이트도 3억번 하기 때문에, 스텝 사이즈도 줄일 수 있어서, 이렇게 충분히 거대한 샘플들이 있다면, 외부루프는 1번만 돌려도 좋은 가설이 나온다.
= 배치 -> 에포크 10회 미니멈 도달 -> 30억건 계산 (10회 업데이트)
= 확률적 -> 에포크 1회 미니멈 도달 -> 3억건 계산 (3억회 업데이트)

미니배치가 확률적보다 빠를 수 있는 이유

단일 예에서 실제 경사와 경사 계산 사이의 절충안은 각 단계에서 둘 이상의 훈련 예시에 대한 경사 계산이다. 이를 미니 배치라고도 한다. 코드는 각 단계를 별도로 계산하기 보다는 벡터화 라이브러리를 사용할 수 있기 때문에, 이것은 설명된 '진정한' 확률적 경사 강하보다 훨씬 더 좋은 성능을 발휘할 수 있다.

확률적 / 미니 관계

SGD: The gradient of the cost function is calculated and the weights are updated using the gradient decent step for each sample.
-> 확률적 : 각 샘플마다 비용 함수가 계산되고, 경사 하강 가중치가 업데이트 된다.(for each sample)

Batch/Mini Batch GD: The gradient of the cost function is calculated and the weights are updated using the gradient decent step once per batch.
-> 배치, 미니배치 : 각 배치마다 비용 함수가 계산되고, 경사 하강 가중치가 업데이트 된다.(once per batch)

So Batch GD with batch size of 1 == SGD.
-> 배치사이즈가 1인 경사하강법 = 확률적 경사하강법

참고자료

https://www.ibric.org/myboard/read.php?Board=sori&id=190927

https://velog.io/@eunice123/ch2-%EC%9A%A9%EC%96%B4%EC%A0%95%EB%A6%AC-1-stochastic%EC%9D%B4%EB%9E%80

http://wiki.hash.kr/index.php/%ED%99%95%EB%A5%A0%EC%A0%81_%EA%B2%BD%EC%82%AC%ED%95%98%EA%B0%95%EB%B2%95#cite_note-1

https://brunch.co.kr/@linecard/560

구현 코드 참고
https://velog.io/@skkumin/Pythond-%EA%B2%BD%EC%82%AC%ED%95%98%EA%B0%95%EB%B2%95BGD-%ED%99%95%EB%A5%A0%EC%A0%81%EA%B2%BD%EC%82%AC%ED%95%98%EA%B0%95%EB%B2%95SGD-%EB%AF%B8%EB%8B%88%EB%B0%B0%EC%B9%98-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0

profile
티스토리 블로그 https://ondolroom.tistory.com/

0개의 댓글