Music Resting Place
일상에 지친 마음을 위로받고 쉬어갈 수 있게 하는 음악 상담사를 인공지능 기술을 이용해 구현하는 프로젝트
github : https://github.com/byeong-chang/music_resting_place/tree/main
프로젝트 기간
2023.03.03 ~ 2023.03.09 동안 진행한 DL 프로젝트입니다. Playdata Encore에서 약 2주 정도 DL에 대해 공부 후 진행한 프로젝트입니다.
팀원 구성 및 역할
우상욱: Frontend, Backend, Chat Bot develop, ML/DL modeling, Data refinement & manifacturing
황도희: Fill out the Chat Bot questionnaire, Data scraping(Youtube link), ML modeling
민병창: DL modeling, subword tokenize, Algorithm of song's recommend
서영호: Data preprocessing, ML modeling
신제우: KoBERT modeling, Data scraping(lyrics)
참고 문헌
- SDSN 2022 세계 행복 지수
- Bert와 gpt의 차이: scatter lab tech :https://tech.scatterlab.co.kr/transformer-review
- 챗봇 이미지 : https://www.flaticon.com/kr/free-icon/chatbot_2040946
- 멜론 : https://www.melon.com/
- 지니 : https://www.genie.co.kr/
- YouTubeMusic : https://music.youtube.com
데이터 출처
AI-Hub : 웰니스 심리 상담 데이터셋, 감성분석 말뭉치
개발 과정
1) 챗봇
챗봇은 Ko-Robert 모델을 설정하여 사용자의 채팅 데이터와 저희 database에 저장되어 있는 question을 코사인 유사도로 검사하여 가장 유사한 question에 대한 answer를 사용자에게 제공해 줍니다.
2) 감정 분석 모델링
ML accuracy 비교
DL accuracy 비교
모델 성능 비교를 통해 DL모델 중 LSTM과 Kobert를 중점적으로 튜닝 시도.
3) 모델 선택
실행 예시
1. 챗봇으로 질문을 던지면서 사용자에게 입력을 받는다.
2. 감정의 퍼센트를 보여주며, 지금의 감정을 바꾸는 노래를 들을 것인지, 유지하는 노래를 들을 것인지 선택할 수 있는 선 택지를 준다.
3. 노래의 좋아요 싫어요 버튼을 통해 사용자의 입력을 통한 모델 발전 가능성을 열어둔다.
접속 시 화면
챗봇과 대화 후 감정 분석
현재의 감정과 유사한 음악 추천
현재의 감정과 반대되는 음악 추천
느낀 점
- 초기에는 DL 프로젝트에 맞게 Koelectra 튜닝 역할을 맡았습니다. 하지만 pytorch에 대한 이해가 부족한점 때문에 튜닝에 어려움을 겪고 실패하였습니다. 프로젝트 기간이 5일로 굉장히 짧았기 때문에 더 시간을 들이는 것이 어려울 것이라 판단하여 DL LSTM 튜닝을 전담하게 되었습니다.
- RNN모델을 튜닝 과정에서는 tensorflow의 LSTM, GRU 등의 모델을 튜닝해 보는 시간을 가졌는데 Kobert(제우님이 학습에 성공하심. 단, 용량이 커서 streamlit에 적용을 못함)를 제외한 DL 모델에서는 LSTM이 가장 성능이 좋았습니다. 저희 모델에서 optimizer는 Rmsprop, AdaGrad, Adam 중에서 Adam이 가장 좋은 성능을 보였고, LSTM 중첩 개수는 3~4개, units 수는 16~32를 부여하는 것이 가장 적당했습니다. layer의 개수를 줄이거나 늘리고 units의 수를 줄이거나 늘려도 점수가 오르지 않는 모습을 보였고, 이를 통해 param수가 너무 많거나 작아지면 학습이 잘 되지 않는 게 아닐까 하는 생각을 가지게 되었습니다. 이에 대한 추가적인 자료조사를 해보니 학습 데이터 수가 많지 않을 경우 너무 많은 param이 좋지 않은 영향을 발생시킨다는 연구 결과를 찾아볼 수 있었고 저희 또한 동일한 문제일 것이라 예측했습니다. batchnormalization 층의 경우 사용하는 것이 대부분의 경우 좋은 것으로 보였습니다.
- 전처리 과정에서의 아쉬운 점도 있었습니다. 전처리에 대한 토의 없이 한 사람이 모든 전처리를 수행하게 되었는데 팀원 전체가 납득할만한 전처리가 이루어지지 않았던 점이 아쉬웠습니다.
- 마지막으로 좋아요, 싫어요 버튼을 사용자가 누를 경우 이를 데이터베이스에 저장하여 모델을 재학습시키는 과정을 적용하고자 하였으나 시간이 부족하여 시도해보지 못한 점이 아쉬웠습니다.
- 노래 추천 알고리즘의 경우
'회고록' 카테고리의 다른 글
국비지원 Playdata Encore후기 (0) | 2023.07.03 |
---|---|
Django와 Spotify로 노래 추천 웹 개발 - 2 (0) | 2023.07.03 |
Django와 Spotify로 노래 추천 웹 개발 - 1 (0) | 2023.07.03 |
심장질환 ML 예측 프로젝트 (0) | 2023.07.03 |
노인보호구역 지정을 위한 시각화 자료 제공 프로젝트 (0) | 2023.07.03 |