(212) Smooth-Maximum, the most useful function - YouTube
핵심 요약
이 영상은 Smooth-Maximum (부드러운 최대값 함수, Smax)을 소개하며, 이 함수가 수학적 모델링, 특히 컴퓨터 그래픽스에서 매우 유용함을 보여줍니다.
- 문제 제기: 일반적인 최대값 함수($\max(X, Y)$)는 두 함수 중 큰 값을 선택하지만, 이산적인 '선택' 과정 때문에 부드럽지 않습니다.
- Smax의 필요성: 영상의 목표는 $\max$ 함수를 부드럽게 변환하여, 한 함수가 다른 함수를 점진적으로 대체하는 듯한 '부드러운 전환'을 구현하는 것입니다.
- 수학적 변환 과정:
- $\max$ 함수를 조건문 대신 대수적 형태로 변환합니다.
- 이 과정에서 절댓값($|\cdot|$)을 사용하고, 이를 $\sqrt{x^2}$ 형태로 대체하여 대수적 조작이 가능하게 만듭니다.
- 여기에 편향(bias)을 추가하는 방식으로 첫 번째 Smax 버전을 만들 수 있습니다.
- 실제 응용 (수리 및 편집):
- Smax는 한 함수(예: 기존 표면 $X$)에 다른 함수(예: 편집할 파라볼로이드 $Y$)를 결합할 때, 두 함수가 만나는 지점의 불연속성(discontinuity)을 부드럽게 메우는 데 사용됩니다.
- 확장성: Smax를 만드는 방법은 다양하며, 절댓값 함수를 대체하는 다양한 부드러운 절댓값 함수(smooth absolute value function)를 사용하면 $\text{sign}$ 함수나 $\text{ReLU}$ 같은 다른 조건부 함수들도 부드럽게 변환할 수 있습니다.
- 최종 시연 (조각): Smax를 사용하여 평면 간의 최대 거리(교집합)를 계산하는 과정에서 발생하는 날카로운 모서리(불연속점)를 부드럽게 처리하여, 마치 실제 암석처럼 자연스러운 유기적 형태를 조각하는 데 성공합니다.
결론: Smax는 수학적 모델에서 발생하는 급격한 변화(불연속성)를 부드럽게 처리하여, 현실적이고 자연스러운 결과물을 만들어내는 강력한 도구입니다.
스크립트 번역글
x와 y의 최댓값은 두 수량 중 더 큰 값을 선택하는 함수입니다. 간단합니다. x와 y가 실수 함수일 때, 일반적인 1차원 그래프나 표면 또는 암시적 볼륨의 경우, 임의의 지점에서 두 값 중 더 큰 값을 선택하며, 이는 두 함수를 결합하는 매우 유용한 방법입니다. 하지만 더 유용한 것은 X나 Y 중 하나를 반환하는 대신, 한 수량이 다른 수량을 대체함에 따라 X에서 Y로 부드럽게 전환되는 방식으로 최댓값 함수를 매끄럽게 만들 수 있다면 더 좋을 것입니다.
어떻게 해야 간단하고 효율적인 방식으로 일반적인 최댓값 함수에서 이러한 부드러운 최댓값 함수, 즉 Smax를 만들 수 있을까요? 이 비디오에서는 정확히 그것을 수행하는 몇 가지 방법을 보여드리고자 합니다. 그런 다음 멋진 수학적 그림을 통해 실제로 사용해 보겠습니다. 그럼 시작해 보죠.
조건문 기반의 일반적인 max 함수의 정의부터 여정을 시작하겠습니다. 그리고 이것을 이렇게 다시 작성해 보겠습니다.
여기에는 if 구문이 없습니다. 대신 산술 연산만 사용하지만, 수학적으로는 동등합니다. 그러니 한번 시도해 보고 무슨 일이 일어나는지 봅시다.
x=7, y=3을 입력하고 계산을 진행하면 예상대로 7이 나옵니다. 하지만 max 함수는 입력 순서에 상관없이 당연히 동일해야 합니다. 실제로 순서를 바꾸면 거의 동일해 보이지만, 절댓값 4가 있던 곳에 절댓값 -4가 있는 것만 다릅니다. 하지만 절댓값이 부호를 지우기 때문에 답은 여전히 우리가 원하는 7입니다. 따라서 이 공식은 제대로 작동합니다.
절댓값이 여기서 핵심적인 역할을 한다는 것은 분명해 보입니다. 그러니 이 공식을 좀 더 자세히 살펴보고 작동 방식을 배워봅시다. 이 식을 두 부분으로 나누고 실수 직선에 x와 y 숫자를 표시하면, 첫 번째 부분인 x + y / 2를 두 입력의 중심 또는 중간 지점으로 해석할 수 있습니다. 두 번째 부분은 x와 y 사이의 거리이지만, 2로 나눈 값입니다. 따라서 이는 중심과 구간의 끝 사이의 거리가 됩니다.
그러므로 이 공식은 X와 Y의 중간 지점을 계산한 다음, 그 사이의 거리의 절반만큼 오른쪽으로 이동하여 두 수량 중 더 큰 수에 도달하는 것입니다. 저는 이것이 유용한 해석이라고 생각하며, 두 수의 최솟값을 계산하는 것도 똑같이 쉽다는 것을 시사합니다. 중심점에서 오른쪽으로 이동하는 대신, 더하기 기호를 빼기 기호로 바꾸어 왼쪽으로 이동할 수 있습니다.
좋습니다. 조건문 기반의 max 함수 정의로 시작했고, 그것을 더 산술적인 것으로 대체했다는 것을 상기해 봅시다. 이제 우리는 단지 조건문을 절댓값 정의라는 천 아래에 숨긴 것뿐이라고 생각할 수 있습니다. 네, 맞습니다. 하지만 그것만이 전부는 아닙니다.
왜냐하면 이제 다음 단계, 즉 부드러운 최댓값으로 향하는 여정에서 훨씬 더 나은 위치에 있기 때문에, 완전한 대수적 방식으로 가서 절댓값을 제곱근의 제곱으로 대체하여 max 함수가 다음과 같이 보이게 됩니다.
이것은 여전히 동등합니다. 왜냐하면 숫자가 음수이든 양수이든 제곱하면 양수가 되고, 제곱근을 취하면 원래의 크기가 복구되기 때문입니다. 제곱근은 함수이며 하나의 값만 반환할 수 있고, 관례적으로 그것은 양수입니다. 따라서 앞에 더하기 빼기 기호가 필요하지 않습니다.
제가 X와 Y의 max를 표현하는 이 터무니없는 방법을 보여드리는 이유는, 이전 형태들에 비해 우리가 원하는 부드러운 버전을 만들기 위해 조정할 수 있는 지점이 많아졌기 때문입니다. 예시로, 여기 함수 x(t)와 함수 y(t)가 있습니다. 그리고 이것이 위 공식으로 계산된 최댓값입니다. 하지만 이것에 주의를 기울여 보세요. 제곱근에 작은 편향을 추가하면, 마침내 마치 눈 층이나 정확한 최댓값을 둘러싼 포락선처럼 작동하는 부드럽거나 매끄러운 버전의 max 함수를 만들 수 있습니다.
편향이 클수록 더 많은 눈을 쌓을 수 있습니다. 그리고 이것이 바로 우리가 목표했던 것입니다. 따라서 이것은 부드러운 최대값의 첫 번째 버전이 될 수 있습니다. 그리고 정말 좋아 보입니다. 도함수를 살펴보면, 이 새로운 부드러운 최대값이 x와 y의 도함수를 갑작스러운 변화 없이 부드럽게 혼합한다는 것을 알 수 있습니다. 따라서 x와 y가 부드럽다면, 우리의 새로운 함수도 부드러울 것입니다. 완벽합니다.
그럼 이 유용한 속성을 실제로 사용해 봅시다. x가 우리가 완전히 제어할 수 없는 절차적 표면 또는 에너지 함수라고 상상해 보세요. 그리고 우리가 여기에 국부적인 수리 또는 편집을 수행하고 싶다고 가정해 봅시다. 예를 들어, 이 영역에서 함수가 더 높이 올라가기를 원한다고 가정해 봅시다.
그렇다면 예를 들어 포물면을 편집 함수 y로 가져와서 x와 일반적인 최대값 함수로 결합할 수 있습니다.
필요한 곳에 배치하고 편집 결과가 만족스러울 때까지 너비와 높이를 조정합니다.
문제는 물론 x와 y가 만나는 지점에 불연속성이 생겼다는 것입니다. 하지만 이제 우리가 대신 부드러운 최대값을 사용할 수 있고, 매개변수 람다를 통해 두 함수가 얼마나 혼합되기를 원하는지를 선택함으로써 y를 x에 녹여서 이를 수정할 수 있습니다.
이렇게 하면 두 표면을 부드럽고 미분 가능한 단일 표면으로 융합하게 됩니다.
그리고 이로써 원래 함수를 수리하는 것을 마쳤습니다. 그럼 다시 정리하고 지금까지 한 일을 검토해 봅시다. 먼저, 최대값 함수를 중심점 더하기 거리로 표현했습니다. 그리고 절대값을 등가인 제곱근의 제곱으로 대체했습니다.
우리는 이 모든 조작을 통해 제곱근에 편향을 더하여 첫 번째 부드러운 최대값을 만들 수 있었습니다. 하지만 아직 탐험되지 않은 영역이 많이 남아 있습니다. 예를 들어, x - y^2를 확장하고 2xy를 선형 항으로 변조하여 자체적인 흥미로운 속성을 가진 완전히 다른 부드러운 최대값 함수를 찾을 수 있습니다.또한, 이 부드러운 최대값 정의에 도달하는 것은 절대값을 제곱근의 제곱으로 표현하는 단계에서 얻었다는 것을 기억하세요.
하지만 쌍곡선 코사인 함수의 역삼각 함수로도 표현할 수 있었습니다.
그런 다음 이것을 지수 함수로 전개하면 또 다른 수정 가능한 부드러운 최대값 함수군을 얻게 됩니다.
그리고 우리가 할 수 있는 또 다른 탐구는 절대값을 다시 대체하는 것인데, 이때 작은 다항식이 원점의 불연속성을 대체하는 조각별 버전입니다. 이것은 또한 전체 부드러운 최대값군을 형성하며, 실제로 제가 컴퓨터 그래픽에서 가장 많이 사용하는 것이 바로 이것인데, 국소 지지성을 가지므로 제어하기가 더 쉽기 때문입니다.
여기서 훨씬 더 많은 진화적 경로를 열 수 있습니다. 하지만 요점은, 오늘 다루지 않을 부드러운 최대값 함수를 만드는 방법이 실제로 수십 가지라는 것입니다. 하지만 언급할 가치가 있는 것은, 우리가 본 것처럼 이러한 부드러운 최대값의 상당수는 중심점 더하기 거리 공식에서 일반적인 절대값을 어떤 종류의 부드러운 절대값 함수로 대체하는 것에 기반을 두고 있다는 것입니다.
이제 절대값은 최대값과 최소값뿐만 아니라 s나 relu와 같은 모든 조건부 수학 함수를 표현하는 데 사용될 수 있습니다. 따라서 사용 가능한 부드러운 절대값 함수 중 아무거나 선택하면, 예를 들어 우리가 만든 첫 번째 것을 선택하면, 부호 함수를 부드러운 부호 함수로, relu 또는 포화 함수를 부드러운 포화 함수로 등 자명하게 변환할 수 있습니다. 이해가 되시죠?
하지만 이제 부드러운 최대값 함수로 돌아가서, 이것이 우리에게 얼마나 유용한지 보여주는 한 가지 예시로 비디오를 마무리하겠습니다.
좋습니다. 부드러운 최대값을 사용하여 바위 조각에 도움을 주려고 합니다. 3차원 공간의 임의 평면으로 시작하겠습니다. 평면의 한쪽 면에 있는 모든 점은 이 평면으로부터 양의 거리에 있고, 다른 쪽 면에 있는 모든 점은 음의 거리에 있습니다. 이제 큐브도 가져와서 평면의 양쪽에 볼 것이 있습니다. 다음으로, 양의 반공간에 있는 모든 점을 잘라낼 것입니다. 완벽합니다.
만약 제가 두 번째 평면을 가져온다면, 이제 공간의 모든 점은 평면 1까지의 거리와 평면 2까지의 두 번째 거리를 갖게 됩니다. 이 두 거리 중 최댓값을 취하고, 다시 양수 거리를 주는 것은 모두 버린다면, 저는 두 반공간의 교집합인 더 작은 블록을 얻게 됩니다.
평면을 계속 추가하고 반공간을 점점 더 깎아낼 수 있어서, 마치 날카로운 모서리만 제외하면 바위처럼 보이는 볼록 다면체를 얻게 될 것입니다.
그래서 이제 우리가 마침내 슈퍼히어로인 부드러운 최댓값을 소환할 차례입니다. 이 바위의 모서리들이 평면 거리의 최댓값을 계산한 것에서 나오기 때문에, 이것을 부드러운 최댓값으로 대체하면 모든 날카로운 모서리가 더 부드러워지고 더 자연스러워 보입니다.
자, 여기서는 시각 자료를 조금 더 끌어올리기 위해 표면에 무작위 파동을 추가하고 색상 공식도 추가해 보겠습니다. 걱정하지 마세요. 이것을 구현하는 데 사용한 수학은 우리의 논의에 중요하지 않으며, 저는 과거 영상에서 일부를 다루었고 미래에도 반드시 다시 다룰 것입니다.
하지만 지금 제가 말씀드리고 싶은 요점은, 바위가 더 사실적으로 보일수록 부드러운 최댓값의 효과가 더욱 극적이라는 것입니다. 이것을 끄면 표면의 불연속점이 눈에 띄는 이음매가 되어 사실적인 바위의 착시 효과를 망칩니다. 이것을 다시 켜면 사물이 더 자연스러워 보입니다.
따라서 부드러운 최댓값과 다른 모든 부드러운 분지 함수들을 사용함으로써, 저는 유기적인 모양을 조각할 수 있는 초능력을 얻게 되었고, 이것은 제가 수학으로 가장 좋아하는 활동 중 하나입니다. 그리고 이것들이 여러분의 다음 수학적 모험을 위해 가지고 다닐 수 있는 강력한 도구가 되기를 바랍니다.
'TECH.ART.FLOW.IO' 카테고리의 다른 글
| [YOUTUBE] 인프런 루키스AI 온라인 세미나 공유 (0) | 2026.07.03 |
|---|---|
| [번역] 루트 모션 무브먼트 시스템 (0) | 2026.07.03 |
| [번역][갓 오브 워] 새로운 시점 기반 전투 시스템의 혁신 (0) | 2026.06.30 |
| [번역] UF2025(Orlando) — Unity의 그림자, UEFN Scene Graph와 Verse 심층 분석 (0) | 2026.06.24 |
| [번역] UE6에서 Verse 동작시키는 방법 (0) | 2026.06.24 |