안녕하세요 :)
오늘은 재밌는 실험을 해보았습니다.
최근 AI를 공부하면서 임베딩에 관심이 생겼습니다.
여기서 임베딩이란 어떤 문자나 사진 영상을 인공지능이 나름의 기준으로 해석해 벡터로 표현하는 것을 의미합니다.
예를 들어 "Love"라는 글자를 읽으면, 아래와 같이 무수히 많은 벡터로 변형하게 됩니다.
[1.2472897123532, -2.1258931740124, 0.02148483, ...]
이 숫자가 무엇을 의미하는지 그리고 왜 이렇게 만들었는지는 그 누구도 알지 못합니다. 말로만 듣던 인공지능의 블랙박스인 것이죠.
따라서 인공지능 A 모델이 임베딩한 벡터는 다른 인공지능이 이해할 수 없습니다. 오로지 같은 모델만이 위의 벡터를 읽고 의미가 "Love"인 것을 알게 됩니다.
여기서 재미있는 생각이 하나 떠올랐습니다. 비록 벡터의 의미를 알 수는 없지만, 다른 벡터와의 관계를 통해 어렴풋이 인공지능의 머릿속을 들여다볼 수 있지 않을까요?

방법은 아래와 같습니다.
1. 회사와 관련된 뉴스기사 데이터를 인공지능으로 임베딩 시킨다.
2. 임베딩 된 데이터를 벡터 DB에 저장한다.
3. 저장된 벡터 DB를 차원축소 시킨다.
4. 차원축소된 데이터를 3차원으로 구현한다.
임베딩 인공지능 모델은 구글의 "Gemini"
벡터 DB는 "Chroma DB"
차원축소 로직은 "ml-pca"
3차원 구현은 "Three.js"를 이용했습니다.
그리고 아래는 결과물입니다.
사실 차원축소 과정에 데이터 손실이 발생하기 때문에 위의 맵이 정확하게 뉴스기사에 대한 Gemini의 생각을 표현한다고 할 수 없습니다. 다만 흥미로웠던 점은 같은 회사에 대한 뉴스 주제는 가까운 공간에 위치하는 점을 확인할 수 있었습니다. 즉, 인공지능이 다량의 뉴스 기사를 읽었을때 같은 회사에 대한 내용을 구분한다는 것을 시각적으로 확인 할 수 있습니다.
'Canvas > Three.js' 카테고리의 다른 글
[Three] Curious about the mind of AI (0) | 2024.01.19 |
---|---|
[Three.js] requestAnimationFrame 사용시 브라우저별 속도 일정하게 맞추기 (2) | 2023.10.06 |
[Three.js] 텍스처가 깜빡이는 문제 (0) | 2023.08.18 |
[Three.js] renderer와 scene 백그라운드 차이 (0) | 2023.06.07 |