반응형
LinkedIn 개발자로 성장하면서 남긴 발자취들을 확인하실 수 있습니다.
Github WWDC Student Challenge 및 Cherish, Tiramisul 등 개발한 앱들의 코드를 확인하실 수 있습니다.
개인 앱 : Cherish 내 마음을 들여다보는 시간, 체리시는 디자이너와 PM과 함께 진행 중인 1인 개발 프로젝트입니다.
10년 후, 20년 후 나는 어떤 스토리 텔러가 되어 있을지 궁금하다. 내가 만약에 아직 조금 더 탐구하고 싶은 게 있고, 궁금한 게 있다면, 그게 설사 지금 당장의 내 인생에 도움이 안 되는 것 같더라도 경험해보자. 그 경험들을 온전히 즐기며 내 것으로 만들고, 내 일에 녹여내고... 그러다보면 그 점들이 모여 나란 사람을 그려내는 선이 될 테니까.

Recent Posts
Recent Comments
Total
관리 메뉴

꿈꾸는리버리

CreateML 도전기 본문

오뚝이 개발자/iOS

CreateML 도전기

rriver2 2022. 8. 26. 13:59
반응형

CreateML을 사용하기 위해 어떤 걸 해볼까 하다가 

"사용자가 문장을 입력하면 어떤 감정을 느끼고 있었는지"를 예측하는 프로그램을 만들어 보기로 했다 !

이 중에 Text Classification 을 이용한 프로젝트가 될 것 같다 :)

 

우선 너무 무지한 상태였기 때문에 WWDC 영상을 먼저 확인했다. 영상을 보면 알겠지만, 이렇게 foldering을 해서 CreateML에 학습을 시켜야한다는 것을 확인했고, 각 폴더 안에는 해당 폴더에 해당하는 txt 파일들이 있다는 것을 알 수 있다.

 

그렇다면.. emotion과 관련된 문장들이 필요하고, 그 문장들을 집합 시켜놓아야 하는데, CreateML의 예측도를 높이려면 그 양이 많아야 한다.... 이걸 다... 내가 치고 분류를 하면 평향성이 있을 것 같다는 생각이 들었고, 또 정보들을 수집하는 데에는 시간이 더 오래 걸릴 거라 생각을 했다. 그리고 처음에는 한국어로 text를 인식하려고 했는데, 한국어 data는 찾기 어려웠기도 하고 프로그램을 할때에도 한국어 자체에 제약이 많다는 정보를 찾아서 우선적으로는 영어를 도전해보기로 했다 !

 

 

이런 ML을 위한 정보를 제공하는 사이트들을 찾던 중 Kaggle이라는 사이트를 확인했다 !

 

다음 사이트에서는 ML을 위한 데이터들이 free로 많이 존재하기 때문에 찾기 좋았고, text 뿐만 아니라 다른 형태의 data도 확인할 수 있는 것 같았다. 좋은.. 사이트 인 듯하다...

 

회원가입을 끝내고 다운로드를 받으니 numbers로 해당 파일이 열였다. numbers에는 내가 원했던 data들이 정말 많았고... 정말 많았다..

 

앞서 말한 것처럼 위의 사진처럼 문장들과 감정들이 연결되어져만 있으면 안되고,

아래의 사진과 같이 문장들은 txt로 존재하고 그 txt 파일들을 묶은 상위 폴더의 이름에 감정이 있어야 한다.

 

각 폴더 안에는 해당 폴더에 해당하는 txt 파일들이 있다는 것

그래서 이 데이터를 폴더링해야 했다.

이 부분은 해당 블로그에 자세한 내용을 담았다.

 

 

1. xcode에서 Create ML 열고 프로젝트 생성하기

 

2. 학습 시킬 Emotion 폴더에서 이후 test를 하기 위해 몇 txt를 빼 두기

 

3. training Data에 Emotion 추가하기

 

4. 설정한 후에 좌측 상단에 play 누르기

 

그리고 training이 다 될 때까지 기다린다.. ( 생각보다 오래 걸렸음 ... )

 

5. 확인해보면 어떤 확률로 결과가 적중하는 지 확인할 수 있다.

 

 

 느낀점 

생각보다 ML이 그렇게 어렵지 않아서 놀랐다. 만드는 것은 쉽지 않았지만, 데이터의 양이나 좋은 데이터를 모으는 일이 얼마나 어려운 일인지에 대해서 체감할 수 있었다. 사실 위의 예제에서도 실제 앱으로 돌려보니까 여러 문제점들이 있었다. 

처음에 CreateML로 데이터를 만들었을 때는 100%와 가까운 confidence들이 나왔었다. 그래서 잘 된 줄 알았는데, 데이터의 편향이 심하게 있었다. 그 원인은 우선 데이터 양이 너무나도 차이가 났다는 점이었다. love의 경우는 몇 천 데이터였는데, happy는 몇 만 데이터가 있었다던가 그런..? 또 다른 원인은 테스트와 실제 넣었던 데이터의 비율이 고르지 않았다는 점이었다. 구글링해서 찾아보니까 테스트양 : 실데이터양 = 1: 9 or 2:8 정도가 되어야지 실제로 좋은 ML이 생성되었는지 확인할 수 있다고 했다. 이런 시행착오 끝에 위와 같은 정확도를 가진 ML을 다시 만들 수 있었다. 하지만, 위 규칙(?)들을 지키니까 정확도가 많이 낮게 나왔다. 그리고 일기에서 누군가의 감정을 판별하는 것이 좋은.. 일일까? 하는 고민에 빠지게되었다.

반응형
Comments