Hacker News 의견
  • 이 기하적 특성의 함의는 정말 충격적임. k차원 공간에 거의 직교에 가까운 벡터를 몇 개나 집어넣을 수 있을지 간단히 추정하는 방법을 생각해볼 수 있음. 벡터 간의 최소 각도에만 집중하면, 결국 구 코드(spherical codes)에 대한 분석임. 그런데도 이 글은 구 코드에 대한 기존 연구를 전혀 인용하지 않았고, 상당 부분이 언어모델로 작성된 것처럼 보임. 그리고 수많은 기본적인 불일치들이 결론의 신뢰성을 떨어뜨림. 예를 들어, K와 N에 따른 C값을 보여주는 그래프에서 x축은 K인가 N인가? 캡션에는 x축이 N(벡터 개수)라고 되어있지만, 이후엔 "매우 큰 공간"에서 C=0.2가 나왔다고 설명하고, 그래프에서는 N=30,000, K=2일 때만 C=0.2에 도달함—즉, 2차원 공간에 30,000개의 벡터가 있는 셈임! 반대로 x축이 K라면, 이 글은 30,000차원에 2개의 벡터로 측정된 결과를 12,888차원에 10의 200승 개 벡터의 경우로 외삽하고 있는데 이건 말이 안 됨. 사람들의 작업에 긍정적이고 우호적으로 접근하고 싶지만, 요즘 Hacker News의 LLM 작성글들의 홍수가 정말 압도적으로 많아지고 있음

    • 무언가가 LLM으로 생성됐다고 말하는 것은 입증도 불가능할 뿐더러, 단순히 "오류가 있다"고 지적하는 게 더 직접적이고 의미 있음. 실제로 오류를 지적해준 게 더 도움이 됨. 그 그림에서는 x축을 N으로 보는 게 맞을 것 같음

    • 내가 구 코드를 몰랐던 것을 보면, 이 분야 용어 자체가 꽤 생소하다고 느꼈음. 위키피디아조차 거의 모르는 것 같고, 구글 검색 결과도 결국은 32차원 미만에서 구 골프처럼 최적 패킹을 다루는 게 대부분임. 이렇게 이미 존재하는 수학이 비직관적인 전문용어 아래 숨어서 재발견되는 경우가 종종 있음

    • 맞음. 고차원 벡터 공간의 기하학적 특성이나 정보, 그리고 구 코드에 대해 더 잘 설명해주는 글이 뭔지 궁금함

    • 네가 언급한 그래프에서 K=2일 때 C=0.2에 도달하는 걸 볼 수 없음. K=3도 C=0.3까지만 가다가 중단됨. 그런데 이게 왜 문제라는 건지도 잘 모르겠음. 작성자는 N개의 기저 벡터를 K차원에 프로젝션하고, C는 N공간에서 K공간으로 매핑할 때의 오류 측정값 비슷한 것 같은데, 이 아이디어가 그래프와 불일치하는 이유가 있다면 더 자세히 듣고 싶음. 네 논지에서는 이 개념 자체를 다루지 않은 듯함

  • 저자는 모든 벡터가 완전히 직교하는 상황에만 너무 초점을 맞추고 있어서, 실제로 허용 가능한 오류 수준을 과대평가했다고 생각함. 실제로 중요한 것은 직교 벡터끼리 거의 직교하게 유지하는 것이 아니라, 직교와 멀리 떨어진 벡터 간에도 거리 순서(ordering)가 보장되는 것임. 에플실론이 훨씬 대단히 작아도 실제로는 문제가 생길 수 있음. 즉 “이 연구에서 제시된 바와 같이, 1,000~20,000차원 정도면 인간 지식과 추론을 모두 담기에 충분하다”는 주장은 지나치게 낙관적이라고 봄

    • 벡터들은 보통 n-구의 표면에 정규화되고, 실제로 결과에 의미있는 거리는 코사인 유사도임. 그래서 실전에서는 "거의 직교"가 중요함. 학습 중에는 의미 없는 표현들을 구 위에서 더 “직교”하게 만드는 것이 목표임. 실제 하드웨어로 구현할 때는 부동소수점 정밀도에도 제한이 있어서 이 방법이 특히 잘 통함. 참고로, 이 아이디어는 해당 블로그나 유튜브 영상이 처음 제안한 게 아님. AI나 최소한 신경망 학습에서 이 보조정리의 유의성은 10년 전쯤 C. Eliasmith가 이미 언급했고, GPT 같은 초고차원 지식 네트워크가 실전에서 학습 가능하기 훨씬 전부터 연구됨

    • OP 주장의 논리는 별로지만, 그래도 2만 차원 정도의 표현 능력에는 여전히 희망적임

    • 모든 벡터가 완전히 직교하거나 독립적이라고는 나도 생각하지 못함. 거리 측정, 곡선 공간(curvilinear space), 기울어진 좌표(skew coordinate)에 관해서도 볼만한 글이 있음: https://news.ycombinator.com/item?id=41873650. ‘특성 순서에 따라 거리 측정이 얼마나 달라지는가?’, ‘모든 직교 축의 순서가 바뀌면 알고리즘 출력도 달라지는가?’, ‘고차원 공간의 특성들이 정말 모두 90도 직교인지?’ 등 근본적인 질문이 있음. 만약 특성이 통계적으로 독립적이지 않다면, 실제로 완전 직교일 가능성은 없고, 독립이라고 가정한 거리 측정의 유용성에는 한계가 있을 수 있음. 나이브 베이즈, 선형회귀, 로지스틱 회귀, LDA, PCA 같은 선형 모델들은 비독립 특성하에 신뢰성이 떨어짐. L1 라쏘나 L2 릿지 정규화 같은 기법도 이상치나 비독립, 비직교 데이터에선 위험 요소가 있음. [완전 직교성]을 억지로 압축하기 어렵기 때문에 모델이 충분하다고 보긴 힘듦. 그리고 근본적으로 gbit에서 동시 인코딩이 가능한가 하는 물음도 있음

  • 글 대부분에서 풍기는 ChatGPT 느낌이 꽤 거슬리고 집중하기 어려웠음. 나도 영어를 다듬을 때 AI를 활용하지만, 톤이나 형식을 지나치게 바꾸지 말라는 요청을 줘서 그 정도는 피하려고 노력함. 그럼에도 이 수학적 관찰은 정말 흥미롭다고 생각함. 대형언어모델이나 다른 AI 시스템이 실제로 작동하는 방식을 들여다보게 해주는 근본적 시사점임. 고차원 데이터를 어떻게 저차원에 프로젝션하면서도 그 구조를 보존하는지 살펴보면, 이런 메커니즘이 효율성과 스케일 확장의 핵심이라는 걸 알 수 있음

    • 아이러니하게도 네 두 번째 문단에서 “fascinating”, “crucial”, “delving” 등의 표현과 문단 구조 때문에 바로 ChatGPT를 거친 듯한 느낌을 주고 있음

    • 어떤 부분에서 GPT 느낌이 강하게 들었는지 궁금함? 많이 나열하는 문체 때문인지?

  • 이런 직관적 이론과 존슨-린덴스트라우스(JL) 보조정리가 AI 안전 분야에서 SAEs(희소 오토인코더)와 같은 기계 해석 연구를 가능하게 해주는 핵심임. 이 중 많은 아이디어가 Anthropic이 2022년에 낸 논문에 잘 정리되어 있음: https://transformer-circuits.pub/2022/toy_model/index.html

    • 실제 논문은 어디서 볼 수 있는지, 어디에 출판됐는지 궁금함
  • 언어모델이 한 레이어의 C 차원에 “개념”들을 고정적으로 쑤셔넣는 게 아님(아마 12k라는 숫자가 그런 식으로 쓰인 듯). 벡터간 완전 직교도 없어도 개념을 구별해서 취급할 수 있음. LLM은 벡터 공간에서 개념 간의 거리만 멀게 만드는 것도 아니고, 의미들이 곳곳에 겹쳐 있음. 이런 특징이 바로 밀집 표현(dense representation)의 핵심임. 희소 오토인코더를 학습시키면 어떤 뉴런이 주제별로 활성화됐는지 확인할 수 있음. Neuronpedia가 이런 실제 모습을 잘 보여줌: https://www.neuronpedia.org/

    • 바로 그 희소 오토인코더 연구가 이 글에서 말하는 “거의 직교” 개념에 기반함. 원래는 ‘superposition 가설’로 불림: https://transformer-circuits.pub/2022/toy_model/index.html SAEs는 밀집된 벡터를 과다기저(Overcomplete) 공간에서 거의 직교에 가까운 희소 ‘개념’들로 분해하는 역할임. 이런 방법이 실제로 잘 작동하고, 심지어 서로 다른 LLM 간 임베딩 공간을 효율적으로 매칭하는 데도 써먹을 수 있음

    • 완벽한 직교의 조건을 느슨하게 잡으면, 훨씬 많은 정보를 넣을 수 있음. 본질적으로 추가적인 (분수 차원)의 정보를 기존 차원과 군집시키는 셈임. 달리 말하면 많은 개념들이 서로 완벽히 직교하지 않고, 어느 정도 겹침이나 상관관계를 가짐. 그래서 기사 내용에 대단히 파격적인 내용은 없음. 그리고 “remarkable”, “fascinating”, “profound” 같은 표현을 남발하는 게 다소 은근히 독자를 끌어들이는 LLM 느낌을 줌

  • 조금은 사소하지만 재미있는 점: 여러분도 이만큼의 공간에 수십억 개의 개념을 담을 수 있음. 벡터의 각 컴포넌트에서 4비트만 신경 쓴다고 해도, fp4로 12000차원 벡터는 6KB 정도이고, 이는 UTF-8 여러 페이지 분량 텍스트와 비슷함. 3K 토큰짜리 64K 임베딩 수준임. 이렇게 표현되는 ‘생각’의 경우의 수는 엄청나게 많음. 한 토큰을 처리할 때도 각 레이어가 60번 가량 이전 ‘생각’과 어텐션, FFN으로 학습된 데이터를 섞어냄. 그래서 이 전체 시스템이 복잡한 작업(예: Bash를 Python으로 변환, 단어 문제 풀기 등)을 해낼 수 있음. 물론 100% 공간효율적일 거라 기대하진 않음. 서로 다른 ‘강도’로 벡터를 합성할 때 잘 작동해야 하고, 학습은 항상 최고 효율의 압축을 찾는 방향으로만 수렴하진 않음. 결국 이론적 한계를 상한으로만 생각해도, 초고차원 벡터에 뭐든 실질적으로 ‘생각’이란 개념을 꽉꽉 채워넣을 수 있다는 새로운 감각을 줌

  • 내 직관은 훨씬 단순함 — 개념들이 어느 정도 계층구조를 이룬다는 가정 하에, 12000차원 공간에 몇 개의 개념이 들어가는지 대략적으로 계산할 수 있음. 각 개념이 어떤 차원에서는 다른 모든 개념과 적어도 한 축에서 직교한다고 본다면, 코사인 거리가 충분히 크지 않더라도 두 개념을 선형적으로 분리할 수 있는 함수가 보장된다는 뜻임. 이 경우 극한적으로는 12,000! 개념(팩토리얼)까지 가능해서, 웬만한 분류체계엔 공간이 너무 많음

    • 각 개념마다 차원에 대한 순서를 매칭해야 12,000! 개념을 구현할 수 있는데, 실제 모델은 차원 순서에 의미가 없음. 즉 [weight_1, weight_2,...]와 [weight_2, weight_1,...]는 모델 내에서 완전히 동일함. 실전에서 언어모델은 각 축에서 양수, 음수, 0 중 하나만 있다고 보면 3^12,000개 개념 수준임. 실제로는 대부분의 벡터에서 수십 개 축을 제외하고 거의 다 0임(학습 시간 제한 탓)

    • 그 숫자는 전 우주에 있는 원자 수(10^80)보다 엄청나게 큼(약 10^43741)

    • “코사인 거리가 크진 않다”는 점에서 이미 결정적 한계가 있음

  • 20Questions 게임 해봤다면 수십억 개념에 1000차원이 필요 없다는 걸 알 것임. 이런 거대한 벡터는 수십억 개념보다 훨씬 더 복잡한 정보까지 담을 수 있음. 실제로, 한 편의 시 전체와 오타 위치까지 이런 벡터가 표현하고 찾을 수 있음. GPT에 시를 붙여넣고 오타 위치를 묻는 경우처럼, 내부 레이어 어딘가에서 바로 그 정보를 구체적으로 구별할 수 있음

    • 실제로 그건 단순 벡터가 아니라 모델 전체가 해내는 일임. 모델 전체는 일종의 1조 차원 벡터처럼 행동함

    • 이진 벡터로 하면 20차원으로 100만 개 좀 넘는 개념 표현 가능. 30차원이면 10억 개 개념이 됨

  • 이미 많은 댓글에서 해당 기사에 여러 허점이 지적되었지만, 정말 기본적인 관찰 한 가지만 추가하고 싶음: 12k 차원에서 10^200개 개념을 담는다는 주장 자체가 너무 어처구니 없음. 12k 벡터 공간이 수많은 개별값을 담을 수 있는 건 맞지만, 그게 다 개념은 아님. 이런 주장은 터무니없음. 섀넌(Shannon)도 이 부분은 분명히 지적하고 싶어할 듯함

  • 핵심 오류는 현실적으로 수십억 개념이 존재하지 않는다는 것임. 인간이 사용하는 ‘개념’과 기계적 ‘인스턴스’나 ‘엔티티’는 엄연히 다름. 인스턴스는 무한히 많아도, 우리가 실제로 사고에 쓰는 추상적 개념 수는 훨씬 제한되어 있음