Hacker News 의견
  • 임베딩이 LLM 스택에서 거의 논의되지 않는 부분 중 하나인 점이 정말 놀라움, 직관적으로 네트워크가 의미적 연결을 추론할 수 있는 능력에 엄청난 영향을 미치는 부분이라고 생각했지만, 사람들은 그에 대해 별로 이야기하지 않음

    • 임베딩의 문제점은 모델 자체 말고는 거의 판독이 불가능함에 있음, 임베딩이 입력 시퀀스의 의미를 분명히 인코딩하지만, 학습 과정에서 그 정보가 너무 압축되어서 모델의 디코더 헤드만 해독이 가능해짐, Anthropic이 Sonnet 3의 내부 피처를 해석 가능한 형태로 만든 연구가 있는데, 이건 내부 레이어의 활성화를 해석하려고 별도의 네트워크를 병렬로 학습시켜야 해서 비용이 큼

    • 고차원 공간의 특이한 점은 대부분의 값이 서로 직교하고 아주 멀리 떨어져 있음, 그런데 차원 축소 기법으로 5만 차원에서도 개념들을 클러스터링할 수 있는 게 신기함

    • 처음 임베딩에 대해 깊게 배우면서 “LLMs의 마법 중 최소 3분의 1은 임베딩에서 나오는 것”이라는 생각을 함, 단어들이 이미 의미적으로 유용하게 배열되어 있다는 사실 자체가 LLMs의 신비를 약간 벗겨줌, 여전히 경이롭긴 하지만 커튼 뒤가 조금 보이는 느낌임

    • 임베딩이 컴퓨터가 인간 언어를 정량화할 수 있도록 해주는 일종의 “로제타 스톤” 같은 역할임, 이게 정말 중요한 이슈여야 한다고 생각하지만, 1,000차원 벡터 공간을 이해하려는 시도가 꽤 부담스럽다는 점도 인지함

    • 임베딩에 대한 논의가 부족하다는 의견이 잘 이해되지 않음, 특히 RAG 적용 예시나 벡터 DB 얘기에서 임베딩은 항상 핵심 주제로 다뤄짐

  • 튜토리얼이 매우 좋았음 — 컨텍스트 임베딩과 정적 임베딩의 차이가 중요함, 많은 사람이 word2vec(정적 임베딩)에 익숙하지만 컨텍스트 임베딩이 훨씬 더 강력한 경우가 많음, (참고로 페이지에서 스크롤만 해도 히스토리에 엄청난 기록이 추가되는 브라우저 히스토리 하이재킹이 심함)

  • 더 고급 설명이 필요하다고 생각하는 부분은, 임베딩 관점에서 Encoder-Decoder 트랜스포머(BERT)와 Decoder-only 제너레이티브 모델의 차이임

    • 작은 수정이 필요함: BERT는 인코더임(Encoder-Decoder 아님), ChatGPT는 디코더임, 인코더 모델(BERT)은 전체 문장을 다 볼 수 있어서 의미 표현에 유리함, 예컨대 “The bank was steep and muddy”에서 bank의 의미(강변인지 금융기관인지)를 문장 전체를 보고 판별할 수 있음, 반면 GPT류(디코더 모델)는 왼쪽에서 오른쪽 순서만 보기 때문에 문장 뒤 정보를 못 보고 예측함, 이에 대한 추가 자료는 huggingface의 modernBERT 포스트 참고 및 neoBERT 논문도 유익함

    • dust42의 설명을 덧붙이면, BERT는 인코더, GPT는 디코더, T5는 인코더-디코더임, 요즘 인코더-디코더는 덜 인기임, 인코더 모델은 분류, 정보 추출, 검색에 많이 쓰이고, 디코더는 텍스트 생성, 요약, 번역에 적합함, 최근 연구(Ettin 논문)에서도 이것이 확인됨, 둘 다 트랜스포머이므로 인코더를 디코더로 바꿀 수도 있고 그 반대도 가능함, 설계 차이는 양방향어텐션(모든 토큰이 모든 토큰을 볼 수 있음)과 오토리그레시브 어텐션(이전 토큰만 볼 수 있음)에 있음

  • 임베딩 프로젝터를 활용하면 50개 이상의 단어뿐 아니라 3D 데이터 시각화에 대한 감각도 기를 수 있음, Tensorflow Embedding Projector 참고 바람

  • 매우 훌륭한 비주얼 가이드임! 나도 비슷한 컨셉으로 딥러닝에 대한 깊은 이해를 돕는 비주얼+오디오+퀴즈 방식 LLM 임베딩 레슨을 app.vidyaarthi.ai에서 제작함, 직접 체험 링크, 추상적 개념을 더 직관적이고 상호작용적으로 만드는 “직접 해보면서 배우는” 접근법을 추구함, 피드백 환영임(자기 홍보는 아님, 정말 열정적으로 만든 도구임)

  • 접속이 잘 안되는 듯함, “Content-Security-Policy: The page’s settings blocked an inline style…”처럼 콘솔 오류 메시지가 잔뜩 뜸

  • 단어 클라우드 시각화나 쿼리 top-k 결과 보여주기가 더 직관적일 수 있다고 생각함, Tensorflow의 Embedding Projector에서 단어 입력 후 UMAP projection 선택해보길 추천함

  • 좀 더 실용적인 접근의 설명도 sgnt.ai의 임베딩 설명글에서 다룸, 직접 작성했음

    • 멋진 자료 감사함! 내가 이해한 바로는 LLM에 세 가지 큰 문제가 있음:

      1. LLM은 매우 고차원 벡터 공간을 저차원으로 줄임, 그런데 저차원 공간의 개별 축이 의미하는 바가 불분명하여, 정답 여부를 대부분 아웃풋에서만 확인 가능함, 이걸 해결하려는 연구가 궁금함
      2. LLM들은 이 축소 표상을 위해 텍스트 데이터를 사용함. 즉, 현실이 아니라, 현실에 대한 인간의 기록을 학습함, Keen Technologies는 이런 한계를 피하기 위해 실제 센서 달린 로봇 데이터를 사용하는데, 훨씬 느리지만 장기적으로 더 정확한 모델을 만들 수 있다고 봄
      3. LLM이 대화의 의미와 맥락 정보를 벡터 (내부 상태) 하나에 담기 때문에, 긴 대화에서는 반복적으로 그 벡터가 덮어써져서 초반 맥락이 점점 희미해짐, 이런 상태 관리를 벡터 백업 말고 다르게 할 방법이 있는지 궁금함
    • 당신의 접근이 훨씬 직관적임, 왜 범주형/스칼라 특성의 임베딩 예시를 안 보였는지 궁금했음

  • 아주 교육적이고 구조가 잘 잡힌 아티클임, 저자에게 감사함

    • 저자 프로필은 Huggingface에서 볼 수 있음, HN 운영진이 예전엔 반응이 별로라 재투고 추천, 이 글이 좋았던 이유는 다양한 임베딩 유형을 예시로 다루기 때문임
  • LLM의 임베딩은 보통 입력 레이어 일부로, Word2Vec 등 사전학습 모델과 달리 학습 중 업데이트됨,
    추가로 궁금한 점: 추론 단계에서 임베딩은 “토큰 ID -> 벡터” 형태의 룩업테이블인데,
    수학적으로 보면 토큰ID를 긴 원-핫벡터로 인코딩한 뒤, 선형 레이어를 통과시켜 임베딩 벡터를 얻는 식임,
    이 구조가 임베딩 학습에도 그대로 적용되는 건지, 즉 임베딩을 선형 레이어로 간주해서 역전파로 학습시키는 방식인지 궁금함

    • 임베딩도 일반 역전파 과정에 포함됨, 다만 효율성 때문에 원-핫 인코딩은 실제로 안 씀,
      선택된 벡터에만 그래디언트가 흐르도록 인덱싱을 미분 가능하게 구현함,
      구체 예시는 내가 만든 미니 딥러닝 라이브러리 SmallPebble 소스 참고하면 도움됨

    • 다른 코멘트를 좀 더 설명하자면,
      인덱싱과 원-핫 벡터 곱은 수학적으로 동일함,
      예를 들어 vocab이 N개, 시퀀스 길이 L이라면, NxL 희소 행렬을 임베딩 행렬에 곱해야 하는데,
      실제론 각 열 당 인덱스 하나만 알면 되므로, 내부적으로는 숫자 하나(인덱스)로 표현함,
      이 방식으로 순전파와 함께 역전파 역시 인덱싱 기준으로 별도로 작성해,
      선택된 임베딩 벡터로 그래디언트가 흐르도록 처리함