109강에서 경사하강법을 돌려 보고 관찰했습니다.
| 관찰 | 수치 |
|---|---|
| 이면 줄어듭니다 | 에서 발산 |
| 걸음 수가 에 비례합니다 | |
| 방향이 발목을 잡습니다 | 곱수 |
이 강의가 그것을 정리로 만듭니다.
재료는 108강에서 다 만들었습니다.
두 줄을 합치면 수렴 정리가 나옵니다. 매끄러움이 한 걸음의 감소를 보장하고, 강볼록이 그 감소가 남은 거리에 비례함을 보장합니다.
그리고 이 강의는 가정을 하나씩 빼면 무슨 일이 생기는지를 봅니다. 강볼록을 빼면 지수 수렴이 로 떨어지고, 볼록마저 빼면 "임계점에 가까워진다"밖에 말할 수 없습니다.
마지막으로 잡음이 있으면 고정 학습률로는 최소에 정착할 수 없음을 보이고, 감쇠 일정이 왜 필요한지를 확인합니다.
문제. 에 을 씁니다.
(1) 연속한 두 의 비를 구하세요.
(2) 그 비가 무엇에 수렴하는지 보세요.
(3) 와 비교하세요.
생각의 실마리. 109강에서 의 성분별 곱수가 라 했습니다. 는 의 제곱에 비례하니 곱수도 제곱일 것입니다.
풀이. 검산에서
| f_ | f_{k}/f_ | |
|---|---|---|
| 4.900500\times10^ | ||
| 4.802980\times10^ | ||
| 4.707401\times10^ | ||
| 4.613723\times10^ | ||
| 4.521910\times10^ |
첫 걸음만 다르고 그 뒤로 정확히 입니다.
(3) 이고
정확히 제곱입니다.
이 문제에서 배우는 것: 선형 수렴.
선형 수렴 정리. 가 -강볼록이고 -매끄러우면 인 경사하강법에 대해
입니다.
"선형"이라는 이름이 혼동을 부릅니다. 오차가 선형으로 줄어드는 것이 아니라 로그가 선형으로 줄어듭니다. 지수 수렴이라고도 부르며, 매 걸음 일정 비율씩 줄어든다는 뜻입니다.
기준과 기준이 다릅니다.
| 재는 것 | 비율 |
|---|---|
| f_{k}-f^ | (1-1/\kappa)^ |
가 거리의 제곱에 비례하기 때문이며, 검산의 이 그것입니다. 정리의 상한은 기준 비율을 그대로 쓰므로 보수적입니다.
**첫 걸음의 비 **는 방향이 한 번에 죽으면서 생긴 것입니다. 109강 문제 1에서 본 그대로이며, 그 뒤로는 방향만 남아 일정한 비율이 됩니다.
바로 확인 1.
확인 1-1. 선형 수렴의 형태를 쓰세요.
답. 이며 입니다.
확인 1-2. "선형"이 뜻하는 바를 쓰세요.
답. 오차의 로그가 걸음 수에 대해 선형으로 줄어듭니다.
확인 1-3. 기준과 기준 비율의 관계를 쓰세요.
답. 기준이 기준의 제곱입니다.
문제. 같은 함수를 봅니다.
(1) 과 에서 실측 수렴률을 구하세요.
(2) 이론값과 비교하세요.
(3) 과 를 비교하세요.
생각의 실마리. 109강 심화 1에서 최적 학습률을 유도했습니다. 실제로 얼마나 빨라지는지 확인합니다.
풀이. 검산에서
| 수렴률(실측) | 이론 | |
|---|---|---|
소수 여덟째 자리까지 맞습니다.
(3) 검산에서
이며 기준으로는 각각 제곱한 과 입니다.
이 문제에서 배우는 것: 최적 학습률.
최적 학습률. 이차함수에서 수렴률을 최소화하는 학습률은
이고 그때 기준 수렴률이 입니다.
93강 심화 5에서 예고한 식이 정확히 나왔습니다. 그때 등고선의 찌그러짐이 조건수라 하며 이 수렴률을 미리 적어 두었습니다.
얼마나 나아지는지를 걸음 수로 봅니다. 오차를 으로 줄이려면
| 걸음 수 | |
|---|---|
약 두 배 빠릅니다. 가 크면
이라 지수의 상수가 두 배입니다.
그러나 차수는 그대로입니다.
이것이 중요한 한계입니다. 상수 배 개선은 에서 걸음을 걸음으로 만들 뿐입니다. 111강의 모멘텀이 로 차수를 바꾸는 것과는 성격이 다릅니다.
실무에서 를 쓰지 못하는 이유는 를 모르기 때문입니다. 은 추정이 쉬워도 는 어렵고, 비볼록에서는 음수일 수 있습니다.
바로 확인 2.
확인 2-1. 최적 학습률을 쓰세요.
답. 입니다.
확인 2-2. 그때의 수렴률을 쓰세요.
답. 입니다.
확인 2-3. 대비 몇 배 빠릅니까?
답. 약 두 배이며 차수는 그대로입니다.
문제. 를 봅니다. 원점에서 이라 입니다.
(1) 로 여러 에서 와 를 구하세요.
(2) 와 을 계산하세요.
(3) 수렴 차수를 판정하세요.
생각의 실마리. 지수 수렴이면 가 급격히 줄고, 다항 수렴이면 가 상수가 됩니다. 어느 인지 봅니다.
풀이. 검산에서
| x_ | f_ | f_{k}\cdot k^ | ||
|---|---|---|---|---|
| 5.604437\times10^ | 2.466425\times10^ | |||
| 2.157985\times10^ | 5.421675\times10^ | |||
| 7.039285\times10^ | 6.138385\times10^ | |||
| 10^ | 2.234865\times10^ | 6.236557\times10^ | ||
| 10^ | 7.070626\times10^ | 6.248438\times10^ |
이 로 수렴합니다.
(3) 입니다.
이 문제에서 배우는 것: 볼록만으로는 입니다.
볼록 수렴 정리. 가 볼록이고 -매끄러우면 에 대해
입니다.
지수 수렴이 다항 수렴으로 떨어집니다.
| 가정 | 수렴 | 까지 |
|---|---|---|
| 강볼록 + 매끄러움 | \rho^ | |
| 볼록 + 매끄러움 |
차이가 극적입니다. 이면 앞은 의 상수배이고 뒤는 입니다.
그런데 이 함수는 로 더 빠릅니다. 정리는 상한이므로 모순이 아닙니다.
가 어디서 오는지도 확인됩니다. 을 미분방정식 으로 근사하면 이므로
을 넣으면 입니다. 119강의 경사흐름 관점을 미리 쓴 것이며, 그 강의에서 정식으로 다룹니다.
이 실무에서 흔합니다. 과다 파라미터화된 신경망은 최소점이 다양체를 이루고 그 방향으로 평평합니다. 101강 문제 5에서 본 고유값이 근처에 몰리는 현상이 그것입니다.
바로 확인 3.
확인 3-1. 볼록 + 매끄러움의 수렴률을 쓰세요.
답. 입니다.
확인 3-2. 강볼록과 비교해 까지의 걸음 수를 쓰세요.
답. 대 입니다.
확인 3-3. 실제 수렴이 보장보다 빠를 수 있습니까?
답. 있습니다. 정리는 상한입니다.
문제. 에서 , 로 시작합니다.
(1) 을 여러 에서 구하세요.
(2) 와 비교하세요.
(3) 무엇이 보장되고 무엇이 보장되지 않는지 말하세요.
생각의 실마리. 비볼록이면 PL 부등식이 없습니다. 하강 보조정리만 남습니다.
풀이. 검산에서 을 국소적으로 잡으면
| \min_{k | 상한 | 성립 | |
|---|---|---|---|
| 1.024000\times10^ | 2.911632\times10^ | 예 | |
| 1.024000\times10^ | 9.705440\times10^ | 예 | |
| 1.024000\times10^ | 2.911632\times10^ | 예 | |
| 4.732086\times10^ | 2.911632\times10^ | 예 |
언제나 성립하며 에서는 이미 임계점에 도달했습니다.
(3) 기울기가 작아진다는 것만 보장되고, 그 점이 최소인지는 말하지 않습니다.
이 문제에서 배우는 것: 비볼록에서의 보장.
비볼록 수렴 정리. 가 -매끄럽고 아래로 유계이면 에 대해
입니다.
볼록성이 전혀 필요 없습니다. 하강 보조정리만 쓰기 때문이며, 증명이 심화 3에 있습니다.
보장의 내용을 정확히 읽어야 합니다.
| 보장하는 것 | 보장하지 않는 것 |
|---|---|
| 어떤 걸음에서 기울기가 작아집니다 | 그 점이 최소입니다 |
| 로 기울기가 감소합니다 | 값이 얼마나 좋은지 |
| 임계점에 접근합니다 | 어느 임계점인지 |
""에 주목해야 합니다. 모든 걸음에서 기울기가 작은 것이 아니라 그중 하나에서 작다는 뜻입니다. 비볼록에서는 값이 오르내릴 수 있어 마지막 걸음이 최선이라는 보장이 없습니다.
101강 문제 5와 합치면 상황이 분명해집니다. 고차원에서 임계점은 대개 안장이므로, 이 정리가 보장하는 것은 "안장에 가까워진다"일 수 있습니다.
실무가 그럼에도 작동하는 이유는 107강 심화 3에서 정리했습니다. 잡음이 안장에서 밀어내고, 과다 파라미터화로 대부분의 국소 최소가 비슷하게 좋습니다.
바로 확인 4.
확인 4-1. 비볼록에서 보장되는 것을 쓰세요.
답. 어떤 걸음에서 기울기가 로 작아집니다.
확인 4-2. 그 정리에 볼록성이 필요합니까?
답. 필요 없습니다. 매끄러움과 아래로 유계면 됩니다.
확인 4-3. 가 뜻하는 바를 쓰세요.
답. 모든 걸음이 아니라 그중 하나에서 기울기가 작다는 뜻입니다.
문제. 기울기에 잡음을 섞어 경사하강법을 돌립니다.
(1) 고정 학습률 , , 를 비교하세요.
(2) 감쇠 일정 을 비교하세요.
(3) 초기 속도와 최종 정밀도를 함께 보세요.
생각의 실마리. 잡음이 있으면 최소 근처에서도 기울기 추정이 이 아닙니다. 계속 흔들립니다.
풀이. 검산에서
| 방식 | 도달 걸음 | 마지막 평균 |
|---|---|---|
| 고정 | 7.254361\times10^ | |
| 고정 | 4.484877\times10^ | |
| 고정 | 2.901963\times10^ | |
| 감쇠 | 9.672466\times10^ |
고정 학습률은 속도와 정밀도가 반대로 움직입니다. 를 십분의 일로 줄이면 도달이 열 배 느려지고 바닥이 십분의 일이 됩니다.
감쇠 일정은 둘 다 얻습니다. 초기 속도가 와 거의 같고( 대 ), 최종 바닥이 에 가깝습니다.
이 문제에서 배우는 것: 잡음 바닥과 감쇠 일정.
잡음 바닥. 기울기 추정의 분산이 이면 고정 학습률 의 정상상태 오차가
규모입니다.
에 비례합니다. 검산의 세 고정 학습률에서 바닥이 , , 로 대략 십분의 일씩 줄어드는 것이 이를 확인합니다.
해법은 를 줄여 가는 것입니다. 다만 아무렇게나 줄이면 안 됩니다.
로빈스-먼로 조건.
첫 조건은 멀리 갈 수 있어야 한다는 뜻이고, 둘째는 잡음이 쌓이지 않아야 한다는 뜻입니다.
| 일정 | \sum\eta_ | \sum\eta_{k}^ | 조건 |
|---|---|---|---|
| 고정 | 둘째 위반 | ||
| 유한 | 만족 | ||
| 둘째 위반 | |||
| 1/k^ | 유한 | 유한 | 첫째 위반 |
넷째 줄이 검산의 앞선 시도에서 겪은 문제입니다. 너무 빨리 줄이면 목적지에 닿기 전에 걸음이 죽습니다.
실무의 일정을 정리합니다.
| 일정 | 형태 | 특징 |
|---|---|---|
| 계단 감쇠 | 일정 구간마다 절반 | 단순합니다 |
| 지수 감쇠 | \eta_{0}\gamma^ | 조건을 어깁니다 |
| 감쇠 | 이론적으로 옳습니다 | |
| 코사인 감쇠 | 반주기 코사인 | 딥러닝의 표준 |
| 워밍업 | 처음에 키웠다가 감쇠 | 초기 불안정을 막습니다 |
넷째와 다섯째 줄이 이론에 없지만 실무에서 잘 작동합니다. 유한한 예산 안에서 도는 상황이라 점근적 조건보다 실제 성능이 기준이 됩니다.
236강에서 이 주제를 정면으로 다루며, 확률적 근사 이론과 함께 봅니다.
바로 확인 5.
확인 5-1. 고정 학습률의 잡음 바닥은 무엇에 비례합니까?
답. 에 비례합니다.
확인 5-2. 로빈스-먼로 조건을 쓰세요.
답. 이고 입니다.
확인 5-3. 너무 빨리 줄이면 무엇이 문제입니까?
답. 목적지에 닿기 전에 걸음이 죽습니다.
| 가정 | 수렴 | 까지 |
|---|---|---|
| 강볼록 + 매끄러움 | (1-1/\kappa)^ | |
| 볼록 + 매끄러움 | ||
| 매끄러움만 | ||
| 볼록 + 미분불가 |
| 학습률 | 수렴률( 기준) |
|---|---|
| 기준 | 위 값의 제곱 |
| 잡음이 있으면 | 내용 |
|---|---|
| 고정 | 잡음 바닥 |
| 로빈스-먼로 | , |
| 감쇠의 이득 | 초기 속도와 최종 정밀도를 함께 |
| 자주 하는 실수 | 바로잡기 |
|---|---|
| "선형"을 일차 감소로 읽습니다 | 로그가 선형입니다 |
| 와 의 비율을 혼동합니다 | 기준이 제곱입니다 |
| 비볼록에서 최소 수렴이라 봅니다 | 임계점 접근만 보장됩니다 |
| 잡음에도 고정 를 씁니다 | 바닥에서 맴돕니다 |
| 를 너무 빨리 줄입니다 | 도달 전에 멈춥니다 |
문제 6. 선형 수렴의 정의를 쓰세요.
답. 오차가 매 걸음 일정 비율 씩 줄어드는 것입니다.
문제 7. 일 때 기준 수렴률을 쓰세요.
답. 입니다.
문제 8. 같은 조건에서 기준 수렴률을 쓰세요.
답. 입니다.
문제 9. 최적 학습률과 그때의 수렴률을 쓰세요.
답. 이며 입니다.
문제 10. 에서 두 학습률의 걸음 수 비를 쓰세요.
답. 약 두 배 차이입니다.
문제 11. 볼록이지만 강볼록이 아니면 수렴률은 얼마입니까?
답. 입니다.
문제 12. 에서 와 을 비교하세요.
답. 각각 과 이며 가 크지 않으면 후자가 훨씬 적습니다.
문제 13. 비볼록에서 보장되는 부등식을 쓰세요.
답. 입니다.
문제 14. 그 부등식에 볼록성이 필요합니까?
답. 필요 없습니다.
문제 15. 고정 학습률의 잡음 바닥이 무엇에 비례합니까?
답. 에 비례합니다.
문제 16. 로빈스-먼로 조건 두 개를 쓰세요.
답. 이고 입니다.
문제 17. 는 조건을 만족합니까?
답. 첫 조건은 만족하지만 둘째를 어깁니다.
문제 18. 감쇠 일정이 고정 학습률보다 나은 점을 쓰세요.
답. 초기 속도와 최종 정밀도를 함께 얻습니다.
심화 1. 선형 수렴 정리를 증명하세요.
108강의 두 부등식을 결합합니다.
하강 보조정리에서 일 때
양변에서 를 빼면
PL 부등식 를 넣으면
반복하면 결론이 나옵니다.
증명이 네 줄인 이유는 108강에서 준비를 끝냈기 때문입니다.
| 재료 | 무엇을 주나 |
|---|---|
| 하강 보조정리 | 감소량이 에 비례 |
| PL 부등식 | 이 남은 거리에 비례 |
| 합치면 | 감소량이 남은 거리에 비례 |
미분방정식과 같은 구조입니다. 가 지수 감소를 주듯, 가 등비수열을 줍니다. 119강에서 이 대응을 정식으로 다룹니다.
PL 부등식이 실은 강볼록보다 약합니다. 강볼록이 아니어도 PL만 성립하면 선형 수렴이 나오며, 과다 파라미터화된 신경망이 최소 근처에서 PL을 만족한다는 결과들이 있습니다. 이 증명이 그런 경우까지 덮습니다.
심화 2. 일 때 를 증명하세요.
PL 부등식이 없으므로 다른 길이 필요합니다. 볼록성의 일차 조건을 씁니다.
정리하면
한편 거리의 변화를 봅니다. 이므로
가운데 항에 위 부등식을 넣고 과 하강 보조정리를 쓰면
마지막 항을 로 잡으면 (심화 4에서 유도)
부터 까지 더하면 망원합이 됩니다.
가 단조 감소하므로 가 합의 평균보다 작고, 따라서
증명의 구조가 다릅니다.
| 강볼록 증명 | 볼록 증명 |
|---|---|
| 한 걸음의 비율 | 여러 걸음의 합 |
| 등비수열 | 망원합 |
| 지수 감소 | 다항 감소 |
"거리가 단조 감소한다"가 핵심입니다. 강볼록이 없어도 는 줄어들고, 그 총 감소량이 유한하므로 의 감소 총량도 유한합니다.
심화 3. 비볼록 경우를 증명하세요.
하강 보조정리만 씁니다. 볼록성이 필요 없습니다.
이를 부터 까지 더하면 좌변이 망원합이 되어
이므로 정리하면
합이 유한하므로 최솟값은 평균 이하입니다.
증명이 세 줄이고 가정이 둘뿐입니다.
| 가정 | 어디에 쓰이나 |
|---|---|
| -매끄러움 | 하강 보조정리 |
| 마지막 정리 |
합이 유한하다는 것에서 더 나옵니다. 이므로
기울기가 으로 수렴합니다. 다만 자체가 수렴한다는 보장은 없습니다. 무한히 퍼져 나가며 기울기만 작아질 수 있습니다.
이 정리가 딥러닝 이론의 출발점입니다. 손실이 비볼록이어도 매끄럽고 아래로 유계이면 이만큼은 보장되며, 235강부터 238강까지 확률적 경우로 확장합니다.
심화 4. 매끄러움에서 나오는 부등식을 하나 더 유도하세요.
심화 2에서 쓴 부등식을 증명합니다.
하강 보조정리를 다시 봅니다. 로 한 걸음 가면
왼쪽 부등호는 가 최솟값이라는 사실입니다. 정리하면 결론이 나옵니다.
PL 부등식과 짝을 이룹니다.
108강 심화 4에서 본 식이며, 함숫값 간격이 기울기 제곱과 배 이내로 비례합니다.
왼쪽 부등식은 볼록성 없이 성립합니다. 매끄러움과 의 존재만 필요하며, 그래서 비볼록에서도 쓸 수 있습니다.
이 부등식이 실무에서 뜻하는 바가 있습니다. 기울기가 크면 반드시 최적에서 멀다는 뜻이므로
역은 성립하지 않습니다. 기울기가 작아도 가 작으면 멀 수 있고, 이것이 109강 문제 5의 주제였습니다.
심화 5. 일차 방법의 하한을 소개하세요.
문제 2에서 학습률 조정으로는 의존성을 없앨 수 없다고 했습니다. 더 근본적인 한계가 있습니다.
네스테로프 하한. 기울기만 쓰는 일차 방법으로 -강볼록이고 -매끄러운 함수를 최적화할 때, 어떤 방법도
보다 빠를 수 없는 함수가 존재합니다.
"일차 방법"의 정의가 중요합니다. 반복점이 지금까지 본 기울기들의 선형결합으로 만들어지는 방법을 말합니다.
경사하강법도 모멘텀도 이 부류입니다. 뉴턴법은 헤세를 쓰므로 아닙니다.
하한과 상한을 비교합니다.
| 방법 | 걸음 수 |
|---|---|
| 경사하강법 | |
| 하한 | |
| 네스테로프 가속 |
셋째 줄이 하한과 일치합니다. 111강의 가속법이 일차 방법 중 최적이며, 더 나은 것은 없습니다.
가 얼마나 큰 개선인지 봅니다.
| 10^ | 10^ | |
| 10^ | 10^ |
이면 천 배입니다. 이론적 개선이 실무의 차이를 만드는 드문 예입니다.
하한을 넘으려면 정보를 더 써야 합니다. 헤세를 쓰면 112강의 뉴턴법이 되고, 함수의 구조를 쓰면 82강의 정규방정식처럼 직접 풀 수 있습니다.
심화 6. 111강과 112강으로 어떻게 이어지는지 정리하세요.
이 강의에서 경사하강법의 한계를 정확히 쟀습니다.
두 가지 개선 방향이 있습니다.
첫째, 같은 정보로 더 잘하기입니다. 심화 5에서 하한이 라 했으므로 아직 여지가 있습니다.
111강의 모멘텀이 그것을 채웁니다.
109강 심화 2에서 본 직교 제약을 풉니다. 정확한 직선탐색은 연속한 두 기울기를 직교하게 만들어 지그재그를 낳는데, 과거 방향을 섞으면 그 제약이 사라집니다.
Adam은 다른 접근입니다. 성분마다 척도를 다르게 주어 유효 조건수 자체를 줄입니다.
96강 심화 3의 대각 노름에 해당하며, 가 대각행렬인 경우의 최급강하입니다.
둘째, 더 많은 정보 쓰기입니다. 112강의 뉴턴법이 헤세를 씁니다.
조건수 의존성이 사라집니다. 96강 심화 3에서 헤세 노름 최급강하가 정답 방향에서 도 벗어난다고 한 것이 이유이며, 이차함수면 한 걸음에 끝납니다.
세 방법의 자리를 정리합니다.
| 방법 | 걸음 수 | 한 걸음 비용 | 쓰는 정보 |
|---|---|---|---|
| 경사하강법 | 기울기 | ||
| 모멘텀 | 기울기 + 과거 | ||
| Adam | 문제 의존 | 기울기 + 성분별 통계 | |
| 뉴턴법 | 기울기 + 헤세 |
의 크기가 선택을 정합니다. 이 작으면 뉴턴법이, 크면 모멘텀이나 Adam이 답입니다.
import numpy as np
# --- 문제 1: 선형 수렴을 확인한다 ---------------------------------------
H = np.array([[1.0, 0.0], [0.0, 100.0]]); mu, L = 1.0, 100.0
f = lambda x: 0.5*(x @ H @ x); gf = lambda x: H @ x
x = np.array([1.0, 1.0]); e = 1.0/L
print(" eta = 1/L 이면 이론 수렴률 1 - 1/kappa = %.4f" % (1 - mu/L))
print(" k f_k f_k / f_{k-1}")
prev = f(x)
for k in range(1, 8):
x = x - e*gf(x); cur = f(x)
print(" %4d %14.6e %14.6f" % (k, cur, cur/prev))
prev = cur
# eta = 1/L 이면 이론 수렴률 1 - 1/kappa = 0.9900
# k f_k f_k / f_{k-1}
# 1 4.900500e-01 0.009704
# 2 4.802980e-01 0.980100
# 3 4.707401e-01 0.980100
# 4 4.613723e-01 0.980100
# 5 4.521910e-01 0.980100
# 6 4.431924e-01 0.980100
# 7 4.343729e-01 0.980100
# 0.9801 = 0.99^2 입니다. f 는 x 의 제곱이라 비율도 제곱입니다.
# --- 문제 2: 최적 학습률의 수렴률 ---------------------------------------
print(" eta 수렴률(실측) 이론")
for e2, name in [(1.0/L, "1/L "), (2.0/(mu+L), "2/(mu+L) ")]:
x = np.array([1.0, 1.0])
for _ in range(50): x = x - e2*gf(x)
a = f(x)
for _ in range(50): x = x - e2*gf(x)
b = f(x)
rate = (b/a)**(1/50)
th = (1 - e2*mu)**2
print(" %s %14.8f %14.8f" % (name, rate, th))
print(" (kappa-1)/(kappa+1) = %.8f, 1-1/kappa = %.8f" % ((L/mu-1)/(L/mu+1), 1-mu/L))
# eta 수렴률(실측) 이론
# 1/L 0.98010000 0.98010000
# 2/(mu+L) 0.96078816 0.96078816
# (kappa-1)/(kappa+1) = 0.98019802, 1-1/kappa = 0.99000000
# 최적 학습률이 약 두 배 빠르지만 차수는 그대로 kappa 입니다.
# --- 문제 3: 강볼록이 아니면 느려진다 -----------------------------------
print(" mu = 0 인 예: f = x^4/4 (헤세 = 3x^2 이라 원점에서 0)")
g4 = lambda x: x**3
print(" k x_k f_k f_k * k f_k * k^2")
for k in [10, 100, 1000, 10000, 100000]:
x = 1.0
for _ in range(k): x = x - 0.1*g4(x)
fk = x**4/4
print(" %7d %11.6e %11.6e %11.6f %11.6f" % (k, x, fk, fk*k, fk*k*k))
print(" f_k * k^2 이 6.25 로 수렴합니다. 이 함수는 O(1/k^2) 로 O(1/k) 보장보다 빠릅니다")
# mu = 0 인 예: f = x^4/4 (헤세 = 3x^2 이라 원점에서 0)
# k x_k f_k f_k * k f_k * k^2
# 10 5.604437e-01 2.466425e-02 0.246642 2.466425
# 100 2.157985e-01 5.421675e-04 0.054217 5.421675
# 1000 7.039285e-02 6.138385e-06 0.006138 6.138385
# 10000 2.234865e-02 6.236557e-08 0.000624 6.236557
# 100000 7.070626e-03 6.248438e-10 0.000062 6.248438
# f_k * k^2 이 6.25 로 수렴합니다. 이 함수는 O(1/k^2) 로 O(1/k) 보장보다 빠릅니다
# 6.25 = 1/(16 eta^2) 이며 eta=0.1 입니다. 정리는 상한이라 실제가 더 나을 수 있습니다.
# --- 문제 4: 비볼록에서는 기울기만 준다 ---------------------------------
print(" 비볼록 f = x^4 - 4x^2 + 0.3x, eta = 0.01, 시작 x=0.5")
fn = lambda x: x**4 - 4*x**2 + 0.3*x
dfn = lambda x: 4*x**3 - 8*x + 0.3
Lloc, fstar = 40.0, -4.427040
print(" K min_{k<K} |grad|^2 상한 2L(f0-f*)/K 성립")
for K in [1, 3, 10, 100]:
x = 0.5; best = np.inf
for _ in range(K):
best = min(best, dfn(x)**2); x = x - 0.01*dfn(x)
ub = 2*Lloc*(fn(0.5)-fstar)/K
print(" %7d %20.6e %18.6e %s" % (K, best, ub, "예" if best <= ub else "아니오"))
# 비볼록 f = x^4 - 4x^2 + 0.3x, eta = 0.01, 시작 x=0.5
# K min_{k<K} |grad|^2 상한 2L(f0-f*)/K 성립
# 1 1.024000e+01 2.911632e+02 예
# 3 1.024000e+01 9.705440e+01 예
# 10 1.024000e+01 2.911632e+01 예
# 100 4.732086e-11 2.911632e+00 예
# 기울기가 작아진다는 것만 보장되고 그 점이 최소인지는 말하지 않습니다.
# --- 문제 5: 학습률 감쇠 -------------------------------------------------
print(" 잡음이 있으면 고정 학습률은 잡음 바닥에서 맴돕니다")
rng = np.random.default_rng(20260809)
Hs = np.array([[1.0, 0.0], [0.0, 10.0]]); noise = 0.5
fs = lambda x: 0.5*(x @ Hs @ x)
print(" 방식 f<0.01 도달 걸음 마지막 2000 평균 f")
for name, sched in [("고정 eta=0.05 ", lambda k: 0.05),
("고정 eta=0.005 ", lambda k: 0.005),
("고정 eta=0.0005 ", lambda k: 0.0005),
("감쇠 0.05/(1+k/200)", lambda k: 0.05/(1+k/200))]:
x = np.array([2.0, 2.0]); vals = []; hit = -1
for k in range(20000):
g = Hs @ x + noise*rng.standard_normal(2)
x = x - sched(k)*g
if hit < 0 and fs(x) < 0.01: hit = k
if k >= 18000: vals.append(fs(x))
print(" %s %14d %20.6e" % (name, hit, np.mean(vals)))
# 잡음이 있으면 고정 학습률은 잡음 바닥에서 맴돕니다
# 방식 f<0.01 도달 걸음 마지막 2000 평균 f
# 고정 eta=0.05 44 7.254361e-03
# 고정 eta=0.005 535 4.484877e-04
# 고정 eta=0.0005 5292 2.901963e-05
# 감쇠 0.05/(1+k/200) 47 9.672466e-05
# 고정은 속도와 정밀도가 반대로 갑니다. 감쇠는 초기 속도와 최종 정밀도를 함께 얻습니다.
문제 5의 표가 이 강의의 실용적 결론입니다. 고정 학습률은 빠르면 부정확하고 정확하면 느린데, 감쇠 일정이 둘을 함께 얻습니다.
111강에서 모멘텀으로 의존성 자체를 개선합니다.
정답.
| 기호 | 읽는 법 | 뜻 |
|---|---|---|
| 수렴률 | 한 걸음의 오차 비율입니다 | |
| (1-1/\kappa)^ | 선형 수렴 | 지수 수렴이라고도 합니다 |
| 다항 수렴 | 강볼록이 없을 때입니다 | |
| \min_ | 최선의 걸음 | 비볼록 정리의 형태입니다 |
| 잡음 바닥 | noise floor | 고정 의 정상상태 오차입니다 |
| 로빈스-먼로 | Robbins-Monro | 확률적 근사의 조건입니다 |
| 워밍업 | warmup | 초기에 학습률을 키웁니다 |
| 네스테로프 하한 | Nesterov lower bound | 일차 방법의 한계입니다 |
| 일차 방법 | first-order method | 기울기만 쓰는 방법입니다 |
다음 111강에서는 모멘텀과 적응적 학습률을 다룹니다. 109강 심화 2에서 본 직교 제약을 모멘텀이 풀고, 걸음 수를 에서 로 줄입니다. 심화 5의 하한과 일치하므로 일차 방법 중 최적입니다. Adam은 다른 길로 가서 성분마다 척도를 조정해 유효 조건수를 줄이며, 96강 심화 3의 대각 노름에 해당합니다.