데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      임베딩 모델로 데이터 의미 압축하기

      Joy 25.01.13
      1,834 3 1
      DEVOTEE 요약
      회사 동료들과 함께 딥그라운드라는 스터디에서 LLM을 활용한 실전 AI 애플리케이션 개발에 대해 공부하고 있으며, 그 과정에서 임베딩 모델을 데이터로 압축하는 방법에 대해 연구했습니다. 이 연구에서는 텍스트를 숫자로 표현하는 다양한 기법들(원핫 인코딩, 백오브워즈, TF-IDF, 워드투벡 등)과 문장 임베딩을 통한 의미 검색 방식을 활용하여 더 효율적이고 의미 있는 데이터 표현을 구현하는 방법을 학습했습니다.
      DEVOTEE 추천 블로그

      안녕하세요, T멤버십서비스팀에서 백엔드 개발을 하고 있는 이연주입니다.


      studymate라는 좋은 기회로 회사동료분들과 함께 LLM 스터디를 진행하고 있고 스터디명은 딥그라운드입니다.

      딥그라운드에서 'LLM을 활용한 실전 AI 애플리케이션 개발' 이라는 책을 기준으로 좋은 동료분들과 같이 스터디를 진행하면서 LLM 관련 기본기를 다질 수 있었습니다.

      더나아가 스터디 시간에 실무에서 어떤 고민을 하시고 어떻게 적용하고 있는지를 공유하며 AI와 더욱 친숙해질 수 있었습니다.


      이번에 저는 10장, 임베딩 모델을 데이터로 압축하기를 맡게되어 정리한 내용을 공유드리고자 합니다.


      OVERVIEW

      AI 분야에서 텍스트를 숫자로 표현하기 위해 다양하게 연구되어 왔습니다.

      1. 텍스트를 숫자로 표현하는 방식

        • 원핫 인코딩

        • 백오브워즈(Bag of Words)

        • TF-IDF(Term Frequency-Inverse Document Frequency)

        • 워드투벡(word2bec)

      2. 텍스트와 텍스트 의미를 숫자(벡터)로 표현하는 방식

        • 문장 임베딩

          텍스트 의미를 포함하여 임베딩 벡터로 변환하여 벡터유사도를 통해 의미상 유사한 문서를 검색할 수 있게 되었습니다.

          대표적으로 sentene-transformers 라이브러리를 이용하여 의미 검색을 구현할 수 있습니다. 하지만 직접 문자열을 비교하는 키워드 검색 대비 검색관련도가 떨어지는 한계가 있습니다.

          하이브리드 검색은 키워드 검색과 의미 검색을 조합해서 사용하여 이러한 한계를 보완할 수 있습니다.

      3. 하이브리드 검색

        • BM25

        • RRF(Reciprocal Rank Fusion)

      설명하기 앞서 임베딩이란 단어를 정확히 알고 가야합니다.

      임베딩(embedding) 이 뭐에요?

      책에서는 데이터의 의미를 압축한 숫자배열(백터) 로 설명하고 있습니다

      즉, 고차원의 데이터를 저차원 벡터 공간으로 변환하여 데이터의 의미를 효과적으로 압축하는 기술입니다


      1. 텍스트를 숫자로 표현하는 방식

      1-1. 원핫 인코딩

      원핫 인코딩은 각 단어를 고유한 이진 벡터로 표현하는 방법
      • 벡터의 차원은 어휘 크기와 같고 해당 단어의 인덱스만 1이고 나머지는 0

        • 예: 학교 -> [1,0,0,0,0], 공부 -> [0,1,0,0,0]

      • 범주형 데이터 사이에 관계가 담기는 걸 방지하는 장점이자 단어 사이 관계를 표현할 수 없다는 한계 존재

      1-2. 백오브워즈(Bag of Words)

      단어의 순서 관계없이 특정문서에 단어 출현빈도만을 고려하는 텍스트 표현 방법
      • 문서를 단어의 출현 횟수로 이루어진 벡터로 표현

      • 문서의 특성을 간단하게 나타낼 수 있지만, 단어 순서와 문맥 정보를 잃는 한계

      1-3. TF-IDF(Term Frequency-Inverse Document Frequency)

      단어의 중요도를 계산하여 가중치를 부여하는 방법
      • TF(단어 빈도)와 IDF(역문서 빈도)를 곱하여 계산

      • 문서에서 흔한 단어는 가중치를 낮추고, 특정 문서에서 자주 등장하는 단어는 가중치 높임

      1-4. 워드투벡(word2bec)

      단어의 의미와 관계를 벡터 공간에 표현하는 방법
      • 주변 단어들의 분포를 이용해 단어의 의미 학습

      • 유사한 의미를 가진 단어들은 벡터 공간에서 가까이 위치하게 됨

      • 밀집임베딩 사용

        • 1-1~1-3 앞선 방식들에서 단어의 수만큼 차원이 커지는 한계를 해소하고자 데이터를 압축

        • 단어와 단어 사이의 관계를 판단 가능해짐

      • 모델 학습방식

        1. CBOW : 주변 단어로 중심 단어 예측

        2. Skip-gram : 중심 단어로 주변 단어 예측

          두가지 모델은 입력(input)과 출력(output)이 서로 반대되어 있습니다.

          image.png


      2. 텍스트와 텍스트 의미를 숫자(벡터)로 표현하는 방식

      단순히 단어에서 더 나아가 문장, 문단, 더 큰 텍스트 단위의 의미를 파악하고자 하는 방식이 연구되었습니다.

      문장을 임베딩 벡터로 변환하여 문장 사이 유사도를 계산하여 문장 의미를 확인하게 됩니다.

      문장 임베딩을 활용하여 전체 문장의 문맥을 고려할 수 있게되어 더 정확한 의미 표현이 가능하게 되었습니다.

      2-1 문장사이 관계를 계산하는 방법

      BERT 모델은 입력 문장을 문장 임베딩으로 변환하는 데 사용되는 강력한 도구입니다.

      문장 사이의 관계를 계산하는 데 있어 BERT를 활용한 두 가지 주요 접근 방식이 있습니다.

      교차인코더(Cross-encoder) 기반 모델과 바이인코더(Bi-encoder)입니다.

      교차인코더(cross-encoder) 기반 BERT 모델

      두 문장을 동시에 처리하여 관계 파악. 두 문장 A와 B를 하나의 입력으로 결합하여 BERT에 전달. 모델은 두 문장 사이의 관계를 직접적으로 학습하고 평가
      • 문장이 변형되지 않은 상태에서 비교하기 때문에 정보 손실 없이 문장 간 관계를 파악하는 성능이 우수

      • 바이인코더보다 더 높은 정확도를 제공하여 문장 쌍 간의 복잡한 상호작용을 더 잘 포착가능

      • 비교해야 하는 문장수가 많아질수록 계산 비용이 높아 대규모 데이터셋에서는 비효율

      • 사전 정의된 소수의 문장 쌍을 비교하는 데 적합

      바이인코더(bi-encoder) 기반 BERT 모델

      각 문장을 독립적으로 처리하여 임베딩을 생성. 두 문장 A와 B를 각각 BERT에 독립적으로 입력하여 개별 임베딩 벡터를 생성. 생성된 임베딩 벡터들은 코사인 유사도와 같은 방법으로 비교됨
      • 빠른 연산속도로 계산 효율성이 높아 대규모 데이터셋에 적합

      • 실시간 검색이나 대량의 문장 비교가 필요한 경우에 유용

      • Embedding 과정에서 정보손실이 발생가능 및 문장 간 직접적인 상호작용을 고려하지 않아 정확도가 다소 낮을 있다는 한계

        image.png

      바이인코더(bi-encoder) 기반 BERT 모델 구조
      • 단계

        1. 두 문장을 비교하기 위해 개별 문장의 Embedding 생성

        2. 모델 Output을 Pooling 하여 Sentence Embedding 생성

        3. 코사인유도를 통해 문장과 문장 간 관계 비교

      • 풀링모드: 언어 모델 출력 결과 임베딩을 고정된 크기의 문장임베딩으로 통합

        • 클래스모드

        • 평균모드

        • 최대모드


      3. 의미검색

      밀집 임베딩을 이용하여 문장이나 문서의 의미를 고려한 검색
      • 책에서는 faiss 라이브러리로 임베딩 벡터 거리를 계산하여 가까운 임베딩을 찾는 방식으로 구현


      인덱스

      인덱스 유형으로 RDB에서 지원하고 있습니다.

      • 대표 인덱스

        • KNN 알고리즘 사용 인덱스

        • ANN 알고리즘 사용 인덱스

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      Joy 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기