양우석

양우석님의 아티클

양우석

양우석

(2) AI는 처음인데, GPT로 카페 추천 서비스를 만들 수 있을까?

AI와 관련된 지식이 거의 전무한 상태.

ChatGPT API로 추천 시스템을 구현하는 정보들을 접하고는 프로그래밍은 익숙하니까 빠르게 만들고 싶다는 마음에 바로 예시를 따라 진행을 했었어요.

순조롭게 진행되는 듯 했지만 특정 부분을 응용하는 부분의 코드가 있을 때 막혔고 삽질을 계속하며 진행이 안됐었네요. 결국 이 문제를 해결해려면 역시나 최소한 기초적인 용어와 구조에 대한 이해가 필요하다고 느꼈고 기본이 중요하다는 걸 다시 한번 생각하게 됐네요.

OpenAI 공식 문서를 처음부터 천천히 읽어나갔어요. 그러다보니 설명과 예시가 정말 잘 되어있는데, 왜 이걸 볼 생각을 안 했는지… 하나씩 따라해 보았습니다.

Hello ChatGPT

시작은 개발하면 처음 hello world를 해보듯 chatgpt에게 인사를 건내봅니다. API 연결이 잘 됐네요.

image.png

😏

Fine-tuning

파인튜닝에 대해서 잘 와닿지 않았었는데, 좀 찾다보니 그제서야 조금씩 이해가 되네요.

  • OpenAI 에서는 “to customize a model for your application.”

  • 구글로 검색해보니 “특정 도메인이나 작업에 맞게 조정하여 보다 정확하고 관련성 높은 출력을 생성할 수 있도록 하는 것”

  • ChatGPT는 GPT-3.5 모델 중 하나로 fine-tuned 된 것이라고 합니다.

  • 스님 AI를 만들고 싶다면 팔만대장경을 학습시켜서 불교 도메인에 특화된 모델을 만들 수도 있다는 것.

⇒ 카페 추천 AI를 만들고 싶다면 관련 데이터들을 학습시켜 카페 도메인에 특화된 모델을 만들 수 있을 것

검색 중에 nodejs 예제를 찾을 수 있어서 편하게 테스트 해볼 수 있었습니다. 다만 1000개 정도의 데이터를 학습시켜서 해볼려했는데, 생각보다 시간이 많이 걸려서 취소했네요.

(예제 링크)

예제로 학습한 model에게 “What is Lens Protocol”로 질문한 결과

image.png

*** 공식사이트에서 확인해보니 파인튜닝을 곧 GPT4에서도 할 수 있게 될 것 같네요. 굿굿***

2023년 7월 6일에 ada, babbage, curie, davinci 모델의 사용 중단을 발표했습니다. 미세 조정 버전을 포함한 이러한 모델은 2024년 1월 4일에 사용 중지됩니다. 업그레이드된 기본 GPT-3 모델과 GPT-3.5 터보 및 GPT-4에 대한 미세 조정을 활성화하기 위해 적극적으로 노력하고 있으며, 곧 사용 중단될 모델을 기반으로 미세 조정을 수행하기보다는 새로운 옵션이 제공될 때까지 기다리시기 바랍니다.

Embedding

임베딩에 대해서 처음 듣고는 embedded 시스템과 관련된 건가?라는 생각을 했었어요. 완전 모르고 있었던 것이죠. 알고보니 문자열 같은 자연어를 기계가 이해할 수 있도록 숫자 형태의 vector로 바꾸는 것이었어요.

  • OpenAI의 텍스트 임베딩은 텍스트 문자열의 연관성을 측정하는 것.

  • 임베딩은 부동 소수점 숫자의 벡터(목록)이며, 두 벡터 사이의 거리는 두 벡터의 관련성을 측정. 거리가 작으면 관련성이 높고, 거리가 크면 관련성이 낮음.

  • 이 거리는 주로 코사인 유사도(cosine similarity)라는 것을 사용.

  • 검색, 추천, 분류하기 등에 사용됨

⇒ 뭔 말인지 처음엔 이해가 안 갔으나 여러번 읽고 코드로 두드려보면서 이해했네요. 😂

검색 (semantic text search using embedding)

  • 일하기 좋은 카페

  • 강남 스패셜티 커피

  • 성수동 시그니처 음료

embedding을 이용한 검색은 위와 같은 예시처럼 input을 넣으면 헤당 검색어와 가장 관런된 데이터를 비교해서 찾아올 수 있다는 것이네요.

OpenAI 문서 Embedding의 Use Case 중에서 Text search using embeddings을 참고 했었고 데이터는 해당 샘플과는 다른 영화 데이터를 사용해봤습니다. ****

아래는 영화 샘플 데이터 1000개 사용하였고, "Are there any movies about heros?” 라고 질문을 던졌을 때 응답입니다.

image.png

예상하는 데이터가 맞는지 다 읽어보고 확인 해봐야하는데, Hero, Action, Fantasy, Adventure 등의 단어를 대략 확인하고 잘 나왔을거라 예상했습니다. 일단 잘 돌아가니 카페 데이터로 확인해볼 때 좀 더 많이 테스트 해보려 합니다.

추천 recommandation

  • 특정 게시물

  • 제품 상세페이지

  • 리뷰

예를들어 특정 게시물을 클릭해서 보고있는데 다 본 후 유사한 게시물 3개정도 알려주고 싶을 때, embedding을 사용해서 유사도를 통해 거리(Distance)를 구함으로서 추천해줄 수 있네요.

OpenAI 문서의 Embedding Use Case 중에서 Recommendations using embeddings을 참고했었고 데이터는 해당 샘플과는 다른 영화 데이터를 사용해봤습니다.

아래는 영화 데이터 중 토이스토리(Toy Story)의 제목(title) + 장르(genres) + 개요(overview)를 embedding 한 것을 다른 영화 데이터들과 유사도를 비교한 후 거리(Distance)가 가까운 순으로 출력되게 했습니다.

비교할 대상 (제목: 토이 스토리 / 장르: 애니메이션 코미디 패밀리)

image.png

추천 순 나열 (Distance 작을 수록 유사함)

  1. 애니메이션 가족 / 피노키오 / Distance: 0.151

  2. 애니메이션 가족 판타지 / 피노키오의 모험 / Distance: 0.156

  3. 모험 가족 판타지 / 찬장 속의 인디언 / Distance: 0.164

  4. 드라마 범죄 / 악의 / Distance: 0.166

  5. 애니메이션 코미디 드라마 / 스페이스 잼 / Distance: 0.168

image.png

1번이 가장 비슷한 것 같고, 2, 3까지는 괜찮은데 4번은 좀 아닌 것 같군요.

그래도 괜찮은 결과인 것 같습니다.

이전에 추천 시스템을 만들어 본적이 없어서 semantic search와 recommandation 부분이 무슨 차이인지 헤깔렸어요. 근데 fine-tuning, sematic search, recomandation 예제들을 사용해보면서 어느정도 명확하게 구분할 수 있게 되었네요.

다음번에는 약 200개 정도의 카페 데이터를 모은 걸로 태그 라벨링을 구성하여서 fine-tuning, sematic search, recomandation 등을 테스트 해보려고 합니다.

혹시 구글이나 네이버 지도 등에서 검색하여 찾고싶은 카페가 있으셨다면 댓글 남겨주주세요. 테스트 해보고 결과도 알려드리겠습니다. (데이터는 얼마 없지만요…)

어떤카페

당신이 원하는 완벽한 카페를 찾아주는 AI 카페 맵

5
2
양우석

양우석

AI는 처음인데, GPT로 카페 추천 서비스를 만들 수 있을까?

불과 몇 달 전까지만 해도 GPT가 나왔다고 여기저기서 시끌벅적 했을 때도 별로 관심이 있는 편이 아니었어요.

그러다 팀원 보민님이 보내주신 링크를 통해 우연히 디스콰이엇에서 스님AI 관련 글을 보고 직접 경험해보고는 꽤나 신기하다고 처음 느꼈던 것 같습니다. 해당 게시물을 참고해서 비슷한 결과를 내는 prompt를 처음 만들어 봤었어요.

이 후 업무에 GPT를 사용해서 코딩 관련 문제를 해결하는 케이스가 생겼는데 그 때 정말 가능성이 무궁무진하다는 걸 조금이나마 몸소 경험했던것 같아요.

저보다 먼저 GPT를 애용하기 시작하신 보민님이 적극적으로 GPT로 카페 추천 시스템을 개발하는 것에 대해 ChatGPT에 질문을 던저보았고, 그 응답들을 정리해서 공유해주셨어요. (하지만 혼란이 더 가중됬다는 함정)

카페 추천 서비스의 가능성을 확인해보기 위해서 차근차근 GPT에 대해 알아보기 시작했습니다.

  1. ChatGPT로 뭘 할 수 있는걸까?

  2. GPT로 카페추천 서비스를 만들 수 있을까?

  3. 높은 확률로 가능할 거 같은?

  • ChatGPT로 뭘 할 수 있는걸까?

구글에 ChatGPT를 검색헀다가 나무위키를 읽어보았는데, 쭉 읽다보니 대략적으로 활용이나 한계에 대해서 이해가 쏙쏙 되어서 도움이 많이 됐어요.

그러다 우연히 ChatGPT가 인물, 장소, 사건에 대해서 부정확한 정보가 나오기 쉬운 구체적인 정보를 제공한다는 걸 발견했네요.

image.png

ChatGPT로 사용해본 결과 부정확한 정보를 구체적으로 제공한다는 것에 동의가 되더군요. 아래 ChatGPT에게 물어본 이미지 캡쳐에도 있듯이 이름이나 주소정보가 모두 부정확했거든요.

image.png

이전에 보민님과 작업을 같이 할겸 서울역에서 만날 일이 있었는데, 보민님은 개인 카페를 2개 정도 미리 찾아오셨다고 하셨고, 작업하기 좋은 공간 외에 다른 개인 취향에 맞춘 카페를 찾느라 한 시간 이상이 걸렸다고 하셨어요.

카페 두 곳 모두 찾아갔다가 더 괜찮은 한 곳을 정해서 작업을 시작했는데, WIFI가 제대로 작동이 안되서 애를 먹었고 결국 모바일 핫스팟을 사용하면서 작업을 했었네요. 그 다음 갔던 이디야 커피마저도 WIFI 연결은 되는데 작동이 제대로 안되서 또 핫스팟을 쓰면서 작업을 했었구요.

스타벅스를 찾게되는 이유가 있나봅니다.

  • GPT로 카페추천 서비스를 만들 수 있을까?

GPT에게 “GPT 4.0 모델을 사용하여 위치 기반의 실시간 개인화 카페 정보 검색을 제공하고자 합니다………” 같은 형식으로 질문을 했었어요. 근데 너무 복잡하고 시간과 비용이 많이 들어가는 방식을 알려줬기에 질문을 바꿔봤습니다.

“GPT4 모델과 fine-tuning을 사용하여 최소한의 데이터셋과 최소한의 전문지식과 경험으로 구현해보고 싶은데……” 라는 식으로 질문을 하니 전부 이해되진 않지만 그래도 괜찮은 답변을 받게 됐어요.

image.png

또 다른 질문에서는 Finetuning에 대한 최소 데이터셋 샘플이 수백개에서 수천개는 되어야 한다는 답변을 받았네요.

  • 높은 확률로 가능할 거 같은?

막상 구글로 ChatGPT와 추천 시스템에 대한 걸로 검색을 하니 많은 내용들이 나왔어요. OpenAI 공식 사이트에도 예제 샘플들이 있었구요. 디콰에서도 GPT와 관련한 좋은 정보들을 확인할 수 있었어요.

다만 전문영역이 아니다보니 용어들에 대한 이해와 데이터 관련 쪽은 예시들이 대부분 python 코드 위주라 python 개발자가 아닌 저에겐 삽질의 진입장벽이 좀 많이 예상됩니다.

(OpenAI ChatGPT 추천 시스템 예시 링크)

정보들은 널려있으니 이젠 진행 중 막히는 부분들을 하나씩 배워가면서 API를 다뤄봐야 겠네요.

추천 시스템 구현 어려울거 같은…😅

9
5
양우석

양우석

개인 취향에 맞는 카페 추천 서비스 시작

안녕하세요. 지난년도부터 음료, 커피, 카페라는 소재로 @이보민 님과 서비스를 개발해왔어요.

그리고 이번에 카페 추천 서비스를 만들어 보기로 하면서 이전과 내용 구성에 있어 이질감이 많아서 홈 페이지 구성을 변경해야 할 필요가 생겼어요.

기존 홈페이지

gpt (2).png

변경 할 사항들

  • 내용 구성할 문구들 받아서 적절히 가공하기

  • 디자인 벤치마킹 및 사이트 레이아웃 일부 수정

  • 카페 추천 tally 링크 달기 및 채널톡 넣기

수정 시작

  • 내용 구성할 문구들 받아서 적절히 가공하기

image.png

보민님이 변경될 공식사이트 내용을 전달해주셨어요.

피그마에서 레이아웃 구성을 대략 나눠보았는데, 개인적인 생각으론 내용이 좀 많다고 생각이 되어 카페 추천 부분에 중점을 두어서 핵심 내용과 이미지들이 전달되도록 구성하고 싶었어요.

하지만 보민님과 의논해본 결과 카페 등록 부분의 내용도 카페 사장님들과의 대화를 위해 필요하다고 생각되어 일단 같이 넣기로 했어요.

내용을 가독성 좋게 살짝 재구성하고 네이버 맞춤법 검사기로 확인 후 복붙을 해줬습니다.

  • 디자인 벤치마킹 및 사이트 레이아웃 일부 수정

image.png

개발은 익숙하지만 디자인은 잼병이라 화면을 만들 때는 항상 다른 서비스들의 디자인을 참고해서 개발했어요.

이전에 softr라는 노코드 툴을 몇 번 썼었는데, 랜딩페이지가 참 깔끔하다는 생각이 들어서 이걸 벤치마킹하여 레이아웃과 디자인을 구성하기로 결정합니다. (softr basic plan 월 비용이 5만원대로 올라서 사용 취소 ㄷㄷ)

  • 카페 추천 tally 링크 달기 및 채널톡 넣기

image.png

보민님이 tally로 레터 템플릿을 구성하여 링크를 보내주셨구 사이트 상단의 카페 추천 버튼과 컨텐츠 내부의 추천받기 버튼에 연결 시켰어요.

나머지 버튼을 눌러도 아무 작동이 없는 버튼들은 '준비 중입니다.'라는 alert를 띠우게 해줬네요.

image.png

마지막으루 채널톡을 추가해주었네요. 이전에는 카톡 채널 링크를 달았었지만 채널톡으로 카톡도 같이 연동이되다보니 같이 사용해보기로 했어요.

채널톡은 한번 구성해본적이 있어서 요부분도 비교적 빨리 했네요.

현재 홈페이지 완료

  • PC

image.png
  • Mobile

drinkdepth.com_(Samsung Galaxy S8+).png

노코드 툴로 했으면 정말 별로 안걸렸을텐데, 직접하니 반응형도 고려해야되구 역시나 시간이 많이 걸리네요. 주말이 후딱 지나갔었습니다.

To Be Continued.

흠...카페 추천 AI는 어떻게 개발해야하나;;;

어떤카페

당신이 원하는 완벽한 카페를 찾아주는 AI 카페 맵

10
1
양우석

양우석

반갑습니다~

안녕하세요. "드링크뎁스"라는 팀에서 현재 개발을 맡고 있는 양우석입니다.

팀원의 추천으로 디스콰이엇을 둘러보았는데, 많은 훌륭한 분들이 소통하며 정보를 공유하는 것을 보며 가입도 하게됐네요.

앞으로 메이커 로그를 남겨보면서 커뮤니티에 조금씩 스며들어 보려고 합니다.

어떤카페

당신이 원하는 완벽한 카페를 찾아주는 AI 카페 맵

7
1