72강에서 기저를 정의하고 기저가 여럿임을 보았습니다. 의 표준기저도 기저이고 도 기저입니다.
그러면 이렇게 물어야 합니다.
기저마다 원소 개수가 다를 수 있습니까?
만약 다를 수 있다면 "차원"이라는 말을 쓸 수 없습니다. 어떤 사람은 이 삼차원이라 하고 다른 사람은 사차원이라 하는 상황이 되기 때문입니다.
다행히 다를 수 없습니다. 이 강의에서 그것을 증명하고, 그 공통 개수를 차원이라 부릅니다.
그러면 68강에서 정의한 계수와 만납니다. 계수는 피벗의 개수였고 차원은 기저의 크기인데, 둘이 같은 것임이 드러납니다. 그리고 더 놀라운 사실이 따라옵니다.
행과 열은 아무 관계가 없어 보이는데 같은 수가 나옵니다. 이 강의의 중심 결과입니다.
문제. 의 기저 세 가지를 봅니다.
(1) 각각의 크기를 세세요.
(2) 크기가 다른 기저가 있을 수 있습니까?
(3) 증명하세요.
생각의 실마리. (3)에서 72강 문제 3의 교체 정리를 씁니다. 한 기저는 생성하고 다른 기저는 독립이므로 그 정리가 양방향으로 적용됩니다.
풀이. (1) 셋 다 개입니다. 검산에서 세 행렬 모두 계수가 입니다.
(2) 없습니다.
(3) 과 이 모두 의 기저라 합니다.
가 를 생성하고 가 독립이므로 교체 정리에서 입니다.
가 를 생성하고 가 독립이므로 같은 정리에서 입니다.
따라서 입니다.
이 문제에서 배우는 것: 차원.
차원. 벡터공간 의 기저의 원소 개수를 의 차원이라 하고 로 씁니다. 기저를 어떻게 잡아도 이 수는 같습니다.
증명이 짧았던 이유는 교체 정리가 이미 무거운 일을 해 두었기 때문입니다. 72강에서 그 정리를 증명할 때 을 쓰지 않고 계수만 다뤘으므로, 여기 결론도 모든 벡터공간에서 성립합니다.
여러 공간의 차원을 정리합니다.
| 공간 | 기저 | 차원 |
|---|---|---|
| \mathbb{R}^ | \mathbf{e}_{1},\dots,\mathbf{e}_ | |
| P_ | 1,x,\dots,x^ | |
| M_ | E_ | |
| 대칭 | 위삼각 자리마다 하나씩 | \dfrac{n(n+1)} |
| 대각합이 인 | ||
| 공집합 | ||
| 없습니다 | 무한 |
넷째 줄을 확인해 봅니다. 대칭행렬은 대각 개와 위삼각 개로 정해지므로 입니다.
다섯째 줄은 이라는 방정식 하나가 자유도를 하나 줄인 것입니다.
여섯째 줄이 규약입니다. 영공간만 있는 공간의 기저는 공집합이고 차원은 입니다. 공집합이 독립인 이유는 "계수가 모두 이 아닌 관계식"을 만들 원소가 없기 때문이고, 생성하는 이유는 빈 합이 이기 때문입니다.
차원이 정해지면 즉시 따라오는 결과가 있습니다.
차원이 인 공간에서
벡터 개수 결론 반드시 종속입니다 생성하지 못합니다 이고 독립 자동으로 기저입니다 이고 생성 자동으로 기저입니다
셋째와 넷째 줄이 실용적입니다. 개수가 차원과 같으면 두 조건 중 하나만 확인하면 됩니다.
셋째 줄의 이유는 이렇습니다. 독립인데 생성하지 못하면 72강 심화 3의 확장으로 원소를 더해 기저를 만들 수 있는데, 그러면 크기가 보다 큰 기저가 생겨 방금 증명한 유일성에 모순입니다.
바로 확인 1.
확인 1-1. 차원을 정의하세요.
답. 기저의 원소 개수이며 기저 선택과 무관합니다.
확인 1-2. 의 차원을 쓰세요.
답. 입니다.
확인 1-3. 에서 독립인 벡터 개는 기저입니까?
답. 맞습니다. 개수가 차원과 같고 독립이면 자동으로 기저입니다.
문제. , , 이 생성하는 를 봅니다.
(1) 를 구하세요.
(2) 의 기저를 하나 쓰세요.
(3) 가 전체입니까?
생각의 실마리. 생성하는 벡터가 종속이면 그중 일부만으로도 같은 것을 만듭니다. 72강 심화 1의 방법으로 원래 벡터에서 골라냅니다.
풀이. (1) 입니다. 검산에서 계수가 입니다.
(2) 기약행사다리꼴의 피벗 열이 이므로 가 기저입니다.
(3) 아닙니다. 입니다.
이 문제에서 배우는 것: 부분공간의 차원.
정리. 가 의 부분공간이면
이고, 등호는 일 때만 성립합니다.
부등호는 문제 1의 표에서 따라옵니다. 의 기저는 에서 독립이므로 크기가 를 넘지 못합니다.
등호 조건이 유용합니다. 이면 의 기저가 에서 독립이고 크기가 이므로 자동으로 의 기저가 되고, 따라서 입니다.
즉 차원만 세어도 같은 공간인지 알 수 있습니다. 임을 알고 있다면 그렇습니다.
의 부분공간 목록을 이제 확정할 수 있습니다.
| 부분공간 | |
|---|---|
| 원점을 지나는 직선 | |
| 원점을 지나는 평면 | |
| \mathbb{R}^ |
71강 문제 3에서 적어 둔 목록이 이제 증명되었습니다. 차원이 중 하나이고 각각이 그 모양이기 때문입니다.
차원을 세는 실용적 방법도 정리합니다.
| 주어진 방식 | 차원 세는 법 |
|---|---|
| 생성하는 벡터들 | 그 행렬의 계수 |
| 방정식 A\mathbf{x}=\mathbf | |
| 방정식 개 (독립) |
셋째 줄에서 "독립"이 중요합니다. 방정식이 서로 종속이면 실제 제약은 더 적습니다. 과 은 두 개처럼 보이지만 하나입니다.
바로 확인 2.
확인 2-1. 이고 이면 무엇을 알 수 있습니까?
답. 입니다.
확인 2-2. 에서 의 차원을 구하세요.
답. 독립인 방정식 하나이므로 입니다.
확인 2-3. 생성하는 벡터가 주어졌을 때 차원을 어떻게 구합니까?
답. 그 벡터들을 열로 놓은 행렬의 계수입니다.
문제. 의 계수를 두 가지로 정의합니다. 행계수는 행들이 생성하는 공간의 차원이고 열계수는 열들이 생성하는 공간의 차원입니다.
(1) 에서 둘을 각각 구하세요.
(2) 항상 같습니까?
(3) 증명하세요.
생각의 실마리. (1)에서 행은 에 있고 열은 에 있습니다. 사는 공간이 다른데 차원이 같다면 놀라운 일입니다.
풀이. (1) 행을 봅니다. 둘째 행이 첫째의 배이므로 독립인 행이 둘입니다. **행계수는 **입니다.
열을 봅니다. 소거하면 피벗이 둘입니다. **열계수도 **입니다. 검산에서 확인됩니다.
(2) 항상 같습니다. 검산에서 무작위 행렬 네 경우 모두 일치합니다.
| 만든 계수 | 열계수 | 행계수 | ||
|---|---|---|---|---|
(3) 증명합니다.
열계수 행계수를 보입니다. 행계수를 이라 하고 행공간의 기저를 이라 합니다(각각 의 벡터입니다). 의 번째 행 는 그 기저의 일차결합입니다.
성분으로 쓰면 이므로, 의 번째 열은
입니다. 모든 열이 개의 벡터 의 일차결합이므로 열공간의 차원이 이하입니다.
같은 논증을 에 적용하면 반대 부등식이 나옵니다. 의 행계수는 의 열계수이고 그 반대도 그렇기 때문입니다. 두 부등식을 합치면 같습니다.
이 문제에서 배우는 것: 계수는 하나입니다.
정리. 모든 행렬에서 행계수와 열계수가 같습니다. 그 공통값을 계수 라 합니다.
68강에서 계수를 피벗의 개수로 정의했는데, 그것과도 일치합니다.
| 정의 | 값 |
|---|---|
| 피벗의 개수 | |
| 열공간의 차원 | |
| 행공간의 차원 |
세 정의가 하나로 묶였습니다. 피벗 열이 열공간의 기저를 주므로 첫째와 둘째가 같고, 방금 증명으로 둘째와 셋째가 같습니다.
왜 놀라운가를 다시 짚습니다. 가 이면 행은 에, 열은 에 삽니다. 서로 다른 공간에 사는 두 집합의 차원이 언제나 같습니다. 성분을 공유한다는 것 말고는 연결이 없어 보이는데 그렇습니다.
즉시 따라오는 결과도 있습니다.
행계수가 이하이고 열계수가 이하이므로 같은 수인 계수가 둘 다 이하입니다. 68강에서 피벗을 세어 얻은 결론과 같습니다.
도 따라옵니다. 이 등식은 82강의 최소제곱에서 결정적으로 쓰이며, 74강에서 네 부분공간을 다룰 때 구조가 분명해집니다.
바로 확인 3.
확인 3-1. 행계수와 열계수의 관계를 쓰세요.
답. 언제나 같으며 그 값이 계수입니다.
확인 3-2. 가 일 때 계수의 최댓값을 쓰세요.
답. 입니다.
확인 3-3. 과 의 관계를 쓰세요.
답. 같습니다.
문제. 네 행렬에 대해 계수와 영공간의 차원을 구하고 합을 보세요.
(1) 각각 계산하세요.
(2) 규칙을 찾으세요.
(3) 증명하세요.
생각의 실마리. 68강 문제 5에서 자유변수의 개수가 였고, 자유변수 하나마다 영공간의 기저 벡터가 하나씩 나옵니다. 그것이 증명의 뼈대입니다.
풀이. (1) 검산에서 계산합니다.
| 행렬 | \operatorname | \dim\mathcal | 합 | ||
|---|---|---|---|---|---|
| A_ | |||||
| A_ | |||||
| A_ | |||||
| A_ |
(2) 합이 언제나 , 즉 열의 개수입니다.
(3) 증명합니다. 이라 하고 기약행사다리꼴을 봅니다.
피벗 열이 개이므로 자유 열이 개입니다. 각 자유변수 에 대해, 그것만 로 두고 나머지 자유변수를 으로 둔 해 를 만듭니다. 선행변수는 방정식으로 결정됩니다.
이 개가 영공간의 기저입니다.
독립인 이유. 에서 번째 자유변수 자리를 보면 만 이고 나머지는 이므로 입니다.
생성하는 이유. 임의의 해 에서 자유변수 값을 라 하면 는 자유변수가 모두 인 해이고, 그러면 선행변수도 모두 이므로 영벡터입니다.
따라서 입니다.
이 문제에서 배우는 것: 계수-퇴화차수 정리.
계수-퇴화차수 정리. 가 일 때
를 퇴화차수라 합니다.
의미가 중요합니다. 를 인 변환으로 읽으면
| 항 | 뜻 |
|---|---|
| 입력 공간의 차원 | |
| 출력에 살아남는 차원 | |
| 으로 뭉개지는 차원 |
어떤 차원도 사라지거나 생기지 않고 두 갈래로 나뉩니다. 68강 심화 6에서 예고한 그대로입니다.
예로 확인합니다. 66강 문제 5의 정사영 은 , 이므로 이고, 실제로 축 전체가 으로 갑니다.
이 정리로 69강의 가역 조건도 다시 읽힙니다. 정사각행렬에서
"아무것도 뭉개지 않을 때만 되돌릴 수 있습니다." 69강 문제 3에서 직관으로 말한 것이 이제 정리가 되었습니다.
정리의 힘은 하나를 알면 다른 하나가 따라온다는 데 있습니다. 영공간을 직접 구하기 어려워도 계수만 세면 그 차원을 알 수 있습니다.
바로 확인 4.
확인 4-1. 계수-퇴화차수 정리를 쓰세요.
답. 입니다.
확인 4-2. 가 이고 계수가 일 때 영공간의 차원을 쓰세요.
답. 입니다.
확인 4-3. 정사각행렬이 가역일 조건을 퇴화차수로 쓰세요.
답. 퇴화차수가 입니다.
문제. 에서 , 을 봅니다.
(1) 두 공간의 차원을 쓰세요.
(2) 와 의 차원을 구하세요.
(3) 네 수 사이의 관계를 찾으세요.
생각의 실마리. 71강 심화 3에서 합과 교집합을 정의했습니다. 단순히 더하면 겹치는 부분을 두 번 세게 됩니다.
풀이. (1) 각각 입니다.
(2) 는 네 벡터 이 생성하므로 이고 차원이 입니다.
는 평면과 평면의 교집합이므로 축이고 차원이 입니다.
검산에서 이 확인됩니다.
(3) 확인해 봅니다.
이 문제에서 배우는 것: 차원 공식.
정리. 가 의 유한차원 부분공간이면
포함-배제의 원리와 같은 모양입니다. 겹치는 부분을 두 번 세었으니 한 번 빼는 것입니다.
증명의 착상은 이렇습니다. 의 기저를 잡고, 그것을 각각 과 의 기저로 확장합니다(72강 심화 3). 그러면 세 묶음이 생기고
이 전체가 의 기저임을 보이면 됩니다. 개수를 세면 공식이 나옵니다.
특별한 경우가 중요합니다.
직합. 이면
이고 각 원소의 분해가 유일합니다.
유일성이 핵심입니다. 이면
이므로 같습니다. 72강 문제 2의 논법과 같은 구조입니다.
64강에서 이 구조를 이미 썼습니다. 벡터를 한 방향 성분과 수직 성분으로 갈랐고, 그 분해가 유일했습니다.
80강에서 직교여공간으로 정식화되며, 74강의 네 부분공간이 정확히 두 쌍의 직합 분해를 이룹니다.
바로 확인 5.
확인 5-1. 차원 공식을 쓰세요.
답. 입니다.
확인 5-2. 에서 차원 인 두 부분공간의 교집합 차원의 최솟값을 쓰세요.
답. 이므로 최소 입니다.
확인 5-3. 직합에서 분해가 유일한 이유를 쓰세요.
답. 두 분해의 차가 교집합에 있는데 그것이 이기 때문입니다.
| 개념 | 내용 |
|---|---|
| 차원 | 기저의 크기, 기저 선택과 무관 |
| 계수 | 피벗 수 = 열공간 차원 = 행공간 차원 |
| 퇴화차수 | |
| 계수-퇴화차수 | |
| 차원 공식 |
| 공간 | 차원 |
|---|---|
| \mathbb{R}^ | |
| P_ | |
| M_ | |
| 대칭 | |
| 일 때 | 결론 |
|---|---|
| 개 | 종속 |
| 개 | 생성 못 함 |
| 개 + 독립 | 기저 |
| 개 + 생성 | 기저 |
| 자주 하는 실수 | 바로잡기 |
|---|---|
| 의 차원을 이라 합니다 | 입니다 |
| 방정식 개수를 그대로 뺍니다 | 독립인 방정식만 셉니다 |
| 두 부분공간 차원을 그냥 더합니다 | 교집합을 빼야 합니다 |
| 행계수와 열계수를 따로 셉니다 | 언제나 같습니다 |
문제 6. 차원이 잘 정의되는 근거를 쓰세요.
답. 두 기저에 교체 정리를 양방향으로 적용하면 크기가 같습니다.
문제 7. 의 차원을 쓰세요.
답. 입니다.
문제 8. 의 차원을 쓰세요.
답. 입니다.
문제 9. 대칭 행렬 공간의 차원을 쓰세요.
답. 입니다.
문제 10. 이고 이면 무엇을 알 수 있습니까?
답. 입니다.
문제 11. 행계수와 열계수의 관계를 쓰세요.
답. 언제나 같습니다.
문제 12. 가 일 때 계수의 최댓값을 쓰세요.
답. 입니다.
문제 13. 가 이고 계수가 일 때 영공간의 차원을 쓰세요.
답. 입니다.
문제 14. 계수-퇴화차수 정리를 변환의 언어로 설명하세요.
답. 입력 차원이 살아남는 것과 뭉개지는 것으로 나뉩니다.
문제 15. 정사각행렬이 가역일 조건을 퇴화차수로 쓰세요.
답. 퇴화차수가 입니다.
문제 16. 차원 공식을 쓰세요.
답. 입니다.
문제 17. 에서 차원 인 두 부분공간의 교집합은 최소 몇 차원입니까?
답. 이므로 최소 입니다.
문제 18. 에서 이고 인 부분공간의 차원을 쓰세요.
답. 독립인 방정식 두 개이므로 입니다.
심화 1. 계수에 관한 부등식들을 정리하고 각각의 등호 조건을 논하세요.
풀이. 68강 심화 2에서 곱의 부등식을 보았습니다. 여기서 정리하고 덧셈까지 봅니다.
곱.
의 열은 의 열들의 결합이고 행은 의 행들의 결합입니다. 검산에서 과 를 곱하면 계수가 으로 상한을 달성합니다.
등호가 깨지는 예도 확인됩니다. 과 은 계수가 각각 인데 입니다.
시체스터 부등식이라 불리는 하한도 있습니다. 가 , 가 일 때
의 예에서 이므로 하한이 정확히 달성됩니다.
덧셈.
의 열공간이 에 들어 있고, 문제 5의 차원 공식에서 그 차원이 합 이하이기 때문입니다.
검산에서 과 의 합이 로 계수가 이고 우변도 입니다. 등호가 성립하는 경우입니다.
정리합니다.
| 부등식 | 등호 조건 |
|---|---|
| 비슷합니다 | |
| 심화 3에서 | |
| 열공간이 직합일 때 |
가역인 행렬을 곱하면 계수가 보존됩니다. 가 가역이면 이므로 첫 줄의 등호 조건이 자동으로 성립합니다.
이것이 소거가 계수를 보존하는 이유입니다. 행 연산은 가역인 기본행렬을 왼쪽에 곱하는 일이었습니다.
심화 2. 를 증명하고 그 쓰임을 밝히세요.
풀이. 심화 1의 부등식만 쓰면 까지만 나옵니다. 등호가 성립함을 따로 보여야 합니다.
핵심은 영공간이 같다는 것입니다.
한쪽은 자명합니다. 이면 입니다.
반대쪽이 흥미롭습니다. 이라 하고 양변에 을 곱합니다.
노름의 제곱이 이므로 입니다. 63강에서 내적의 양정치성을 세웠는데, 그것이 여기서 결정적으로 쓰입니다.
두 영공간이 같고 열의 개수 이 같으므로, 계수-퇴화차수 정리에서
입니다. 검산에서 세 경우 모두 입니다.
쓰임이 큽니다.
82강의 정규방정식이 유일한 해를 가질 조건이 정확히 이것입니다.
가 이고 이면 자체는 정사각이 아니라 역행렬이 없지만, 열이 독립이면 는 이고 가역입니다. 그래서 최소제곱 해가 유일합니다.
이 결과가 실패하는 경우도 중요합니다. 열이 종속이면 가 특이하고, 그것이 다중공선성입니다. 72강 심화 6에서 언급했고 82강에서 능형회귀로 대응합니다.
증명은 입니다. 87강에서 이것이 양정치라는 말로 정리됩니다.
심화 3. 계수-퇴화차수 정리가 다른 분야에서 어떤 모습으로 나타나는지 정리하세요.
풀이. 이 정리는 "전체 상 핵"의 형태이며, 여러 곳에서 같은 골격이 나타납니다.
군론: 준동형사상의 제1정리입니다.
군 준동형사상 에 대해
이고, 유한군이면 입니다. 곱으로 나타나는 이유는 군의 크기가 곱셈적이기 때문이고, 벡터공간에서는 차원이 덧셈적이라 합이 됩니다.
미분기하: 정칙값 정리입니다.
매끄러운 사상 의 미분이 계수 이면, 정칙값의 원상은 차원 인 다양체입니다. 미분이 선형근사이므로 이 정리가 그대로 옮겨 갑니다. 93강 이후 다변수 미적분에서 다시 봅니다.
위상수학: 오일러 표수입니다.
사슬 복합체에서 와 의 교대합이 호몰로지의 계수 합과 같습니다. 계수-퇴화차수 정리를 여러 단계에 걸쳐 적용한 결과입니다.
통계: 자유도입니다.
개의 관측에서 개의 파라미터를 추정하면 잔차의 자유도가 입니다. **잔차가 사는 공간이 이고 그 차원이 **이기 때문입니다. 82강과 160강대의 회귀분석에서 이 계산이 계속 나옵니다.
최적화: 제약의 개수입니다.
에서 독립인 등식 제약 개를 걸면 실행가능집합이 차원입니다. 제약이 종속이면 실제 자유도는 더 큽니다.
정리합니다.
| 분야 | "전체" | "핵" | "상" |
|---|---|---|---|
| 선형대수 | 영공간 | 열공간 | |
| 군론 | |||
| 미분기하 | 접공간의 핵 | 미분의 상 | |
| 통계 | 관측 수 | 잔차 공간 | 모형 공간 |
**공통 원리는 "무엇도 사라지지 않는다"**입니다. 사상이 정보를 버리면 그만큼 원상이 커집니다.
심화 4. 차원이 큰 공간에서 일어나는 반직관적 현상을 논하세요.
풀이. 차원이 나 일 때의 직관이 높은 차원에서 무너지는 일이 많습니다. 몇 가지를 봅니다.
첫째, 거의 모든 벡터가 거의 직교합니다.
에서 무작위 단위벡터 두 개의 내적은 평균이 이고 표준편차가 약 입니다. 이면 각도가 에서 약 안에 몰립니다.
63강의 코사인 유사도가 고차원에서 의미를 갖는 배경이 이것입니다. 무작위 쌍은 거의 이므로, 만 되어도 강한 신호입니다.
둘째, 부피가 껍질에 몰립니다.
반지름 인 공에서 반지름 안쪽의 부피 비율은 입니다. 이면 입니다. 부피의 거의 전부가 얇은 껍질에 있습니다.
셋째, 거리가 집중됩니다.
고차원에서 무작위 점들 사이의 거리가 거의 같아집니다. 그러면 "가장 가까운 이웃"이 의미를 잃고, 최근접 이웃 탐색이 어려워집니다. 차원의 저주라 부르는 현상의 한 얼굴입니다.
이 현상들이 실무에 미치는 영향을 정리합니다.
| 현상 | 결과 | 대응 |
|---|---|---|
| 거의 직교 | 무작위 방향이 서로 간섭하지 않습니다 | 무작위 사영이 유효합니다 |
| 부피가 껍질에 | 중심 근처 표본이 드뭅니다 | 표본 수가 지수적으로 필요합니다 |
| 거리 집중 | 최근접 이웃이 무의미해집니다 | 차원 축소를 합니다 |
셋째 줄의 대응이 89강의 주성분분석입니다. 데이터가 실제로는 낮은 차원의 부분공간 근처에 있는 경우가 많으므로, 그 부분공간을 찾아 옮기면 저주가 완화됩니다.
첫째 줄은 오히려 유리하게 쓰입니다. 존슨-린덴슈트라우스 보조정리는 개의 점을 차원으로 무작위 사영해도 거리가 거의 보존됨을 말합니다. 원래 차원과 무관합니다. 근사 최근접 이웃과 지역 민감 해싱의 기반입니다.
차원이라는 수 하나가 공간의 성질을 크게 바꿉니다. 이 강의에서 차원을 정의한 것은 그것을 세기 위해서였고, 세고 나면 그 크기 자체가 문제의 성격을 결정합니다.
심화 5. 저계수 구조가 왜 실무에서 중요한지 계산량으로 설명하세요.
풀이. 행렬의 계수가 이면, 과 의 곱으로 쓸 수 있습니다.
의 열로 의 기저를 잡고 각 열의 좌표를 에 담으면 됩니다. 72강 심화 1의 방법입니다.
저장 비용을 비교합니다.
| 방식 | 저장 |
|---|---|
| 통째로 | |
| 저계수 |
검산에서 세 경우를 봅니다.
| 비율 | |||||
|---|---|---|---|---|---|
| 10^ | |||||
| 10^ | |||||
| 1.68\times10^ |
마지막 줄에서 입니다.
계산량도 줄어듭니다. 를 계산할 때
| 방식 | 곱셈 횟수 |
|---|---|
| 통째로 | |
순서가 중요합니다. 로 먼저 곱을 만들면 이득이 사라집니다. 66강에서 결합법칙을 배웠는데, 어느 순서로 묶느냐가 비용을 바꿉니다.
이 구조가 쓰이는 곳을 봅니다.
| 응용 | 저계수인 이유 |
|---|---|
| 추천 시스템 | 사용자 취향이 소수의 요인으로 설명됩니다 |
| 이미지 압축 | 자연 이미지의 특이값이 빨리 감소합니다 |
| 주성분분석 | 데이터가 낮은 차원 근처에 있습니다 |
| LoRA (342강) | 미세조정의 가중치 변화가 저계수입니다 |
넷째 줄이 최근의 예입니다. 큰 모형을 미세조정할 때 가중치 전체를 갱신하는 대신 로 두고 만 학습하면, 학습할 파라미터가 극적으로 줄어듭니다. 이면 위 표의 마지막 줄처럼 입니다.
실제 행렬이 정확히 저계수인 경우는 드뭅니다. 대개는 "거의 저계수"이며, 작은 특이값을 버려 근사합니다. 그 근사가 최선임을 보장하는 것이 89강의 에카르트-영 정리입니다.
심화 6. 차원이 무한인 경우 이 강의의 결과들이 어떻게 되는지 논하세요.
풀이. 71강 심화 4에서 무한차원을 언급했습니다. 이 강의의 결과들이 어디까지 가는지 봅니다.
차원의 유일성은 성립합니다. 선택공리를 쓰면 모든 벡터공간에 기저(하멜 기저)가 있고, 두 기저의 농도가 같음이 증명됩니다. 다만 그 기저는 대개 명시적으로 쓸 수 없습니다. 예를 들어 의 하멜 기저를 적어 본 사람은 없습니다.
계수-퇴화차수는 형태가 바뀝니다. 무한 무한이 정의되지 않으므로 그대로 쓸 수 없고, 대신
를 봅니다. 이것을 지표라 하며, 둘 다 유한한 연산자에서 잘 정의됩니다. 놀랍게도 지표는 연산자를 연속적으로 변형해도 변하지 않습니다. 아티야-싱어 지표 정리가 이 성질을 기하와 잇습니다.
71강 심화 4에서 본 이동 연산자가 좋은 예입니다.
| 연산자 | \dim\operatorname | 지표 | |
|---|---|---|---|
| 오른쪽 이동 | |||
| 왼쪽 이동 |
지표가 이 아니므로 가역이 아닙니다. 유한차원에서는 이면 곧 가역인데, 무한차원에서는 그렇지 않습니다. 지표가 그 차이를 정확히 잽니다.
실무에서 만나는 방식도 봅니다. 함수 공간의 문제를 컴퓨터로 풀려면 유한차원으로 잘라야 합니다.
| 방법 | 자르는 방식 |
|---|---|
| 유한요소법 | 조각별 다항식 기저 |
| 스펙트럼법 | 푸리에나 체비셰프 기저 |
| 신경망 | 파라미터화된 함수족 |
셋째 줄이 흥미롭습니다. 신경망은 유한 개의 파라미터로 함수를 표현하므로 유한차원 부분집합을 다루는데, 그 집합이 부분공간은 아닙니다. 두 신경망의 합이 같은 구조의 신경망이 아니기 때문입니다. 그래서 선형대수의 결과를 그대로 쓸 수 없고, 219강 이후 비선형 최적화의 언어가 필요해집니다.
이 과목에서 유한차원만 다루는 이유가 여기 있습니다. 유한차원에서 성립하는 깨끗한 정리들이 무한차원에서는 조건이 붙거나 다른 형태가 되므로, 먼저 유한차원을 확실히 해 두는 편이 낫습니다. 다만 개념의 출처와 응용은 무한차원에 있다는 점을 알아 두면 좋습니다.
이 강의에서는 numpy만 씁니다. 계수를 여러 방식으로 세어 일치를 확인하고, 계수-퇴화차수 정리와 차원 공식을 검산합니다. 행계수와 열계수가 같다는 주장은 무작위 행렬로 반복 확인하면 설득력이 큽니다.
import numpy as np
def rref(M):
R = M.astype(float).copy(); m, n = R.shape; r = 0; piv = []
for c in range(n):
k = None
for i in range(r, m):
if abs(R[i, c]) > 1e-12: k = i; break
if k is None: continue
if k != r: R[[r, k]] = R[[k, r]]
R[r] = R[r] / R[r, c]
for i in range(m):
if i != r and abs(R[i, c]) > 1e-12: R[i] -= R[i, c] * R[r]
piv.append(c); r += 1
if r == m: break
return np.round(R, 10) + 0.0, piv
# --- 문제 1: 기저가 달라도 크기가 같습니다 -------------------------------
B1 = np.eye(3)
B2 = np.column_stack([[1.,1.,0.],[0.,1.,1.],[1.,0.,1.]])
B3 = np.column_stack([[2.,0.,0.],[1.,3.,0.],[1.,1.,5.]])
for B in [B1, B2, B3]:
print(B.shape[1], int(np.linalg.matrix_rank(B)))
# 3 3
# 3 3
# 3 3
# --- 문제 2: 생성하는 벡터가 종속이면 차원이 더 작습니다 -----------------
W = np.column_stack([[1.,1.,0.],[0.,1.,1.],[1.,2.,1.]]) # 셋째 = 첫째 + 둘째
print(int(np.linalg.matrix_rank(W))) # 2
R, p = rref(W); print(R.tolist(), p)
# [[1.0, 0.0, 1.0], [0.0, 1.0, 1.0], [0.0, 0.0, 0.0]] [0, 1]
# --- 문제 3: 행계수 = 열계수 ---------------------------------------------
rng = np.random.default_rng(5)
for (m, n, k) in [(4,6,2), (7,3,3), (5,5,4), (3,8,3)]:
A = rng.standard_normal((m,k)) @ rng.standard_normal((k,n))
rc = int(np.linalg.matrix_rank(A)); rr = int(np.linalg.matrix_rank(A.T))
print(m, n, k, rc, rr, rc == rr)
# 4 6 2 2 2 True
# 7 3 3 3 3 True
# 5 5 4 4 4 True
# 3 8 3 3 3 True
A = np.array([[1.,2.,3.,4.],[2.,4.,6.,8.],[1.,1.,1.,1.]])
print(int(np.linalg.matrix_rank(A)), int(np.linalg.matrix_rank(A.T))) # 2 2
# --- 문제 4: rank + nullity = n ------------------------------------------
for A in [np.array([[1.,2.,3.],[2.,4.,6.]]),
np.eye(3),
np.array([[1.,1.],[1.,1.],[1.,1.]]),
np.array([[1.,2.,3.,4.],[0.,0.,1.,1.]])]:
m, n = A.shape; r = int(np.linalg.matrix_rank(A)); ns = n - r
print(m, n, r, ns, r + ns == n)
# 2 3 1 2 True
# 3 3 3 0 True
# 3 2 1 1 True
# 2 4 2 2 True
# --- 문제 5: 차원 공식 ---------------------------------------------------
W1 = np.column_stack([[1.,0.,0.],[0.,1.,0.]]) # xy 평면
W2 = np.column_stack([[0.,1.,0.],[0.,0.,1.]]) # yz 평면
d1 = int(np.linalg.matrix_rank(W1)); d2 = int(np.linalg.matrix_rank(W2))
ds = int(np.linalg.matrix_rank(np.column_stack([W1, W2])))
print(d1, d2, ds, d1 + d2 - ds) # 2 2 3 1 (교집합은 y축)
# --- 심화 1: 계수 부등식 -------------------------------------------------
X = rng.standard_normal((5,3)); Y = rng.standard_normal((3,4))
print(int(np.linalg.matrix_rank(X)), int(np.linalg.matrix_rank(Y)),
int(np.linalg.matrix_rank(X@Y))) # 3 3 3
P = np.array([[1.,0.],[0.,0.]]); Q = np.array([[0.,0.],[0.,1.]])
print(int(np.linalg.matrix_rank(P)), int(np.linalg.matrix_rank(Q)),
int(np.linalg.matrix_rank(P@Q))) # 1 1 0
A1 = np.array([[1.,0.],[0.,0.]]); A2 = np.array([[0.,0.],[0.,1.]])
print(int(np.linalg.matrix_rank(A1+A2)),
int(np.linalg.matrix_rank(A1)) + int(np.linalg.matrix_rank(A2))) # 2 2
# --- 심화 2: rank(A^T A) = rank(A) --------------------------------------
for (m, n, k) in [(6,4,3), (4,6,2), (5,5,5)]:
A = rng.standard_normal((m,k)) @ rng.standard_normal((k,n))
print(int(np.linalg.matrix_rank(A)), int(np.linalg.matrix_rank(A.T@A)),
int(np.linalg.matrix_rank(A@A.T)))
# 3 3 3
# 2 2 2
# 5 5 5
# --- 심화 5: 저계수면 저장이 얼마나 줄어드는가 ---------------------------
for (m, n, r) in [(1000,1000,10), (1000,1000,50), (4096,4096,8)]:
print(m*n, r*(m+n), "%.4f" % (r*(m+n)/(m*n)))
# 1000000 20000 0.0200
# 1000000 100000 0.1000
# 16777216 65536 0.0039
실행하면 주석과 같은 값이 나옵니다. 다섯 곳을 짚어 둡니다.
첫째, 서로 다른 세 기저가 모두 크기 이고 계수도 입니다. 차원이 기저 선택과 무관하다는 정리의 확인입니다.
둘째, 셋째 벡터가 앞의 둘의 합이므로 계수가 이고 피벗 열이 입니다. RREF의 셋째 열 이 셋째 벡터가 첫째와 둘째의 합임을 그대로 알려 줍니다.
셋째가 이 강의의 중심입니다. 네 가지 무작위 행렬 모두 행계수와 열계수가 정확히 같습니다. 가 인 마지막 경우에서 행은 에, 열은 에 사는데도 둘 다 입니다.
넷째, 계수-퇴화차수가 네 경우 모두 성립합니다. 인 경우처럼 이어도 **합이 열의 개수 **이지 행의 개수가 아닙니다.
다섯째, 심화 2의 결과가 확인됩니다. , , 이 세 경우 모두 같습니다. 82강에서 최소제곱 해의 유일성 조건이 되는 성질입니다.
코드로 할 수 없는 일도 분명히 해 둡니다. 행계수와 열계수가 같다는 것은 예로 증명되지 않습니다. 무작위 행렬 수백 개에서 확인해도 정리가 되지 않으며, 문제 3의 논증이 그 자리를 맡습니다. 코드가 하는 일은 주장이 틀리지 않았음을 확인하고 감을 주는 것입니다. 또 matrix_rank가 특이값 문턱으로 계수를 세므로, 72강 심화 4에서 본 대로 경계 근처에서는 판정이 문턱에 의존합니다.
정답.
| 기호 | 읽는 법 | 뜻 |
|---|---|---|
| 차원 | 기저의 크기입니다 | |
| 계수 | 행계수 열계수입니다 | |
| 퇴화차수 | nullity | 입니다 |
| W_{1}\oplus W_ | 직합 | 교집합이 입니다 |
| 저계수 | low rank | 로 쪼갤 수 있습니다 |
| 지표 | index | 무한차원의 대응물입니다 |
| 자유도 | degrees of freedom | 통계에서의 퇴화차수입니다 |
다음 74강에서는 행렬 하나에 딸린 네 가지 부분공간을 모두 봅니다. 지금까지 영공간과 열공간을 다뤘는데, 에도 같은 두 공간이 있습니다. 네 공간의 차원이 계수 하나로 모두 정해지고, 두 쌍이 서로 직교한다는 사실이 이 단원의 결론입니다.