여기 당신은 흥미로운 딥러닝 논문을 읽고 있습니다. 초록이 멋져 보이고
서론도 훌륭합니다. 그러다 방법론 섹션에 들어갑니다. 처음에는
괜찮다가 공식의 벽에 부딪힙니다. 머리가 조금
흐려지고 빨리 훑어보기로 합니다. 그 다음에 무엇이 오는지 아십니까?
더 많은 공식들입니다. 이 시점에서 당신의 머리는 완전히 백지 상태가 되고
텍스트 정보조차 따라가기 어렵습니다. 결국 당신은
논문을 옆으로 치웁니다. 이 영상에서는 제가 사용하는 간단한 방법으로 딥러닝 논문의
수학 섹션을 읽는 방법을 보여드리겠습니다. 우리는 예시로
준쌍곡선 애님 경사하강법 공식을 사용할 것입니다
이 채널이 처음이신 분들을 위해 말씀드리면, 저는 야신이고 출판된 연구자이자
가르치는 것을 좋아하는 머신러닝 실무자입니다. 제가 사용하는
방법은 이 다섯 단계로 이루어져 있고 우리는 이를 살펴볼 것입니다. 핵심 아이디어는
딥러닝 논문의 수학을 읽을 때 속도를 늦추고 직접 공식을
손으로 풀어보아야 한다는 것입니다. 그럼 시작하기 전에
깊은 숨을 한번 들이쉬어 봅시다. 수학에 압도당하는 것은 매우
자연스러운 일입니다. 이런 느낌은 경험 많은 머신러닝 실무자들도
겪는 것입니다. 하지만 먼저 알아야 할 점은, 공식을 한 번 보고
바로 이해해야 한다고 생각하면 안 된다는 것입니다.
특히 공식에 x, a, b 같은 임의의 한 글자 이름이 사용된 경우에는 더욱 그렇습니다. WEBVTT
모든 것이 어떻게 연결되는지 이해하려는 여러 번의 시도.
이 과정이 끝나면 어떤 것이 작동하는 이유에 대한 직관을 얻게 될 것입니다.
그 직관은 다음에 공식을 볼 때 떠올릴 것입니다.
하지만 먼저, 깊게 숨을 들이쉬세요.
이제 올바른 마음가짐을 갖췄으니, 첫 단계는 논문에 표시되거나 언급된
모든 공식을 식별하는 것입니다. 논문에 표시된 것들은
논리적 블록 내에 유지해야 합니다. 이는 각 공식 블록이
어떤 종류의 결과에 도달하려 한다는 의미입니다.
이러한 결과 그룹을 식별하세요.
때로는 명확하지 않을 수 있으니 최선을 다하세요. 반드시 추적하고
주목해야 할 것은 논문에서 언급되었지만 표시되지 않은 것들입니다.
이들은 보통 좋은 혼란의 원천이 됩니다. 다른 이들은 여러분이
이미 그 의미를 알고 있다고 가정하기 때문입니다. 또한 주의할 점은
후반부의 공식들이 보통 논문의 앞부분에 나온 것들과 논리적으로 연결된다는 것입니다.
모든 공식을 식별했다면, 디지털 세계에서 실제 세계로,
즉 종이 위로 옮기는 것을 강력히 권합니다.
이는 개인적인 선호일 수 있지만, 수학을 다룰 때는
가능한 한 많은 자유도가 필요하다고 항상 느꼈습니다.
변수는 단순한 변수가 아니라 무언가를 의미합니다.
펜을 들고 공식이 거치는 과정을 스케치하거나
변수가 특정 주제를 어떻게 참조하는지 그릴 수 있는 능력은
여러분의 이해에 매우 중요합니
레고 조립 세트처럼요. 모든 공식을 꺼내고 나면,
이제 보이는 기호들을 의미로 해석할 차례입니다.
수학은 시가 글자로 이루어진 것만큼이나 기호로 이루어져 있습니다.
기호 뒤에 숨겨진 의미는 공식을 읽을 수 있도록
깊은 수준에서 이해하는 데 매우 중요합니다.
새로운 공식을 마주했을 때 수학을 해석하는 가장 좋은 방법은
천천히 그리고 확실하게 각 기호를 연구하고
그들의 상호작용을 이해하는 것입니다. 제가 하는 방법을 보여드리겠습니다. 우리는
준쌍곡선 아담 논문의 이 공식을 사용할 것입니다. 전체적인 개요를 보여드리고,
그 다음 제가 직접 설명해 드리겠습니다. 먼저,
각 개별 기호가 무엇을 의미하는지 이해하고
이름을 붙이고 싶습니다. 이 예시들에는 열두 개의 기호가 있는데,
이미지에 명시적으로 설명되어 있지 않습니다.
이 첫 번째 단계를 거치면서, 많은 공식들이
같은 기호를 재사용하고 있다는 것을 알게 될 것입니다. 바라건대, 같은 논문 내에서
그 의미를 바꾸지 않았으면 좋겠습니다. 이제부터는 알파나 엡실론, 베타라고 읽는 대신
머릿속으로 이름을 붙이세요. 그 다음,
이 다양한 요소들 간의 연결과 이 상호작용이
어떤 의미를 가진 것들을 완전히 새로운 것으로
변형시키는지 살펴봅니다. 여기서 직관을 쌓기 위해 많은 작업을 하고,
예시를 들어 이 아이디어들이 거치는 과정을 정말로 밝혀내기 위해 노력합니다.
이러한 개별 아이디어들이 어떻게 최종 결과를 구성하는지
논리적 블록에 대해. 이상적으로, 마지막에는 이 원자적
요소들에서 더 큰 개념으로 어떻게 나아가는지, 그리고
그것들이 어떻게 연결되는지 누군가에게 설명할 수 있어야 합니다.
이는 시간이 좀 걸릴 수 있습니다. 특히 외부에서 가져와야 할
핵심 개념이 빠져있다면 말이죠. 자, 이제 공식으로 들어가서
핵심적인 것부터 살펴보겠습니다. 어떻게 하는지 보여드리겠습니다.
첫 번째 단계를 기억하세요. 당황하지 않는 것입니다.
이 논문을 검토할 겁니다. 'Crazy probabilic momentum'.
딥러닝을 위한 Adam입니다. 논문 자체가 아니라 공식들만 볼 겁니다.
이건 무섭게 보이지만 사실 꽤 간단해서 재미있습니다.
논문에 나와있지 않은 정보도 있어서
찾아내야 합니다. 전체 과정을 함께 살펴보겠습니다.
하지만 먼저, 깊게 숨을 들이쉬세요. 그리 어렵지 않습니다.
여기 몇 가지 공식이 보이죠. 여기 또 다른 공식도 있고,
그리고 여기 많은 공식들이 있습니다.
그리고 이 무시무시해 보이는 큰 공식이 있죠,
모든 복잡한 내용이 담긴.
자, 시작해봅시다. 좋습니다,
첫 번째 단계는 표시된 모든 공식들을
확인하고 참조하는 것입니다. 여기 첫 번째는
실제 공식이 아닙니다. 일종의
템플릿이죠? 하지만 이것이 중요하다는 걸 아는 게 중요합니다.
최적화 알고리즘의 정의 같은 거요. 그리고
그 다음에 그게 있죠? 즉, t 시점의 파라미터는
t 시점의 파라미터에서 뭔가를 뺀 것입니다.
이 논문의 멋진 점은 아주 기초적인 것부터
실제 새로운 점까지 정말 자세히 설명한다는 겁니다.
자, 이제 이걸 꺼내서 우리 것에 적용해 봅시다. 다음은
여기 있는 일반 확률적 경사 하강법입니다.
이것도 꽤 간단합니다. 우리는 이렇게
알파에 이것을 곱한 값을 뺍니다.
두 번째로 우리가 갖고 있는 건
확률적 경사 하강법의 모멘텀 버전입니다. 알겠죠?
지금 꽤 좋은 진전을 보이고 있네요. 그 다음에 첫 번째 것은
준 포물선 모멘텀입니다. 이건 QHAdam이 아니라 QHM입니다.
여기서 우리는 많은 문자들을 보기 시작하지만,
이것들이 우리가 전에 봤던 것으로
만들어집니다. 이걸 꺼내봅시다. 좋습니다. 그 다음에는
많은 내용이 있습니다. QHM과 네스테로프 가속 경사법,
PID 제어 등을 비교하고 있어요. 우리는
합성된 네스테로프 변형,
가속된 확률적 경사 하강법도 있습니다. 정말 많은
내용이 있네요.
이것들을 자세히 살펴볼 필요는 없습니다. 기본적으로
그들은 QHm이 모든 것을 복구한다고 주장합니다.
매개변수를 적절히 변경하면 이는 그리
중요하지 않습니다. 그래서 넘어가겠습니다. 그 다음 QH Adam으로 넘어가는데,
여기서부터 상황이 약간 통제 불능이 됩니다.
이 전체를 빼고 여기서 잠시 멈춰봅시다.
우리의 흐름을 살펴봅시다. 우리는 기본형에서 시작합니다. 그리고 이것이 있습니다.
확률적 경사 하강법이 있고, 모멘텀 하나가 있습니다.
좋습니다. Qhm이 있습니다. 지금까지는 모든 것이 이해됩니다.
그 다음 바로 QH Adam으로 넘어갑니다.
그렇죠? 이는 Qhm을 Adam에 적용한 것인데,
Adam에 대해 언급하지 않았습니다. 그래서 우리는
그것을 알아내야 합니다. 이는 이 논문
외적인 것입니다. 여기 Adam 논문이 있습니다. 이것이
원본입니다. 그리고 우리가 필요한 모든 것을 안내하는
이 멋진 알고리즘이 있습니다. 우리는 이것을
사용할 수 있습니다. 자, 이제 전체가 있습니다.
모든 것이 다 있습니다. 이것이 있고,
그 다음 qhlm이 있어 작업이 완료되었습니다.
좋습니다. 이상적으로는 이것들을 꺼내서
여기서 빼내어 제가 지금 하는 것처럼
종이에 작업을 시작할 것입니다.
여기 있습니다. 이유는 이렇습니다. 제가 전에 말씀드렸듯이,
여기서는 자유도가 많지 않습니다. 제가
마우스를 가지고 있는데, 형편없는 마우스죠.
이렇게 쓰고 작업할 겁니다.
저는 제 손을 사용해서
원을 그리고 뭔가를 표시하는 걸 훨씬 선호합니다.
여기에 이름을 붙이고, 다른 종이를 가져와서 필요하다면
유도를 하고, 그걸 다시 가져와서
제 모든 자료를 테이블 위에 놓고 움직이면서
볼 수 있게 하는 걸 좋아합니다. 설명을 위해
여기서 모두 할 겁니다만, 이상적으로는
이미 꺼내서 실제 종이에 작업했을 겁니다.
자, 이 알파벳 수프를 살펴봅시다.
여기 있는 것을 보겠습니다.
qh 원자부터 시작하면, 당연히 놀라실 겁니다.
여기서 무슨 일이 일어나고 있는지 당황하실 거예요.
이런 1들이 있는데, 이게 미분인가요? 아닙니다. g,
t plus 1, 플러스 1이 있고, 여기 s가 있습니다.
많은 베타 변수들이 있고, 중요해 보이네요.
하이퍼파라미터 같아 보입니다. 그리고 위에
전에 봤던 v들이 있고,
이전에 본 v들이 위에 있습니다.
하지만 이건 완전히 읽을 수 없는 것입니다.
이건 완전히 미친 짓이에요.
그래서 요령이 있죠. 전체 흐름을 다루는
논문이 있다면, 전체 과정과 여정을 다루고 있는데,
거기엔 이유가 있습니다. 논문에서 이 부분이
0장이 아니라 5장인 데는 이유가 있죠.
그러니 한 발 물러서봅시다. 자, 여기서 우리는 한 발
물러섰습니다. 그렇죠? 우리는 기본부터 시작합니다. 여기 세타가 있는데,
이는 모델 파라미터입니다. 그래서 우리가
데이터를 볼 때마다. 머릿속으로 그렇게 말하지 마세요.
여기서 t+1 시점의 파라미터, t+1 시점의
파라미터는 t 시점의 파라미터에서
뭔가를 뺀 것과 같다고 읽어야 합니다.
이제 세타가 무엇인지 알았으니, L(θ)가 있습니다.
이것은 우리가 가진 파라미터를 통해
최소화해야 할 손실 함수를 의미합니다.
그래서 우리가 볼 모든 L은
머릿속으로 손실 함수라고 생각해야 합니다. 그 다음 L hat이 있는데,
보시면 모두 위에 작은 표시가 있고
L 단독으로는 없습니다. 이게 여러분을 혼란스럽게 할 겁니다.
L(θ) hat이 있는데 이게 무슨 뜻일까요?
그냥 손실 함수의 근사치라는 뜻입니다.
맞죠? 미니 배치에 대해 그게 전부예요. 만약 이걸 코딩한다면,
미니 배치가 주어집니다. 약 50개 정도의 샘플이죠.
그리고 이를 통해 평균을 냅니다.
그리고 이렇게 미니 배치에 대한 파라미터 단계를 만듭니다.
매번 전체 데이터셋을 사용하지 않고
이렇게 합니다.
이것이 손실 함수의 근사치인 이유입니다. 이게
손실의 대략적인 수치라고 볼 수 있죠.
어떤 경우에는 완전히 확률적으로 하면,
데이터 포인트 하나만 사용할 수도 있습니다.
자, 이제 이해했죠. 그럼 삼각형 기호는 뭘까요?
거꾸로 된 L이죠? 함수 L의 그래디언트입니다.
하지만 실제로는 L의 그래디언트를 보지 않습니다.
여기 L 햇, 즉 근사치의 그래디언트를 보게 됩니다.
시간 t에 하나 또는 여러 개의
샘플 데이터 포인트를 사용하기 때문이죠.
이렇게 네 가지 다른 기호가 있는데,
이게 의미하는 바입니다. 시간 t에서의 그래디언트 근사치죠.
자, 이제 조금 진전이 있네요. 이 모든 것들이
이미 많은 미지수를 포함하고 있지만,
이를 정리하고 진짜로
이해하려면 시간이 걸립니다.
이 모든 것이 무엇을 의미하는지 머릿속에 넣으세요. 그리고
벡터는 요소별로 작동합니다.
좋습니다. 그리고 blob, GS, vW가 있죠. 이 모든 것은
보조 버퍼입니다, 맞죠? 프로그래밍 관점에서 버퍼란
일종의 배열로, 어떤 것을 저장하는 곳입니다
x단계 사이에 무언가를 저장하는 곳이죠.
여기 보면 두 단계가 있습니다.
이것이 하나의 버퍼입니다, 맞죠?
이것은 하나의 버퍼입니다, 맞죠?
여기에는 두 개의 버퍼가 있습니다. 여러 단계가 있고
이 버퍼들과 관련된 모든 것들이 있기 때문입니다.
그래서 버퍼에 대한 연산이 일어나고 있는 겁니다.
좋습니다. GSVW와 때로는 a를 보면
버퍼가 될 것입니다. 그리고 g는
특별합니다. 모멘텀 버퍼죠. 모멘텀에서도 볼 것입니다.
여기서도 볼 수 있습니다. 결국, 이 모든 것들은
t로 인덱싱 가능합니다. t는 최적화 과정의
시간 단계입니다. 잘 했습니다. 이제 무슨 일이 일어나고 있는지
잘 이해했습니다. QH Atom을 이해하기 위한 여정에서
한 단계 더 나아갈 수 있습니다.
여기 확률적 경사 하강법이 있습니다. 기본적인 것이죠.
보시다시피 t 시점의 매개변수가 있습니다
플러스 1, 맞죠, 시간 t에서의 파라미터와 동일합니다,
보시다시피 동일한 형태의 알파 곱하기,
그래디언트
파라미터 세타에서의 손실 근사치의
D에서. 이게 무슨 뜻일까요? 좀 더 자세히 살펴봅시다.
이것은 현재의 파라미터입니다
우리가 갖고 있는. 그리고 우리는 손실 함수의 근사치를 계산하고,
그것의 그래디언트를 구할 것입니다. 이것은 우리가 알고 있습니다.
그리고 여기 a가 있죠, 여기 있습니다.
이것은 사실 알파입니다, 여기 있는 a가 아닙니다. 그리고 알파는,
여기서 말하는 것은, 학습률이라고 합니다. 이것은
작은 단계나 큰 단계를 취할 수 있도록 조정할 수 있는 하이퍼파라미터입니다.
그게 전부입니다. 여기서 새로운 것은 이 학습률뿐입니다.
이제 앞으로 알파를 볼 때마다,
그것이 학습률 파라미터를 의미한다는 것을 기억해야 합니다.
맞죠? 그리고 대신 a를 보면, 아마도
버퍼일 것입니다. 여기까지 좋습니다. 우리는 확률적 경사를 얻었습니다
설정에서. 그리고 이것이 취하는 형태도 잊지 맙시다.
이 형태는 거의 상징만큼이나 중요하다고 생각합니다.
머릿속에 그 아이디어만 있으면 됩니다. 이제 제가 이것을 볼 때,
이것은 저에게 이렇게 말하는 것 같습니다.
이것은 제게 이렇게 말하는 것 같습니다,
이것은 제가 취하는 최적화 단계입니다.
그래서 같은 형태를 다른 곳에서 보면, 그것이
무엇을 의미하는지 알게 될 것입니다. 모멘텀을 살펴봅시다. 예를 들어,
보시다시피, 이 두 공식을 대충 훑어보면, 이것과
이것, 저는 확실히 알 수 있습니다.
이것이 최적화 단계라는 것을, 맞죠? 여기 있는 것과
같은 형태이고, 이것과도 같은 형태입니다.
다른 하나는 같은 형태가 아니고, 다른 무언가입니다.
하지만 이 한 가지가 저것과 연결되어 있다는 것을 알 수 있죠.
이제 우리는 그 형태를 인식하고,
취하고 있는 형태를 알아보고, 추가된 것들이 있다는 것을 봅니다.
여기에 여전히 학습률이 있죠, 맞죠? 여전히 우리의 좋은
옛 매개변수들이 있습니다. 여기에 g가 있는데, 이제는
모멘텀 버퍼라고 불립니다. 버퍼, 맞죠? 그리고
b가 있는데, 이는 지수 할인 인자라고 합니다.
실제로는 베타(β)죠. 그래서 이것은
제 머릿속에서 지수 할인 인자입니다. 그리고 여기서
무슨 일이 일어나고 있나요? 베타가 0이라면,
이것은 사라지고 이것은 1이 됩니다.
맞죠, 우리는 어떤 의미에서 확률적 경사를 복구하게 됩니다.
그래서 두 가지 사이의 가중 평균처럼 보입니다.
맞죠? 여기서는 이것과 이것 사이입니다.
매개변수에 대한 마지막 추정치의 기울기
t에서의, 맞죠? 그리고 이 다른
것은 무엇인가, 이 다른 것은
이전에 일어났던 일입니다. 즉 이전 버퍼죠,
맞나요? 그래서 이것이 실제로 하는 일은
이전에 수행한 최적화를 고려하는 것입니다.
이전에 매우 컸다가 지금은 매우 작고 베타가 제어하고 있다면,
예를 들어 0.9라고 합시다. 당신이 할 일은
이전에 일어났던 일을 고려하되,
약간 감소시키는 것입니다. 이것이 효과적으로 얻는 방법입니다.
이 공이 굴러가게 만드는 것입니다. 왜냐하면 이 경우에,
맞죠, 만약 우리가 t-1에서 매우 큰 최적화
단계를 가졌고, 지금은 시간 t에 있으며
단계가 작다면, 우리는 큰 단계를 갈 것이고
그 다음 작은 단계를 갈 것입니다,
맞죠? 상관없습니다. 움직일 것입니다. 머릿속으로 보면
일종의 스톱 모션 방식으로 움직일 것입니다.
큰 움직임과 작은 움직임, 큰 움직임, 중간 움직임을
가질 수 있습니다.
이전에 무엇이 일어났는지는 중요하지 않습니다.
이것이 아닙니다. 과거에 일어난 일을 고려하는 것입니다. 만약
과거에 일어난 일을 고려한다면, 그래서 만약
과거가 컸죠, 그리고 기술적으로 이
단계는 작아야 하지만, 실제로는 이것과
이것을 포함할 것입니다. 그래서 여전히 큰 단계일 겁니다.
이전보다는 조금 작겠지만 말이죠,
맞죠? 아마 이런 정도일 것입니다,
그렇죠? 그리고 우리가 계산한 모든 단계가
여전히 작다면, 점점 더 천천히
움직일 것입니다. 이제 여러분의 직관으로,
왜 이것을 모멘텀이라고 부르는지 이해할 수 있을 겁니다. 말 그대로
파라미터를 손실 영역을 통과하는
공으로 본다면, 실제로 모멘텀이 있기 때문입니다.
이전의 가속도가 있고, 이 평면에는 마찰이 있습니다.
좋습니다, 이제 이것을 잘 기억하세요,
왜냐하면 QH 모멘텀과 같은 형태를 가질 것이기 때문입니다.
그래서 우리는 둘을 함께 봅니다.
이것은 이전 것이고, 이것이 QHM입니다.
자, 둘을 함께 봅시다. 이것은 이전 것이고, 이제
QHM입니다. 한 번 살펴봅시다. 종이에
적어보면, 하나씩 차례대로 보겠습니다.
중첩해보면, 여기에 b, g t가 있고,
똑같습니다. 1 마이너스 b가 있고,
같습니다. 첫 번째처럼, ghdev t 플러스 1이 있습니다. 그래서
이 모멘텀 버퍼는 정확히 동일한 것입니다. 아무것도 변한 게 없습니다.
여기서 아무것도 바뀌지 않았어요. 이것은 좋습니다. 우리는 이게 무엇을 의미하는지 알고 있죠.
여기서 다른 점은 이 전체 부분입니다.
맞죠. 제가 이것이 두 가지의 가중 평균이라고 말했던 것 기억하시나요?
다시 같은 트릭을 사용하고 있습니다. 이 부분은
두 가지의 가중 평균입니다. 맞죠. 이것은
이 양의 가중 평균입니다.
맞죠. 이것과 매우 유사하지만 이 양입니다.
이것은 무언가에
여기 나머지를 더한 것으로, 이전에 있었던 것입니다.
맞죠. 그래서 무슨 일이 일어나고 있나요?
실질적으로, 여기서 우리는 v라고 부르는 것을 갖고 있습니다. v는
즉각적인 할인 인자 v라고 부릅니다.
그래서 이것은 모멘텀 업데이트 단계와 일반 확률적 경사 하강법
업데이트의 가중 평균입니다. 확률적 경사 하강법을 다시 살펴봅시다.
여기 있네요. 둘 다 있습니다. 여기 확률적 경사 하강법이 있고,
여기 모멘텀이 있습니다. v가 실제로 하는 일은,
지금 확률적 경사 하강법만 따랐을 때 일어나는 일과
모멘텀 단계만 따랐을 때 일어나는 일의 평균을 취하는 것입니다.
맞죠?
모멘텀은 이것이고 확률적 경사 하강법은
이게 바로 이런 의미예요. 여기에는 본질적으로 복잡한 게 없어요.
우리는 모멘텀을 더 따르거나 확률적 경사 하강법을
더 따를 거예요. 그리고 이 두 가지를 병렬로
계속 실행할 거예요. 그게 전부예요. QHM이 하는 일이
본질적으로 그것뿐이에요. 이것보다 더 복잡한 건 없어요.
그게 전체 아이디어예요. 논문에서도 설명했지만, 여기서 보면
더욱 분명해져요.
자, 이제 거의 다 왔어요. Adam으로 넘어가 봅시다.
다른 논문에서 뭔가를 가져올 때는
변수에 대해 매우 주의해야 해요.
이 변수들이 다른 곳에서 본 것과 같을 수 있어요.
그래서 이 아이디어를 가져와서 약간 다시 쓰고
그 다음에 당신의 것에 통합할 수 있어요.
자, 이걸 봅시다. 지금 보면 좀 다른 게 보이죠.
이건 실제 공식이 아니라 알고리즘이에요.
다른 사람들은 공식 대신 이런 방식으로 하기로 했어요.
약간의 차이가 있을 수 있다는 걸 알고 유연해져야 해요.
여기 스텝 사이즈가 있는데,
이게 우리의 알파예요. 즉 학습률이죠.
b1, b2가 있는데 이는 모멘텀 추정을 위한
지수 감쇠율이에요. 이 b들이
바로 그거예요.
동일한데, 이 베타들은 모멘텀에서의 베타와 같습니다. 하지만 이제
두 개가 있습니다. 파라미터 theta를 가진 f라는 확률적 목적 함수가
있는데, 이는 l이 되어야 합니다. 우리의 경우 theta는
파라미터 벡터입니다. 이는 좋습니다. 여기에는 모멘트 벡터
하나와 두 번째 모멘트 벡터가 있습니다. 즉 두 개의 모멘트 벡터가 있습니다.
모멘텀에서는 벡터가 하나뿐입니다.
t는, t는 무언가입니다. 이제 우리가 보는 것은,
그래디언트를 계산한 다음 두 모멘텀 벡터를
동시에 계산합니다. 모멘텀 벡터는
특정 공식을 가집니다. 이것은 이전과 같죠? 여기서 다른 점은 없습니다.
이것은 다른데, g를 제곱해서
t에 대해 취하기 때문입니다.
즉 gt와 gt의
제곱입니다. 그게 전부입니다. 둘 사이의 유일한
차이점입니다. 그 다음에는 약간 다른 작업을 수행합니다.
첫 번째 모멘트 추정치의 편향 보정과
두 번째 모멘트 추정치의 편향 보정을 수행합니다.
그래서 이 두 가지는 공식에 적용되기 전에
보정됩니다. 따라서 네 개의 버퍼가 보이는 이유입니다.
모멘텀보다 하나 더 추가되어 두 개의 버퍼가 있습니다.
그리고 이 둘을 가져와 보정하여 이것들이 중요해지고,
다른 것들은 더 이상 중요하지 않게 됩니다. 그리고 이 두 양을 취합니다.
그리고 나서 그것들을 업데이트 규칙에 집어넣습니다. 그 업데이트 규칙을
빠르게 살펴보면, 동일한 것을 볼 수 있습니다,
맞죠? 이전 파라미터, 약간의 학습률, 그리고 무언가가 있습니다,
무엇이든지 말이죠. 다만 이 경우에는 편향 보정된
첫 번째 모멘텀을 두 번째 모멘텀의 제곱근으로 나눈 것입니다
여기에 엡실론을 더하는데, 이는
보통 사용하는 오차값입니다
이것이 너무 작아서 0으로 나누는 것을 방지하기 위해서죠
여기서 보시면 아주 작습니다. 이것이 Adam의 형태입니다
이제 여러분은 알게 되었죠? 다른 것으로 넘어가기 전에 기억해두세요.
좋습니다, 이제 QH Adam을 살펴볼 준비가 되었습니다. 그래서,
여기를 빠르게 보시면. 네, 글자가 많지만,
주목할 점은 여기 있는 것이 Adam과 같다는 것입니다.
이것들을 다시 쓴다면, 처음 네 개의 버퍼는 정확히 동일합니다. 그래서
이것을 작업하면 여기서 무슨 일이 일어나는지
꽤 잘 이해할 수 있습니다. 맞죠? 차이점은
여기에 있습니다. 보시다시피,
우리는 QHM의 정확히 같은 아이디어를 가지고 있습니다.
맞죠? 여기를 보면,
QHM의 정확히 같은 아이디어가 있습니다.
QHM을 다시 보면, 파라미터 v의 아이디어가 있는데, 이는 진동하는 즉각적인 할인 요소입니다
두 가지 사이라고 할 수 있죠. 이 경우 qhm은 v가 0이면 확률적 경사 하강법이고,
v가 1이면 모멘텀이 됩니다.
이 둘 사이에 연속적인 종류의
것들을 가질 수 있습니다. Qh atom에서도 비슷해 보이지만
정확히 같지는 않습니다. 보시면
v1이 있고 v2가 있죠. 그래서
제가 종이에 적는다면,
이 알고리즘이 실제로 무엇을 하는지 이해하기 위해
여러 가지 변형을 시도해 볼 것입니다.
하지만 여기서는 이미 알려주고 있습니다. v1과 v2가
1이라면, Adam을 얻게 됩니다. 그렇게 되면
이 부분은 0이 되어 사라지고,
이 부분도 사라집니다. 1이니까요.
그래서 첫 번째 모멘텀 버퍼를 두 번째 모멘텀 버퍼의 제곱근으로 나누고
엡실론을 더하는 것만 남게 되는데, 이것이 바로
Adam입니다. 여기 있는 것과 같죠.
이는 이런 매개변수들로
다양한 알고리즘을 복원할 수 있고,
연속적인 사분면을 가질 수 있다는 것을 보여줍니다.
여기서 말하는 건,
v의 값에 따라
다양한 알고리즘을 얻을 수 있다는 거죠.
v1과 v2의 값에 따라 달라지는데, 각 극단에서는
다른 결과를 얻게 됩니다. Qh atom에서는
v1을 0으로 설정하면 RM's prop을 얻을 수 있고,
v2를 1로 설정하면 Mrs. Prop을 얻을 수 있습니다.
v1을 beta1으로, v2를 1로 설정하면
NADM을 얻게 되고, 이런 식으로 다양한 조합이 가능합니다.
이것이 바로 이 아이디어의 핵심입니다.
하나의 최적화 알고리즘만 사용하는 대신,
여러 알고리즘의 장점을 혼합하여
약간 다른 무언가를 만들어내는 것이 이 아이디어의 핵심입니다.
여러 알고리즘의 장점을 혼합하여 새로운 것을 만드는 것이죠.
논문의 실험 섹션을 보면 왜 이 방법이 더 나은지 알 수 있습니다.
더 효율적이고 성능이 좋다는 것을 보여줍니다.
하지만 공식만 보면 기본적으로 이게 전부입니다.
이전과 동일한 아이디어를 사용하고 있죠.
QHM을 이제 두 축에 적용한 것뿐입니다.
그게 전부입니다. 이제 이해를 위해 노력한 후에는,
각 논리적 공식을 직관으로 요약해 볼 수 있습니다.
이 과정에서 수학적으로 엄밀할 필요는 없습니다.
단지 논리적으로 이해가 되면 됩니다.
직관은 수학적으로 엄밀할 필요가 없고
논리적으로 이해가 되기만 하면 됩니다.
여러분을 위해 종이에 그것을 적으세요. 이제 처음부터 끝까지
종이를 뚫고 나갈 수 있습니다. 필요하다면 언제든
돌아가서 생각의 흐름을 따라갈 수 있습니다.
이는 몇 주 전에 제가 만든 일반적인 딥러닝 논문 읽는 법에 대한
영상과 잘 연결됩니다.
여기서 확인하실 수 있습니다. 오늘은 여기까지입니다. 영상이
마음에 드셨다면 좋아요 누르는 것 잊지 마시고, 질문이 있으시면
댓글을 남겨주세요. 도와드리겠습니다. 모두 좋은 한 주 보내시고,
다음 영상에서 뵙겠습니다.