볼록이면 왜 쉬운가: 극소가 곧 최소

자주 하는 실수와 요약

자주 하는 실수

실수 나온 문제 바로잡는 법
계속 내려가기만 하면 결국 가장 낮은 곳에 닿는다고 봄 1 경사하강은 둘레보다 낮은 곳(극소)에서 멈춘다. 가장 낮은 곳(최소)과 같다는 보장은 함수가 볼록일 때 있다
꺾인 데가 있으면 볼록이 아니라고 봄 2 볼록은 현으로 정의한다. 미분할 수 없어도 현이 그래프 아래로 내려가지 않으면 볼록이다
볼록 함수의 최소점은 하나라고 봄 2 극소가 모두 최소라는 말은 멈춘 곳의 높이가 같다는 뜻이다. 최소점이 구간 전체일 수도 있다. 하나로 정해지는 것은 강볼록일 때다
극소가 모두 최소면 볼록이라고 봄 2 거꾸로는 성립하지 않는다. (x² − 1)²는 극소가 모두 최소지만 볼록이 아니다
파라미터가 많이 다르면 손실도 다르다고 봄 3 은닉 유닛을 맞바꾼 신경망은 파라미터가 멀어도 손실이 같다. 그 가운데 점의 손실이 높아서 신경망의 손실은 볼록이 아니다
출발이 같으면 끝나는 때도 비슷하다고 봄 4 최소점 근처의 곡률이 0이면 스텝이 거리보다 빨리 짧아져 비율로 줄지 않는다. 곡률이 μ > 0 이상이어야 스텝마다 같은 비율로 준다
볼록이 아니면 같은 비율로 줄 수 없다고 봄 5 비율을 보장한 것은
손실이 계속 줄면 파라미터도 수렴한다고 봄 6 다 가를 수 있는 데이터의 로지스틱 회귀는 최소점이 없어(무한히 멀리 있어) 가중치가 끝없이 자란다. 가중치 감쇠를 더하면 강볼록이 되어 최소점이 생긴다
제약을 지키는 둘을 섞으면 늘 제약을 지킨다고 봄 7 제약이 볼록 집합일 때만 그렇다. 「이거나」로 이은 규칙은 제약을 쪼갠다
제약이 매끈하면 문제가 쉽다고 봄 8 가르는 것은 매끈함이 아니라 볼록 집합인지다. 모서리 있는 상자는 볼록이고, 매끈한 원(길이가 정확히 1)은 볼록이 아니다
승수를 제약을 늦출 때의 변화량으로 그대로 씀 9 승수는 지금 제약 값에서 잰 최솟값의 변화율이다. 제약을 크게 늦추면 실제 변화는 승수와 다르다
KKT 첫 줄만 만족하면 답이라고 봄 10 ν ≥ 0과 νc(θ*) = 0까지 네 줄을 모두 따진다. ν < 0인 점은 제약이 막고 있지 않은 점이다
멀리 있는 샘플이 SVM 직선을 크게 바꾼다고 봄 11 마진 가장자리 밖의 샘플은 승수가 0이라 직선에 아무 역할을 하지 않는다. 직선은 서포트 벡터가 정한다

요약

이 장에서 한 일을 정리해 보자. 경사하강은 그래디언트가 0인 곳에서 멈추고, 그곳은 둘레보다 낮은 극소점일 뿐이다. 그릇 모양과 W자 모양의 4차 함수를 같은 규칙으로 내려가면, 그릇에서는 어디서 출발해도 같은 최소점에 닿고 W자에서는 출발점이 도착지를 정한다. 둘을 가른 것은 현이 그래프 아래로 내려가는지였다. 어느 두 점의 현도 그래프 아래로 내려가지 않는 볼록 함수에서는, 현 부등식 하나만으로 극소가 곧 최소임을 증명할 수 있다. 로지스틱 회귀와 SVM의 손실은 볼록이고, 은닉 유닛을 맞바꿔도 같은 손실을 내는 신경망은 볼록이 아니다.

볼록 함수라도 얼마나 빨리 닿는지는 최소점 근처의 곡률이 정한다. 최소점에서도 곡률이 μ 이상인 강볼록 함수는, 그래디언트의 립시츠 상수 L에 맞춘 학습률(η ≤ 1/L)로 남은 오차가 스텝마다 1 − ημ배 아래로 준다. 강볼록이 아닌 볼록 함수는 1/k로 준다는 것까지만 장담할 수 있다. 비율을 보장한 핵심은 |∇f|² ≥ 2μ(f − f*)라는 폴랴크의 조건이고, 가중치 감쇠는 이 μ를 손실에 더한다.

제약이 있어도 제약이 볼록 집합이면 극소는 곧 최소인데, 같은 증명이 「두 점을 잇는 선분이 제약 안에 있다」는 한 줄을 더 쓸 뿐이다. 원판은 볼록 집합이라 사영 경사하강이 어디서 출발해도 한 점에 닿고, 말굽이나 원(길이가 정확히 1)은 볼록 집합이 아니라 도착지가 갈린다. 제약에 닿은 최소점은 KKT 조건으로 알아본다. 손실의 그래디언트와 제약 함수의 그래디언트가 승수 ν ≥ 0으로 맞서고, 제약에 닿지 않으면 ν = 0이다. 볼록 문제에서는 KKT 조건이 충분조건이 되고, 승수는 제약을 한 단위 늦출 때 최솟값이 내려가는 양이다. SVM의 서포트 벡터는 승수가 0이 아닌 샘플이다.

막힌 곳

이 장의 보장은 모두 손실이 볼록이라는 데 기댔다. 그런데 은닉 유닛이 둘만 넘어도 신경망의 손실은 볼록이 아니고, 골짜기가 여럿인 W자처럼 출발점이 도착지를 정할 수 있다. 실제로 은닉 유닛 네 개짜리 신경망은 여덟 번 가운데 세 번 더 높은 곳에서 멈췄다. 그런데도 파라미터가 수십억 개인 신경망들은 씨앗을 바꿔도 대개 비슷하게 낮은 손실에 닿는다. 볼록이 아닌데 왜 학습이 이렇게 잘 될까? 파라미터가 많아질수록 나쁜 골짜기가 드물어지는 것일까, 아니면 경사하강이 나쁜 골짜기를 피해 가게 만드는 무언가가 따로 있을까?

그리고 매끄러운 볼록 함수에서 경사하강이 장담하는 1/k는, 그래디언트만 물어보는 방법이 넘을 수 없는 한계에 미치지 못한다. 같은 그래디언트 정보로 더 빨리 내려가려면 지금의 그래디언트 말고 무엇을 더 기억해야 할까?