행렬의 랭크 (Rank of a Matrix)
쉽게 풀면
설문지에 "키(cm)"와 "키(m)"를 동시에 묻는 문항이 있다고 해봅시다. 숫자만 다를 뿐 사실은 같은 정보이므로, 두 문항 중 하나는 없어도 됩니다. 행렬의 랭크(Rank)는 표(행렬) 안에 이런 식으로 "다른 행(또는 열)을 조합해서 그대로 만들어낼 수 있는 중복된 정보"를 제외하고, 진짜로 새로운 정보를 담은 행(또는 열)이 몇 개인지를 세는 값입니다. 랭크가 낮다는 것은 겉보기엔 데이터가 많아 보여도 실제 담긴 정보는 훨씬 적다는 뜻입니다.
왜 중요한가
행렬의 랭크는 데이터나 시스템 안에 실제로 얼마나 많은 독립적인 정보가 들어 있는지를 알려주기 때문에, 통계학, 신호처리, 딥러닝 등에서 데이터 압축, 차원 축소, 모델 경량화의 이론적 근거로 자주 쓰입니다. 연립방정식의 해가 존재하는지, 유일한지를 판단하는 데도 필수적이며, 최근에는 대규모 모델을 효율적으로 학습시키는 저랭크 근사 기법의 핵심 개념으로 다시 주목받고 있습니다. 이 때문에 이론 논문뿐 아니라 응용 연구에서도 랭크 개념이 자주 등장합니다.
논문에서는 이렇게 쓰입니다
이 문장은 모델 전체의 가중치를 다 바꾸는 대신, 랭크가 낮은(정보량이 압축된) 작은 행렬 두 개만 학습시켜서 계산 비용을 크게 줄였다는 뜻입니다. 이 외에도 연립방정식에 해가 있는지, 유일한지를 판단할 때도 계수 행렬의 랭크가 기준으로 쓰입니다.
이 문장은 데이터가 겉보기와 달리 실질적으로 낮은 차원의 구조를 가지고 있음을 보여주며, 주성분분석이나 차원 축소를 다루는 통계·데이터과학 논문에서 흔히 나타나는 서술입니다.
제어이론이나 신호처리 분야에서는 관측 가능성이나 제어 가능성을 판단할 때 행렬의 랭크가 부족한지를 확인하는 방식으로 시스템의 근본적인 한계를 진단합니다.
조금 더 깊게 보면
행렬의 랭크는 특이값분해에서 0이 아닌 특이값의 개수와 정확히 일치하기 때문에, 실제 계산에서는 랭크를 직접 정의대로 구하기보다 특이값분해를 통해 유효한 랭크를 추정하는 경우가 많습니다. 특히 실제 데이터에는 잡음이 섞여 있어 이론적으로는 풀랭크이지만 매우 작은 특이값들이 존재하는 경우가 흔한데, 이때는 일정 기준 이하의 특이값을 무시하는 "유효 랭크(effective rank)" 개념을 사용해 데이터의 본질적인 차원을 추정합니다. 논문에서 랭크가 언급될 때는 정확한 랭크인지, 아니면 잡음을 고려한 근사적 랭크인지 구분해서 읽는 것이 좋습니다.
주의할 점
행렬의 랭크는 특이값분해에서 0이 아닌 특이값의 개수와 같습니다. 또한 랭크가 행(또는 열)의 전체 개수와 같으면 "풀랭크(full rank)"라고 하며, 이런 경우에만 역행렬이 존재할 수 있습니다.