"컴크리트유토피아"의 두 판 사이의 차이
(→향후계획) |
(→이론적 계산 및 시뮬레이션) |
||
229번째 줄: | 229번째 줄: | ||
:* 질문 생성은 사용자에게 독서 후 스크랩과 메모를 입력으로 받고, GPT prompt tuning을 통해 깊이 있는 독후 활동을 돕는 질문을 생성한다. 또한 사용자의 답변을 받아 같은 프롬프트 튜닝을 통해 재질문을 생성한다. <br> | :* 질문 생성은 사용자에게 독서 후 스크랩과 메모를 입력으로 받고, GPT prompt tuning을 통해 깊이 있는 독후 활동을 돕는 질문을 생성한다. 또한 사용자의 답변을 받아 같은 프롬프트 튜닝을 통해 재질문을 생성한다. <br> | ||
◇ 다채로운 질문 생성<br> | ◇ 다채로운 질문 생성<br> | ||
+ | [[파일:질문생성1.jpg|400픽셀]] | ||
:*위와 같은 방법을 그대로 적용하면 특정 스크랩에 치우친 질문이 생성되는 경향이 있다. | :*위와 같은 방법을 그대로 적용하면 특정 스크랩에 치우친 질문이 생성되는 경향이 있다. | ||
:* 그렇게 되면 사용자는 동일한 질문을 반복적으로 받게 되므로 사용성이 떨어진다. | :* 그렇게 되면 사용자는 동일한 질문을 반복적으로 받게 되므로 사용성이 떨어진다. | ||
:* 스크랩과 질문간의 cosine 유사도 벡터를 질문 각각에 구하고(아래의 왼쪽 그림) 이 벡터를 Max-uniformity 척도에 적용하여 각 질문의 가장 유사한 스크랩이 서로 다르도록 하며 KL-Divergence 척도를 활용하여 각 질문의 스크랩의 유사도의 분포가 다양하도록 알고리즘을 구성한다. | :* 스크랩과 질문간의 cosine 유사도 벡터를 질문 각각에 구하고(아래의 왼쪽 그림) 이 벡터를 Max-uniformity 척도에 적용하여 각 질문의 가장 유사한 스크랩이 서로 다르도록 하며 KL-Divergence 척도를 활용하여 각 질문의 스크랩의 유사도의 분포가 다양하도록 알고리즘을 구성한다. | ||
<br> | <br> | ||
− | ◇ Question & Answer Vector의 Entropy | + | ◇ Question & Answer Vector의 Entropy<br> |
+ | [[파일:질문생성2.jpg|400픽셀]] | ||
:* 재질문을 생성할 때 1) 이전 질문과 유사한 재질문, 2) 사용자의 답변과 무관한 재질문이 생성된다는 문제점이 발생한다. | :* 재질문을 생성할 때 1) 이전 질문과 유사한 재질문, 2) 사용자의 답변과 무관한 재질문이 생성된다는 문제점이 발생한다. | ||
:* 이렇게 되면 사용자는 중복된 질문에 답변하는 번거로움이 발생하며 사용자의 답변과 연계하여 깊이있는 생각이 불가하다. | :* 이렇게 되면 사용자는 중복된 질문에 답변하는 번거로움이 발생하며 사용자의 답변과 연계하여 깊이있는 생각이 불가하다. |
2023년 12월 20일 (수) 23:27 판
프로젝트 개요
기술개발 과제
국문 : 책일기 (독서기록 및 도서 추천 서비스)
영문 : GPT & Stable Diffusion-based Post-Reading Activity services
과제 팀명
컴크리트유토피아
지도교수
정형구 교수님
개발기간
2023년 9월 ~ 2023년 12월 (총 4개월)
구성원 소개
서울시립대학교 컴퓨터과학부 20189200** 이*수(팀장)
서울시립대학교 컴퓨터과학부 20189200** 배*윤
서울시립대학교 컴퓨터과학부 20199200** 전*균
서울시립대학교 통계학과 20185800** 이*윤
서론
개발 과제의 개요
개발 과제 요약
내용 GPT 및 Stable Diffusion을 활용한 독후 활동 생성 서비스를 제안한다.
- 사용자가 남긴 스크랩으로 독서 관련 질문 생성 및 재생성한다.
- 사용자가 남긴 스크랩으로 독서 관련 이미지를 생성한다.
개발 과제의 배경
- 최근 대중들의 문해력 부족이 사회적으로 큰 화두로 떠올랐다.(그림1 참고) 이를 타개하기 위한 방법으로 독서 활동이 언급되고 있지만, 최근 국내 독서율 및 독서량은 지속적으로 낮아지고 있다.
- 이에 ‘리더스’, ‘북모리’와 같은 서비스들이 제공되었으나 깊고 풍부한 독서 경험 제공에는 한계가 있다.
개발 과제의 목표 및 내용
내용
- GPT 기반 독후 질문 생성 모델 개발
- Diffusion 기반 이미지 생성 모델 개발
- 서비스를 실제 체험할 수 있는 애플리케이션 개발
관련 기술의 현황
관련 기술의 현황 및 분석(State of art)
- 전 세계적인 기술현황
GPT
- GPT(Generative Pre-Training Transformer)는 Transformer Decoder를 확장시킨 모델이다. GPT를 글 생성 및 요약, 질문 생성 등의 다양한 분야에서 최대한 활용하기 위해 프롬프트 튜닝이 필요하다. 프롬프트 튜닝은 Fine-tuning과 다르게 모델의 가중치를 모두 변경하지 않아 효율적이다.
Stable Diffusion
- Stable diffusion은 Latent Diffusion 모델의 일종으로 Text Encoder를 사용하여 Conditioning을 걸어줄 수 있다. 잠재 이미지 배열은 초기에는 랜덤 배열로 초기화되는데, 텍스트 인코딩과 함께 노이즈를 제거하는 여러 번의 확산 과정을 거친다. 반복 이후 정보가 추가된 잠재 이미지 배열은 이미지 디코더를 통해 텍스트의 문맥을 반영한 고해상도의 이미지를 생성한다.
- 특허조사 및 특허 전략 분석
AI 기반 도서 추천 시스템
- AI-based book recommendation system
- 출원번호/일자 : 1020210175023 (2021.12.08.)
인공지능 독서 플랫폼
- ARTIFICIAL INTELLIGENCE READING PLATFORM
- 출원번호/일자 : 1020200107697 (2020.08.26)
- 기술 로드맵
시장상황에 대한 분석
- 경쟁제품 조사 비교
- 마케팅 전략 제시
- ◇ 매년 전자책 독서율은 증가하는 추세이며 출판 산업의 매출액은 7조 8000억[4] 이상으로 파이가 큰 시장이다.(왼쪽 그림)
- ◇ 그러나 넷플릭스, 유튜브와 같은 자극적인 OTT 서비스로 젊은 독자층이 유출되고 있다.
- ◇ 이에 이번 프로젝트의 타겟층은 2~30대로 독후감을 작성하는 재미를 느끼며 독서에서만 얻을 수 있는 깊은 위로와 사유의 기회를 얻을 수 있도록 한다.
- ◇ AI기술을 결합한 Readiary 앱(오른쪽 그림)을 개발한다.
- ◇ 이는 이미지 생성을 통한 시각화 전략과, 문답 전략[1]을 통해 도서에 대한 깊이있는 고찰과 지속가능한 독서활동을 가능케할 것이라 기대한다.
개발과제의 기대효과
기술적 기대효과
◇ GPT 기술을 활용하여 실제 사람이 질문 한 것처럼 자연스러운 질문 생성이 가능하다.
◇ 또한 사용자의 답변을 연계한 재질문이 가능하다.
◇ 이미지 생성 역시 Diffusion 모델을 활용하여 문맥에 맞는 자연스러운 이미지 생성이 가능하다.
◇ 또한 책의 분위기에 맞는 원하는 스타일을 입히는 것이 가능하다.
경제적, 사회적 기대 및 파급효과
◇ 기존의 독서 앱과 달리 개인화된 질문 생성은 사용자의 서평 작성을 도우며 생성된 그림은 시각자료를 제공하므로 즐거운 독서 경험을 제공한다. 또한 결과물을 공유하여 독서 커뮤니티 활성화에 효과적이다.
◇ 우리가 제시하는 방법은 독서 활동에 상상력과 재미를 부여하는 것이다. 이미지 생성으로 독후 활동에 시각적인 흥미를 주고 독서 경험을 돕는 질문들을 생성하여 풍부한 독서 경험을 제공하므로 젊은 층의 관심을 사로잡을 수 있고 독서율 증진에 효과를 줄 것이다.
◇ 과거 발표된 논문[1]을 보면, 질문 생성 전략 및 시각화 전략의 효과가 독서에 얼마나 긍정적인 영향을 주는 지 연구된 바가 있다. 우리의 어플리케이션은 대중들의 독서율 증진과 지속가능한 독서에 효과적으로 기여할 수 있다.
기술개발 일정 및 추진체계
개발 일정
구성원 및 추진체계
◇ 배세윤
질문 생성 모델 개발 질문 생성 관련 알고리즘 실험 배포용 함수 제작 논문 초안 작성
◇ 이경윤
이미지 생성 모델 개발 이미지 생성 관련 알고리즘 실험 람다함수 배포 논문 검토 및 수정
◇ 이진수
데이터베이스 설계 API 설계 및 제작 서버 배포 논문 검토 및 수정
◇ 전호균
사용자 인터페이스 설계 프런트엔드 시스템 설계 및 개발 프런트 엔드 서버 베포 논문 검토 및 수정
설계
설계사양
제품의 요구사항
◇ R1: 독서 기록 아카이빙
◇ R2: 시각자료 제시
◇ R3: 도서에 대한 깊이있는 고찰
설계 사양
◇ F1: 내 서재 기능 구현
◇ F2: 스크랩 -> 이미지 기능 구현
◇ F3: 스크랩 -> 질문 기능 구현
개념설계안
- Figma 를 활용하여 UI 프로토타입을 설계하였다. 이 작업을 통해 어떤 기능이 필요할지를 구체화하였으며, 또한 시각적인 자료를 만듦으로써 이후 개발 과정을 더 계획적으로 진행하였다.
- DataGrip 툴을 사용하여 ERD 제작
- 5개의 테이블을 사용하여 애플리케이션 운영
- DB에 직접 SQL문을 사용하지 않고 JPA를 사용하여 CRUD를 수행
- 프런트엔드 시스템, 백엔드 시스템, AI 서비스 시스템, 데이터베이스 시스템 등 여러 하위 시스템들을 통합하여 하나의 완전한 서비스를 구성. 위는 이를 모식적으로 나타낸 것이다.
이러한 구성에선 아래의 장점을 가진다.
유지보수성: 서버를 분리하여 어디 부분에서 어떤 문제가 발생했는지 확인 용이하다.
유연성: 트래픽이 몰리는 서버 부분만 확장 가능하다.
이식성: 도커를 사용하여 컨테이너 환경을 구축함으로써 다양한 서버에서도 모두 동일한 환경에서 운영 가능하다.
확장성: 컨테이너를 사용함에 따라 쉽게 확장 및 축소 가능하다.
효율성: 자동 문서화를 통해 Human Error를 감소시키고 모든 배포 과정을 자동화 하여 수정사항이 생기더라도 짧은 주기로 고객에게 서비스 제공한다.
이론적 계산 및 시뮬레이션
이미지 생성 연구
◇ 이미지 생성 성능 측정
- Stable Diffusion, DALLE, Parti 등 이미지 생성 논문들을 찾아본 결과 사람이 판단하는 질적 평가, 메트릭을 사용하는 양적 평가 방식이 모두 쓰이고 있다.
- 하지만 양적 평가 방식 특유의 한계점으로 질적 평가를 뒷받침하는 뉘앙스로 사용되고 있다.
- 질적 평가의 경우 위의 세가지 요소 구성성, 이미지-텍스트 간 어울림 , 공간적 관계를 기준으로 판단하고 다양한 프롬프트 방식,모델의 차이를 두어 생성한 이미지로 판단하기로 하였다.
◇ 이미지 양적 평가
- Inception Score 그림
- Inception Score 수식
- FID 수식
- LPIPS 수식
- ClipScore 수식
◇ 이미지 양적 평가 - ClipScore 선택 이유
- IS, FID ,KID 는 대용량 데이터셋으로 학습된 데이터의 성능을 판별하기에 어려움이 있다.
- IS, FID ,KID 는 대용량 데이터셋으로 학습된 데이터의 성능을 판별하기에 어려움이 있다.
◇ Image Quality Upgrade Method
- Large Language Models are Zero-Shot Reasoners: Zeroshot Chain of Thoughts 논문을 참고하여 아이디어를 얻었다.
- Few shot learning: 개별 문제에 대한 구체적인 예시를 사용하기에 추출 단계가 필요 없다.
- Chain of Thoughts: 단계별로 나누어 해결하는 것이 LLM 모델 Task에서 좋은 성능을 발휘한다.
- Zero shot learning: Inference 과정이 두 번 필요하다.
- ◇ 아래의 논문 내용을 참고하였다.
- 결론적으로 아래와 같은 이미지 생성 과정을 거치게 되었다.
- ◇ Step1
- ◇ Step2
- 마지막으로 아래와 같은 ClipScore 성능 향상을 얻을 수 있었다.
- ◇ 알고리즘을 거치지 않았을 때 clipscore
- 마지막으로 아래와 같은 ClipScore 성능 향상을 얻을 수 있었다.
- ◇ 알고리즘을 거쳤을 때 clipscore
- ◇ 알고리즘을 거쳤을 때 clipscore
◇ DreamBooth
- Subject를 output domain에 심는다. Subject를 unique identifier에 바인딩한다. Overfitting 및 해당 클래스의 정보를 잃어버리는 문제를 해결하기 위해 Autogenous class-specific prior preservation loss를 도입하였다
- Subject를 output domain에 심는다. Subject를 unique identifier에 바인딩한다. Overfitting 및 해당 클래스의 정보를 잃어버리는 문제를 해결하기 위해 Autogenous class-specific prior preservation loss를 도입하였다
- Visual reconstruction objective에 의해 학습된다.
- Visual reconstruction objective에 의해 학습된다.
질문 생성 연구
◇ 기본 구성
- 질문 생성은 사용자에게 독서 후 스크랩과 메모를 입력으로 받고, GPT prompt tuning을 통해 깊이 있는 독후 활동을 돕는 질문을 생성한다. 또한 사용자의 답변을 받아 같은 프롬프트 튜닝을 통해 재질문을 생성한다.
- 질문 생성은 사용자에게 독서 후 스크랩과 메모를 입력으로 받고, GPT prompt tuning을 통해 깊이 있는 독후 활동을 돕는 질문을 생성한다. 또한 사용자의 답변을 받아 같은 프롬프트 튜닝을 통해 재질문을 생성한다.
- 위와 같은 방법을 그대로 적용하면 특정 스크랩에 치우친 질문이 생성되는 경향이 있다.
- 그렇게 되면 사용자는 동일한 질문을 반복적으로 받게 되므로 사용성이 떨어진다.
- 스크랩과 질문간의 cosine 유사도 벡터를 질문 각각에 구하고(아래의 왼쪽 그림) 이 벡터를 Max-uniformity 척도에 적용하여 각 질문의 가장 유사한 스크랩이 서로 다르도록 하며 KL-Divergence 척도를 활용하여 각 질문의 스크랩의 유사도의 분포가 다양하도록 알고리즘을 구성한다.
◇ Question & Answer Vector의 Entropy
- 재질문을 생성할 때 1) 이전 질문과 유사한 재질문, 2) 사용자의 답변과 무관한 재질문이 생성된다는 문제점이 발생한다.
- 이렇게 되면 사용자는 중복된 질문에 답변하는 번거로움이 발생하며 사용자의 답변과 연계하여 깊이있는 생각이 불가하다.
- 이를 위해 위의 오른쪽 그림과 같이 재질문과 답변, 질문 사이의 cosine 유사도 벡터를 구하고 entropy를 측정한다.
- Answer vector의 엔트로피가 높은 재질문을 선택하여 사용자의 답변을 다양하게 반영할 수 있다.
- 반대로 Question vector는 엔트로피가 낮은 재질문을 선택하여 이전과 중복된 재질문을 피한다.
소프트웨어 설계
- 백엔드 시스템은 JAVA 환경에서 Spring Boot 3 프레임워크로 구현. 해당 프레임워크가 널리 사용되는 안정적인 프레임워크이기 때문에 선택하였으며, 동시에 개발을 처음 계획할 때 기준 운용지원기간이 가장 긴 버전을 선택. 또한 Spring Boot 3 버전 부터는 JAVA 17버전 이상만을 지원하기에 JAVA 17버전 선택.
- 백엔드 시스템은 JAVA 환경에서 Spring Boot 3 프레임워크로 구현. 해당 프레임워크가 널리 사용되는 안정적인 프레임워크이기 때문에 선택하였으며, 동시에 개발을 처음 계획할 때 기준 운용지원기간이 가장 긴 버전을 선택. 또한 Spring Boot 3 버전 부터는 JAVA 17버전 이상만을 지원하기에 JAVA 17버전 선택.
- 프런트엔드 시스템은 React 기반의 메타 프레임워크 Next.js 로 구현. 별도의 서버에서 렌더링을 한 뒤 클라이언트에 전송하는 방식인 Server-side rendering 과, 여러 페이지로 구성하는 MPA(Multi Page Application) 등의 접근을 통해, 사용자의 경험에 좋은 영향 제공
- 프런트엔드 시스템은 React 기반의 메타 프레임워크 Next.js 로 구현. 별도의 서버에서 렌더링을 한 뒤 클라이언트에 전송하는 방식인 Server-side rendering 과, 여러 페이지로 구성하는 MPA(Multi Page Application) 등의 접근을 통해, 사용자의 경험에 좋은 영향 제공
- 또한, 해당 서비스를 앱으로서 접근할 수 있도록 PWA(Progressive Web App) 스펙을 지원함으로써 접근성과 활용성을 높이고자 하였다.
- 또한, 해당 서비스를 앱으로서 접근할 수 있도록 PWA(Progressive Web App) 스펙을 지원함으로써 접근성과 활용성을 높이고자 하였다.
- 프런트엔드와 백엔드 시스템이 서로 데이터를 주고받기 위한 REST API 명세를 작성
- springdoc 을 사용한 Swagger UI 사용하여 API 명세서 관리
- swagger ui 를 제공하는 라이브러리는 springfox 와 springdoc 이 존재.
- ◇ springfox 의 경우 2020 년 7 월 이후로 업데이트가 중단된 반면 springdoc 은 올해 8 월까지 계속 업데이트 중이고 외에도 json 데이터의 key, value 를 구분하기 쉽게 색 처리를 해놓은 점에서 springdoc 을 사용하기로 결정
◇ 프로젝트 구조 설계
- 백엔드
- 프론트엔드
- 백엔드에서 사용한 프로젝트 구조는 MVC 패턴이며, 비즈니스 로직을 분리하여 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 제작.
- 프런트엔드는 스타일, 컴포넌트, 페이지 등을 구분하는 프로젝트 구조를 사용.
- ◇ 이중, app 폴더는 Next.js 프레임워크에서 비교적 새로 나온 App Routing 구조를 사용하기 위해 만든 폴더.
- ◇ 이는 단순히 페이지들을 만드는 것이 아니라, 여러 페이지들이 서로 유기적으로 구성될 수 있도록 함.
- 백엔드에서 사용한 프로젝트 구조는 MVC 패턴이며, 비즈니스 로직을 분리하여 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 제작.
상세설계 내용
내용
결과 및 평가
완료 작품의 소개
프로토타입 사진 혹은 작동 장면
프로토타입 사진
SW/HW 구성 방법 사진
Readiary 앱 실행
포스터
논문
발표 논문
관련사업비 내역서
완료작품의 평가
향후계획
어려웠던 내용들
◇ 로그인을 구현할 때 spring security의 필터를 추가해 jwt 토큰을 발급받는 식으로 구현하였는데 러닝 커브가 너무 높았다. ◇ 각 서버 사이 통신할 때 예상치 못한 에러가 빈번하게 발생하여 이를 해결하기 위해 시간을 꽤 사용하였다. ◇ 이미지 생성시 스타일을 학습 할 때, 학습 데이터의 내용이 강하게 반영될 때가 있어 튜닝이 조금 어려웠다. ◇ 질문 및 재질문 생성시 관련 아이디어를 내어 여러 문제를 해결했으나 sentence embedding 모델의 퀄리티에 따라 검출 성능이 많은 부분이 좌지우지 되었다. ◇ GPT가 질문 및 재질문을 생성 할 때 가끔 번호를 붘이지 않거나 다른 말을 하는 경우가 있어 분류가 조금은 어려웠다.
차후 구현할 내용
◇ 이미지를 생성할 때 사용자에게 선택적으로 특정 스타일을 입힐지 말지를 선택하게 한다. ◇ 커뮤니티 기능을 추가해 전체 대중들의 독서 증진을 촉진 기대한다. ◇ 하이퍼파라미터를 두어 질문이나 재질문의 스크랩, 이전 내용 반영 정도를 조절하거나 포괄적인 질문을 하는 방향을 제시할 수 있다.
특허 출원 내용
내용