샤프니스: 안정성의 가장자리

혼동하기 쉬운 점과 요약

토론 1. 헤시안의 대각선 칸 가운데 큰 값으로 학습률의 상한을 정해도 되나

선생님 T01
선생님

파라미터 둘짜리 손실의 헤시안이 첫 줄 (3, 2), 둘째 줄 (2, 3)이에요. 경사하강의 학습률을 얼마까지 올려도 될까요?

김민준 M01
김민준

칸마다 보면 가장 크게 휜 게 3이니까, 2/3 = 0.667까지요. 여유 있게 0.6으로 돌려 볼게요.

이서연 S01
이서연

어떻게 나왔어?

김민준 M04
김민준

어, 터지네요. 바닥까지의 거리가 스텝마다 두 배씩 커져요.

선생님 T01
선생님

어느 방향으로 커지고 있죠?

김민준 M01
김민준

찍어 보니까 (1, 1) 방향이에요. 두 축 사이로 비스듬하게요.

이서연 S03
이서연

(1, 1)에 H를 곱하면… (3 + 2, 2 + 3) = (5, 5)네. 그 방향으로는 휨이 3이 아니라 5야.

선생님 T01
선생님

대각선 칸 3은 어느 방향의 휨이었죠?

이서연 S07
이서연

좌표축 방향이요. 첫째 파라미터만 움직일 때의 휨이에요. 비스듬한 방향에서는 서로 주고받는 칸 2가 더해져서 더 크게 휘고요.

김민준 M07
김민준

그럼 0.6이면 그 방향의 배율이 1 − 0.6 × 5 = −2라서 두 배씩 커진 거구나. 상한은 2/5 = 0.4였네.

이서연 S08
이서연

그래서 샤프니스는 대각선 칸 가운데 큰 값이 아니라 가장 큰 고윳값이어야 하는 거네요. 빵집 회원 합이 A 혼자의 1.1배가 아니라 1.22배씩 늘었던 것도 서로 주고받는 칸 때문이었고요.

토론 2. 학습하는 동안 차오르는 샤프니스는 끝없이 오르나

선생님 T01
선생님

2/η = 30이 되게 학습률을 0.0667로 두고 작은 신경망을 학습하면, 샤프니스가 0, 500, 1000, 2000스텝에서 10.07, 15.56, 19.22, 24.33이에요. 6000스텝까지 가면 어떻게 될까요?

이서연 S02
이서연

2000스텝 동안 14쯤 올랐으니까… 이대로면 6000스텝 전에 30을 넘겠네요. 그럼 가장 크게 휜 방향의 배율이 1을 넘으니까 손실이 터질 것 같아요.

김민준 M01
김민준

기록을 볼게. 3290스텝째에 2/η의 98%에 닿았어. 그 뒤로는 샤프니스 ÷ (2/η)가 평균 1.0036이고, 가장 작을 때 0.936, 가장 클 때 1.059야. 손실이 오른 스텝은 17.5%고.

이서연 S06
이서연

30을 조금 넘었다가 다시 내려오기를 되풀이했다는 거야? 그러면 손실은 결국 어떻게 됐어?

김민준 M01
김민준

6000스텝째 0.00406. 학습률 여섯 가지 가운데 제일 낮아.

선생님 T01
선생님

샤프니스가 30을 넘은 순간에는 무슨 일이 생겼을까요?

이서연 S04
이서연

그 방향의 배율이 1을 넘으니까 손실이 튀었겠죠. 그런데 튄 뒤에 샤프니스가 30 아래로 내려왔으니까… 터지지 않고 돌아온 거네요. 제가 샤프니스가 30을 넘어서도 지금처럼 오른다고 놓고 계산했어요.

이서연 S08
이서연

2/η까지는 저절로 차오르지만, 닿으면 손실이 튀면서 샤프니스가 내려앉으니까 선 근처에 머무는 거예요. 끝없이 오르는 게 아니라 학습률이 정한 높이에 붙는 거고요.

선생님 T14
선생님

모래 더미가 35°에 붙어 있던 것과 같죠. 6000스텝 뒤에 헤시안 전체를 구해 봐도 가장 큰 고윳값이 30.0385였어요.

토론 3. 손실의 바닥이 낮은 쪽이 언제나 더 좋은 답인가

선생님 T01
선생님

골짜기 둘인 손실에서 좁은 바닥은 손실 0.0139, 넓은 바닥은 0.2436이에요. 학습을 끝낸 파라미터로 하나를 골라야 한다면요?

김민준 M01
김민준

좁은 쪽이 17배 낮으니까 좁은 쪽이죠. 손실을 줄이려고 학습한 거니까요.

선생님 T01
선생님

이 파라미터를 휴대폰에 올리려고 적은 비트로 반올림했더니, 바닥에서 양쪽으로 0.2쯤 어긋났다고 해 봐요.

김민준 M04
김민준

어긋난 두 자리의 손실을 평균 내면… 좁은 쪽은 0.4063, 넓은 쪽은 0.2689예요. 뒤집혔네요.

이서연 S03
이서연

0.05만 어긋나면?

김민준 M01
김민준

좁은 쪽 0.0446, 넓은 쪽 0.2452. 그때는 좁은 쪽이 아직 훨씬 나아.

이서연 S07
이서연

그럼 어느 바닥이 좋은지는 바닥의 높이만으로 정해지지 않네. 얼마나 어긋날 수 있느냐까지 알아야 해. 차이가 크면 평평한 바닥이 이기고.

선생님 T02
선생님

처음 보는 데이터에서도 바닥이 조금 어긋난 자리가 된다면, 지금 자리의 손실 대신 무엇으로 고르면 될까요?

이서연 S08
이서연

둘레에서 가장 나쁜 손실로요. 지금 자리에서 반지름 안쪽 어디로 어긋나도 손해가 적은 쪽을 고르면 평평한 바닥이 이겨요. SAM이 줄이는 값이 그거였네요.

혼동하기 쉬운 점

혼동하기 쉬운 생각 나온 문제 바로잡는 법
반복해서 곱할 때의 배율이 대각선 칸 가운데 가장 큰 값이라고 봄 토론 1 되풀이 곱의 배율은 가장 큰 고윳값이다. 칸끼리 주고받으면 대각선 칸보다 커진다. 샤프니스도 헤시안의 대각선 칸이 아니라 가장 큰 고윳값이다
파워 이터레이션이 늘 가장 큰 양의 고윳값을 찾는다고 봄 2 크기가 가장 큰 고윳값을 찾는다. 음의 고윳값이 더 크면 H + cI 로 옮겨 찾는다
샤프니스는 헤시안이 있으니 매 스텝 재면 된다고 봄 3 곱 하나가 그래디언트 몇 번 값이라 자주 재면 학습이 몇 배 느려진다. 띄엄띄엄, 앞 방향에서 이어 잰다
샤프니스는 학습할수록 커져 끝없이 오른다고 봄 토론 2 2/η 에 닿으면 손실이 튀면서 샤프니스가 내려앉아 선 근처에 머문다
샤프니스가 2/η 를 넘으면 손실이 2차 함수처럼 끝없이 불어난다고 봄 5 2차 근사는 샤프니스가 그대로라고 놓는다. 실제로는 튀는 동안 샤프니스가 낮은 곳으로 옮겨 가 손실이 돌아온다
워밍업의 위험한 스텝을 처음 샤프니스와 학습률만으로 계산함 6 샤프니스도 혼자 차오른다. 워밍업이 너무 짧으면 샤프니스가 내려오는 2/η 를 따라오지 못해 터진다
손실의 바닥이 낮으면 언제나 더 좋은 답이라고 봄 토론 3 파라미터가 Δ만큼 어긋날 수 있으면 날카로운 바닥은 손해가 커진다. Δ가 클수록 평평한 바닥이 낫다
샤프니스가 가장 작은 바닥이 가장 좋은 함수라고 봄 8 ReLU 신경망은 함수를 그대로 두고 샤프니스만 마음대로 바꿀 수 있다. 샤프니스는 파라미터를 적는 방식에 따라 바뀐다
같은 에포크로 미니배치 크기별 샤프니스를 견줌 9 큰 미니배치는 스텝 수가 적어 아직 덜 날카로워졌을 뿐이다. 손실이 비슷한 곳끼리 비교한다
지금 자리의 손실만으로 고름 토론 3 둘레의 가장 나쁜 손실로 고르면 평평한 쪽이 이긴다. SAM 의 생각이다
SAM 의 2차 근사를 반지름에 상관없이 믿음 11 반지름이 바닥의 폭에 가까우면 2차 근사가 크게 틀린다. 바닥에서는 그래디언트 방향이 정해지지 않는다
같은 스텝 수로 SAM 과 경사하강의 학습 손실을 비교해 좋고 나쁨을 가름 12 SAM 은 스텝마다 그래디언트를 두 번 구하고, 학습 손실을 내주고 평평함을 산다. 처음 보는 데이터로 판단한다

요약

이 장에서 한 일을 정리해 보자. 학습률의 상한 2/L의 L은 「어디서나의 곡률 상한」이었고, 신경망에는 그런 상한이 없다. 대신 지금 자리의 헤시안이 가진 가장 큰 고윳값, 곧 샤프니스를 잴 수 있다. 헤시안 전체는 파라미터 수의 제곱만큼 칸이 있어 만들 수 없지만, 펄머터(1994)의 헤시안-벡터 곱은 그래디언트 몇 번 값으로 Hv를 정확히 준다. 이 곱으로 파워 이터레이션을 하면 작은 신경망(파라미터 1185개)에서 여덟 번 만에 샤프니스 10.07을 1% 안으로 찾는다. 그 신경망의 고윳값은 거의 모두 0 근처에 몰리고, 1보다 큰 것은 셋뿐이었다.

학습률을 고정하고 학습하면 샤프니스는 줄지 않고 오르는데, 2/η보다 작은 동안에는 손실이 스텝마다 준다. 샤프니스가 2/η에 닿으면 그릇에서처럼 터지는 대신 그 선에 붙어 머물고, 손실은 짧게는 오르내리며 길게는 내려간다. 코언과 동료들(2021)이 안정성의 가장자리라 부른 모습이다. 붙어 있는 동안 샤프니스가 2/η를 넘으면 손실이 튀고, 튀는 동안 파라미터가 샤프니스가 낮은 곳으로 옮겨 가 다시 내려온다. 처음 샤프니스가 이미 2/η보다 크면 손실이 치솟았다 내려오는 투석기 국면이 생기고, 학습률 워밍업은 샤프니스가 내려오는 2/η 선을 따라올 시간을 준다.

경사하강은 샤프니스가 2/η보다 큰 바닥에 머물 수 없으므로 학습률이 바닥을 고른다. 좁고 깊은 골짜기와 넓고 얕은 골짜기가 함께 있으면, 학습률을 좁은 골짜기의 2/곡률보다 키우는 순간 그 바닥에는 멈추지 못하고, 더 키우면 넓은 골짜기로 넘어간다. 둘레가 넓고 완만한 바닥을 평평한 극소라 한다. 호흐라이터와 슈미트후버(1997)는 평평한 극소를 적은 비트로 적을 수 있는 단순한 신경망으로 보았고, 케스카르와 동료들(2017)은 큰 미니배치가 날카로운 바닥으로 간다고 보고했다. 딘과 동료들(2017)은 ReLU 신경망이 함수를 그대로 두고 샤프니스만 바꿀 수 있음을 보여 샤프니스 하나로 일반화를 설명하는 데 반론을 냈다.

SAM(포레 팀, 2021)은 둘레 반지름 ρ 안의 가장 큰 손실을 줄인다. 그래디언트 쪽으로 ρ만큼 올라가 본 자리의 그래디언트로 걸으면, 2차 근사에서 ½ρ²·(샤프니스)가 목표에 들어가 샤프니스를 깎는 쪽으로 흐른다. 극소가 이어진 골짜기에서 경사하강은 처음 닿은 바닥에 서지만 SAM은 골짜기를 따라 평평한 쪽으로 간다. 대가는 스텝마다 두 번의 그래디언트 계산과 조금 높은 학습 손실이다.

정리 연습문제

물음. 이 장에서 잰 샤프니스는 무엇인가?

  • [ ] 헤시안의 대각선 칸 가운데 가장 큰 값 〔틀림: 칸끼리 주고받으면 되풀이 곱의 배율이 대각선 칸보다 커진다. 대각선 칸만 보면 샤프니스를 작게 잰다.〕
  • [x] 지금 자리에서 헤시안이 가진 가장 큰 고윳값 〔맞음: 신경망에는 어디서나의 곡률 상한이 없는 대신, 지금 자리의 샤프니스는 잴 수 있다.〕
  • [ ] 손실 지형 어디서나 통하는 곡률의 상한 〔틀림: 신경망에는 그런 상한이 없다. 샤프니스는 학습하는 동안 자리마다 바뀐다.〕

물음. 헤시안–벡터 곱으로 파워 이터레이션을 한다. 찾아지는 고윳값은?

  • [ ] 언제나 가장 큰 양의 고윳값 〔틀림: 음의 고윳값의 크기가 더 크면 그 음의 고윳값이 나온다.〕
  • [x] 크기(절댓값)가 가장 큰 고윳값 〔맞음: 가장 큰 양의 고윳값이 필요한데 음의 고윳값이 더 크면, 헤시안에 단위 행렬의 상수배를 더해 옮긴 뒤 찾는다.〕
  • [ ] 크기가 가장 작은 고윳값 〔틀림: 곱을 되풀이할수록 가장 크게 늘이는 방향이 남는다.〕

물음. 학습률 0.01로 고정하고 신경망을 경사하강으로 학습한다. 샤프니스는 어떻게 움직이나?

  • [ ] 학습할수록 끝없이 오른다 〔틀림: 200에 닿으면 손실이 튀면서 샤프니스가 내려앉는다.〕
  • [ ] 200을 넘는 순간 손실이 2차 함수에서처럼 끝없이 불어난다 〔틀림: 2차 근사는 샤프니스가 그대로라고 놓는다. 실제로는 손실이 튀는 동안 파라미터가 샤프니스가 낮은 곳으로 옮겨 가 손실이 돌아온다.〕
  • [x] 오르다가 200 근처에 붙어 머문다 〔맞음: 코언과 동료들이 안정성의 가장자리라 부른 모습이다. 그동안 손실은 짧게는 오르내리고 길게는 내려간다.〕

물음. 곡률 100인 좁고 깊은 골짜기와 곡률 1인 넓고 얕은 골짜기가 함께 있다. 학습률 0.05로 경사하강을 하면 어디에 앉나?

  • [ ] 좁은 골짜기. 바닥이 더 낮으니까 〔틀림: 학습률과 곡률의 곱이 5라 좁은 골짜기의 바닥에는 멈추지 못한다.〕
  • [x] 넓은 골짜기 〔맞음: 학습률 0.05로는 샤프니스가 40을 넘는 골짜기의 바닥에 머물 수 없다. 학습률이 바닥을 고른다.〕
  • [ ] 학습률과 상관없이 출발점에서 가까운 골짜기 〔틀림: 출발점이 좁은 골짜기 안이어도 학습률이 크면 그 바닥에서 튕겨 나온다.〕

물음. 손실이 같은 두 극소 가운데 샤프니스가 작은 쪽이 더 좋은 함수라고 할 수 있나?

  • [ ] 그렇다. 함수가 같으면 샤프니스도 같으니, 샤프니스가 함수의 좋고 나쁨을 바로 알려 준다 〔틀림: ReLU 신경망은 함수를 그대로 두고 샤프니스만 마음대로 바꿀 수 있다.〕
  • [x] 그렇게 말할 수 없다. 샤프니스는 파라미터를 적는 방식에 따라 바뀐다 〔맞음: 딘과 동료들이 이것을 보여, 샤프니스 하나로 일반화를 설명하는 데 반론을 냈다.〕
  • [ ] 같은 에포크만 학습한 뒤 비교하면 그렇다 〔틀림: 큰 미니배치는 같은 에포크에서 스텝 수가 적어 아직 덜 날카로워졌을 뿐일 수 있다. 손실이 비슷한 곳끼리 비교한다.〕

물음. SAM이 스텝마다 하는 일과 그 대가로 맞는 것은?

  • [x] 그래디언트 방향으로 반지름만큼 올라가 본 자리의 그래디언트로 걷는다. 스텝마다 그래디언트를 두 번 구한다 〔맞음: 둘레에서 가장 나쁜 손실을 줄이므로 샤프니스를 깎는 방향으로 흐른다. 대가는 두 번의 계산과 조금 높은 학습 손실이다.〕
  • [ ] 지금 자리의 손실만 보고 걷되, 학습률을 반으로 줄인다 〔틀림: 지금 자리의 손실만 보면 날카로운 바닥과 평평한 바닥을 가리지 못한다. SAM은 둘레의 가장 나쁜 손실을 본다.〕
  • [ ] 같은 스텝 수에서 학습 손실이 경사하강보다 낮아야 제대로 된 것이다 〔틀림: SAM은 학습 손실을 조금 내주고 평평함을 산다. 좋고 나쁨은 처음 보는 데이터로 판단한다.〕

막힌 곳

이 장은 샤프니스가 왜 저절로 차오르는지를 설명하지 않았다. 학습률 여섯 가지 모두에서 샤프니스는 오르기만 했고, 코언과 동료들도 이것을 관찰로 보고하며 이론을 요청했다. 손실이 내려가는 길이 왜 하필 점점 더 휜 쪽으로 나 있을까?

평평한 바닥이 처음 보는 데이터에 더 잘 맞는가라는 물음도 남았다. 호흐라이터와 슈미트후버, 케스카르와 동료들, 포레와 동료들은 그렇다는 쪽의 증거를 냈고, 딘과 동료들은 샤프니스가 파라미터를 적는 방식에 따라 바뀐다는 반례를 냈다. 경사하강이 여러 바닥 가운데 무엇을 고르는지와 그 고름이 처음 보는 데이터에서의 성능으로 어떻게 이어지는지는 이 장의 도구만으로는 판정할 수 없다.

그리고 이 장의 모든 계산은 학습률 하나를 모든 방향에 똑같이 쓰는 경사하강이었다. 파라미터마다 스텝을 다르게 늘이고 줄이는 옵티마이저라면 「2/η」 선은 어디에 그어야 할까? 가장 크게 휜 방향의 곡률을 스텝마다 따로 나누어 준다면, 샤프니스라는 벼랑은 사라질까, 다른 모습으로 남을까?